열거형 데이터 사용 사례 도메인 사용

열거형 데이터 사용 사례 도메인 개요

오라클 데이터베이스 23ai 버전부터 도입된 ‘열거형 데이터 사용 사례 도메인(Enumeration Data Use Case Domains)’은 데이터 모델링의 강력한 기능입니다. 이는 특정 열에 허용되는 값의 집합을 미리 정의하여 데이터 무결성을 강화하고 애플리케이션 개발을 간소화합니다. 여기서는 열거형 데이터 사용 사례 도메인의 개념과 사용법, 그리고 실제 적용 예시를 자세히 살펴보겠습니다.

열거형 데이터 사용 사례 도메인 이란?

열거형 도메인은 특정 열에 허용될 값들을 명시적으로 정의한 것입니다. 예를 들어, 고객 테이블의 ‘국가’ 열에 대해 ‘한국’, ‘미국’, ‘일본’ 등의 값만 허용하도록 지정할 수 있습니다. 이는 데이터 입력 시 유효성 검사를 통해 잘못된 데이터가 입력되는 것을 방지하고, 데이터의 일관성을 유지하는 데 도움이 됩니다.

열거형 데이터 사용 사례 도메인의 장점

  • 데이터 무결성 강화: 허용된 값 이외의 데이터 입력을 차단하여 데이터 품질을 높입니다.
  • 애플리케이션 개발 간소화: 애플리케이션 레벨에서 데이터 유효성 검사 로직을 줄여 개발 생산성을 향상시킵니다.
  • 데이터 모델의 명확성 증가: 열에 허용되는 값을 명시적으로 정의하여 데이터 모델을 이해하기 쉽게 만듭니다.
  • 유지보수 용이성: 데이터 값의 변경이 필요할 때 도메인 정의만 수정하면 되므로 유지보수가 편리합니다.

열거형 데이터 사용 사례 도메인 생성 및 사용법

열거형 도메인은 `CREATE DOMAIN` 구문을 사용하여 생성합니다. 다음은 다양한 예시입니다.

1. 주문 상태 도메인 생성

주문 상태를 나타내는 열거형 도메인을 생성합니다. 주문 상태는 ‘신규’, ‘처리 중’, ‘배송 완료’, ‘취소’ 중 하나가 될 수 있습니다.

CREATE DOMAIN order_status AS ENUM
DEFAULT '신규'
CONSTRAINT order_status_values
CHECK (VALUE IN ('신규', '처리 중', '배송 완료', '취소'));

    

설명:

  • `CREATE DOMAIN order_status AS ENUM`: `order_status`라는 열거형 도메인을 생성합니다.
  • `DEFAULT ‘신규’`: 기본값을 ‘신규’로 설정합니다.
  • `CONSTRAINT order_status_values CHECK (VALUE IN (‘신규’, ‘처리 중’, ‘배송 완료’, ‘취소’))`: 허용되는 값들을 지정합니다.

2. 요일 도메인 생성

요일을 나타내는 열거형 도메인을 생성합니다. 요일은 ‘월’, ‘화’, ‘수’, ‘목’, ‘금’, ‘토’, ‘일’ 중 하나가 될 수 있습니다.

CREATE DOMAIN day_of_week AS ENUM
DEFAULT '월'
CONSTRAINT day_of_week_values
CHECK (VALUE IN ('월', '화', '수', '목', '금', '토', '일'));

    

3. 직책 도메인 생성

직책을 나타내는 열거형 도메인을 생성합니다. 직책은 ‘사원’, ‘매니저’, ‘분석가’, ‘프로젝트 리더’ 중 하나가 될 수 있습니다.

CREATE DOMAIN job_title AS ENUM
DEFAULT '사원'
CONSTRAINT job_title_values
CHECK (VALUE IN ('사원', '매니저', '분석가', '프로젝트 리더'));

    

열에 도메인 적용

생성된 도메인은 테이블 생성 시 또는 기존 테이블 변경 시 열에 적용할 수 있습니다.

테이블 생성 시 도메인 적용

CREATE TABLE employees (
    employee_id NUMBER PRIMARY KEY,
    employee_name VARCHAR2(100),
    department_id NUMBER,
    order_status order_status
);

    

기존 테이블 변경 시 도메인 적용

ALTER TABLE employees
MODIFY order_status order_status;

    

도메인 사용 예시 및 결과

다음은 `orders` 테이블에 열거형 도메인을 적용하고 데이터를 삽입하는 예시입니다.

CREATE TABLE orders (
    order_id NUMBER PRIMARY KEY,
    order_date DATE,
    order_status order_status
);

INSERT INTO orders (order_id, order_date, order_status)
VALUES (1, SYSDATE, '신규');

INSERT INTO orders (order_id, order_date, order_status)
VALUES (2, SYSDATE, '처리 중');

-- 잘못된 주문 상태 입력 시도 (에러 발생)
INSERT INTO orders (order_id, order_date, order_status)
VALUES (3, SYSDATE, '알 수 없음');

SELECT * FROM orders;

    

실행 결과:

-- 3번째 INSERT 문에서 제약 조건 위반 에러 발생
ORA-02290: check constraint (HR.ORDER_STATUS_VALUES) violated

-- SELECT * FROM orders 결과
ORDER_ID  ORDER_DATE           ORDER_STATUS
---------- ------------------- ------------------
         1 2024-05-16 14:30:00 신규
         2 2024-05-16 14:30:00 처리 중

    

열거형 도메인 관련 SQL 함수

열거형 도메인과 관련된 유용한 SQL 함수도 제공됩니다. 이러한 함수들은 데이터 값을 확인하고 조작하는 데 도움을 줍니다.

  • DOMAINGETVALIDATE – 도메인에 지정된 유효한 문자열 값을 목록화합니다.
  • DOMAINLOOKUP – 데이터 룩업 함수를 제공합니다.
  • DOMAINORDER – 데이터를 정렬하기 위한 도메인 순서를 표시합니다.

결론

오라클 데이터베이스의 열거형 데이터 사용 사례 도메인은 데이터 무결성을 강화하고 애플리케이션 개발을 간소화하는 데 매우 유용한 기능입니다. 제시된 예시들을 통해 데이터 모델링 시 열거형 도메인을 적극적으로 활용하여 데이터 품질을 향상시키고 개발 효율성을 높일 수 있습니다. 또한 SQL 함수들을 활용하여 도메인 내 데이터 관리 편의성을 높일 수 있습니다.

위로 스크롤