Goal : 객체와 테이블 연관관계 차이 이해
Terms
- Diraction : 단방향, 양방향
- Multiplicity :
N:1,1:N,1:1,N:M
객체를 테이블에 맞춰 데이터 중심으로 모델링 하면, 협력 관계를 만들 수 없다.
OOP와 DB의 Paradigm 차이에 기인하는데, OOP는 Reference 방식으로 객체 그래프 흐름을 타지만, Table은 FK를 활용한 Join을 통해 테이블을 찾는다.
→ 데이터 중심 모델링 한다고 연관관계에 있는 Table 의 id를 Entity 로 등록한다면, 의도대로 테이블 세팅은 잘 되겠지만, 딱 거기까지만 접근 가능하다. 예시를 통해 살펴보자
Scenario :: Master ↔ Slaves 관계라고 해보자 ⇒ Cardinality : 1:N ****(get만 따져보자) ****
Master
| master_id | name | mbti | gender |
|---|---|---|---|
| 1 | Hooby | INTJ | male |
| 2 | Youcu | ISTJ | male |
Slaves
| slave_id | master_id (FK) |
|---|---|
| 1001 | 1 |
| 1002 | 1 |
뭔가 Master 와 Slaves에 대한 Entity 를 정의할 때 이렇게 해야만 할 것 같을 것이다.
→ 이렇게 한게 데이터 중심 모델링이다. 이렇게 했을 때 다음과 같은 문제가 존재한다.