[TIL-34] ERD 심화

우소라·2023년 4월 27일


ERD 너무 어려워..

  1. 식별/ 비식별, 논리 추상화와 같은 단어에 쫄지 말 것: 이론과 실제는 별개, 세상에 널려있는 것이 연습을 위한 공짜 와이어ㅡ레임, 자신이 좋아하는 브랜드 or 도메인 위주로 연습 후 기록

  2. PK/FK
    PK(Primary Key): Table에서 반드시 하나만 존재, 그래서 row의 값을 고유하게 식별 가능, 대개 정수 형태, 번호 혹은 유일한 값
    FK(Foreign Key): 다르 테이블의 PK를 참조하는 컬럼, 타 테이블 PK데이터 확보
    PK, FK를 활용하지 않는다면... 불필요한 데이터 보유, 무한으로 증식하는 테이블 컬럼

  3. 3-1)일대일 관계
    어느 데이터에 종속되는 데이터가 하나만 있을 때 사용, 장고에서 일대일관계는 OneToOneField로 구현 가능, 보통 ForeignKey with unique=True로 구현, 현재 장고에서는 이렇게 작성하는 것을 추천
    ex) 카카오토에서 프로필은 단 하나였다.. 하지만 현재는 아님

3-2)일대다 관계
장고에서 일대다관계는 Foreign Key로 형성, 한명의 유저가 여러개의 계좌 개설 가능 (but 내 계좌는 남들과 공유 못함)

user: PK(id, name)
coin: PK(id)-<(user_id, amount)

3-3) 다대다 관계
장고에서는 ManyToManyField를 지원 (한계점 찾기), 일대다 관계(Foreign Key)로 양쪽이 연결되어 있는 것을 구현

  1. 식별/비식별 관계
    대부분의 관계는 비식별 관계로 처리하게 되는 경향이 있음 (데이터 정합성, 구현/운영의 용이성)
    그러면 비식별관계에서 on_delete=CASCADE 옵션을 안 적용해줘도 괜찮지 않을까?

    -on_delete옵션의 다양성도 참고해볼것 models.CASCADE, models.SET_NULL, models.PROTECT외

  2. 일대일, 일대다, 다대다 관계 찾기
    Data Type, Nullable 체크
    테이블 공통 Field 체크
    추가로 분리 가능 데이터 찾기

0개의 댓글