본문 바로가기
Programming/MariaDB

Maria DB 이론_ 08. 제약조건

by yoon9i 2024. 3. 6.
/*
    <제약 조건>

    ◎ 제약조건(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 ... REFERENCES ...
    ◎ 외래 키 제약 조건이 적용되는 열이 가지는 레코드 값은 참조 대상인(Referencing) (다른) 테이블의 열이 가지는 레코드 값
      으로 제한하기 위해 사용하는 제약 조건이다.
    ◎ 참조 대상이 되는 열을 기본 키 이거나 유니크 여야한다.
    ◎ 참조 하고 있는 대상이 존재하는 경우 참조 대상(피참조자)이 삭제되거나 수정될 수 없음으로 피참조자가 삭제/수정 되는 경우
      그 데이터(레코드)가 따라서 삭제/수정 될수 있게하기 위해 아래와 같이 외래 키 제약 조건을 구성하는 편이다.

        ...
        FOREIGN KEY ... REFERENCES ...
            ON DELETE CASCADE
            ON UPDATE CASCADE
        ...

        - ON DELETE CASCADE : 피참조자가 삭제(Delete)될 경우 참조자 역시 함께 삭제된다는 의미이다.
        - ON UPDATE CASCADE : 피참조자가 수정(Update)될 경우 참조자 역시 함께 수정된다는 의미이다.




*/

'Programming > MariaDB' 카테고리의 다른 글

Maria DB 이론_ 09. 트랜잭션  (0) 2024.03.06
Maria DB 이론_ 07. 함수  (0) 2024.03.06
Maria DB 이론_ 06. 연산자  (0) 2024.03.06
Maria DB 이론_ 05. 레코드  (0) 2024.03.06
Maria DB 이론_ 04. 테이블 및 열  (0) 2024.03.06