[데이터베이스] 키

Chloe Choi·2021년 3월 15일
0

데이터베이스

목록 보기
1/4

키(Key)

릴레이션에서 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성(attribute), a.k.a. 식별자

속성에 밑줄을 그어 키(기본키) 임을 표시

키의 특성

  • 유일성: 하나의 키 값으로 하나의 튜플을 유일하게 식별할 수 있어야 함
  • 최소성: 키를 구성하는 속성 중 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함

키의 종류

후보키(Candidate key)

  • 튜플을 유일하게 구분할 수 있는 최소한의 속성의 집합
  • 유일성, 최소성을 만족해야 함

기본키(Primary key)

  • 후보키 중 선정되어 엔티티를 대표하는 키
  • 따라서, 유일성, 최소성을 만족
  • NULL 값을 가질 수 없음 ❗️개체 무결성❗️

    여러 후보키 중 어떤 걸 기본키로 설정해야 할까?

    NULL 값을 가질 수 있는 속성이 포함된 후보키는 부적합
    👉 다른 튜플과 구분하기 어려움
    값이 자주 변경될 수 있는 속성이 포함된 후보키는 부적합
    👉 다른 튜플과 구별되는 값인지 매번 확인해야 하는 번거로움
    단순한 후보키를 기본키로!
    👉 정수, 단순 문자열 👉처리 및 이해가 쉬움

고유키(Unique key)

  • 값이 입력되지 않아도 됨(NULL 허용)
  • 고유키 + NOT NULL = 기본키 (속성만 봤을 때)

대체키(Alternate key)

  • 기본키가 아닌 후보키 (후보키 - 기본키)

슈퍼키(Super key)

  • 유일성은 만족하나 최소성은 만족하지 않는 키

외래키(Foreign key)

외래키는 왜 필요할까?

고객정보와 주문정보가 있다고 하자. 주문정보가 갱신될 때마다 매번 고객정보도 같이 저장할 수 없다. 저장하게 되면 데이터 중복이 발생하고, 결국 많은 메모리가 필요하고 검색에 많은 시간이 들 수 있다.
따라서, 고객정보와 주문정보를 다른 테이블에 저장하고 주문정보 테이블에 고객정보를 찾을 수 있는 정보(고객정보 테이블의 기본키)를 추가해 관리한다! 이를 외래키라고 한다

  • 다른 릴레이션의 기본키를 참조하는 속성 또는 속성의 집합
  • 릴레이션 간의 관계를 나타내기 위해 사용됨
  • 외래키는 참조 릴레이션의 기본키와 동일한 키 속성(도메인)을 가짐
  • 따라서, 하나의 필드 또는 전체 필드의 부분집합이 될 수 있음
  • 중복된 값과 NULL 값을 가질 수 있음
    • if not null 👉 다른 테이블의 존재하는 기본값을 참조해야 함 ❗️참조 무결성❗️
    • null은 존재하는 값이 아니지만 다수의 데이터베이스에서 예외로 둠 (ex. 사원은 하나의 부서를 갖는다. 하지만 신입사원은 부서가 미정일 수 있다.)

profile
똑딱똑딱

0개의 댓글