소개
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
열에 각각 HourlyWages
및 US_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의 데이터 사용 사례 도메인과 스키마 주석 기능은 애플리케이션 개발자가 데이터 품질을 향상시키고, 개발 효율성을 높이며, 애플리케이션 간 일관성을 유지하는 데 유용한 도구입니다. 이러한 기능을 활용하여 더욱 안정적이고 효율적인 데이터베이스 애플리케이션을 구축할 수 있습니다.