Oracle DB_키 (Key)

JW__1.7·2022년 8월 24일
0

DB 공부일지

목록 보기
5/27

키(Key)

하나의 테이블에서 각 로우(Row)를 고유(Unique)하게 식별(Identify)할 수 있는 칼럼(Column) 또는 칼럼의 조합이다.

키(Key) 종류

  • 슈퍼키 Super Key
  • 후보키 Candidate Key
  • 기본키 Primary Key
  • 대체키 Alternate Key
  • 외래키 Foreign Key

테이블을 생성할 때 기본키(PK)와 외래키(FK)는 명시적으로 선언해야 한다.

슈퍼키(Super Key)

  • 테이블의 각 로우(Row)들을 식별할 수 있는 칼럼(Column) 또는 칼럼의 집합
  • 고객 테이블을 분석하여 슈퍼키가 될 수 있는 칼럼이나 칼럼의 집합을 선정
    판단 기준 : 모든 로우(Row)가 서로 다른 값을 가질 수 있는가? 유일성(Unique)
  • 선정된 슈퍼키의 예시
    • 고객번호
    • 아이디
    • 휴대폰번호
    • 주민번호
    • 고객명 + 직업

후보키(Candidate Key)

  • 최소한의 칼럼(가장 적은 수의 칼럼)으로 구성된 슈퍼키(Super Key)만 선정한 것
  • 후보키는 유일성 + 최소성
  • 선정된 후보키의 예시
    • 고객번호
    • 아이디
    • 휴대폰번호
    • 주민번호

기본키(Primary Key)

  • 후보키(Candidate Key) 중에서 DBA가 선택한 키를 의미
  • 기본키(Primary Key, PK, 주키)는 유일성 + 최소성
  • 기본키는 개체 무결성
  • NOT NULL : 널(NULL) 값 X
  • UNIQUE : 중복된 값 X
  • 값이 변경되거나 의미가 변경될 수 있는 칼럼은 기본키로 부적절
  • 선정된 기본키의 예시
    • 고객번호

기본키(Primary Key) 선정

  • 기본키(Primary Key)의 종류
    • 자연키(Natural Key) : 비즈니스 모델을 통해서 추출한 키, 즉 실제로 존재하는 데이터
    • 인공키(Artificial Key) : 실제로 존재하지 않는 데이터를 인위적으로 추가한 키, 주로 AUTO INCREMENT 값을 사용

고객 테이블의 기본키 선정 사유

  • 고객번호

    • 인공키
    • 고객이 추가될때마다 번호를 하나씩 증가시켜서 부여하므로 NOT NULL + UNIQUE 모두 만족
  • 아이디

    • 자연키
    • 일반적으로 고객마다 서로 다른 아이디를 필수로 사용하므로 NOT NULL + UNIQUE 모두 만족
    • 향후 이메일로 아이디를 대체하는 등 아이디의 의미가 변할 수 있으므로(아이디 없이 회원 가입이 가능할 수 있으므로) 기본키로 부적절
  • 휴대폰번호

    • 자연키
    • 휴대폰이 없는 고객이 존재할 수 있으므로 기본키로 부적절
  • 주민번호

    • 자연키
    • 모든 고객이 서로 다른 값을 가지고 있으므로 NOT NULL + UNIQUE 모두 만족
    • 회원 가입할 때 주민번호는 입력 받는 필수 요소가 아니므로 기본키로 부적절

대체키(Alternate Key)

  • 기본키(Primary Key) 키를 제외한 나머지 후보키(Candidate Key)를 의미
  • 보조키
  • 선정된 대체키의 예시
    • 아이디
    • 휴대폰번호
    • 주민번호

외래키(Foreign Key)

  • 다른 테이블과 관계(Relationship)를 맺기 위해서 설정하는 키(Key)
  • 외래키(Foreign Key)는 다른 테이블의 기본키(PK) 또는 유일키(Unique)와 관계를 맺을 수 있다.
  • 외래키는 참조 무결성의 특징을 가짐
    • 관계를 맺은 테이블의 키(기본키 또는 유일키)의 도메인(Domain)을 가져야 한다.
    • 관계를 맺은 테이블에 없는 데이터는 가질 수 없다.
  • 외래키는 중복 가능 , NULL 가능
  • 참조 관계에서 기본키를 가진 테이블을 부모 테이블, 외래키를 가진 테이블을 자식 테이블

외래키와 기본키의 관계

각 키의 관계

제약조건(무결성)

참조 무결성

릴레이션은 참조할 수 없는 외래키값을 가질 수 없다.

개체 무결성

한 릴레이션의 기본키를 구성하는 어떠한 속성 값도 NULL값 이나 중복 값을 가질 수 없다.

도메인 무결성

각 속성 값은 반드시 정의된 도메인에 속한 값이어야 한다.
예시 ) 성적은 A ~ F 중 1개

0개의 댓글