내장 데이터 사용 사례 도메인

소개

Oracle Database 23ai에서는 중앙 집중식 데이터베이스 엔티티인 ‘데이터 사용 사례 도메인(Use Case Domains)’이라는 새로운 개념을 도입했습니다. 이 기능은 애플리케이션 개발자가 공통 값에 대한 속성 및 제약 조건을 중앙에서 관리할 수 있도록 지원하며, 데이터 품질을 향상시키고 일관성을 유지하는 데 도움이 됩니다.

데이터 사용 사례 도메인이란?

데이터 사용 사례 도메인은 테이블 열에 명시적으로 적용되는 속성 및 제약 조건 집합을 정의하는 데이터 사전 객체입니다. 이는 예를 들어 신용 카드 번호나 이메일 주소와 같은 공통 값 형식을 관리하는 데 유용합니다. 사용 사례 도메인을 통해 여러 애플리케이션과 도구에서 일관된 데이터 형식을 적용할 수 있습니다.

데이터 사용 사례 도메인의 이점

  • 데이터 품질 향상: 도메인을 사용하여 데이터 형식을 표준화하고 유효성 검사를 수행하여 데이터 품질을 개선합니다.
  • 개발 효율성 증가: 반복적인 코드를 줄이고 데이터 관련 로직을 중앙 집중화하여 개발 효율성을 높입니다.
  • 애플리케이션 간 일관성 유지: 여러 애플리케이션에서 동일한 도메인을 공유하여 데이터 일관성을 확보합니다.
  • 메타데이터 관리 용이: 데이터 사용 의도를 명확하게 표현하여 데이터베이스 메타데이터 관리를 간소화합니다.

데이터 사용 사례 도메인 종류

Oracle Database 23ai에서는 다음과 같은 데이터 사용 사례 도메인 유형을 지원합니다.

  • 단일 열 도메인(Single Column Use Domains): 하나의 열에 적용되는 도메인입니다. 이메일 주소, 전화 번호 등의 형식을 정의하는 데 유용합니다.
  • 다중 열 도메인(Multi-column Use Domains): 여러 열에 걸쳐 있는 도메인입니다. 주소 정보(도시, 주/도, 우편 번호)를 정의하는 데 적합합니다.
  • 유연한 도메인(Flexible Use Domains): 특정 조건에 따라 다른 제약 조건을 적용할 수 있는 도메인입니다. 국가별 주소 형식에 따라 다른 유효성 검사 규칙을 적용해야 할 때 유용합니다.
  • 열거형 도메인(Enumeration Domains): 미리 정의된 값 집합을 갖는 도메인입니다. 주문 상태(신규, 배송, 완료, 취소) 등을 정의하는 데 사용됩니다.

데이터 사용 사례 도메인 생성 및 사용

다음은 다양한 유형의 데이터 사용 사례 도메인을 생성하고 사용하는 예시입니다.

1. 단일 열 도메인 생성 (예: 시간당 임금)


CREATE DOMAIN HourlyWages AS NUMBER
  DEFAULT 0
  CONSTRAINT hourly_wages_positive CHECK (HourlyWages >= 0)  ORDER BY VALUE;

이 예제는 시간당 임금을 나타내는 HourlyWages 도메인을 생성합니다. 기본값은 0이며, 0 이상의 값만 허용하도록 제약 조건을 설정했습니다. ORDER BY VALUE는 도메인 값이 표시될 때 정렬 순서를 지정합니다.

2. 다중 열 도메인 생성 (예: 주소)


CREATE DOMAIN US_City AS
  VARCHAR2(40)
  ANNOTATIONS (City_Rules 'US City Names');

CREATE DOMAIN US_State AS
  VARCHAR2(2)
  CHECK (LENGTH(value) = 2);

CREATE DOMAIN US_Zip AS
  VARCHAR2(10)
  CHECK (REGEXP_LIKE(value, '^\\d{5}(-\\d{4})?$'));

CREATE DOMAIN US_Address AS (US_City, US_State, US_Zip)
  ANNOTATIONS (Purpose 'US Mailing Address');

이 예제는 도시, 주, 우편번호를 나타내는 세 개의 도메인을 먼저 생성한 다음, 이들을 결합하여 US_Address 도메인을 생성합니다. 각 도메인에는 적절한 제약 조건과 주석이 추가되었습니다.

