티스토리 뷰
데이터베이스에서 사용하는 키에 대해 알아보자
릴레이션은 테이블, 튜플은 행 혹은 하나의 데이터라고 생각하면 된다.
속성은 테이블의 컬럼(열)이다.
키를 알아보기 앞서 최소성과 유일성의 개념을 알아보자
- 최소성 : 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질
- 유일성 : 하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질
최소성은 쉽게 설명하면 키를 구성하는 속성들이 진짜 각 튜플을 구분하는데 꼭 필요한 속성들로만 구성되어 있냐를 의미한다. (후에 배우는 슈퍼키는 속성 여러개를 묶어서 키로 사용한다) 굳이 없어도 될 속성들을 넣지 말자는 말이다.
1. 슈퍼키 (Super Key)
- 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타내지 않는다.
- 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족시키지 못한다
- 슈퍼키 예시
- 주민등록 번호,이름,주소가 있는 테이블의 경우 슈퍼키로 (주민등록번호, 이름) 을 사용할 수 있다. 근데 이름 없이 주민등록번호로만도 애초에 튜플을 구분해주므로 주민등록번호가 최소성을 만족시키고 (주민등록번호,이름)은 최소성을 만족시키지 못한다.
2. 후보키 (Candidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 집합을 의미함
- 하나의 릴레이션내에서는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재
- 슈퍼키들 중, 최소성을 만족하는 속성들의 집합
- 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족
- 후보키 예시
- <학생> 릴레이션에서 '학번'이나 '주민번호'는 다른 레코드를 유일하게 구별할 수 있는 기본키로 사용할 수 있으므로 후보키가 될 수 있다.
3. 기본키 (Primary Key)
- 후보키 중에서 선택한 주키(Main Key) → 최소성과 유일성 만족
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- Null 값을 가질 수 없습니다. (개체 무결성의 첫번째 조건)
- 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없습니다.(개체 무결성의 두번째 조건)
- 기본키 예시
- <학생> 릴레이션에는 '학번'이나 '주민번호'가 기본키가 될 수 있고, <수강> 릴레이션에는 '학번'+'과목명'으로 조합해야 기본키가 만들어 질 수 있다. 왜냐면 <수강> 릴레이션에서는 '학번' 속성과 '과목명' 속성은 개별적으로 기본키로 사용할 수 없다. 다른 튜플들과 구별되지 않기 때문이다.
4. 대체키 (Alternate Key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말한다.
- 보조키라고도 한다.
- 대체키 예시
- <학생> 릴레이션에서 '학번'을 기본키로 정의하면 '주민번호'는 대체키가 된다.
5. 외래키 (Foreign Key)
- 관계(Relation)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성
- 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구로 사용된다.
- 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없다. (참조 무결성 조건)
외래키의 존재이유는 데이터 무결성 때문이다. 여기서 무결성이란 데이터가 항상 정확한 값을 유지하는 성질을 의미한다.
예를 들어 고객 릴레이션의 고객 아이디가 변경되었는데 주문 릴레이션의 주문 고객의 값은 변경되지 않았다면 두 값은 서로 같은 값이어야 하는데 다른값이 되어 버린다. 이는 무결성이 깨지는 것을 의미하며 치명적인 결함이죠. 이것을 예방하기 위해 외래키가 존재한다.
실제로 외래키를 설정할 때 여러 옵션을 통해, 기본값이 변경되었을 때 무결성을 지키기 위해 여러 옵션을 제공하고 있다. 예를 들어 기본값에 대한 조작이 있을 경우 이를 참조하는 외래키는 어떻게 할 것이냐 라는 것에 대한 여러 기능을 제공하고 있으며 개발자는 이를 각 상황에 맞게 적절히 사용할 수 있다.
++복합키
- 복합키는 각 튜플들을 식별할 수 있는 두 개 또는 그 이상의 속성들로 구성된 후보키다.
- 즉 후보키도 복합키일 수 있고 대체키도 복합키일 수 있고, 기본키도 복합키 일 수 있다.
- 튜플을 구별하는 속성이 하나면 단일키인거고 두 개 이상으로 이루어졌으면 복합키다.
헷갈릴 수 있는데 최소성이라는게 무조건 하나의 키로 구별 하라는게 아니라 최소한의 속성들로만 키로 이루어졌냐를 보는 것이다.
복합키와 수퍼키는 동의어가 아니다. 수퍼키들 중에서는 하나의 컬럼으로 이루어진 것이 있을 수 있다. 수퍼키들 중에서는 복합키들이 여러개 존재한다. 복합키는 컬럼의 갯수에 따른 분류이다.
'DataBase System' 카테고리의 다른 글
쿼리 응답 시간 (1) | 2024.07.13 |
---|---|
Index란? (0) | 2023.05.21 |
DBCP 란? (1) | 2023.05.21 |
데이터베이스와 파일시스템의 차이 (0) | 2023.05.21 |
SQL 조작 (0) | 2022.08.22 |