[TIL] ERD 특강!
오늘 한 것
[O] : 알고리즘 페어프로그래밍
[X] : 장고 강의 듣기? 오늘 특강 2개라서 가능할지..? : 불가능했다ㅋㅋ
- [X] : 5주차 듣기
[△] : 개인과제 완성하기 : 회원수정/로그아웃/탈퇴기능을 만들고 검증하는 과정에 있다..ㅠㅠ
- [O] : todo list 클론코딩으로 완성하기
- [O] : 코드 이해하기
[O] : 협업 특강 / ERD 특강
ERD 뿌시기!
모델 생성시’id’값을 장고에서는 자동으로 생성해준다
user_id in user = PrimaryKey
user_id in article = ForeignKey
ForeignKey, PrimaryKey를 활용하지 않을 경우의 문제점
- 불필요한 데이터를 보유하게 됨(중복 데이터)
- 무한으로 증식하는 테이블 컬럼(데이터 찾기가 어려움)
- 1대 1의 관계
user = models.ForeignKey(User, unique=True)
unique=True, 로 유저가 1개 테이블만을 만들 수 있게 해준다.
- 1대 다의 관계
user = models.ForeignKey(User, ~~)
- 다대 다의 관계
장고에서는 ManyToManyField (한계점도 있다.)
1대 다 관계로 양쪽이 연결되어있다.
현역에서는 manytomany보다 보통은 foreignkey만 가지고 다대다 관계를 세팅한다.
다대다의 중간 테이블을 생성해 묵시적 다대다 관계를 만들어준다.
장고에서 ManyToManyField의 단점이나 한계점
- 중복 관계: ManyToManyField는 중복 관계를 허용 = 이는 불필요한 데이터베이스 요청을 일으키고 데이터베이스를 부하시킬 수 있다
- 양방향 관계: ManyToManyField를 사용하면 연결된 두 모델 간에 양방향 관계가 생성된다. 이는 양쪽에서 서로 연결된 객체를 접근할 수 있게 되어, 모델 간의 관계가 복잡해질 수 있다.
- 중개 모델: ManyToManyField를 사용하면 자동으로 중개 모델이 생성된다. 이는 모델 간의 관계를 추가하고 관리하는 데 유용하지만, 일부 경우에는 이를 직접 사용해야 하는 경우도 있다.
- 직관성: ManyToManyField는 다른 관계 타입보다 사용이 복잡할 수 있다. 필드의 이름과 관계되어 있는 중개 모델, 추가/삭제 방법 등을 명확하게 이해하기 위해서는 장고 ORM에 대한 이해도가 높아야 한다.
식별 / 비식별 관계
- 비식별 관계 란 부모테이블의 기본키가 자식테이블에서 외래키 역할만 하는 관계
- 식별 관계 란 부모테이블의 기본키가 자식테이블에서 외래키 뿐만 아니라 기본키의 역할까지 하는 경우
- 식별관계 -
- 종속성이 강함!
student data가 없어지면 grade가 의미가 없다.
예시 : Student model의 Student id 를 Grade에 넣어주기..
class Grade(models,Model)
student models.OntToOneField(Student, on_delete=models.CASCADE, primarykey = True)
primarykey = True를 하면 Grade의 id가 자동 생성되지 않고 student의 id를 가져와서 사용하게된다!
- 비식별관계 -
지금까지 해왔던 것들이 비식별관계!
- 독립적이다!
Soldier 데이터가 없어져도 중대 데이터활용가능
class Soldier(models.Model):
Name = models.CharField(max_lenght=50)
Department = models.ForeignKey(Department, on_delete=models.CASCADE)
** on_delete=models.CASCADE 안에는 기본적으로 null=False 가 들어있다.
class Department(models.Model):
name = models.CharField(max_length=50)
대부분의 관계는 비식별관계로 처리하는 경향이 있다.
- 데이터 정합성,
- 구현/운영의 용이성을 위함
ㄴ 좋아하는 페이지를 골라서 erd를 만들어보세요! 연습도 되고 실무에서 도움됨!
** 주말동안 ERD만들어보자!
Starbucks ERD 만들어보기
https://www.starbucks.co.kr/index.do
새마을 식당 ERD 만들어보기
이제 ERD는 다른사람한테 더 잘 설명할 수 있을 것 같다!
+++