후보 키
- 튜플을 유일하게 식별할 수 있는(유일성과 최소성을 만족하는) 속성들의 부분집합
- 기본키가 될 수 있는 것들
기본 키 (PK)
- 후보키 중 뽑은 것
- Null이면 안됨. (개체 무결성의 첫번째 조건)
- 기본키로 정의된 속에는 동일한 값이 중복되어 저장될 수 없음(개체 무결성의 두번째 조건)
무결성?
- 개체 무결성: 릴레이션에서 기본키를 구성하는 속성은 1. 널(Null)값이나 2. 중복값을 가질 수 없다.
- 참조 무결성: 외래 키 값은 Null이거나(해당 튜플이 관계 릴레이션과 관계가 없을 때??) 참조하는 릴레이션의 PK와 같아야 한다.
대체 키 (== 보조키)
- 후보키 중 기본키가 아닌 것
- 언제든 기본키 대신 대체가 가능(최소성, 유일성 만족)
- 마찬가지로 개체 무결성 만족
부분 키
- 상위 entity의 키와 결합하여(단독으로 존재할 수 없다), 약한 개체타입을 고유하게 식별 가능한 키
약한 개체타입
: 한 엔티티가 다른 엔티티에 의존할 때 약한 개체타입.
e.g) Article Favorite이 Article의 id와 결합되어 사용된다고 가정할 때, Article의 favorite(좋아요 수)은 Article에 약한 개체타입이라고 할 수 있다. 이 때 Article Favorite의 id는 부분 키
슈퍼 키
- 유일성만 만족.
- 즉, 구별에 꼭 필요하지 않은 속성도 갖고 있음
외래 키 (FK)
- 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합
- 참조 무결성을 만족해야한다: null이거나 참조 테이블의 PK
Reference)
https://github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Database/%5BDB%5D%20Key.md
https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Database/Key(%ED%82%A4).md
https://halfmoon9.tistory.com/59