2025-08-16 12:36

Tags: SQL

도메인

도메인(SQL)

  • 특정 속성이 가질 수 있는 값들의 집합

  • 반복적으로 동일한 검증 규칙 일일이 작성하는 수고 덜어줌 (중복 제거)

  • 데이터 무결성과 일관성을 지키기 위한 규칙의 집합이자 틀

  • “관계형 테이블의 컬럼에 실제로 나타날 수 있는 값들이 추출되는 값들의 풀(pool)”

  • 예시:

    • 이메일 주소: 항상 '@' 기호를 포함해야 하고, VARCHAR(255) 정도의 길이를 가집니다.
    • 전화번호: 010-XXXX-XXXX 형식이어야 하고, 숫자와 하이픈(-)으로만 구성됩니다.
    • 성별: ‘남’, ‘여’ 또는 ‘M’, ‘F’ 와 같은 특정 값만 허용해야 합니다.
  • 모든 테이블들에서 속성의 규칙을 새로 정해야 하면 변수없는 프로그래밍 처럼 혼란스러워짐

  • 제약 조건(CHECK 조건)은 특정 컬럼에 규칙 부여,해당 컬럼 한정, 개별 수정

  • 도메인은 데이터 타입 자체에 규칙 부여, 재사용 가능, 일괄 적용

도메인 = 특정 모양과 규칙을 가진 ‘쿠키 틀’ 🍪 컬럼 = 쿠키 틀로 찍어낸 ‘쿠키 반죽’

도메인 SQL 코드 예시

[[1-📚 참고 노트/ai 답변/[SQL 핸드북] 데이터 무결성의 수호자, 도메인(Domain) 완벽 정복# 3장: SQL 도메인은 어떻게 사용하는가? (생성, 적용, 수정, 삭제)]]

-- 이메일 주소 형식을 검증하는 도메인을 생성합니다.
CREATE DOMAIN EMAIL_ADDRESS
AS VARCHAR(255)  -- 기반 데이터 타입은 VARCHAR(255)
CONSTRAINT email_format_check CHECK (
	-- VALUE는 현재 입력되려는 값을 의미합니다.
	-- 정규 표현식을 사용하여 '@' 기호가 포함되고 기본적인 이메일 형식을 따르는지 검사합니다.
	VALUE ~ '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$'
);