오늘은 장고의 데이터베이스 테이블간의 관계를 알아보겠습니다.
대표적으로 3개의 관계가 있습니다.
one-to-many
one-to-one
many-to-many
먼저 one-to-many 의 형태부터 알아보겠습니다.
보통 일반적으로 생각하는 글쓴이가 여러개의 글을 가지고 있고, 오직 글쓴이 만이 글에 접근할 수 있는 형태가 바로
one-to-many 입니다. (네이버, 페이스북, 트위터 등) -- 글쓰기 모델
다음은 one-to-one 입니다. 대표적으로 프로필 기능을 예로 들수 있습니다.
보통 프로필은 그 사람 본인만 접근이 가능합니다.
'데이터 A와 데이터 B'가 서로 만나서 중복이 되지 않는 값을 만들어 내는 것이 one-to-one 이라고 할 수 있습니다.
many-to-many는 A모델과 B모델이 있을 때 A가 여러 개의 B를 가질 수도 있고 B가 여러 개의 A를 가질 수도 있을 때 사용하는 모델입니다. -- 팔로우, 팔로워 확인 기능
서로의 데이터를 다양하게 가질 수 있는 것이 바로 many-to-many 입니다
class MyTopping(models.Model):
topping_name = models.CharField(max_length=100)
class MyPizza(models.Model):
pizza_name = models.CharField(max_length=100)
pizza_topping = models.ManyToManyField(MyTopping)
예를 들어서 피자와 토핑을 해보겠습니다.
피자는 여러개의 토핑을 가질 수 있습니다.
토핑은 여러개의 피자에 올라갈 수 있습니다.
위의 내용들은 외운다기 보다는 충분히 이해하고 나중에 개발할 때 아 이런 종류들이 있었지 하고 알아두는게 좋을 것 같습니다.
'TTL > 1주차 ~ 4주차 TIL (8.29 ~ 9.23)' 카테고리의 다른 글
2022-09-21 TIL (vscode Django 장고 개발환경 세팅하기 - windows, Linux, MacOs) (0) | 2022.09.22 |
---|---|
2022-09-20 TIL (0) | 2022.09.21 |
2022-09-19 TIL (0) | 2022.09.20 |
2022-09-16 TIL (0) | 2022.09.18 |
2022-09-15 TIL (0) | 2022.09.16 |