본문 바로가기
모델링/논리 모델링

[논리모델링] 엔터티만 보고 1차 정규화 대상 여부를 알 수는 없다.

by 연습장이 2023. 6. 4.
728x90
반응형

  1차 정규화에 대한 이론적인 내용부터 간단하게 짚고 가도록 하겠다.

 

엔터티의 속성이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것

 

  속성이 하나의 값을 가진다는 의미는 속성 내에서 하나의 값을 가지는 것과, 레코드 단위에서 하나의 값을 가지는 것으로 나눌 수 있다. 해당 내용에서는 후자에 대해서만 언급하겠다. 아래 엔터티를 보자.

업무 식별자는 주민등록번호 + 등록일자로 가정한다.

해당 엔터티에 대응되는 테이블에는 아래의 값을 예시로 한다.

 

여기서 환자번호 2의 김갑수 환자가 몇달 뒤 재진료를 하게 되어 신규 데이터가 발생하였다.

 

보이는가? 주민등록번호야 업무식별자니까 그렇다 치더라도 아래 4개의 데이터는 중복해서 들어갔다.

  • 지번주소
  • 도로명주소
  • 상세주소
  • 우편번호
  • 성별
  • 휴대폰
  • 등록자명

등록자명의 경우 시스템속성이므로 제외하겠다. 하지만 나머지 속성의 경우에는 똑같은 내용이 불필요하게 또 들어가서 블록(데이터 저장영역)에 불필요한 공간만 차지하게 되었다. 하지만 아래와 같은 업무 요건이 있다면 어떨까?

 

특정 환자의 경우 이사를 할 수 있으므로 과거의 거주지 주소 정보도 모두 관리한다.

 

만약 김갑수 환자가 2012-03-03(첫진료) ~ 2023-06-08(재진료) 사이에 이사를 갔다면? 그래서 거주지 주소가 다르다면? 샘플 데이터는 아래와 같다.

 

다른 데이터가 들어갔으므로 데이터 중복이라 얘기할 수 없다. 이 상태에서 한효주 환자가 재진료를 받아 아래처럼 샘플 데이터가 삽입되었다.

 

그렇다면 한효주 환자의 거주지 주소는 데이터 중복이라고 볼 수 있는가? 아니다. 정확하게는 아래와 같이 얘기할 수 있다.

 

물리적으로는 데이터 중복이나, 논리적으로는 데이터 중복이라 할 수 없다.

 

이 차이를 알아야 한다. 그래야 정규화를 정확하게 할 수 있다. 정규화의 기준은 업무 요건이다. 업무 요건을 바탕으로 속성이 올바르게 있는 곳을 찾을 수가 있다. 따라서 정규화 시 가장 먼저 해야할 일은, 업무 요건이 명확해야 한다는 점이다.

 

  위의 예시는 단편적일 수도, 빈약한 업무 요건일 수도 있다. 실제 현업에서는 더 복잡한 이해관계가 얽혀 있을 수 있다. 정규화를 할 때, 보이지 않는 것들도 체크할 수 있다면 더 예쁜 모델링이 나올 것이라 생각한다.

728x90
반응형