이전 글에서 주체가 되는 행위가 누락이 되면
하위 행위가 되는 데이터를 관리하기 힘들어지는 것을 알아보았습니다
그 밖에도 여러 가지의 단점들이 있었습니다
궁금하시다면 아래의 링크를 클릭해서 확인하시길 바랍니다
2022.09.26 - [Data_Modeling/Methodology] - 데이터 모델링 Account와 같은 상위 개체 집합인 행위 주체가 누락된다면?
주 식별자로 데이터의 의미를 읽을 수 있다?
아래의 이미지를 보면
<그룹웨어 ID> 엔터티에서 <그룹웨어ID> 속성은 유일하게 관리됩니다.
<그룹웨어 ID>가 주 식별자 속성이기 때문입니다.
<사원>과 <그룹웨어 ID>는 1:N 관계이므로 한 사원은 여러 그룹웨어 ID를 사용할 수도 있습니다
하지만 <유효 종료일자가>가 지나서 사용이 만료된 경우라도,
즉 아무도 사용하지 않고 있더라도 다른 사원이 이 <그룹웨어 ID>를 재사용할 수 없는 구조입니다.
재 사용할 수 있다는 업무규칙을 지원하려면 M:N 관계가 되어 관계 엔터티를 추가로 식별해내야 한다.
아래의 이미지를 본다면 여러 사원이 같은 <그룹웨어 ID>를 동시에 사용할 수 있는 구조입니다
그것이 가능하다면 상관이 없지만 여러 사원이 사용을 못하도록 요건을 받았다면
모델링이 잘못되었다는 것을 알 수 있습니다
모델링을 어떻게 하느냐에 따라 관계도만으로 데이터를 어떻게 적재하는지 알 수 있습니다
그래서 잘못된 요건을 제대로 적용된 모델링을 해보도록 하겠습니다
<그룹웨어 ID> 엔터티를 자세히 보면 엔터티의 성격이 맞지 않다는 것을 느낄 수 있습니다
그 이유는 그룹웨어 ID라는 엔터티명와 칼럼명을 같이 사용하고 있으며,
<유효 시작일자>와 <유효 종료일자> 속성은 계정의 본질적인 정보가 아닌
상품을 구입한 사람과 사용 행위에 종속된 속성이 더 맞다고 할 수 있습니다
그래서 아래와 같이 주체와 행위를 분리하여 정규화할 수 있습니다
그리고 <그룹웨어 계정>과 <사원 그룹웨어 계정 사용>이 1:1 관계로
사용 종료된 계정은 다른 사원이 사용할 수 없을 관계도만으로도 확인이 가능합니다
이러한 의미에서 식별자로 데이터가 어떻게 저장하게 되는지 그 구조를 파악할 수 있게 됩니다
처음의 모델#1을 보면 여러 사원이 같은 <그룹웨어 ID>를 동시에 사용할 수 있는 구조입니다
고객사에서 어떠한 요건을 받아 의도한 바라고 한다고 해도
관리 측면에서 사이드 이펙트가 발생할 여지가 있습니다
그럼 고객사의 인터뷰를 통해 정말 필요한 요건인지 다시 확인하는 과정을 거쳐야 하며
정말 필요하다면 예상되는 사이드 이펙트를 해결해야 하는 방법을 제시해야 합니다
그리고 모델#1에서는 그룹웨어 ID가 존재하면서도 사원번호까지 주식별자로 사용하고 있습니다
이렇게 정의된 것은 현재의 구조에서는 의미가 없습니다
<그룹웨어 ID>만으로도 충분히 엔터티를 식별할 수 있으면서도
사원번호를 추가하는 것을 슈퍼 식별자라고 하며 꼭 필요하지 않는다면
효율면에서도 떨어지니 남용하지 않는 것이 좋습니다
또한, 부적합한 데이터가 쌓일 수 있는 구조를 만드는 빌미를 제공하며,
엔터티의 인스턴스가 늘어나는 기준을 불명확하게 만들어 모델의 가독성을 훼손하기도 합니다
프로젝트 성패를 결정짓는 데이터 모델링 이야기 中 김상래 지음
오늘은 주 식별자에 대해서 알아보았습니다
주 식별자는 모델링에서 많이 보는 형태이면서
아무렇지 않게 남용하는 경우도 보셨을 것입니다
이것을 어느 상황에서 써야 할지 모르고 그냥 연결을 하기 위해 사용하는 것은
아닌지 하는 생각을 했습니다
한 번쯤 깊게 고민해서 노트에 정리해야 할 듯합니다
아무튼 오늘도 한걸음 나아가는 보람찬 하루였음을 생각하며
우리 모두 IT 대모험을 이겨내 봅시다
'Data_Modeling > Methodology' 카테고리의 다른 글
데이터 모델링 Account와 같은 상위 개체 집합인 행위 주체가 누락 된다면? (2) | 2022.09.26 |
---|---|
데이터 모델링 업무 행위의 논리적 주체란 무엇일까? (4) | 2022.09.23 |
데이터 모델링 최상위 데이터에 해당하는 마스터 데이터란 무엇일까? (2) | 2022.09.20 |
데이터 모델링 중 데이터를 읽으려면 데이터 유형 혹은 패턴 제대로 알자 (2) | 2022.09.19 |
데이터 모델링 중 엔터티 모델링이 어려운 이유는? (0) | 2022.09.13 |