데이터베이스의 제약조건

유방현·2024년 11월 4일

데이터베이스의 제약조건(Constraints)

데이터베이스를 다루다 보면 반드시 알아야 하는 개념이 있습니다. 바로 '제약조건(Constraints)'입니다. 이번 포스팅에서는 제약조건의 개념과 종류, 그리고 실제 사용법에 대해 자세히 알아보겠습니다.

📌 제약조건이란?

제약조건은 데이터베이스에서 데이터의 무결성을 보장하기 위해 설정하는 규칙입니다. 쉽게 말해, 데이터베이스에 부적절한 데이터가 입력되는 것을 방지하는 안전장치라고 할 수 있습니다.

제약조건을 사용하면 다음과 같은 이점이 있습니다:

  • 데이터의 형식과 일관성 유지
  • 잘못된 데이터 입력 방지
  • 데이터베이스의 신뢰성 향상

🔍 제약조건의 종류

제약조건설명키워드
필수 입력특정 열에 반드시 값이 있어야 함NOT NULL
중복 방지중복된 값을 허용하지 않음UNIQUE
기본 키고유하고 NULL 값이 없는 필수 식별자PRIMARY KEY
외래 키다른 테이블의 값을 참조하여 일관성 유지FOREIGN KEY
값 검사특정 조건을 만족하는 값만 허용CHECK
기본값 설정값을 입력하지 않으면 기본값이 자동 입력됨DEFAULT

💻 제약조건 정의 방법

제약조건은 크게 두 가지 방식으로 정의할 수 있습니다:

1. 컬럼 단위 정의

컬럼을 생성할 때 같이 정의하는 방식입니다.

CREATE TABLE 테이블명 (
    컬럼명 자료형(크기) 제약조건,
    컬럼명 자료형(크기) 제약조건,
    컬럼명 자료형(크기)
);

2. 테이블 단위 정의

모든 컬럼을 정의한 후 테이블 레벨에서 제약조건을 정의하는 방식입니다.

CREATE TABLE 테이블명 (
    컬럼명 자료형(크기),
    컬럼명 자료형(크기),
    컬럼명 자료형(크기),
    CONSTRAINT 제약조건명 제약조건(컬럼명)
);

💡 실제 사용 예시

-- 컬럼 레벨 제약조건 예시
CREATE TABLE employees (
    emp_id NUMBER(5) PRIMARY KEY,
    emp_name VARCHAR2(50) NOT NULL,
    email VARCHAR2(100) UNIQUE,
    hire_date DATE DEFAULT SYSDATE,
    salary NUMBER(8,2) CHECK (salary > 0)
);

-- 테이블 레벨 제약조건 예시
CREATE TABLE orders (
    order_id NUMBER(5),
    emp_id NUMBER(5),
    order_date DATE,
    CONSTRAINT pk_orders PRIMARY KEY (order_id),
    CONSTRAINT fk_emp FOREIGN KEY (emp_id) 
        REFERENCES employees(emp_id)
);

🎯 마치며

제약조건은 데이터베이스 설계에서 매우 중요한 요소입니다. 적절한 제약조건 설정을 통해 데이터의 무결성을 보장하고, 안정적인 데이터베이스 운영이 가능합니다.

참고사항

  • 제약조건은 테이블 생성 시 정의할 수 있습니다.
  • ALTER TABLE 명령을 통해 나중에 추가/수정/삭제도 가능합니다.
  • 테이블 간의 관계를 정의할 때는 FOREIGN KEY를 활용합니다.

0개의 댓글