728x90
1. 릴레이션 조작을 위한 연산의 표현 방법
1) 절차 언어 - 관계 대수
2) 비절차 언어 - 투플/도메인 관계해석
2. 관계 대수
1) 릴레이션 = Set of tuples
· 릴레이션에 대한 연산결과 -> 릴레이션
2) 연산자의 종류
· 일반 집합 연산자 : 합집합, 교집합, 차집합, 카티션 프로덕트
· 순수 관계 연산자 : 실렉트, 프로젝트, 조인, 디비전
3. 기본 연산자
릴레이션 R, S에 대해 모두 같은 스키마일 때,
1) 합집합 (∪)
· R∪S = { t | t ∈ R ∨ t ∈ S }
· |R∪S| ≤ |R| + |S|
· 합집합 원소의 개수(Cardinality) ≤ 각 원소 개수의 합
2) 교집합 (∩)
· R∩S = { t |t ∈ R ∧ t ∈ S }
· |R∩S| ≤ min(|R| , |S|)
3) 차집합 (-)
· R - S = { t | t ∈ R ∧ t ∉ S }
· |R - S| ≤ |R|
4) 카티션 프로덕트(x)
· R x S = { t · s | t ∈ R ∧ s ∉ S }
· |R x S| ≤ |R| x |S|
· R, S에 속한 투플들 간의 모든 순서쌍 집합
예를 들어,
<학생>
학번(sno) | 이름(sname) | 학년(year) | 학과(dept) |
100 | 나수영 | 4 | 컴퓨터 |
200 | 이찬수 | 3 | 전기 |
300 | 정기태 | 1 | 컴퓨터 |
400 | 송병길 | 4 | 컴퓨터 |
500 | 박종화 | 2 | 산공 |
<과목>
과목번호(cno) | 과목이름(cname) | 학점(credit) | 학과(dept) | 담당교수(professor) |
C123 | C프로그래밍 | 3 | 컴퓨터 | 김성국 |
C312 | 자료구조 | 3 | 컴퓨터 | 황수관 |
C324 | 화일구조 | 3 | 컴퓨터 | 이규찬 |
C413 | 데이터베이스 | 3 | 컴퓨터 | 이일로 |
E412 | 반도체 | 3 | 전자 | 홍봉진 |
<등록>
학번(sno) | 과목번호(cno) | 성적(grade) | 중간성적(Midterm) | 기말성적(Final) |
100 | C413 | A | 90 | 95 |
100 | E412 | A | 95 | 95 |
200 | C123 | B | 85 | 80 |
300 | C312 | A | 90 | 95 |
300 | C324 | C | 75 | 75 |
300 | C413 | A | 95 | 90 |
400 | C312 | A | 90 | 95 |
400 | C324 | A | 95 | 90 |
400 | C413 | B | 80 | 85 |
400 | E412 | C | 65 | 75 |
500 | C312 | B | 85 | 80 |
위와 같은 예시의 테이블이 있다고 가정할 때,
학생 X 등록 연산 시
학생.학번 | 이름 | 학년 | 학과 | 등록.학번 | 과목번호 | 성적 | 중간성적 | 기말성적 |
100 | 나수영 | 4 | 컴퓨터 | 100 | C413 | A | 90 | 95 |
100 | 나수영 | 4 | 컴퓨터 | 100 | E412 | A | 95 | 95 |
. | . | . | ||||||
100 | 나수영 | 4 | 컴퓨터 | 400 | E412 | C | 65 | 75 |
100 | 나수영 | 4 | 컴퓨터 | 500 | C312 | B | 85 | 80 |
200 | 이찬수 | 3 | 전기 | 100 | C413 | A | 90 | 95 |
. | . | . |
총 55개의 투플이 생성된다.
4. 관계 연산자
1) 실렉트(σ)
: 특정 조건을 만족하는 투플들의 부분집합을 구해 새 릴레이션을 만든다.
ex) σ학과='컴퓨터'(학생)
학번(sno) | 이름(sname) | 학년(year) | 학과(dept) |
100 | 나수영 | 4 | 컴퓨터 |
300 | 정기태 | 1 | 컴퓨터 |
400 | 송병길 | 4 | 컴퓨터 |
ex) σ학번=300 ∧ 과목번호='C312'(등록)
학번(sno) | 과목번호(cno) | 성적(grade) | 중간성적(Midterm) | 기말성적(Final) |
300 | C312 | A | 90 | 95 |
2) 프로젝트( ∏ )
: 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만든다.
릴레이션의 일부, 즉 열만 출력되기 때문에 '수직연산'이라고도 한다.
ex) ∏이름,학과(학생)
이름(sname) | 학과(dept) |
나수영 | 컴퓨터 |
이찬수 | 전기 |
정기태 | 컴퓨터 |
송병길 | 컴퓨터 |
박종화 | 산공 |
ex) ∏과목이름,담당교수(과목)
과목이름(cname) | 담당교수(professor) |
C프로그래밍 | 김성국 |
자료구조 | 황수관 |
화일구조 | 이규찬 |
데이터베이스 | 이일로 |
반도체 | 홍봉진 |
3) 조인(⋈)
: 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만든다.
ex) 학생 ⋈ (학생.학번=등록.학번) 등록 = σ (학생.학번 = 등록.학번)(학생 x 등록)
학생.학번 | 이름 | 학년 | 학과 | 등록.학번 | 과목번호 | 성적 | 중간성적 | 기말성적 |
100 | 나수영 | 4 | 컴퓨터 | 100 | C413 | A | 90 | 95 |
100 | 나수영 | 4 | 컴퓨터 | 100 | E412 | A | 95 | 95 |
200 | 이찬수 | 3 | 전기 | 200 | C123 | B | 85 | 80 |
300 | 정기태 | 1 | 컴퓨터 | 300 | C312 | A | 90 | 95 |
300 | 정기태 | 1 | 컴퓨터 | 300 | C324 | C | 75 | 75 |
300 | 정기태 | 1 | 컴퓨터 | 300 | C413 | A | 95 | 90 |
400 | 송병길 | 4 | 컴퓨터 | 400 | C312 | A | 90 | 95 |
400 | 송병길 | 4 | 컴퓨터 | 400 | C324 | A | 95 | 90 |
400 | 송병길 | 4 | 컴퓨터 | 400 | C413 | B | 80 | 85 |
400 | 송병길 | 4 | 컴퓨터 | 400 | E412 | C | 65 | 75 |
500 | 박종화 | 2 | 산공 | 500 | C312 | B | 85 | 80 |
4) 디비전(÷)
: 왼편 릴레이션에서 오른편 릴레이션의 모든 투플들과 대응되는 값을 가진 왼편만의 속성값들을 출력
ex) <학과목>
학번(sno) | 과목번호(cno) |
100 | C413 |
100 | E412 |
200 | C123 |
300 | C312 |
300 | C324 |
300 | C413 |
400 | C312 |
400 | C324 |
400 | C413 |
400 | E412 |
500 | C312 |
<과목>
과목번호(cno) |
C413 |
학과목 ÷ 과목
학번(sno) |
100 |
300 |
400 |
5) 개명연산(ρ)
: 릴레이션의 이름이나 대응되는 속성의 이름을 바꾸나 부여
5. 조인의 구분
1) 조인의 구분
· 세타 조인 : 비교연산자(=, >, <)로 표현
· 동일 조인 : 비교연산자가 ‘=’인 조인
· 자연 조인 : 양쪽 릴레이션에서 중복 속성에 대해 동일 조인 + 조인 결과에서 중복 속성을 한 번만 나타냄
2) 자연조인
① 공통 속성에 대한 동일 조인
학생.학번 | 이름 | 학년 | 학과 | 등록.학번 | 과목번호 | 성적 | 중간성적 | 기말성적 |
100 | 나수영 | 4 | 컴퓨터 | 100 | C413 | A | 90 | 95 |
100 | 나수영 | 4 | 컴퓨터 | 100 | E412 | A | 95 | 95 |
200 | 이찬수 | 3 | 전기 | 200 | C123 | B | 85 | 80 |
300 | 정기태 | 1 | 컴퓨터 | 300 | C312 | A | 90 | 95 |
300 | 정기태 | 1 | 컴퓨터 | 300 | C324 | C | 75 | 75 |
300 | 정기태 | 1 | 컴퓨터 | 300 | C413 | A | 95 | 90 |
400 | 송병길 | 4 | 컴퓨터 | 400 | C312 | A | 90 | 95 |
400 | 송병길 | 4 | 컴퓨터 | 400 | C324 | A | 95 | 90 |
400 | 송병길 | 4 | 컴퓨터 | 400 | C413 | B | 80 | 85 |
400 | 송병길 | 4 | 컴퓨터 | 400 | E412 | C | 65 | 75 |
500 | 박종화 | 2 | 산공 | 500 | C312 | B | 85 | 80 |
② 공통속성은 한 번만 출력
학번 | 이름 | 학년 | 학과 | 과목번호 | 성적 | 중간성적 | 기말성적 |
100 | 나수영 | 4 | 컴퓨터 | C413 | A | 90 | 95 |
100 | 나수영 | 4 | 컴퓨터 | E412 | A | 95 | 95 |
200 | 이찬수 | 3 | 전기 | C123 | B | 85 | 80 |
300 | 정기태 | 1 | 컴퓨터 | C312 | A | 90 | 95 |
300 | 정기태 | 1 | 컴퓨터 | C324 | C | 75 | 75 |
300 | 정기태 | 1 | 컴퓨터 | C413 | A | 95 | 90 |
400 | 송병길 | 4 | 컴퓨터 | C312 | A | 90 | 95 |
400 | 송병길 | 4 | 컴퓨터 | C324 | A | 95 | 90 |
400 | 송병길 | 4 | 컴퓨터 | C413 | B | 80 | 85 |
400 | 송병길 | 4 | 컴퓨터 | E412 | C | 65 | 75 |
500 | 박종화 | 2 | 산공 | C312 | B | 85 | 80 |
* 세미조인
: 왼편 릴레이션의 투플들 중에서 오른편 릴레이션과의 자연조인에 참여하는 투플들만 추려내는 것
즉, 프로젝트 연산 후 수행해 자연 조인에서 불필요한 데이터를 삭제한다.
3) 외부조인(⋈+)
· 조인 과정에서 대응되는 투플이 없는 투플들도 조인 결과에 포함시키는 조인
· 외부 조인으로 추가되는 투플들의 속성 값은 null 을 가짐.
· 자연조인은 대응되는 투플들만 표현하는 반면, 외부조인은 대응되지 않는 것은 NULL로 표현
* 외부 합집합(U+)
· 합집합 : 합병 가능한 두 릴레이션에 적용
-> 두 릴레이션의 스키마 동일(속성의 개수, 이름 등 동일)
· 외부 합집합 : 완전히 합병 가능하지 않아도 합집합 연산
* 집계 연산
- SUM, AVG, MAX, MIN, COUNT
* 그루핑 함수
- GROUP
728x90
'CS > 데이터베이스' 카테고리의 다른 글
[DB] 6. SQL DML(SELECT) (0) | 2022.07.15 |
---|---|
[DB] 6. SQL Basic (0) | 2022.07.15 |
[DB] 4. 관계 데이터베이스 (0) | 2022.06.19 |
[DB] 3. 데이터베이스 시스템의 구성 (0) | 2022.06.03 |
[DB] 2. 데이터베이스 관리 시스템 (0) | 2022.06.03 |