1 분 소요

2023. 02. 01. 수업내용 정리

제약조건..


제약조건

  • 제약조건(Constraint)은 테이블이 가지는 열의 구조상 삽입될 수 있는 레코드를 특정 조건하에 제한하여 무결성(데이터의 일관성, 정확성, 유효성이 유지)을 보장하기 위해 사용한다.

제약조건의 구조

  • 제약조건은 아래의 구조로 정의할 수 있다.
    CONSTRAINT [`제약 조건 이름`]? [제약 조건 종류] ([`대상 열`,...])
    


기본키(주 키, Primary Key, PK)

  • 제약 조건 키워드 : PRIMARY KEY
  • 테이블이 가지는 주 축이될 열(들)이다.
  • 하나의 테이블은 한 개 이상의 열을 하나로 묶어 기본 키로 설정할 수 있으나, 하나의 테이블이 여러개의 기본 키를 가져서는 안된다.
  • 레코드를 식별할 수 있는 값을 의미하는 열이 있다면 그 열을, 없다면 주로 순번(엄밀히 얘기하면 순번은 X)을 의미하는 index열을 기본 키로한다.
  • 기본 키로 설정된 열(들) 하에 동일한 값을 가지는 레코드는 중복될 수 없다.
  • 레코드 값 중복이 불가능한 것은 유니크(UNIQUE)제약 조건의 내용과 전적으로 동일하다. 유니크와 기본 키의 차이는 인덱싱여부인데, 기본 키에 대해서는 인덱싱(Clustered Index)이 이루어지며, 유니크에 대해서는 인덱싱하지 않는다.(Non-clustered Index)
    • 인덱스(Index) : 인덱스를 생성하는 것을 인덱싱(Indexing)이라 하며, 기본 키로 지정된 열의 접근점을 메모리에 목차화하여 선택(Select)이나 정렬(Order)등의 성능을 향상시킨다. 단, 이러한 이점 때문에 쓸모없는 열 까지 인덱싱 해버리면 메모리 오버헤드(Overhead)가 발생항려 성능상 패널티가 커짐으로 크게 생각하지 않고 어떠한 테이블의 주요한(레코드를 특정 지을 수 있는)열만 기본 키로 지정하여 인덱싱을 제한하는 것이 좋다.


유니크(Unique, UQ)

  • 제약 조건 키워드 : UNIQUE
  • 유니크로 설정된 열에 해당하는 레코드가 가지는 값이 중복되어서는 안 된다.
  • 중복 불가라는 점이 기본 키와 비슷하나 유니크 키는 하나의 테이블이 여러개를 가질 수 있다.
  • 마찬가지로 인덱싱이 되기 때문에(Non-clustered Index) 불필요한 유니크는 성능 저하를 유발할 수 있다.
  • 또한, 기본 키는 NULL을 허용하지 않지만 유니크는 NULL을 허용하며, NULL 값에 대해서는 중복 검사를 하지 않음으로 무결성에 문제가 생길 수 있다.


체크(Check, CK)

  • 제약 조건 키워드 : CHECK
  • 어떠한 값에 대해 조건을 만족할 떄에만 삽입이 가능하게하는 제약 조건이다.
  • 체크 제약 조건을 남발할 경우 성능 저하가 있을 수 있음으로 유의한다.
  • 어떠한 값에 대한 검사(Validation)는 어플리케이션 레이여(Application Layer)에서 필수적으로 선행되어야한다.


외래 키(Foreign Key, FK)

  • 제약 조건 키워드 : FOREIGN KEY ... REFEERENCES ...
  • 외래 키 제약 조건이 적용되는 열이 가지는 레코드 값을 참조 대상인(Referencing) (다른) 테이블의 열이 가지는 레코드 값으로 제한하기 위해 사용하는 제약 조건이다.
  • 참조 대상이 되는 열은 기본 키이거나 유니크여야한다.
  • 참조 하고 있는 대상이 존재하는 경우 참조 대상(피참조자)이 삭제되거나 수정될 수 없음으로 피참조자가 삭제/수정되는 경우 그 데이터(레코드)가 따라서 삭제/수정될 수 있게하기 위해 아래와 같이 외래 키 제약 조건을 구성하는 편이다.
    ...
    FOREIGN KEY ... REFERENCES ...
        ON DELETE CASCADE
        ON UPDATE CASCADE
    ...
    
    • ON DELETE CASCADE : 피참조자가 삭제(Delete)될 경우 참조자 역시 함께 삭제된다는 의미이다.
    • ON UPDATE CASCADE : 피참조자가 수정(Update)될 경우 참조자 역시 함께 수정된다는 의미이다.


태그:

카테고리:

업데이트:

댓글남기기