데이터 테이블을 많이 다루면서 자주 나오는 KEY 라는 용어, 정확한 정의가 뭘까?
Super Key
우선, key의 상위 개념인 superkey에 대해 알아보자.
Super key라는 것은 중복 튜플이 나오지 않게 하는 attribute세트이다.
⭐ 위 relation table의 예시를 보자면, superkey가 될 수 없는 것은(=중복된 튜플을 가지도록 하는 attribute 세트)
{B}, {D},{F},{D,F} 이다.
저 네 집합만 제외하고는, 모든 집합은 다 superkey가 될 수 있는 것이다. {A,B,C},{A,D},{C,D,F} .... 등등
⭐ 이제 Key 라는 것은, 이렇게 superkey의 집합들 중에서 최소성을 만족하는 것이다.
여기서 말하는 '최소성' 이란, 집합에서 하나씩 제외할 때, 각 튜플을 판단하는 키로써의 역할을 잃지 않을 최소단위이다.
예를 들어 위의 super key의 예시에서 {C,D,F}에서 C를 지워버린다면, {D,F}가 되어 튜플을 판별하는 키의 역할을 할 수 없어지게 된다.
➡️key가 최소성을 만족하는지 확인하려면 그 부분집합 중에 superkey가 될 수 있는 것이 또 있는지 확인하면 된다.
EX) superkey {C,D,F}에서도 보면, {C,D}, {C,F}등도 슈퍼키가 될 수 있기에 key가 아니다.
⭐ 위 예시에서 key가 될 수 있는 것은
{A},{C},{E},{B,F} 이다.
참고로 위와 같은 key의 후보들을 Candidiate Key라고 하고, 그중 주인공이 될 키(내가 쓸 키) 를 우리가 앞으로 수두룩하게 사용할 Primary Key라고 부른다.
Key⊂SuperKey 이기 때문에, 모든 키는 슈퍼키이나 그 역은 성립하지 않는다.
좋은 Primary key의 조건
Stable | 바뀌지 않아야 한다. |
Definitive | 항상 존재해야 한다. (NULL 경우의 수 최소화) |
Numeric | 가급적 숫자 정보! |
Minimal | attribute가 적을수록 좋다(3개 이하) |
Short | 짧아야 한다. |
Security | 민감한 정보는 좀...(ex - 주민번호) |
'코딩 > SQL, Mysql' 카테고리의 다른 글
[Sql] 무결성 제약조건(Integrity Constrains) (0) | 2024.04.20 |
---|---|
[Mysql] (1054, "Unknown column in 'field list'") 오류해결 (0) | 2024.02.05 |