엔티티 도출 실습1. 사원, 출결사항 ❎✅
1일~n일치 출결 자료가 쌓여갈 것이므로 일대다 관계로 정의되어야 한다.
엔티티 도출 실습2. 고객, 상담일지, 반품목록 ❎✅
상담일지-반품목록이 일대일 관계를 띄고 있다. 이런 경우는 사실 상담일지 엔티티에 속성으로서 반품내용 하나만 집어넣어도 문제는 없다. 단, 상담내용이 수리 요청 또는 반품 요청으로 나뉜다고 했다. 따라서 반품내용이 속성으로서 자리 잡을 경우 수리 요청/반품 요청 발생 시마다 다른 한 쪽은 null 값으로 채워지게 마련이다.
이런 경우는 별도로 반품목록 엔티티, 수리목록 엔티티로 나누어 일대일 관계로 봄이 적합하다. 이를 아크관계라고 한다.
엔티티 도출 실습3. 강사, 과정, 학생 ❎✅
한 강사는 여러 개의 과정을 수업할 수 있다. 일대엔 관계를 말한다. 1인 경우가 부모, n인 쪽이 자식에 해당된다.
강사가 일을 쉬는 등 과정을 담당하지 않는 경우들에 대비해 없거나 많은 관계로 설정한다. 이때 과정코드가 주식별자 역할을 알맞게 수행하므로 비식별관계로 놓는다.
반면 학생의 경우는 과정을 0개~여러 개 듣게 될 텐데, 과정마다 학생이 여럿일 수 있으므로 구분을 위해 학생코드는 식별관계로 세팅한다.
엔티티 도출 실습4. 고객, 고객별구입물품, 물품, 제조회사 ✅
1번 고객이 3월 1일 오전 10시에 A 상품을 2개 구입하였다. 같은 날 저녁 A 상품을 5개 더 추가 구매한다면, 구입날짜-고객번호-물품번호만으로는 주식별자 역할을 해내지 못한다. 즉 두 주문 건에 대해 구별할 수가 없단 뜻이다. 이때는 인위적 주식별자로서 구입번호를 부여하는 것이 하나의 해결방안이 된다.
'Database' 카테고리의 다른 글
[DB 모델링] 2차 정규화 실습 | 데이터 논리 모델링 (0) | 2022.03.02 |
---|---|
[DB 모델링] 1차 정규화 실습 | 데이터 논리 모델링 (0) | 2022.03.02 |
[JDBC] JUnit | 단위 테스트 | @Test | assertEquals (0) | 2022.02.08 |
[JDBC] Controller | MVC 패턴 | CRUD | ResultView (0) | 2022.02.07 |
[Oracle/수업 과제 practice] 도서 관리 (0) | 2022.02.06 |