데이터베이스

키(Key)

yu_gyeong 2023. 11. 19. 17:16

1. 키(Key)란?

테이블의 column 중에서 식별자로 이용 가능한 column

2. 유일성, 최소성, 무결성

  • 유일성 : 하나의 키 값으로 row를 유일하게 찾아낼 수 있는 성질
  • 최소성 : 키를 구성하는 column들 중 꼭 필요한 최소한의 column들로만 키를 구성하는 성질
  • 무결성 : 데이터가 항상 정확한 값을 유지하는 성질

3. 키의 종류

키의 종류

예시

1. 슈퍼키(Super Key)

  • 테이블에서 row를 유일하게 식별할 수 있는 1개 이상의 column들의 집합
  • 유일성을 만족시킨다.

예시)

  • (학번)
  • (학번, 이름)
  • (학번, 이름, 과목)
  • (주민등록번호)

2. 후보키(Candidate Key)

  • 테이블에서 row를 유일하게 식별할 수 있는 최소한의 column들의 집합
  • 기본키로 사용할 수 있는 column
  • 유일성과 최소성을 만족시킨다.

예시)

  • (학번)
  • (주민등록번호)

3. 기본키(Primary Key)

  • 후보키 중에서 선택한 메인 키
  • 테이블에서 row를 유일하게 식별할 수 있는 column
  • Null 값이나 중복된 값을 가질 수 없다.
  • 유일성과 최소성을 만족시킨다.

4. 대체키(Alternate Key) = 보조키

  • 후보키가 2개 이상일 때, 기본키를 제외한 나머지 후보키들

5. 외래키(Foreign Key)

  • 다른 테이블의 기본키를 참조하는 테이블의 키
  • 외래키는 다른 테이블의 기본키를 참조하여 테이블 간의 관계를 표현한다.
  • 무결성때문에 외래키 설정이 필요하다.

외래키 예시

  • 왼쪽 테이블에서 student_id는 기본키, 오른쪽 테이블에서는 외래키이다.
  • 왼쪽 테이블에서 student_id 가 변경되었는데, 오른쪽 테이블의 student_id가 변경되지 않았다면 문제가 생긴다.

→ 이를 예방하기 위해 외래키가 존재한다.

6. 복합키(Composite Key)

  • 테이블에서 row를 식별할 수 있는 2개 이상의 column들로 구성된 기본키

4. 관계형 데이터베이스 관계 유형

  1. 1:1 관계 : 한 테이블에서 1개의 레코드와 다른 테이블의 1개의 레코드가 연결되는 관계
  2. 1:N 관계 : 한 테이블에서 1개의 레코드와 다른 테이블의 2개 이상의 레코드가 연결되는 관계

1:N관계 예시

  • 고객 한 명이 여러 개의 상품을 주문할 수 있지만, 각 주문은 한 사람에게만 연결된다.


  1. N:M 관계 : 한 테이블의 여러 레코드가 다른 테이블의 여러 레코드와 연결되는 관계

N:M관계 예시

  • 고객 한 명이 여러 개의 상품을 주문할 수 있고, 상품 1개가 여러 명의 고객에게 주문될 수 있다.
  • 고객-상품 테이블을 통해 어떤 고객이 몇 개의 상품을 주문했는지, 어떤 상품이 몇 명의 고객에게 주문되었는지 등을 확인할 수 있다.

면접 예상 질문

  1. 기본키에 대해 설명해주세요.
  2. 후보키에 대해 설명해주세요.
  3. 대체키에 대해 설명해주세요.
  4. 슈퍼키에 대해 설명해주세요.
  5. 외래키에 대해 설명해주세요.
  6. 복합키에 대해 설명해주세요.
  7. 1:N 관계에 대해 설명해주세요.
  8. N:M 관계에 대해 설명해주세요.

참고 URL

https://yozm.wishket.com/magazine/detail/1096/
https://velog.io/@00yubin00/DB-키의-종류-슈퍼키-후보키-기본키-대체키-외래키
https://omnic.tistory.com/entry/데이터베이스-키Key의-개념
https://velog.io/@kon6443/DB-기본키-외래키-후보키-복합키-개념-4x1bgz5w
https://conanmoon.medium.com/데이터과학-유망주의-매일-글쓰기-46일차-3aca5154f4cb

'데이터베이스' 카테고리의 다른 글

정규화  (0) 2024.01.07
SQL vs NoSQL  (0) 2023.12.24
JOIN  (0) 2023.12.16
데이터베이스 기초  (0) 2023.11.18