데이터 모델링2

jiffydev·2020년 10월 30일
0

의미상의 주어가 된다면 초기에 생성
같은 학생이라도 Entity가 될 수도 안 될 수도 있음
-강좌에 참석한 사람이라면 Entity가 아닌 relation
-신분이 학생이라면 Entity

Relationship
두 개의 Entity나 그 자신과의 특정 관계를 양방향으로 표현
현재의 관계나 장래 유용한 관계만 한정적으로 표시

관계를 설정할 때는 질문을 명확하게.
사원이 몇 개의 부서에 소속되어 있는가? 라는 질문은 목적이 불명확한 명확성이 결여된 질문이다.
근무 이력을 위한 데이터라면 사원이 여러 개의 부서에 소속되었을 수 있을 것이고, 현 소속을 위한 데이터라면 하나의 부서에만 소속되었을 것이다.

개수를 확정했다면 소속이 반드시 있어야 하나(must be)/ 없어도 되나(may be)를 정해야 한다. 보통 사원이라면 소속이 있어야 한다고 생각하겠지만, 일용직 사원이나 협력업체 사원에도 소속을 정하는가? 라고 물어보면 그렇지 않을 수도 있다. 그렇다면 소속이 없는 사원도 존재하는 것이다.

관계를 설정할 때는 보편타당성에 근거하여 설정한다. 부모-자식 관계인 Entity가 있다면, 부모는 자식이 없어도 되지만, 자식은 반드시 부모가 있어야 한다.
현 데이터베이스에서 자식이 may be(점선) 관계가 되었다면 이를 직선으로 만들기 위해 노력해야 하는데, 위의 사원과 부서의 예처럼 소속이 없는 사원이 존재할 경우, 외주업체 이름을 부서로 하거나 일용직은 총무부로 넣도록 하는 등의 rule을 정하면 실선 관계가 생기게 된다.

부서를 보면, 사원이 존재하지 않는 부서가 있는지를 찾아야 할 것이다. 예를 들어 내년도에 새로 만들어질 부서가 있는데 예산편성을 위해 미리 부서코드를 만들어 놓았다면, 사원은 존재하지 않지만 부서는 존재하게 된다. (may be)

그래서 이 둘을 합치게 되면 부모(부서)-자식(사원) 테이블의 관계는 부모에서 나가는 선은 점선, 자식에서 나가는 선은 실선의 관계를 갖는 것이다.

쉬워 보이는 부서-사원 간의 관계일지라도, 따지고 들어가면 고려해야 할 부분이 많고 단순하게 결정할 수 있는 성질의 것이 아니다.

관계를 작성할 때, 관계명은 구체적이어야 한다. 또한 제1자의 입장에서 규정해야 한다.

profile
잘 & 열심히 살고싶은 개발자

0개의 댓글