Tags
- stack
- update
- 백트래킹
- M:N
- drf
- Django
- 통계학
- ORM
- outer join
- 스택
- distinct
- 트리
- DB
- delete
- Vue
- Article & User
- 이진트리
- regexp
- count
- 그리디
- 완전검색
- 큐
- create
- Tree
- 뷰
- Queue
- migrations
- N:1
- 쟝고
- SQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Notice
Recent Posts
Link
데이터 분석 기술 블로그
DB에 대하여(11)_Many to many relationships (feat. Django) 본문
1. Many to many relationships (N:M or M:N)
한 테이블의 0개 이상의 레코드가 다른 테이블의 0개 이상의 레코드와 관련된 경우입니다.
양쪽 모두에서 N:1 관계를 가집니다.
1-1. M:N 관계의 역할과 필요성 이해하기
- '병원 진료 시스템 모델 관계'를 만들며 M:N 관계의 역할과 필요성을 이해합니다.
- 환자와 의사 2개의 모델을 사용하여 모델 구조 구상합니다.
2. N:1의 한계
의사와 환자 간 모델 관계 설정
한 명의 의사에게 여러 환자가 예약할 수 있다고 설계합니다.
# hospital/models.py
class Doctor(models.Model):
name = models.TextField()
def __str__(self):
return f'{self.pk}번 의사 {self.name}'
class Patient(models.Mode):
doctor = models.ForeignKey(Doctor, on_delete=models.CASCADE)
name = models.TextField()
def __str__(self):
return f'{self.pk}번 환자 {self.name}'
의사와 환자 데이터 생성
2명의 의사와 환자를 생성하고 환자는 서로 다른 의사에게 예약합니다.
doctor1 = Doctor.objects.create(name='allie')
doctor2 = Doctor.objects.create(name='barbie')
patient1 = Patient.objects.create(name='carol', doctor=doctor1)
patient2 = Patient.objects.create(name='duke', doctor=doctor2)
doctor1
<Doctor: 1번 의사 allie>
doctor2
<Doctor: 2번 의사 barbie>
patient1
<Patient: 1번 환자 carol>
patient2
<Patient: 2번 환자 duke>
2-1. N:1의 한계 상황 (1)
1번 환자(carol)가 두 의사 모두에게 진료를 받고자 한다면 환자 테이블에 1번 환자 데이터가 중복으로 입력될 수밖에 없습니다.
2-2. N:1의 한계 상황 (2)
동시에 예약을 남길 수는 없을 까요?
2-3. N:1의 한계 상황 (3)
- 동일한 환자지만 다른 의사에게도 진료 받기 위해 예약하기 위해서는 객체를 한 더 만들어 진행해야 합니다.
- 외래 키 컬럼에 '1, 2'형태로 저장 및 참조하는 DB타입 문제로 불가능합니다.
그럼 예약 테이블을 따로 만들면 될 것 같습니다!
'DB' 카테고리의 다른 글
DB에 대하여(13)_ManyToManyField (feat. Django) (0) | 2024.04.30 |
---|---|
DB에 대하여(12)_중개 모델 (feat. Django) (0) | 2024.04.29 |
DB에 대하여(10)_댓글 DELETE (feat. Django) (0) | 2024.04.27 |
DB에 대하여(9)_댓글 CREATE & READ (feat. Django) (0) | 2024.04.26 |
DB에 대하여(8)_Comment & User 모델 관계 설정 (feat. Django) (0) | 2024.04.25 |