sec04. MySQL 설치 및 ERD 설계 - 3

sngmin·2024년 2월 11일

06. 간단한 ERD 작성 - 1:1

ERD

  • Entity Relation Diagram, 테이블들의 관계를 표현한 그림
  • 서비스의 구조를 한 눈에 파악 가능
  • DB 설계 시 실수를 줄일 수 있음
  • API를 효율적으로 설계 가능

📎 https://dbdiagram.io/home

table User{
  id string
  name string
}

table Post{
  id string
  title string
  content string
  userId string
}

User의 id를 Post의 userId로 드래그 하면

1:1 관계

서로 하나씩만 가질 수 있는지, 입장 바꿔서 생각해보기. 그렇게 많은 관계는 아님.

ERD 설계 방법

개념적 데이터모델링

  • 뭐가 필요할까?
  • 그 안에는 무엇이 들어있을까?
  • 서로 관계는 어떻게 될까?

논리적 데이터모델링

  • 테이블을 분리할 수 있을까?
  • 중복되는 값은 없을까?
  • 유일한 값이 하나인가?

물리적 데이터모델링

  • 데이터베이스 실제 적용

07. 간단한 ERD 작성 - 1:N


유저와 게시글은 1:N 관계

08. 간단한 ERD 작성 - N:M


User : PostLike - 1 : N
PostLike : Post - M : 1
User : Post - N : M
N:M 관계는 징검다리 같은 테이블 필요!

table User{
  id uuid

  name varchar(200) // 이름
  age int
  email varchar(200) // 이메일
  phoneNumber char(11) // 전화번호

}

table UserSetting{
  id uuid
  
  alarm boolean // 알림 설정 유무
  privateAgreement boolean // 개인정보 수집 동의

  userId uuid
}

table Post{
  id uuid

  title varchar(200) // 제목
  content longtext // 내용

  userId uuid // 유저 id [fk]
}

table PostLike{
  userId uuid
  postId uuid
  // pk : userId + postId
}

table PostBookmark{
  id uuid // pk

  title varchar(200)
  extraContent varchar(200)

  userId uuid
  postId uuid
}



Ref: "User"."id" < "Post"."userId"

Ref: "User"."id" < "UserSetting"."userId"

Ref: "User"."id" < "PostLike"."userId"

Ref: "Post"."id" < "PostLike"."postId"

Ref: "User"."id" < "PostBookmark"."userId"

Ref: "Post"."id" < "PostBookmark"."postId"

📌 PostLike 테이블은 id가 없는데 어떻게 구분할까? -> userId와 postId를 합칩.

📖 https://www.velog.io 사이트에 대한 ERD 그려보기

0개의 댓글