1차 정규화에 대한 이론적인 내용부터 간단하게 짚고 가도록 하겠다.
엔터티의 속성이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것
속성이 하나의 값을 가진다는 의미는 속성 내에서 하나의 값을 가지는 것과, 레코드 단위에서 하나의 값을 가지는 것으로 나눌 수 있다. 해당 내용에서는 후자에 대해서만 언급하겠다. 아래 엔터티를 보자.
해당 엔터티에 대응되는 테이블에는 아래의 값을 예시로 한다.
여기서 환자번호 2의 김갑수 환자가 몇달 뒤 재진료를 하게 되어 신규 데이터가 발생하였다.
보이는가? 주민등록번호야 업무식별자니까 그렇다 치더라도 아래 4개의 데이터는 중복해서 들어갔다.
- 지번주소
- 도로명주소
- 상세주소
- 우편번호
- 성별
- 휴대폰
- 등록자명
등록자명의 경우 시스템속성이므로 제외하겠다. 하지만 나머지 속성의 경우에는 똑같은 내용이 불필요하게 또 들어가서 블록(데이터 저장영역)에 불필요한 공간만 차지하게 되었다. 하지만 아래와 같은 업무 요건이 있다면 어떨까?
특정 환자의 경우 이사를 할 수 있으므로 과거의 거주지 주소 정보도 모두 관리한다.
만약 김갑수 환자가 2012-03-03(첫진료) ~ 2023-06-08(재진료) 사이에 이사를 갔다면? 그래서 거주지 주소가 다르다면? 샘플 데이터는 아래와 같다.
다른 데이터가 들어갔으므로 데이터 중복이라 얘기할 수 없다. 이 상태에서 한효주 환자가 재진료를 받아 아래처럼 샘플 데이터가 삽입되었다.
그렇다면 한효주 환자의 거주지 주소는 데이터 중복이라고 볼 수 있는가? 아니다. 정확하게는 아래와 같이 얘기할 수 있다.
물리적으로는 데이터 중복이나, 논리적으로는 데이터 중복이라 할 수 없다.
이 차이를 알아야 한다. 그래야 정규화를 정확하게 할 수 있다. 정규화의 기준은 업무 요건이다. 업무 요건을 바탕으로 속성이 올바르게 있는 곳을 찾을 수가 있다. 따라서 정규화 시 가장 먼저 해야할 일은, 업무 요건이 명확해야 한다는 점이다.
위의 예시는 단편적일 수도, 빈약한 업무 요건일 수도 있다. 실제 현업에서는 더 복잡한 이해관계가 얽혀 있을 수 있다. 정규화를 할 때, 보이지 않는 것들도 체크할 수 있다면 더 예쁜 모델링이 나올 것이라 생각한다.
'모델링 > 논리 모델링' 카테고리의 다른 글
[논리모델링연습] DA 공모대회 2018년 일반부 대상작 ERD 분석 (0) | 2023.11.19 |
---|---|
[논리모델링연습] DA 공모대회 2018년 일반부 개인 답안 (0) | 2023.11.19 |
[논리모델링연습] DA 공모대회 2018년 학생부 대상작 ERD 분석 (0) | 2023.08.19 |
[논리모델링연습] DA 공모대회 2018년 학생부 개인 답안 (0) | 2023.08.15 |
[논리모델링] 논리 모델링과 물리 모델링은 별개일까? (0) | 2023.05.29 |