키(key)
- 키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 애트리뷰트(속성)
✨ 키(key)들의 종류
후보키: 유일성 ㅇ, 최소성 ㅇ
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합
- 기본키로 사용할 수 있는 속성
- 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야 함
ex) <학생> 릴레이션(테이블)에서 학번
이나 주민번호
는 다른 레코드에서 유일하게 구별할 수 있는 기본키로 사용할 수 있음으로 후보키
기본키(Primary Key)
- 후보키 중에서 선택한 주키(Main Key)
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- Null 값을 가질 수 ❌
- 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음
- (정리) : null ❌, 중복된 값 ❌
ex) <학생> 릴레이션(테이블)에서 학번
이나 주민번호
가 기본키가 될 수 있음,
<수강> 릴레이션(테이블)에서 학번+과목명
을 조합하여 기본키가 될 수 있음
대체키
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 뜻함
ex) <학생>릴레이션(테이블)에서 학번
을 기본키로 정의하면, 주민번호
는 대체키가 됨
슈퍼키 : 유일성 ㅇ, 최소성 x
-
테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합이다. 슈퍼키는 유일성만 만족하면 슈퍼키가 될 수 있다.
=> 어떤 속성으로 묶던 중복값이 안나오고 구별만 할 수 있으면 돼! 😁
-
릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못함
◽ 유일성?
-> 하나의 키로 특정 행을 바로 찾아낼 수 있는 고유한 데이터 속성을 뜻함 ex) 주민번호
ex) <학생>릴레이션(테이블)에서 학번
, 주민번호
, 학번+주민번호
, 주민번호+성명
, 학번+주민번호+성명
등으로 슈퍼키를 구성할 수 있다.
외래키(FK:Foreign Key )
- 어떤 테이블 간의 기본 키를 참조하는 속성이다. 테이블들 간의 관계를 나타내기 위해서 사용
- 외래키는 참조되는 테이블의 기본키와 동일한 키. 속.성.을 가진다.
ex) <수강>릴레이션(테이블)이 <학생>릴레이션(테이블)을 참조하고 있으므로 <학생>릴레이션의 학번
은 기본키이고, <수강>릴레이션의 학번
은 외래키이다
<수강>릴레이션의 학번
에는 <학생>릴레이션의 학번
에 없는 값을 입력할 수 없다
🔴 부모 테이블 먼저 삭제될 수 없다.
Why?
- 부모테이블을 참조하는데 부모테이블이 삭제되면 자식테이블은 참조하는 것이 없어지기 때문에 외래키 오류가 생긴다.
=> 곧, 외래키 관계에서 부모테이블을 삭제하기 위해서는 자식테이블 먼저 삭제한 후 부모테이블을 삭제해야한다.
💬 또다른 예시
✨무결성 제약조건
목적 :
데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하는 것
1. 무결성의 의미
- 데이터베이스는 무결성이 보장되도록 여러 개체에 규정을 부여하여 운영
- 일관된 데이터베이스 상태를 정의하는 규칙들을 묵시적으로 또는 명시적으로 정의함
=> 즉, 필요없는 데이터는 걸러내고 필요한 데이터만 남아있는 상태
2. 무결성 제약조건들
1. 도메인 제약조건 : 특정 속성값은 그 속성이 정의된 도메인에 속한 값이어야 함
- 각 애트리뷰트 값이 반드시 원자값이어야 함
- 각각의 속성은 숫자, 문자 등의 도메인을 가지면 해당 도메인에 맞는 데이터를 삽입해야 함
- 그 뿐만 아니라 삽입되는 데이터를 제한하거나, 삽입되지 않을 경우 기본값, null 제한 등의 기능을 제공.
2. 키 제약조건(key constraint)
- 키 애트리뷰트에 중복된 값이 존재해서는 안됨
-> 기본키가 아님
3. 엔티티 무결성 제약조건(entity integrity constraint)
- 엔티티 : 데이터 집합 (사원, 부서, 고객, 상품...)
- 릴레이션의 기본 키를 구성하는 어떤 애트리뷰트도 널값을 가질 수 없음
=> 대체 키에는 적용되지 않음
4. 참조 무결성 제약조건(referential integrity constraint)
- 두 릴레이션의 연관된 튜플들 사이의 일관성 을 유지하는데 사용됨
- 릴레이션 R2의 외래 키가 릴레이션 R1의 기본 키를 참조할 때, 참조 무결성 제약조건은 아래의 두 조건 중 하나가 성립되면 만족됨.
1) 외래 키의 값은 R1의 어떤 투플의 기본 키 값과 같다
2) 외래 키가 자신을 포함하고 있는 릴레이션의 기본 키를 구성하고 있지 않으면, 널값을 가진다.
📣 그 밖의 무결성 제약조건들
출처
inyong_pang님의 글을 참고하여 작성했습니다.
Inpa Dev 님의 글을 참고하여 작성했습니다.
쩨리쩨리 님의 글을 참고하여 작성했습니다.