본문 바로가기

ComputerScience/Database

DB - 4. Keys (at relational DB)

728x90

1. Superkey

- tuple의 고유식별자이다.

- 고유식별성만 지니면 superkey가 된다.

- id나 주민번호 등 단 하나의 튜플만 지니고 있는 column을 말한다.

- table에서 하나의 colum이 key가 될 수도 있고 여러 column이 key가 될 수있다.

- 여러 column이 key가 될때 합성키(composite key)라고 한다.

- 즉 여러 column으로 단 하나의 튜플을 식별할 수 있다면 복수 column으로 구성된 superkey가 된다.

- {ID}, {ID, name} 등 복수개가 존재할 수 있다.

2. candidate key

- 후보키

- superkey중에서 minimal column으로만 구성할 수 있는 key를 말한다.

- 마찬가지로 복수개가 존재할 수 있다.

3. primary key

- 기본키

- 여러개의 candiate key중에서 하나를 고르면 primary key가 된다. 

- 위 그림은 primary key로 ID를 사용한다는 뜻이다.

- 이번 예시는 ID, course_id, sec_id, semester, year 5개의 colums을 primary key로 사용한다는 뜻이다.

- primary key는 null이 되어서는 안된다.

4. Foreign key

- 외래키

- 그림처럼 두개의 relation이 존재한다고 해보자.

- instructor table의 dept_name이 department의 primary key일때, dept_name은 instructor table의 foreign key가 된다.

- instructor table의 FK는 반드시 department table의 PK로 존재해야 한다.

- 반대로 department table의 PK가 반드시 instructor table에 존재할 필요는 없다.

- 즉 한 relation에서 FK를 가지고 다른 relation에서 유일한 tuple을 찾을 수 있어야 한다. (reference, 참조 가능)

- 단 FK가 null값인 경우는 상관이 없다.

- 이 그림은 위에서 설명한 관계를 표시하는 statement이다.

- 이 구문은 section에서 (course_id, sec_id, semester, year)를 PK로 사용하고 있으며 기존 테이블에서는 이 합성키를 FK로 사용한다는 뜻이다.

- student relation의 PK는 ID이다

- course relation의 PK는 course_ID이다.

- takes relation의 PK는 {ID, course_ID}이다.

 

- takes에서 ID는 FK이고, student에서 ID는 PK이다.

- 하지만 student에서 ID는 FK가 될 수 없다 왜냐하면 ID는 takes에서 PK가 될 수 없기 때문이다.

 

- takes에서 course_ID는 FK이고 course에서 course_ID는 PK이다.

*PK와 FK는 각 realation에서 이름이 다를 수 있다!

- PK는 ID라는 이름을 쓰고 있고 FK는 지도교수ID라는 이름을 쓰고 있다. 둘은 동일한 domain을 같는 property이다.

 

*PK와 FK의 relation이 동일할 수 있다!

- 배우자 고객번호 FK를 통해 이동할 수 있는 relation이 현재 자기자신의 realtion인 고객 relation일 수 있다. 

- 당연히 이 경우에는 동일한 property지만 이름을 다르게 사용할 수 밖에 없다.

728x90
반응형

'ComputerScience > Database' 카테고리의 다른 글

DB - 6. More SQL statements(1)  (0) 2021.09.29
DB - 5. Schema Diagram, Relational Algebra  (0) 2021.09.15
DB - 3. Relational Database  (0) 2021.09.08
DB - 2. Basic SQL statements  (0) 2021.09.08
DB - 1. Introduction  (0) 2021.09.01