본문 바로가기
DB/MySQL

[DB] 키(Key) 정리 / MySQL

by 계범 2022. 2. 18.

Key

데이터베이스에서 튜플(Tuple)을 검색 또는 정렬시에 구분할 수 있는 기준이 되는 속성(attribute)

 

 

튜플:테이블을 구성하는 데이터들 중 가로 1줄. 즉 테이블에서의 속성들의 값을 가지고 있는 데이터 셋.

데이터베이스에선 로우(row)라고 부르고, 관계형 데이터베이스에선 튜플(Tuple) 또는 레코드(record)라고 부름

 

키의 종류

후보키(Candidate Key)

  • 릴레이션에서 tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분 집합.
  • 2가지 조건에 만족해야함.
    • 유일성: ket를 통해 하나의 tuple을 유일하게 식별 가능해야한다.
    • 최소성: 꼭 필요한 속성으로만 이루어져야한다.
      • 키를 구성하는 속성 중 하나라도 빠지면, 유일하게 식별되지 않도록 구성해야함.

 

릴레이션: 관계형 데이터베이스에서의 테이블을 뜻함.

 

기본키(Primary Key)

  • 후보키 중에서 선택한 main key
  • null값 X
  • 키본키 정의된 속성엔 중복 값 저장 불가

 

대체키(Alternate Key)

  • 후보키가 둘 이상일때 기본키를 제외한 나머지 후보키
  • 보조키라고도 부름

 

슈퍼키(Super Key)

  • 튜플들에 대해 유일성 만족, 최소성 만족x인 키

 

외래키(Foreign Key)

  • 다른 릴레이션의 기본키를 참조하는 속성 집합

 

그림을 통한 이해

<사원 테이블>

사번 주민번호 성명 입사날짜 부서번호
1001 831122-1024516 장독대 1986-06-26 1
1002 931027-2123852 성소영 2022-10-27 2
1003 931122-1234567 계해범 2022-04-01 3
1004 960319-2012354 김나라 2012-08-14 3

 

<부서 테이블>

부서번호 부서명
1 인사
2 검색
3 회계

 

 

사원 테이블을 기준으로 설명

 

후보키

  • 사번,주민번호 : 사원번호는 사원마다 배분되므로 유일. 주민번호도 유일성을 가짐(튜플을 유일하게 구분 가능)
  • 나머지는 유일하지 않음.
    • 입사날짜가 지금은 다 다르므로 가능하지만, 추후에 중복된 데이터 들어올 수 있으므로 해당 안됨.

기본키

  • 사번: 후보키 중 사번을 기본키로 선택.

 

대체키

  • 주민번호: 기본키 '사번'을 제외한 후보키.

 

슈퍼키

  • 사번, 주민번호, 사번+주민번호, 사번+주민번호+성명 등등
  • 다 튜플을 유일하게 구분할 수 있지만, 최소성을 만족하지 않을 수 있음.
    • 여기선 둘 이상의 조합 슈퍼키의 경우, 사번이나 주민번호만으로 유일성이 지켜지는데 2개 이상을 썼기 때문에 최소성을 만족하지 못함.

 

외래키

  • 부서번호: 부서 테이블의 기본키인 부서번호를 참조하는 속성

 

 

My SQL에서의 키

Primary Key

  • 기본키를 뜻함.
  • null을 허용하지 않고, 유일성 보장
  • 테이블에 한개만 가능
  • primary Key를 설정해두면 클러스터링 인덱스 생성

 

Unique Key

  • 보조키를 뜻함
  • null을 허용
  • 유일성 보장
  • 테이블에 여러개 가능
  •  Unique Key 설정해두면 보조 인덱스 생성(다른 DBMS에선 비클러스터형 인덱스라고 부름)

 

인덱스 관련 글

2022.01.31 - [BackEnd/DB] - [DB] 인덱스(index) / MySql에서 사용법

댓글