MySQL/MariaDB의 CHECK 제약조건과 복합키

유방현·2024년 11월 7일
0

MySQL/MariaDB의 CHECK 제약조건과 복합키

CHECK 제약조건

개요와 특징

  • 특정 열의 값이 지정된 조건을 충족하는지 검증
  • 하나의 열에 여러 CHECK 제약조건 설정 가능
  • 여러 열을 대상으로 복합 조건 설정 가능
  • 조건 위반 시 에러 발생으로 데이터 무결성 유지

주의사항

  • 일부 데이터베이스에서는 지원이 제한적
  • MariaDB의 경우 일부 상황에서 제한될 수 있음

예시 코드

-- CHECK 제약조건이 있는 테이블 생성
CREATE TABLE dept_c1 (
    deptno INT(2) CHECK (deptno >= 30),
    dname VARCHAR(14),
    loc VARCHAR(13)
);

-- 데이터 삽입 테스트
INSERT INTO dept_c1 VALUES (30, '개발부', '서울');    -- 성공
INSERT INTO dept_c1 VALUES (20, '영업부', '부산');    -- 실패 (CHECK 제약조건 위반)

복합키(Composite Key) 제약조건

개요

  • 두 개 이상의 열을 조합하여 고유하게 식별하는 키
  • 단일 열로 식별이 어려운 경우 사용
  • 테이블의 기본 키나 외래 키로 활용

특징

  1. 고유성 보장

    • 여러 열의 조합으로 데이터 고유성 확보
    • 단일 열로는 불가능한 식별을 가능하게 함
  2. 데이터 무결성 유지

    • 복합 키를 통한 데이터 일관성 확보
    • 중복 데이터 방지

예시 코드

-- 복합키를 가진 테이블 생성
CREATE TABLE order_u1 (
    pcode INT(4),
    ccode INT(4),
    orderdate DATE,
    etc VARCHAR(20),
    CONSTRAINT UNIQUE (pcode, ccode)
);

-- 데이터 삽입 테스트
INSERT INTO order_u1 VALUES (1000, 1000, NOW(), 'order1');  -- 성공
INSERT INTO order_u1 VALUES (100, 1000, NOW(), 'order2');   -- 성공
INSERT INTO order_u1 VALUES (1000, 100, NOW(), 'order3');   -- 성공
INSERT INTO order_u1 VALUES (1000, 1000, NOW(), 'order4');  -- 실패 (중복)

동작 설명

  • pcode와 ccode의 조합이 고유해야 함
  • 이미 존재하는 조합으로 삽입 시도하면 에러 발생
  • 서로 다른 조합은 정상적으로 삽입 가능

결론

CHECK 제약조건과 복합키는 데이터베이스의 무결성을 유지하는 중요한 기능을 제공합니다. CHECK는 데이터의 유효성을 검증하고, 복합키는 여러 열을 조합하여 고유한 식별자를 만들 수 있게 해줍니다.

profile
코딩하는 직장인

0개의 댓글