모두 기억하기 힘들다면 기본키, 외래키만은 꼭 기억하자!
특별한 언급 없이 "키"라고 하면 "후보키"를 의미 (유일성 + 최소성) 한다는 것을 기억하자!
투플을 유일하게 식별할 수 있는 하나의 속성 또는 속성의 집합이라고 생각하자.
즉, 유일성을 만족해야 한다.
투플을 유일하게 식별할 수 있는 속성의 최소 집합이다.
유일성, 최소성을 만족해야 한다.
여러 후보키 중 하나를 선택하여 릴세이션을 대표하는 속성이 기본키가 된다.
즉, 만약 후보키가 하나라면 그 후보키를 사용한다.
후보키가 여러 개라면, 하나를 선택한다.
여기서 NULL은 “값이 없음” 을 나타내는 용어이다.
숫자 0이나 공백(“ “) 과는 다른 개념이라는 것에 유의해야 한다.
데이터베이스에서 값이 존재하지 않음을 나타낼 때 사용한다.
“아직 입력되지 않은 값” , “알 수 없는 값”을 의미
Ex) NULL + 5 == 5가 아니다. (NULL과 계산 불가능)
마땅한 기본키가 없는 경우, 일련번호 속성을 만들어 기본키로 만든다.
DBMS나 소프트웨어에서 임의로 생성한다.
기본키로 선정되지 않은 후보키
다른 릴레이션의 기본키를 참조하는 속성이다.
자기 릴레이션의 기본키를 참조할 수도 있다.
• 관계 데이터 모델의 특징인 “Relation”을 표현
• 다른 릴레이션의 기본키를 참조하는 속성
• 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션 도메인은 서로 같아야 함
-> 가질 수 있는 값의 집합이 다를 수는 없으니까!
• 참조되는(기본키) 값이 변경되면 참조하는(외래키) 값도 변경됨
-> 원래 값이 바뀌면 가져오는 값도 바뀜!
• NULL 값과 중복 값 등 허용
• 자기 자신의 기본키를 참조하는 외래키 가능
참조 무결성 제약조건
• 외래키(Foreign Key)는 다른 릴레이션의 기본키(Primary Key)를 참조해야 함
(자신의 릴레이션이 기본키를 참조할수도 있음.)
기본키는 유일성과 최소성을 만족!! (개인정보 같은 민감한 정보는 쓰지 않는 것이 좋음.)
외래키는 다른 릴레이션의 키를 가져옴!
전에 풀었던 문제에서 릴레이션 스키마를 표현할 때 깜빡하고 기본키에 밑줄을 안 그었는데, 기본키 밑에는 꼭 밑줄을 그어서 표현하자!