IT's Jenna

6. 도메인 설계 전략 본문

Study/관계형 데이터 베이스 실전 입문

6. 도메인 설계 전략

developer Jenna 2021. 5. 28. 17:39
도메인이란?
도메인 설계 전략
SQL로 도메인 표현

1. 도메인이란?

도메인이란 관계형 모델에서 속성의 데이터형을 의미한다. 즉 속성 값이 가질 수 있는 값들의 집합이라고 볼 수 있다. 도메인의 설계는 DB의 설계에 있어 시작이며 가장 큰 기반이 된다. 관계형 모델상에서 도메인의 데이터형에 대한 제한은 없지만 SQL상에서는 제한되어 있다.

2. 도메인 설계 전략

도메인의 설계에는 정규화 이론처럼 정해진 답이 있는것이 아니다. 결국은 DB 설계자의 주관에 따라 결정된다. 주관적인 판단에 기반하더라도 최대한 효율적으로 도메인을 설계하는 전략을 알아보자.

 

a. 어플리케이션에 대한 이해

어떤 데이터가 필요한지 결정하는 것은 애플리케이션이다. 필요한 데이터가 무엇인지 모른다면 도메인 설계는 할 수 없다. 즉, 데이터가 활용되는 애플리케이션이 무엇을 수행하고 어떤 데이터가 입출력되는지 그 로직에 대한 이해가 우선이다.

 

b. 데이터의 본질 파악

예를 들어 학번이란 속성의 도메인은 양의 정수가 되어야 한다. 그런데 화면에 8자리 숫자만 보이게 하겠다고 CHAR(8)을 이용해서 문자열을 할당하는 경우가 있다. 이는 적합한 설계가 아니다. 여기서 포인트는 DB의 데이터는 그 데이터의 본질을 잃으면 안 된다는 것이다. 학번의 본질은 정수 값이고 그 값이 화면에 어떻게 표시될지는 프런트 엔지니어에게 맡기자.

 

c. 속성의 이름

이전장에서 직교성을 설명하면서 속성의 이름을 지정할 때 "명명 규칙을 통일한다", "주어를 포함한다"와 같은 규칙을 설명했다. 추가로 속성의 이름을 지정할 때 애플리케이션에서 사용되는 명칭과 동일하게 하는 것을 추천한다. 보통 DB의 릴레이션은 애플리케이션의 클래스와 매칭 되어 있기 때문에 클래스명 또는 변수명을 동기화하여 사용하는것이 좋다.

 

d. ID 설계

DB에서 사용되는 ID는 현실 세계의 물체나 개념을 의미한다. ID를 키로 사용할 수 있는지 여부는 설계하기 나름이다. 예를 들어 작은 마을에서 이름을 ID로 사용하는 것은 가능할 수 있다. 하지만 마을의 규모가 커지고 중복된 이름이 생겨나면 이름은 ID로서 기능을 잃는다.

 

ID를 이해하는데 있어 알아야 하는 자연키와 대체키라는 개념이 있다.

  • 자연키 : 현실에 존재하는 어떤 단어를 키로 사용하는 것
  • 대체키 : 현실에 존재하지 않고 DB 또는 애플리케이션 내에서만 사용되는 ID를 키로 사용하는 것

어떤 ID를 설계할때 그 ID를 자연키로 해야 할지 대체키로 해야 할지 그 여부는 중요하지 않다. 위에서 이름을 예로든 것처럼 그 ID값이 무엇이든 해당 ID로 데이터 식별이 가능한지만 판단할 수 있으면 된다.

  • 학생ID, 수업ID가 대체키이다.
  • 자연키가 존재하는경우 불필요한 대체키를 추가할 필요는 없다. 이는 자연키 -> 대체키라는 함수 종속성을 만들 뿐이다.

3. SQL로 도메인 표현

도메인을 설계했으면 이것을 SQL에서 표현해야 한다. 이때 도메인을 SQL에서 어떻게 적절하게 구체화할 수 있는지 알아보자.

 

a. 적절한 데이터형 선택

관계형 모델에서 도메인의 데이터형에는 제한이 없지만 SQL에서는 제한이 있다고 했다. 따라서 SQL에서 도메인의 데이터형을 선택할 때는 도메인이 가지는 값을 모두 포함할 수 있는 데이터형을 선택해야 한다.

 

이때 자주 범하는 실수가 수치형 도메인을 문자형으로 정의하는 경우이다. 이런 경우엔 불필요하게 테이블 사이즈가 커지고, 수치 외에 다른 문자가 저장되거나 숫자로 연산할 수 없는 문제가 발생한다. 따라서 도메인의 특징을 가장 잘 나타내는 데이터형을 SQL에서 선택하는 것이 중요하다.

 

b. CHECK 제약

SQL에 특정 데이터만 입력하도록 하기 위해서 CHECK 제약을 걸어둘 수 있다. 

 

c. 도메인을 테이블로 표현

도메인에 포함된 값의 종류가 적고 CHECK 제약을 걸어두기 힘들 때 도메인을 테이블로 표현할 수 있다. 예를 들어 성별의 경우 도메인 값은 남자, 여자가 될 것이다. 이때 마스터 테이블을 만들어서 해당 테이블에 도메인 값을 넣어두고 해당 값만 사용할 수 있도록 제약을 걸어줄 수 있다.


도메인의 설계는 설계자의 자의적인 선택이다. 따라서 설계자 스스로 애플리케이션의 로직, 데이터 사용 환경 그리고 데이터의 본질을 제대로 이해하는 것이 중요하다. 관계형 모델을 설계하는 데에 가장 기반이 되는 부분이기 때문에 도메인 설계를 탄탄히 해 두어야 앞으로 쌓아갈 추가적인 DB 설계가 안정된다는 것을 명심하자!

 

 

 

 

Comments