Database keys
키 (Key)
- 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 속성
유일성과 최소성
- 유일성 : 하나의 키 값으로 튜플을 유일하게 식별할 수 있는 성질
- 예. 주민등록번호
- 최소성 : 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질
- 예. 이름, 주민등록번호, 나이라는 키가 있을 때 이 세 개의 키는 각 튜플을 구분할 수 있다. 이름과 주민등록번호와 나이가 같은 사람이 있을리 없기 때문이다. 근데 굳이? 3개를 써야 구분이 되나? → 아니다. → 주민등록번호 만으로 식별이 가능하다 → 따라서, 이름과 나이를 제외하면 키는 최소성을 만족하게 된다.
- 유일성 : 하나의 키 값으로 튜플을 유일하게 식별할 수 있는 성질
키의 종류
- 기본키, 후보키, 대체키, 외래키, 슈퍼키
기본키 (Primary Key = PK)
- 유일무이한 값, 고유한 값
- 따라서, Null 값이면 안된다.
- 값이 변경될 가능성이 있는 것들은 기본키로 설정하면 안됨
- 테이블에 기본키는 오직 한 개!
- 예. 주민등록번호
후보키 (Candidate Key)
- 기본키가 될 수 있는 친구들
- 근데 왜 후보키를 두는 걸까?
- 카드 분실 사례 : 신용카드를 잃어버렸다 → 분실 신고를 한다 → 카드 번호 (기본키) → 고객은 자기 카드 번호를 외우고 다니지 않는다. → 따라서, 주민등록번호 (후보키)를 묻는다. → 후보키를 기반으로 카드 번호 조회가 가능해짐 → 그래서 후보키를 둔다.
대체키 (Alternate Key)
- 후보키가 두 개 이상일 때, 기본키를 제외한 나머지 후보키들을 일컫는 말
외래키 (Foreign Key)
- 참조키라고도 하는데, 두 개의 테이블을 연결해 관계를 맺게 해주는 역할을 하는 키다.
- 고객 테이블과 주문 테이블이 있다고 하자. 각 고객별로 주문 정보를 조회할 수 있도록 비즈니스 로직을 만들어 보자. 이 때, 고객 테이블에는 주문 테이블의 기본키를 고객 테이블의 외래키로 두어 참조하여 조회가 가능하다.
슈퍼키 (Super Key)
테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합이다. 슈퍼키는 유일성만 만족하면 슈퍼키가 될 수 있다.
아래의 표에서 슈퍼키는 [학번 + 이름, 학번 + 아이디, 이름 + 아이디, 학번 + 이름 + 아이디] 로 4개를 만들 수 있다.
즉, 어떤 속성끼리 묶던 중복깞이 나오지 않고 서로 구별만 하면 된다.
학번 이름 아이디 1 Jacob supreme-ys 2 Jason lovelyAlien 3 Frank dhkstnaos 4 Potter jhdl0157