학번 | 주민등록번호 | 성명 | 성별 |
---|---|---|---|
1001 | 1234-5555 | 김 | 남 |
1002 | 1234-6666 | 박 | 여 |
1002 | 1234-7777 | 이 | 남 |
1003 | 1234-8888 | 최 | 여 |
학번 | 과목명 |
---|---|
1001 | 영어 |
1001 | 컴퓨터 |
1002 | 영어 |
1003 | 수학 |
1004 | 영어 |
1004 | 컴퓨터 |
ex) <학생> 릴레이션에서 '학번'이나 '주민번호'는 다른 레코드를 유일하게 구별할 수 있는 기본키로 사용할 수 있으므로 후보키가 될 수 있습니다. 즉, 기본키가 될 수 있는 키들을 후보키라고 합니다.
ex) <학생> 릴레이션에는 '학번'이나 '주민번호'가 기본키가 될 수 있고, <수강> 릴레이션에는 '학번'+'과목명'으로 조합해야 기본키가 만들어 질 수 있습니다. 왜냐면 <수강> 릴레이션에서는 '학번' 속성과 '과목명' 속성은 개별적으로 기본키로 사용할 수 없습니다. 다른 튜플들과 구별되지 않기 때문입니다.
ex) <수강> 릴레이션이 <학생> 릴레이션을 참조하고 있으므로 <학생> 릴레이션의 '학번'은 기본키이고, <수강> 릴레이션의 '학번'은 외래키입니다.
즉 각 릴레이션의 입장에서 속성은 기본키가 되기도하고, 외래키가 되기도 합니다.
ex) <수강> 릴레이션의 '학번'에는 <학생> 릴레이션의 '학번'에 없는 값은 입력할 수 없습니다.
기본 키 제약이라고도 하며, 테이블은 기본키를 지정하고 그에 따른 무결성 원칙을 지켜야 하는 조건
[학생] 릴레이션에서 ‘학번’을 기본키로 지정했다면 ‘학번’ 속성은 NULL이 되어서는 안됩니다.
외래 키 제약이라고도 하며, 테이블 간의 참조 관계를 선언하는 제약조건
[수강] 릴레이션에서 ‘학번’ 속성에는 [학생] 릴레이션의 ‘학번’ 속성에 없는 값은 입력할 수 없다.