[Database] 기본키, 대체키, 외래키, 테이블 제약 조건


테이블 생성 - 키 정의

  • 기본키, 대체키, 외래키를 지정

기본키

  • PRIMARY KEY를 사용해 지정
  • 모든 테이블에 기본키는 반드시 하나만 지정

    • 예 : PRIMARY KEY ( account ) <== 고객의 계정(account)를 기본키로 지정
  • 여러 개의 속성으로 구성할 수 있음
    • 예 : CONSTRAINT pk_orderID PRIMARY KEY ( customer, item ) <== 기본키로 pk_orderID가 지정되었고, 기본키의 값은 주문을 한 고객 (customer)과 주문제품 (item)으로 구성됨
  • 기본키를 지정하지 않아도 됨
  • 기본키는 하나의 투플을 선택할 수 있음


대체키

  • UNIQUE를 사용해 지정
  • 기본키와 같이 각 투플을 유일하게 식별
  • 대체키의 값은 테이블 내에서 중복되면 안됨 (유일성)
  • NULL 값을 가질 수 있음 (기본키 : NULL 값을 가질 수 없음)
  • 한 데이블에서 여러 개 지정할 수 있음
  • 예 : UNIQUE (name) <== 고객이름(name) 속성을 대체키로 지정
  • 예 : UNIQUE ( customer, item ) <== 기본키의 값은 주문을 한 고객(customer)과 주문제품 (item)으로 구성됨


외래키

  • FOREIGN KEY를 사용해 지정
  • 참조 테이블을 분명히 밝혀야 함.
    • 참조 무결성 제약 조건을 유지
    • REFERENCES 다음에 제시
    • 예 : FOREIGN KEY ( customer ) REFERENCES Customer( account )
  • 참조되는 테이블에서 투플을 삭제하거나 변경시 제약이 따름
  • 참조 무결성 제약 조건 옵션

  • 참조 무결성 제약 조건 옵션을 선택하지 않은 경우
    • ON DELETE NO ACTION 이 자동 선택됨
  • ON DELETE NO ACTION 실행

  • ON DELETE CASCADE 실행

  • ON DELETE SET NULL 실행

  • ON DELETE SET DEFAULT
    • MySQL 에서는 Parser는 인식하지만, 데이블 정의는 거절됨

테이블 생성 - 제약 조건 정의

제약 조건 정의

  • 테이블을 정의할 때, 특정 속성에 대하여 제약 조건을 지정할 수 있음
  • CHECK 키워드를 사용
  • 지정한 제약 조건을 만족하는 투플만 존재할 수 있음.
  • 투플을 삽입하거나 수정할 때, 이 제약조건을 지켜야 함. ==> 데이터의 무결성을 위한 제약 조건을 표현하는 방법
  • 예 : CHECK ( 재고량 >= 0 AND 재고량 <= 5000 ) <= 모든 제품의 재고량은 항상 0개 이상이고, 5000개 이하
  • CONSTRAINT 키워드와 함께 고유의 이름을 부여

    • 제약 조건을 여러 개 지정할 때 사용
    • 제약 조건을 수정하거나 제거할 때 식별하기 쉽다.
    • 예 : CONSTRAINT Chk_date CHECK ((sdate<=usedate) AND (usedate<=expdate))