사원 엔터티의 업무 식별자는 주민등록번호 속성만이 되도록 설계한다. 그래서 퇴사한 후 재입사하더라고 같은 식별자를 사용하기 때문에 다른 사원이 되지 않도록 한다.
만약 퇴사한 사원이 재입사했을 때 다른 사원으로 인식한다면, 즉 사원번호가 달라진다면 사원 엔터티의 업무 식별자는 ‘주민등록번호+입사일자’가 된다. [그림1] 릴레이션이 이를 나타낸다.
[사원]
#사원번호 |
사원명 |
주민등록번호 |
입사일자 |
퇴사일자 |
12345 |
홍길동 |
1234567890123 |
2032-01-01 |
2042-12-31 |
23456 |
김길동 |
2345678901234 |
2025-01-30 |
{null} |
34567 |
이길동 |
6789012345678 |
2027-10-15 |
{null} |
45678 |
홍길동 |
1234567890123 |
2045-05-01 |
{null} |
[그림1]
업무 식별자가 ‘주민등록번호+입사일자’이기 때문에 2032년에 입사했다가 2042년에 퇴직한 ‘홍길동’이 2045년에 다시 입사하면 홍길동의 사원번호는 두 개가 된다. 이는 ‘홍길동’을 두 개의 인스턴스로 관리하는 것이며, 다른 사원을 의미하는 것이기도 하다.
‘45678’ 사원번호는 현재 사용하고 있는 사원번호이고, ‘12345’ 사원번호는 과거에 사용했던 사원번호를 나타내는데, [그림1] 릴레이션처럼 관리할 때의 문제는 같은 사람의 사원번호가 두 개라는 점이다. 사원번호는 시스템에서 광범위하게 사용되는데, ‘홍길동’의 사원번호가 두 개라면 데이터를 통합 관리하는 데 문제가 된다. 우선 집계할 때 어떤 식으로든 복잡해진다.
또한 사원 엔터티에 대한 정의와도 연관된다. 사원에 대한 일반적인 정의라면 한 사람에 대한 사원번호가 한 개만 존재하는 것이 바람직하다.
[그림2] 릴레이션과 같이 한 번 부여된 ‘홍길동’의 사원번호는 재입사 여부와 무관하게 지속적으로 사용해야 한다. 입사일자, 퇴사일자 등 변경 사항은 사원이력 엔터티에서 별도로 관리한다.
[사원]
#사원번호 |
사원명 |
주민등록번호 |
입사일자 |
퇴사일자 |
12345 |
홍길동 |
1234567890123 |
2045-05-01 |
{null} |
23456 |
김길동 |
2345678901234 |
2025-01-30 |
{null} |
34567 |
이길동 |
6789012345678 |
2027-10-15 |
{null} |
[사원이력]
#사원번호 |
#변경일자 |
사원명 |
주민등록번호 |
입사일자 |
퇴사일자 |
12345 |
2045-05-01 |
홍길동 |
1234567890123 |
2032-01-01 |
2042-12-31 |
[그림2]
[그림2] 릴레이션은 사원 개별로 하나의 사원번호만 존재한다는 것을 나타내므로 업무 식별자는 주민등록번호 속성 하나다.
'데이터 Story > 모델링 매뉴얼' 카테고리의 다른 글
실체 엔터티의 엔터티 명 (0) | 2016.10.13 |
---|---|
주 식별자 설계 원칙-변경되지 않는 속성 (0) | 2016.08.30 |
업무가 변경될 가능성이 있을 때는 이를 감안해서 인조 식별자를 사용 (0) | 2016.07.23 |
엔터티에 인스턴스를 생성하는 기준이 되는 속성을 주 식별자로 설계 (2) | 2016.07.16 |
업무 식별자를 도출할 때는 논리적으로 인스턴스를 구분할 수 있는지로 검토 (0) | 2016.07.13 |