Mapping Cardinality

Humbler·2020년 3월 14일
0

위의 코드는 unittest2에서 evergreen님이 example로 작성한 models code.

이 코드를 보며 제대로 이해하지 못했던 ManyToManyField에 대해 이해해보았다.

위의 코드를 스프레드시트에서 예를 들어 표현해 보니 아래와 같았다.

보는 바와 같이 authors와 books table은 별 다른 게 없다.
각자의 속성을 지닐 뿐.
다만 books table의 한 속성으로 authors를 주고 ManyToMany로 필드 표현을 할 뿐이다.
이때 books table에 꼭 mtm 표현을 해야하나 궁금해서 아래와 같이 바꿔서도 표현해봤다.

이 둘은 결국 똑같다. 아래 링크의 글에도 그렇게 설명하고 있다.
결국 mtm은 books와 authors table에서 중복되게 있을 만한 속성값들을 제거해주기 위해 중간table을 만들어주는 것이다.
위의 예를 한글로 풀면 한 책의 저자가 여러명일 수 있는 것과 같다.
이 예와 똑같지만 다르게 표현하자면, 한 저자가 여러책을 쓸 수 있는 것이라고 할 수 있다.

아래 글은 ForeignKey, OnetoOneField, ManyToManyField에 대한 자세한 설명을 하고 있다.

https://ssungkang.tistory.com/entry/Django-%EA%B4%80%EA%B3%84%EB%A5%BC-%ED%91%9C%ED%98%84%ED%95%98%EB%8A%94-%EB%AA%A8%EB%8D%B8-%ED%95%84%EB%93%9C-ForeignKeyOneToOneFieldManyToManyField

추가적으로 생각나서 적는데, 아래의 사진은 2차 프로젝트 때 whybein님께서 표를 그리며 설명해주신 1:N 사상의 예시다.

profile
무엇을 모르는지 모르는 상태에서 무엇을 모르는지 아는 상태가 되어가는.

0개의 댓글