키
개체 - 관계 모델
키의 특성
- 유일성 : 속성의 집합인 키의 내용이 릴레이션 내에서 유일하다는 특성
- 최소성 : 속성의 집합인 키가 릴레이션의 모든 튜플을 유일하게 식별하기 위하여 꼭 필요한 속성들로 구성되는 것.
키의 종류
- 슈퍼 키(superkey)
- 후보 키(candidate key)
- 기본 키(primary key)
- 외래 키(foreign key)
수퍼키
- 개체 집합에서 어떤 개체를 유일하게 가리킬(식별할) 수 있는 하나 이상
(=하나 또는 여러) 속성의 집합
(보기) 학생 개체
학번, 이름, 주민등록번호, 전화번호, 학과번호
- 수퍼키 O : {학번}, {학번, 이름}, {주민등록번호}
- 슈퍼키 X : {이름}, {전화번호}, {학과번호}
후보키(CK: candidate key)
- 주어진 수퍼키의 속성에서, 속성 하나라도 뺀다면 슈퍼키가 될 수 없는 경우에 후보키라 함.
- {학번, 이름}도 수퍼키이고, {학번}도 수퍼키이다. {학번, 이름}에서 {이름}을 뺀 {학번}이 수퍼키이기 때문에, {학번, 이름}은 후보키가 아니다.
- {학번}에서 속성을 하나라도 빼면 {} (반집합)이 되므로 더 이상 수퍼키가 아니다, 따라서 {학번}은 후보키이다.
- {주민등록번호}은 수퍼키이고, 속성 하나로 이루어진 수퍼키는 후보키이다.
- {이름}은 수퍼키가 아니므로, 후보키가 될 수 없다.
- {전화번호}는 수퍼키가 아니므로, 후보키가 될 수 없다.
기본기(PK: primary key)
- 만일 후보 키가 하나뿐이면, 그것이 저절로 기본키가 됨
- 만일 주어진 집합에 후보키가 둘 이상 있으면, 데이터베이스를 설계할 때 그 가운데 하나를 기본키로 고르고, 나머지가 후보키가 된다.
(보기)
학생 개체 집합에서 {학번}rhk {주민등록번호}이 각각 후보키라고 할때 데이터베이스를 설계할 때 {학번}을 기본키로 정하면 {주민등록번호}는 후보키가 된다.
외래 키(foreign key)
- 수퍼키, 후보키, 기본키 : 주어진(테이블)에서 특정 개체(투플)를 가리킬 수 잇음
- 외래 키 : 다른 테이블에서 기본키인 속성이 집합이 주어진 테이블에 있을 때, 이 속성의 집합을 주어진 테이블에서 외래 키라고 한다.
개체-관계도(entity-relationship diagram)
- 데이터베이스의 논리적인 구조를 그림으로 나타낸 것을 개체-관계도(entity-relationship diagram)라고 한다.
![](https://velog.velcdn.com/images/iris-starry/post/192fb363-7589-45af-84a8-84dc0b03fc83/image.png)
- 개체(entity) 표현
![](https://velog.velcdn.com/images/iris-starry/post/5e8bc626-2be7-4d30-b189-952844557c27/image.png)
- 관계(entity) 표현
![](https://velog.velcdn.com/images/iris-starry/post/1ec60135-552a-4cea-a9a0-fdd55aa5aac5/image.png)
- 사상 크기의 표현
![](https://velog.velcdn.com/images/iris-starry/post/c62f1e28-2701-44a0-892e-3314f3295658/image.png)
- 만약 학생과 과목 개체의 사상 크기가 1:1 관계라면?
- 학색이 한 과목만 수강할 수 있으며, 과목의 수강자는 단 한명이라고 가정하면
- 비디오 가게에서 비디오를 빌리는 경우 개체 관계도는?
- 고객은 여러 개의 비디오 테이프를 대여할 수 있고 비디오 테이프 역시 여러 고객에게 대여될 수 있으므로 m:n의 관계가 성립
![](https://velog.velcdn.com/images/iris-starry/post/b284a319-fb32-41a1-8da5-54781268e008/image.png)