키(Key) 정리

gang_shik·2022년 5월 10일
1

Database

목록 보기
2/9

데이터베이스 키의 개념 및 종류

  • 키(Key)는 데이터베이스에서 조건에 맞는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성(Attribute)

  • 여기서 튜플은 각각의 행, 속성의 모임으로 아래와 같이 표의 형태로 이해하면 됨

학번주민번호이름나이
1928888-888888김덕배27
2929999-777777추정호32
3008777-777777이정빈22

Key의 종류

슈퍼 키(Super Key)

  • 유일성을 만족하는 키, 예를 들면 {학번 + 이름}, {주민등록번호 + 학번}

  • 위의 표를 다시 가져와서 보면

학번주민번호이름나이
1928888-888888김덕배27
2929999-777777추정호32
3008777-777777이정빈22
  • 여기서 이 3명을 구분할 수 있는 것은 절대 겹치지 않는 학번일수도, 주민번호 일수도 있음

  • 이름과 나이를 묶어서 하나의 속성으로 만드는 것도 가능함, 이름과 나이를 합쳐서 중복이 되지 않고 구분할 수 있다면 슈퍼키가 될 수 있음

  • 어떤 속성끼리 묶던 중복값이 안나오고 서로 구별만 할 수 있으면 됨

후보 키(Candidate Key)

  • 유일성과 최소성을 만족하는 키, 기본키가 될 수 있는 후보이기 때문에 후보키라고 불림, 예를 들어 주민등록번호, 학번 등
학번주민번호이름나이
1928888-888888김덕배27
2929999-777777추정호32
3008777-777777이정빈22
  • 위의 표에서 4명을 구분하는 슈퍼키들이 모여 있는데, 슈퍼키들 중에서 속성은 최소한의 갯수로 4명을 구분할 수 있어야함

  • 즉, 학번, 주민번호는 속성들이 각 1개씩 이루어져서 가능하지만 이름 + 나이 슈퍼키는 묶어서 2개의 속성으로 되어 있으므로 최소성을 만족하지 못함, 그래서 후보키가 될 수 없음

기본 키(Primary Key)

  • 후보 키에서 선택된 키, NULL 값이 들어갈 수 없으며, 기본키로 선택된 속성(Attribute)은 동일한 값이 들어갈 수가 없음

  • 후보키들 중에서 하나를 선택한 키로 최소성과 유일성을 만족함, 테이블에서 기본키는 오직 1개만 지정할 수 있음

  • 기본키는 NULL 값을 절대 가질 수 없고, 중복된 값을 가질 수 없음

학번주민번호이름나이
1928888-888888김덕배27
2929999-777777추정호32
3008777-777777이정빈22
  • 위의 표에서 학번을 기본키로 설정가능함

대체 키(Alternate Key)

  • 후보 키 중에 기본 키로 선택되지 않은 키

  • 후보키가 두 개 이상일 경우 그 중에서 어느 하나를 기본키로 지정하고 남은 후보키들을 대체키라고 함

학번주민번호이름나이
1928888-888888김덕배27
2929999-777777추정호32
3008777-777777이정빈22
  • 후보키로 학번과 주민번호가 뽑혔고, 둘 중에서 기본키는 학번이 됐다면 학번이 기본키가 되고 남은 후보키인 주민번호는 대체키가 될 수 있음, 학번 기본키가 없어지게 되면 주민번호는 없어진 기본키를 대체할 수 있게됨

외래 키(Foreign Key)

  • 어떤 테이블(Relation)간의 기본 키(Primary Key)를 참조하는 속성임, 테이블(Relation)들 간의 관계를 나타내기 위해서 사용됨

  • 참조 될 테이블(A)이 먼저 만들어지고 참조하는 테이블(B)에 값이 입력되어야함

  • 이때 참조될(A) 열의 값은 참조될(A) 테이블에서 기본키(Primary Key)로 설정되어 있어야함

  • 외래키는 참조되는 테이블의 기본키와 동일한 키 속성을 가짐

  • 참조되는 부모테이블이 먼저 생성된 뒤 데이터를 넣고, 참조하는 자식 테이블이 다음에 생겨야됨

  • 부모 테이블 먼저 삭제될 수 없음, 왜냐하면 부모테이블을 참조하는데 부모테이블이 삭제되면 자식테이블은 참조하는 것이 없어지기 때문에 외래키 오류가 생김, 따라서 외래키 관계에서 부모테이블을 삭제하려면 자식테이블 먼저 삭제한 후 부모테이블을 삭제해야함

  • 아래의 학생 테이블이 부모 테이블이고 자식 테이블은 수강 테이블임

학번주민번호성명
A11928888-888888김덕배
A12929999-777777추정호
A13008777-777777이정빈
학번과목명
A11영어
A12수학
A13영어
  • 위처럼 학생테이블은 학번이 기본키이자 참조되는 참조키임

  • 수강테이블은 학번이 참조하는 키이자 외래키임

profile
측정할 수 없으면 관리할 수 없고, 관리할 수 없으면 개선시킬 수도 없다

0개의 댓글