릴레이션은 중복된 투플을 허용하지 않기 때문에 각각의 투플에 포함된 속성들 중어느 하나(혹은 하나 이상)는 값이 달라야 함. 즉 키가 되는 속성(혹은 속성의 집합)은 반드시 값이 달라서 투플들을 서로 구별할 수 있어야 함
키는 릴레이션 간의 관계를 맺는 데도 사용
투플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키가 될 수 있음
후보키가 하나뿐이라면 그 후보키를 기본키로 사용하면 되고 여러 개라면 릴레이션
의 특성을 반영하여 하나를 선택하면 됨.
🎨 기본키 선정 시 고려사항
▪ 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야 함.
▪ NULL 값은 허용하지 않음.
▪ 키 값의 변동이 일어나지 않아야 함.
▪ 최대한 적은 수의 속성을 가진 것이라야 함.
▪ 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 함.
대리키는 DBMS나 관련 소프트웨어에서 임의로 생성하는 값으로 사용자가 직관적으
로 그 값의 의미를 알 수 없음
🎨 외래키의 특징
▪ 관계 데이터 모델의 릴레이션 간의 관계를 표현함.
▪ 다른 릴레이션의 기본키를 참조하는 속성임.
▪ 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 함.
▪ 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨.
▪ NULL 값과 중복 값 등이 허용됨.
▪ 자기 자신의 기본키를 참조하는 외래키도 가능함.
▪ 외래키가 기본키의 일부가 될 수 있음.
• 도메인 제약(domain constraint)이라고도 하며, 릴레이션 내의 투플들이 각 속성의 도메인에 지정된 값만을가져야 한다는 조건
• SQL 문에서 데이터 형식(type), 널(null/not null), 기본 값(default), 체크(check) 등을 사용하여 지정할 수 있음.
• 기본키 제약(primary key constraint)이라고도 함.
• 릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙 즉, 기본키는 NULL 값을 가져서는 안 되며 릴레이션내에 오직 하나의 값만 존재해야 한다는 조건임.
• 외래키 제약(foreign key constraint)이라고도 하며, 릴레이션 간의 참조 관계를 선언하는 제약조건
• 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될때 부모 릴레이션의 제약을 받는다는 것