예를 들어 IP (version 4) 를 저장하는 컬럼이 있다고 합시다.
어떤 테이블의 컬럼에서는 varchar(15)를 사용하고, 다른 테이블의 컬럼에서는 int unsigned를 사용하면 어떤 일이 발생할까요?
아마 개발자 입장에서는 같은 유형의 속성임에도 불구하고 테이블 마다 데이터 유형이 달라서, 매번 확인을 해야하거나 어떤 경우에는 데이터를 변환하는 불편함이 초래될 겁니다. 때로는 성능 문제도 생길 수 있구요.
이런 문제를 해결하기 위해 도메인 모델을 만들어 사용할 수 있습니다.
음.. CREATE TABLE 문에서 컬럼을 정의할 때 "이름", "데이터 유형", "제약 조건 - 디폴트나 NULL 허용 여부, SEQUENCE 등등" 을 선택해서 적어 줘야죠?
이걸 테이블을 만들 때마다 매번 직접 정의하는 것이 아니라, 논리 설계를 하면서 도출되는 속성 중 유사한 속성을 그룹핑하고, 다시 상세 분류를 해 놓은 도메인 모델에서 고르게 하는 겁니다.
예를 들자면, "이름" 으로 그룹핑할 수 있는 속성이 여럿 있을테고, "이름"을 상세 분류하면 모델에 따라 "고객 이름", "고객사 이름", "로그인 이름" 같은 것들로 나뉘게 됩니다. 이렇게 상세 분류된 것들 - 고객 이름, 고객사 이름 등 - 마다 물리적인 데이터 유형, 제약 조건을 정의하는 것을 도메인 모델링이라고 볼 수 있습니다.
앞서 언급한 것처럼 이제 테이블의 각 컬럼에 대해 세부 속성을 일일이 정의하는 것이 아니라, 미리 만들어 둔 도메인에서 찾아 매핑해주면 됩니다. (물론 새로운 유형의 컬럼이라면 먼저 도메인에 추가하고 매핑하게 되겠지만요)
대략 이런 개념이라는 이해를 갖고 구글링하시면 도움이 될 듯 하네요.