간단 지식/Database

04. DB의 기본키와 왜래키

납작한돌맹이 2020. 1. 17. 21:58
반응형

데이터베이스에는 'key' 라는 것이 존재하는데 이는 무결성이라는 개념을 위해 등장했다. 쉽게 말하자면 각 투플을 유일하게 식별할 수 있는 attribute의 집합이 바로 키다.

 

키의 종류에는

1) 후보키

2) 기본키

3) 슈퍼키

4) 대체키

5) 왜래키

가 있다.

후보키

relation에 속하고, 유일성과 최소성을 만족하는 attribute들의 집합

- 유일성: 각 투플에 대한 key값은 유일하다는 특성

- 최소성: key는 투플을 식별할 수 있는 attribute만이 해당된다는 특성

 

기본키

후보키 중에 지정된 단 하나의 키

모든 DB는 기본키가 있어야 하며 이는 DB설계자가 지정

따라서 각 투플에 대한 기본키 값은 항상 유효해야 하며 null값은 허용되지 않음

 

슈퍼키

유일성은 만족하지만 최소성은 만족하지 않는 attribute들의 집합

 

대체키

후보키 중에서 기본키를 제외한 모든 키

 

왜래키

relation R의 attribute집합 FK가 relation S의 PK를 참조한다면 FK는 왜래키

cf) FK(Foreign Key)는 왜래키, PK(Primary Key)는 기본키

왜래키는 참조하는 기본키가 속한 relation에 존재하는 값이거나 null값을 가짐

 

5가지 키 중 우리는 기본키와 왜래키에 집중할 것이다. 지난 글에서 예시로 사용한 데이터베이스를 다시 가져와 보겠다.

relation name: student

sno sname year dept
100 소현 4 컴퓨터공학과
200 뫄뫄 1 영어영문학과
300 묘묘 3 기계공학과
400 띠띠 3 부동산학과
500 나나 2 수학과

relation name: course

cno cname credit dept
1 대학영어 2 영어영문학과
2 java 프로그래밍 3 컴퓨터공학과
3 인공지능 3 컴퓨터공학과
4 공학수학 2 수학과
5 기초기계공학 3 기계공학과
6 부동산세법 3 부동산학과

relation name: enroll

sno cno grade midterm final
100 1 B 75 70
100 3 A 80 95
200 1 A 90 90
300 1 C 50 45
300 4 B 65 80
300 5 A 80 95
400 1 C 30 65
400 6 B 70 80
500 4 B 85 55

이미 어떤 relation이 참조 relation이고 피참조 relation인지 말했으니 기본키와 왜래키 관계를 쉽게 찾을 수 있다.

student relation의 attribute sno가 기본키, course relation의 attribute cno가 기본키이고,

enroll relation의 attribute sno, cno가 위 기본키들을 참조하는 왜래키가 되는 것이다.

이러한 관계들이 후에 배울 join이란 연산을 사용할 수 있게 해주는 것이다.


이렇게 키에 대한 내용을 쉽게 정리할 수 있다. 이제 기본키와 왜래키에 대한 개념을 알았으니 이와 관련된 데이터베이스의 성질을 하나 알려주겠다. 바로 '무결성 제약조건' 이라는 것인데 이는 데이터베이스가 언제 어느 때라도 만족시켜야하는 조건이다. 무결성 제약조건은 2가지 무결성으로 분리된다.

1. 개체 무결성

2. 참조 무결성

개체 무결성은 기본키는 어느때라도 null값을 가져서는 안 되고 relation에서 유일한 값이어야 한다는 성질이다.

참조 무결성은 왜래키는 기본키 값 또는 null값 이외의 값을 가질 수 없다는 성질이다.

 

위에서 다들 언급했던 성질인데 다시 재정리하는 이유는 이 조건은 데이터베이스가 생성된 후부터 0.1초도 빠지지 않고 유지되어야 하는 중요한 조건이기 때문이다.


다음 글에서는 mysql에서 사용하는 sql문을 연산으로 표현할 수 있는 관계 대수라는 것을 정리할 것이다. 개인적으로는 이 부분이 헷갈리고 어렵기도 했다.

 

(이 글이 도움이 됐다면 광고 한번씩만 클릭 해주시면 감사드립니다, 더 좋은 정보글 작성하도록 노력하겠습니다 :) )

반응형