Data Base는 Data를 어떤 것으로 보느냐에 따라서 다양한 종류의 모델로 나뉠 수 있다.
그 중에서 Relation model은 데이터를, 데이터간의 관계를 기술한 Table로 생각하는 방법이다.
위의 그림에서 각 행을 생각해보자. 각 행은 n개의 값을 가지는 Tuple 로 볼 수 있다.
이 때 각각의 n개의 원소들이 어떤 Relation를 표현하며 나열되었다고 볼 수 있고 Relation model은 이에 기반하고 있다.
각 Table(=Relation)은 고유의 이름을 갖고 있다.
- N-Tuple
Tuple이란 어떤 값들이 정해진 순서를 가지고 나열된 리스트를 의미한다.
즉, n-Tuple이란 원소의 개수가 n개인 Tuple을 의미한다.(
Relation Instance
: Table을 이루는 것은 이 N-Tuple들의 Set이다.
따라서, 이 Tuple들의 집합을 Relation Instance라고 한다.)
- Attribute
Attribute는 Column 자체를 의미한다.(위의 Table에서는 학번, 이름, 학년, 신장, 학과가 Attribute가 될 것이다.)
- Domain
Domain은 실제 Attribute에 입력이 허용되는 값의집합
을 의미한다.
즉, Attribute의 type이라고 생각하자.(
유한 Domain
: 만약 위의 Table에서 모든 학생은 1학년부터 6학년까지 있다고 주어졌다면 학년의 Domain은 1, 2, 3, 4, 5, 6이 된다.)
(무한 Domain
: 만약 위의 Table에서 신장의 값은 100과 300사이의 모든 값이 허용된다고 하면 키의 Domain은 [0, 300]이 된다.)
- Domain의 특징
- 모든 Attribute는 Domain을 가진다
- Atomic해야한다
(그 값을 쪼개서 사용할 수 없어야 한다)- 모든 Domain은 null을 허용한다.
(null은 '값'이 아닌 '상태'라고 생각해야 한다.)(
Atomic하지않음
: 만약 위의 Table에서 이름을 성과 이름으로 나누어 쓸 수 있다고 가정했다면 Atomic하지 않은 상태인 것이다.)
(Atomic함
: 위와 반대로 성과 이름을 나눌 수 없다고 가정했다면 Atomic한 상태가 된다.)
이제 위에서 정의한 용어들을 가지고 Relation자체에 대해서 좀 더 알아보자. 다음은 Instructor라는 Table이다.
D1 x D2 x ... x Dn 의 부분 집합
한 Table이 만약 n개의 Attribute를 가지고 있다고 하자.
이 때, Relation이란 몇 N-Tuple들로 이루어진 집합이라고 정의할 수 있다.(
x
, Catesian Product: x는 Catesian Product를 나타내는 연산기호로, 기호의 앞과 뒤의 두 집합에 대해 모든 조합을 구하는 연산기호이다.)
먼저 Schema는 구조적인 것, 선언적인 것을 의미한다.
- 정의
해당 Table(=Relation)의 구조를 나타내는 표현
- 표현
- r(A1, A2, A3, ...) 로 표현한다.
- r(R) 로 간단히 표현하는 경우도 있다.
(
예시
: r( ID, name, dept_name, salary ) )
Schema와 다르게 Instance는 실제 어떤 값이 입력되어 있는지를 의미한다.
- 정의
해당 Table에 실제 어떤 값(n-Tuple)이 들어가 있는지를 나타내는 표현이다.
- 표현
- instructor의 Instance는 12개의 Tuple을 가지고 있다.
어떤 Table(=Relation)을 조작할 때 각각의 Tuple들을 구별할 방법이 있어야 한다. 이 방법은 Key를 통해 구현할 수 있다.
- 정의
Attribute의 부분 집합 중, 해당 Domain의 모든 값이 Unique하도록 하는 부분집합을 의미한다.
- 예시
- 위의 그림에서 ID는 Super Key이다.
- 위의 그림에서 {ID, name}은 Super Key이다.
- 위의 그림에서 name은 Super Key가 아니다.
(만약 해당 Table을 갖는 학교에 같은 이름의 교수는 절대로 받지 않는다는 특별한 규칙이 있다고 가정한다면, name도 Super Key가 될 수 있다.)
- 정의
Super Key중에서 어떠한 부분 집합도 Super Key가 될 수 없을 때 해당 Key를 Candidate Key라고 한다.
- 예시
- 위의 그림에서 ID는 Candidate Key이다.
- 위의 그림에서 dept_name은 Candidate Key이다.
- 위의 그림에서 {ID, name}은 Candidate Key가 아니다.
- 정의
Candidate Key중에서 DB개발자가 Table안에서 튜플을 구별하기 위한 수단으로 선택한 Key를 Primary Key라고 한다.
- 예시
- 위 그림에서 ID를 student의 Primary Key로 선택할 수 있다.
- 위 그림에서 dept_name을 department의 Primary Key로 선택할 수 있다.
(
표기방법
: 일반적으로 Relation Schema에서 다른 Attribute보다 Primary Key를 먼저 나열하고, 밑줄을 쳐서 표시한다.)
(선택기준
: Primary Key는 그 값이 절대로 변하지 않거나 거의 변하지 않도록 선택해야 하도록 하자.)
- 정의
Attribute의 값이 어떤 Table(=Relation)을 Reference하고 해당 Table에서 Primary Key로 사용될 경우 Foreign Key라고 한다.(
Referential integrity constraint
: A의 한 Attriubute가 B를 참조할 경우 해당 Attribute에 등장하는 값은 반드시 B의 Attribute에서 적어도 하나의 Domain으로 출현해야 한다는 조건.)
- 예시
- 위의 그림의 student Table에서 dept_name은 Foreign Key로 선택할 수 있다.
잘 읽었습니다.