포스트

데이터베이스 설계 및 구축 3

데이터베이스 설계 및 구축(8-10장)

정규화

정규화란 ERD 내에서 중복을 찾아 제거해 나가는 과정을 말한다. 동일한 정보는 한 곳에서만 관리해야하기 때문이다.

제 1정규화

제 1정규화란 엔티티에서 하나의 속성이 복수의 값을 갖도록 설계되었을 때, 하나의 속성이 단일 값을 갖도록 하는 것을 말한다.

제 2정규화

제 2정규화는 주식별자가 아닌 속성 중에서 주식별자 전체가 아닌 일부 속성에 종속된 속성을 찾아 제거하는 과정이다.

제 3정규화

제 3정규화는 주식별자가 아닌 속성들 중에서 종속 관계에 잇는 속성을 찾아 제거하는 과정이다.

엔티티 분리

정규화에서는 ERD 의 각 엔티티에 포함된 중복을 제거해 나가는 과정이고, 필연적으로 엔티티를 여러 개로 분리할 수 밖에 없다. 정규화를 거치면 엔티티의 수가 늘어난다.

정규화가 필요 없는 설계 기법

정규화를 잘 이해하고 있는 설계자는 정규화를 할 필요가 없도록 모델링을 할 것이다.

제 1정규화

중복값의 저장이나 반복 속성이 존재하지 않도록 모델링하면 제1정규화가 필요 없다.

제 2정규화, 제 3정규화

제 2정규화, 제 3정규화의 공통점은 종속 관계에 있는 속성들을 제거하는 과정인 것이다. 코드 정보 및 기본 엔티티에 해당하는 정보는 처음부터 별도로 분리하자.
코드 정보, 기본 정보에 해당하는 엔티티는 다른 엔티티에 대해 부모 엔티티가 된다.

도메인

도메인이란 엔티티의 속성들이 가질 수 있는 값들의 집합이다. 도메인은 실제로 구현이 어렵기에, DBMS 에서 도메인이란 엔티티와 속성에 대응하는 테이블의 컬럼에 대한 데이터 타입과 길이를 의미한다.
그럼에도 실무에서는 잘 사용되지 않는다. 같은 도메인을 이용하는 속성들이 많아야 도메인이 의미가 있는데, 대부분의 속성들은 도메인 하나에 속성이 하나만 연결되기 때문이다.

도메인 정의 방법

  1. 각 엔티티의 속성들을 모아서 List 로 만든다.
  2. 속성 이름에 여러 단어를 포함한 경우 이를 분리한다.
  3. 속성에 포함된 마지막 단어를 가지고 정렬한다.
  4. 도메인을 정한다.
  5. 도메인만 모아 중복을 제거하고 정렬한 뒤 데이터 타입과 길이를 정한다.

용어 사전

용어 사전이란 논리적 데이터베이스 설계나 물리적 데이터베이스 설계 시 사용되는 용어의 의미를 정의해 놓은 문서를 말한다.
설계자들은 용어사전을 참조하여 엔티티나 속성의 명명이 잘되어 있는지를 확인할 수 있다.

명명 규칙

명명 규칙은 이름을 붙이는 규칙 혹은 작명 규칙을 말한다. 예를 들어 이메일 수신 거부를 영어로 어떻게 나타낼 것인가. email_receive_deny 혹은 email_rcv_yn 과 같은 이름으로 번역될 것이다. 이러한 변역의 기준을 정해야 한다.

모델 검토

ERD 의 기본 요소인 엔티티, 관계, 속성에 대해서 검토할 필요가 존재한다. 주안점은 작성된 모델이 앞으로 구축될 시스템에서 필요로 하는 정보를 충분히 제공할 수 있는가이다.

엔티티의 검토

엔티티에 대한 검토 사항은 2가지로, 엔티티가 적절히 구성되었는지 여부와 각 엔티티의 주 식별자가 적절히 선정되었는지의 여부이다.

  • 각 엔티티는 현실세계의 정보를 효과적으로 관리할 수 있는 구조인지?
  • 유사한 내용을 관리하는 엔티티들은 없는지?
  • 통합 또는 분리되어야 할 엔티티들은 없는지?
  • 주식별자는 인스턴스의 유일성을 보장해 주는지?
  • 주식별자에 불필요한 속성이 포함되어 있지는 않은지?
  • 주식별자에 속하는 속성이 너무 많지는 않은지?

속성의 검토

대상 업무에서 필요로 하는 정보를 관리하기 위해서 속성이 잘 구성되어 있는가를 봐야 한다.

  • 여러 엔티티 사이에 중복된 속성이 존재하지는 않는지?
  • 날짜를 저장하는 속성이 옳게 구성되었는지?
  • 속성의 성격상 코드화해야 하는 것은 없는지?

관계의 검토

관계에서 카디낼러티와 참여도가 옳게 설정되었는지를 검토하고, M:N 관계에 있는 것은 없는지 검토해야 한다.

  • ERD 상에서 다른 엔티티와 관계없이 독립적으로 존재하는 엔티티는 없는지?
  • 관계를 너무 복잡하게 맺지는 않았는지?

M:N 관계의 해소

M:N 관계에 있는 엔티티는 1:N, N:1 관계로 조정해야 한다. 둘 사이의 공유하는 속성이 없기에, 관계를 맺어주기 위해 어느 한쪽에 공유 속성을 넣게 되면 이상한 결과가 나타난다.

프로세스 모델과의 통합 검토

프로세스 모델과 데이터 모델의 통합 검토가 필요하며 이ㅔ를 상관 모델링이라고 부른다. CRUD 매트릭스를 활용한다. 세로축에는 프로세스명을 나열하고, 가로축에는 엔티티 이름을 나열한다.
어떤 엔티티가 올바른 엔티티라면 반드시 그 엔티티를 생성하는 프로세스가 있어야 하고, 조회하는 프로세스가 있어야 한다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.