슈퍼 키(super key)
정의
한 릴레이션 내에서 특정 투플을 고유하게 식별하는 하나의 애트리뷰트(기본 키) 또는 애트리뷰트들의 집합
문제점
투플을 고유하게 식별하는 데 꼭 필요하지 않은 (=기본 키가 아닌) 애트리뷰트가 포함될 수 있음
후보 키(candidate key)
정의
각 투플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임
특징
1. 모든 릴레이션에는 최소 한 개 이상의 후보키가 있음
2. 기본 키로 선정되지 않은 후보 키도 있을 수 있음 (= 대체 키(alternate key))
3. 두 개 이상의 애트리뷰트로 이루어질 수 있음 (=복합 키(composite key))
💡주의
어떤 릴레이션의 인스턴스를 살폈을 때 중복이 없다고 해서 후보키로 판단하면 안 된다.
∵ 어떤 시점에 중복된 값이 없다고 해서 미래에도 중복이 발생하지 않는다고 단정할 수 없기 때문이다.
(ex) 이름의 경우 처음에는 중복되지 않더라도 나중에 동명이인이 나타날 수 있다.)
기본 키(primary key)
정의
한 릴레이션 내의 모든 투플을 고유하게 식별 가능한 키 (= 후보 키들 중 하나)
특징
1. null값, 중복된 값을 가질 수 없음
2. 기본 키를 찾을 수 없는 경우, 레코드 번호와 같이 인위적인 키 애트리뷰트를 릴레이션에 추가하여 기본 키로 사용(=대리 키(surrogate key))
💡기본 키 선정 시 고려 사항
1. 애트리뷰트가 항상 고유한 값을 가질 것인가?
2. 애트리뷰트가 확실하게 null값을 가지지 않을 것인가?
3. 애트리뷰트 값이 변경될 수 있는 애트리뷰는 기본 키로 선정하지 말 것
4. 복합 기본 키는 가능한 피할 것
5. 가능한 작은 정수 값이나 짧은 문자열을 갖는 애트리뷰트를 기본 키로 할 것
외래 키(foreign key)
정의
어떤 릴레이션의 기본 키를 참조하는 애트리뷰트, 릴레이션들 간의 관계를 나타내기 위해 사용
특징
1. 참조되는 기본 키와 동일한 도메인을 가져야 함 (= 기본 키가 가지고 있는 값만 가져야 함)
2. 기본 키가 아닌 외래키의 경우 null 값을 가져도 됨
3. 외래 키는 참조되는 기본 키와 다른 이름을 가질 수 있음
💡'도메인'이란?
도메인(domain)은 한 애트리뷰트에 나타날 수 있는 값들의 집합이다.
'TIL > DB' 카테고리의 다른 글
[TIL] MySQL 출력할 행의 개수 제한하기 - LIMIT, OFFSET (0) | 2024.12.10 |
---|---|
[TIL] DATE, DATETIME, TIMESTAMP 비교 (0) | 2024.12.06 |
[TIL] 집계 함수 (COUNT,SUM,AVG...) + LIMIT, DISTINCT (0) | 2024.12.05 |