3. 유연한 도메인 생성 (예: 온도)


CREATE DOMAIN Celsius AS NUMBER
  CONSTRAINT valid_celsius CHECK (value >= -273.15)
  DISPLAY (value || ' C');

CREATE DOMAIN Fahrenheit AS NUMBER
  CONSTRAINT valid_fahrenheit CHECK (value >= -459.67)
  DISPLAY (value || ' F');

CREATE DOMAIN Temperature AS
  NUMBER
  DOMAIN USING (unit VARCHAR2)
  CHOOSE CASE
    WHEN unit = 'C' THEN Celsius
    WHEN unit = 'F' THEN Fahrenheit
  END;

이 예제는 섭씨와 화씨 온도를 나타내는 두 개의 도메인을 생성한 다음, Temperature 도메인을 사용하여 단위에 따라 다른 제약 조건을 적용합니다.

4. 열거형 도메인 생성 (예: 주문 상태)


CREATE DOMAIN order_status AS ENUM ('New', 'Open', 'Closed', 'Cancelled');

이 예제는 주문 상태를 나타내는 열거형 도메인을 생성합니다. 이 도메인은 New, Open, Closed, Cancelled 네 가지 값만 허용합니다.

5. 테이블 생성 시 도메인 연결


CREATE TABLE Employees (
  EmployeeID NUMBER,
  FirstName VARCHAR2(50),
  LastName VARCHAR2(50),
  HourlyRate HourlyWages,
  HireDate DATE
);

CREATE TABLE Customers (
  CustomerID NUMBER,
  CustomerName VARCHAR2(100),
  Address US_Address
);

이 예제는 Employees 테이블의 HourlyRate 열과 Customers 테이블의 Address 열에 각각 HourlyWagesUS_Address 도메인을 연결합니다. 이를 통해 해당 열에 대해 도메인에 정의된 속성과 제약 조건이 자동으로 적용됩니다.

6. 데이터 조작 언어 (DML)를 이용한 유스 케이스 검증


-- 유효한 HourlyWages 삽입
INSERT INTO Employees (EmployeeID, FirstName, LastName, HourlyRate, HireDate)
VALUES (1, 'John', 'Doe', 50, SYSDATE);

-- 유효하지 않은 HourlyWages 삽입 (제약 조건 위반)
INSERT INTO Employees (EmployeeID, FirstName, LastName, HourlyRate, HireDate)
VALUES (2, 'Jane', 'Smith', -10, SYSDATE); -- ORA-02290: check constraint (HR.HOURLY_WAGES_POSITIVE) violated

-- 유효한 US_Address 삽입
INSERT INTO Customers (CustomerID, CustomerName, Address)
VALUES (1, 'Acme Corp', ('New York', 'NY', '10001'));

-- 유효하지 않은 US_Address 삽입 (주 유효성 검사 실패)
INSERT INTO Customers (CustomerID, CustomerName, Address)
VALUES (2, 'Beta Inc', ('Los Angeles', 'CA', 'invalid')); -- ORA-02290: check constraint (HR.SYS_C00831) violated

스키마 주석

Oracle Database 23ai에서는 테이블과 열에 주석을 추가하여 데이터 사용 의도를 명확히 표현할 수 있습니다. 주석은 개발자와 DBA가 데이터베이스 객체에 대한 추가 정보를 쉽게 이해할 수 있도록 돕습니다.

주석 추가 예시


ANNOTATE TABLE Employees (display '전체 직원 목록', unit '명');
ANNOTATE COLUMN Employees.EmployeeID (display '직원 ID', sensitive PII);

-- 주석 확인
SELECT column_name, comments FROM user_col_comments WHERE table_name = 'EMPLOYEES';

결론

Oracle Database 23ai의 데이터 사용 사례 도메인과 스키마 주석 기능은 애플리케이션 개발자가 데이터 품질을 향상시키고, 개발 효율성을 높이며, 애플리케이션 간 일관성을 유지하는 데 유용한 도구입니다. 이러한 기능을 활용하여 더욱 안정적이고 효율적인 데이터베이스 애플리케이션을 구축할 수 있습니다.

위로 스크롤