DB - DB 설계 규칙 6가지 - 2

morecodeplease·2024년 11월 25일
0

데이터베이스

목록 보기
5/6
post-thumbnail

🔴 [규칙 3] 헷갈릴 땐 관계(1:1 , 1:N, N:M)을 파악하자.

  • DB 설계를 할 때 각 엔티티의 관계를 어떻게 파악할까?


1. ✅ 엔티티 간에 어울리는 동사 찾기

  • 예시 : A가 B를 소유한다. B가 A에 의해 소유된다.

2. ✅ 1번 에서 찾은 동사를 통해 적절한 단어 (하나의 or 여러 개의)를 찾는다.

  • 예시 : 하나의 A는 (하나의 or 여러 개의) B를 소유한다.
    하나의 B는 (하나의 or 여러 개의) A에 의해 소유된다.
  • 문장 처음에 하나의라는 말을 붙여서 헷갈리지 않게 한다.
  • 서비스의 기획에 따라 달라질 수 있다.

3. ✅ 관계 판단하기

  • 1) A,B의 관점 전부 하나만 가지면 A:B = 1:1 관계
  • 2) A의 관점에서 여러개의 B를 가지고, B의 관점에서 하나의 A를 가지면 A:B = 1:N
  • 3) A의 관점에서 하나의 B를 가지고, B의 관점에서 여러개의 A를 가지면 A:B = N:1
  • 4) A,B의 관점 전부 여러개를 가지면 A:B = N:M

🔴 1:N 관계

가게 (stores), 손님(customers)

  • 가게가 손님에게 물건을 판다.
  • 손님은 가게에 의해 물건을 구매한다.
  • 하나의 가게는 여러 명의 손님을 받는다.
  • 한명의 손님은 하나의 가게에 의해 물건을 구매한다.
  • 가게 : 손님 = 1:N (일대다)

🌈 1:N 관계의 특징

  • N(다) 쪽의 테이블에 FK가 들어가야 한다.
  • users 테이블

    id(PK)이름
    1페레이라
    2이데산야
  • emails 테이블

    id(PK)이메일사용자 id(FK)
    1asdf@naver.com1
    2qwer@naver.com1
    3fdsa@gmail.com2
    4trewq@gmail.com2

🔴 N:M 관계

학생(students), 수강 과목 (courses)

  • 학생이 수강 과목을 듣는다.
  • 수강 과목은 학생에 의해 진행된다.
  • 한 명의 학생은 여러 개의 수강 과목을 듣는다.
  • 하나의 수강 과목은 여러 명의 학생에 의해 진행된다.
  • 학생 : 수강 과목 = N : M (다대다)

😛 N:M 관계의 특징

  • 중간 테이블이 있어야 한다.

  • 중간 테이블에 두 테이블의 FK가 들어가야 한다.

  • N:M 관계에서 중간 테이블 추가해 1:N 관계로 바꿔 표현한다.

  • movies (영화)

    id(PK)이름출연 배우
    1배테랑황정민, 오달수
    2신세계황정민, 이정재
    3관상이정재, 송강호
  • actors (배우)

    id(PK)이름
    1황정민
    2오달수
    3이정재
    4송강호
  • movies(영화)

    id(PK)이름
    1베테랑
    2범죄도시
    3기생충
  • casings(캐스팅, 중간 테이블)

    id (PK)영화 id (FK)배우 id (FK)
    111
    212
    321
    423
    531
    634
  • actors (배우)

    id(PK)이름
    1황정민
    2오달수
    3이정재
    4송강호

🔴 1:1 관계

한국인(korean), 신분증(ID)

  • 한국인은 주민등록번호를 가진다.
  • 주민등록번호는 한국인에 의해 소유된다.
  • 한 명의 한국인은 한 개의 주민등록번호만 가진다.
  • 하나의 주민등록번호는 한 명의 한국인에게 소유된다.
  • 한국인 : 신분증 = 1 : 1 (일대일)

🎨 1:1 관계의 특징

  • 아무 테이블에 FK를 넣어도 된다.
  • 합쳐도 되는지 고려해본다.

참조

profile
Everyday's a lesson

0개의 댓글