개발/데이터베이스

[PostgreSQL] 도메인이란 ?

고등어찌짐 2022. 3. 13. 12:32

 

PostgreSQL 에서 도메인이란 "선택적 제약사항"을 가진 데이터 타입 이라고 정의됩니다. 다음은 PostgreSQL 도큐먼트의 시놉시스 입니다. 

CREATE DOMAIN 도매인이름 AS 데이터타입
    [ COLLATE collation ]
    [ DEFAULT expression ]
    [ constraint [ ... ] ]
    
where constraint is:

[ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | CHECK (expression) }

COLLATE : 데이터베이스 정렬 순서 결정

DAFAULT : 디폴트 값이 있다면 어떻게 할 것인지

constraint :  NOT NULL | NULL | CHECK (expression) 값을 이용해 도메인 내용을 정의

 

 

이게 무슨말인지 처음에는 이해가 잘 가지 않았는데,  아래 예제 코드를 보니 쉽게 이해할 수 있었습니다. 아래 SQL 문에서, us_postal_code 의 데이터 타입을 특정 타입, 형식 등으로 제한하고 있습니다. 이 외에도 문자열 길이 범위 제한 이라든지 다양한 제약을 넣어 만들 수 있습니다. 

CREATE DOMAIN us_postal_code AS TEXT
CHECK(
   VALUE ~ '^\d{5}$'
OR VALUE ~ '^\d{5}-\d{4}$'
);

 

위에서 정의한 도메인을 어떻게 활용하는지 보여주는 코드입니다. 맨 마지막 줄에서 postal 의 데이터 타입 자리에 us_postal_code 도메인을 사용하고 있습니다. 

CREATE TABLE us_snail_addy (
  address_id SERIAL PRIMARY KEY,
  street1 TEXT NOT NULL,
  street2 TEXT,
  street3 TEXT,
  city TEXT NOT NULL,
  postal us_postal_code NOT NULL
);

 

 

 

#참조

https://www.postgresql.org/docs/9.5/sql-createdomain.html