티스토리 뷰

DataBase System

데이터 베이스 키(Key)

김남김 2023. 5. 21. 00:43

데이터베이스에서 사용하는 키에 대해 알아보자

릴레이션은 테이블, 튜플은 행 혹은 하나의 데이터라고 생각하면 된다.

속성은 테이블의 컬럼(열)이다.

키를 알아보기 앞서 최소성과 유일성의 개념을 알아보자

  • 최소성 : 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질
  • 유일성 : 하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질

최소성은 쉽게 설명하면 키를 구성하는 속성들이 진짜 각 튜플을 구분하는데 꼭 필요한 속성들로만 구성되어 있냐를 의미한다. (후에 배우는 슈퍼키는 속성 여러개를 묶어서 키로 사용한다) 굳이 없어도 될 속성들을 넣지 말자는 말이다.

 

 

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함