먼저, relational의 의미를 살펴보기에 앞서, set에 대해 알아보자.
set
- 서로 다른 elements를 가지는 collection
- 하나의 set에서 elements의 순서는 중요하지 않다
- ex) {1, 3, 22, 11, 7}
수학에서의 relation이란 어떤 의미가 있을까?
relation in mathematics
set A와 set B가 있다고 하자.
set A = {1, 2}
set B = {p, ,q, r}
Cartesian product A X B = {(a, b) | a ∈ A and b ∈ B}
여기에서 Cartesian product란, set A와 set B로 만들 수 있는 모든 pair의 조합 즉, (1, p), (1, q), (1, r), (2, p), (2, q), (2, r)을 의미한다.
이와 같은 set A, set B 상황에서는 Cartesian product가 binary relation으로 밖에 나오지 않는다.
binary relation ⊆ A X B
※ ⊆ : 부분집합
이 개념을 확장해보자.
집합이 여러 개가 되면 어떻게 될까?
n개의 set이 있다고 하자.
n-ary relation ⊆ A X B X C X D .....
이런 경우를 n 튜플이라고 한다.
즉, relation in mathematics는 subset of Cartesian product, set of tuples 이다.
이제 수학적 의미에서의 relation이 relational data model에 어떻게 적용되었는지 살펴보자.
student relation 을 예로 들어보자.
1. domain 정의하기
- student_ids : 학번 집합, 7자리 정수
- human_names : 사람 이름 집합, 문자열
- university_grades : 대학교 학년 집합
- major_names : 대학교에서 배우는 전공 이름 집합
- phone_numbers : 핸드폰 번호 집합
2. attribute of student relation
- student_ids : id
- human_names : name
- university_grades : grade
- major_names : major
- phone_numbers : phone_num (학생 번호)
- phone_numbers : emer_phone_num (비상연락망)
3. student relation in relational data model
relational data model에서의 주요 개념
domain : set of atomic values (더 이상 나누어질 수 없는 값들로 이루어져 있다)
domain name : domain 이름
attribute : domain이 relation에서 맡은 역할 이름
tuple : 각 attribute의 값으로 이루어진 리스트. 일부 값은 NULL일 수 있다
relation : set of tuples
relation name : relation 이름
relation schema
- relation의 구조를 나타낸다.
- relation의 이름과 attributes 리스트로 표기된다
- ex) STUDENT(id, name, grade, major, phone_num, emer_phone_num)
- attribute와 관련된 constraints도 포함한다
degree of a relation
- relation schema에서 attribute의 수
- ex) STUDENT(id, name, grade, major, phone_num, emer_phone_num) → degree 6