728x90
릴레이션에 포함된 tuple들을 유일한게 구별해주는 역할은 속성 또는 속성들의 집합인 키가 담당한다. 키는 관계 데이터 모델에서 중요한 제약조건을 정의한다.
1. 슈퍼키
슈퍼키는 유일성의 특성을 만족하는 속성 또는 속성들의 집합이다. 유일성은 키가 갖추어야 하는 기본 특성으로, 하나의 릴레이션에서 키로 지정된 속성 값은 tuple마다 달라야 하다는 의미이다. 하지만 (고객아이디, 고객이름)과 같이 슈퍼키 중에는 tuple 하나를 유일하게 구별하기 위해서 또는 2개의 tuple이 서로 다름을 판단하기 위해 불필요한 속성 값까지 확인하는 비효율적인 작업이 필요한 경우도 있다. 이때, 꼭 필요한 속성의 집합만으로 tuple을 유일하게 구별할 수 있도록 하는 또 다른 키의 개념이 필요한데, 이 것이 후보키이다.
2. 후보키
후보키는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다.
3. 기본키
릴레이션에서 tuple을 구별하기 위해 여러 개의 후보키를 모두 사용할 필요는 없다. 즉, 여러 후보키 중에서 기본적으로 사용할 키를 반드시 선택해야 하는데 이것이 기본키이다. 이때 단순한 후보키를 기본키로 선택하는 것이 좋다.
4. 대체키
대체키는 기본키로 선택되지 못한 후보키들이다.
5. 외래키
다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키이다. 외래키는 릴레이션들 사이의 관계를 올바르게 표현하기 위해 필요하다.
- 외래키가 되는 속성과 기본키가 되는 속성의 이름은 달라도 되지만, 도메인은 반드시 같아야 한다.
- 하나의 릴레이션에는 외래키가 여러 개 존재할 수 있다.
- 외래키를 기본키로 사용할 수 있고, 외래키를 포함하여 기본키를 구성할 수도 있다.
- 참조하는 릴레이션과 참조되는 릴레이션이 같을 수도 있다. 즉, 외래키 자신이 속한 릴레이션의 기본키를 참조하도록 외래키를 정의할 수도 있다.
- 외래키는 null 값을 가질 수 있다.
728x90
'컴퓨터 사이언스 > Database' 카테고리의 다른 글
데이터베이스 설계 실습 - 스타벅스 홈페이지 (0) | 2023.06.25 |
---|---|
데이터베이스 설계 실습 - 맥도날드 키오스크 (0) | 2023.06.25 |
정규화 (0) | 2023.06.25 |
데이터베이스 설계 (0) | 2023.06.24 |
Join 시, on과 where의 차이 (0) | 2023.04.13 |