<오늘 한 일>
- ERD 특강 재수강
- 순서가 바뀐 것 같긴 한데 처음에 실시간으로 강의를 들었을 때 무슨 말인지 어디에 쓰는건지 하나도 모르겠어서 강의가 귀에 거의 안 들어왔다
- 팀과제를 진행하면서 'ERD를 이럴 때 쓰는거구나~' 하고 알게 됐고 지금 들으면 무슨 말인지 알아들을 수 있을 거 같아서 오늘 다시 강의를 들었다
- 어제 팀프로젝트 발표 때 어떤 팀에서 회원탈퇴를 해도 탈퇴한 이용자가 쓴 게시물이 남아있는 게 기억에 남았는데 이 강의를 들으니 '외래키 on_delete를 models.DO_NOTHING이나 models.SET_NULL을 쓴 건가?' 싶어서 신기했다ㅋㅋ
- 강의를 진작 다시 들었어야 했는데...
- 선발대 과제
- 첫 과제인데 그냥 강의자료에 있는 타입별 메서드와 프로세스, 스레드 예제를 따라 쓰는 거라 금방 .. 할 줄 알았는데 생각보다 시간이 오래 걸렸다 그냥 따라쓰기만 한 건데도 1시간 반은 걸린 듯...ㄷㄷ
- 제출은 깃허브 주소로!
- 과제: AI-5_Seonbaldae/Day1 at main · goodminjeong/AI-5_Seonbaldae (github.com)
- 알고리즘 문제 풀이
<오늘 새롭게 배운 것>
- ERD 구축 및 설계 정리
- 가장 먼저 와이어프레임을 구성해서 요구사항을 파악해야 함
- 개념적 모델링 - 논리적 모델링 - 물리적 모델링 순으로 진행
데이터 모델링
- 개념적 모델링
- 데이터 간의 관계를 구상
- 각 개체들 간의 관계를 발견하고 표현
- 간단 명료한 ERD 그리기
- 논리적 모델링
- 개념적 모델링 완료 후 구체화
- 데이터 타입 명시
- Key, 속성, 관계를 표시
- 물리적 모델링
- 논리적 모델링 후
- 실제 데이터 베이스 테이블 생성
- Django에서 models.py 사용
- makemigrations, migrate 해줘야 함
외래키/ForeignKey
- 1:N 관계일 때 사용
- 하나의 테이블에 많은 column이 생겨야 하는 경우 매우 비효율적
- 예시) 하나의 영화에 여러 리뷰가 있을 수 있음
- 리뷰에서 영화를 외래키로 지정
- ForeignKey(참조 모델(테이블), on_delete=개체 삭제 시 수행 동작, related_name=개체 관계에서 사용할 이름, db_column=db상 필드 이름)
- db_column은 지정하지 않는다면 Review 모델 안에 movie는 db에서 칼럼명이 movie_id로 됨
ManyToMany
- M:N 관계일 때 사용
- 논리적으로 표현은 가능, django - sqlite3처럼 manytomanyfield를 지원하는 경우 따로 테이블 생성 필요 없음
- 하지만 해당 필드를 지원하지 않는 db 사용 시 연결해 줄 테이블이 필요
- 예시) 유저는 여러 영화를 좋아요 표시하고, 영화는 여러 유저에게 좋아요를 받을 수 있음
- movie에서 ManyToManyField를 사용
- ManyToManyField(참조 모델(테이블), related_name=개체 관계에서 사용할 이름)
<느낀 점>
- 오늘 약간 효율성 떨어지는 공부를 한 것 같다
- 아니 공부 할 때는 잘했는데 집중하는 시간이 짧았던 것 같다
- 왜냐하면 점심, 저녁 다 약속있어서 밖에 나가서 먹었더니 공부하는 시간이 툭툭 끊겨서 그런 것 같다
- 반성한다
- 내일은 딱히 약속 없으니 12시간 짜임새 있게 공부하겠다
<내일 목표>
- 알고리즘 문제 최소 3문제 이상 풀기
- 장고 기초 강의 5-4강부터 끝까지 듣기
- 장고 심화 강의 1주차 완강
- 알고리즘 강의 듣기(2-1강부터 2-6강까지)