DB 모델링에 대한 고찰

현이·2022년 9월 23일
0

고찰

목록 보기
4/6

DataBase에 기록되는 데이터는 명사와 동사(history)이다.

우리가 데이터베이스에 데이터를 저장하기 위해서는 우선 어떤 데이터를 어떻게 저장할 것인지 생각해보아야 합니다.

그렇게 등장한 개념이 도메인이라는 것인데

도메인이란,

여러 데이터들을 대표하는 하나의 형태

라고 저는 정의를 내립니다.

그리고, 모델링을 할때 큰 그림에서 세분화 시키는 방식으로 가야하기 때문에

모델링을 하기위해 우리는 1차도메인 설정을 합니다.

도메인의 특징

  • 1차 도메인은 명사이다
  • 2차 도메인은 동사이다
  • 하나의 도메인은 여러개의 테이블로 만들어진다

로컬맛집을 제공해주는 서비스를 토대로 테이블 설계를 한번 해보겠습니다.

맛집이 어딘지 서비스를 제공해주기 위해서는 음식점을 방문한 사람들의 데이터가 필요하죠?

그 데이터는 어떻게 만들어지는지 부터 생각을 해봅시다.

"사람이 식당을 방문하면" 생기겠죠?

그 이후에 별점도 달고, 리뷰도 남기고, 식당에는 주소가 있고.. 등등 부가적인 데이터는 그 이후에 파생이 되요.

결국 사람과 식당이라는 명사 사이에 방문이라는 동사 즉, 행위가 일어나고
이 명사들을 1차 도메인으로 두고, 동사를 2차도메인으로 설정하면서 시작하면 되요.

사용자 테이블

사용자번호사용자이름

맛집 테이블

가게번호가게이름메뉴1,메뉴2...

위처럼 ,가 나오게된다면 그때 테이블 분리를 진행해 주면 되요.

맛집상세 테이블

가게번호메뉴사진
가게번호1메뉴1사진1
가게번호2메뉴1사진2
가게번호3메뉴2사진3

이처럼 pk가 여러번 중복되면 까마귀발을 선택하면 되요

맛집테이블 -l---E 맛집상세테이블

여기에서 복합키를 사용할건지, 아니면 pk를 두고 기존의 pk를 fk로 둘건지에 따라 점선 실선을 정하면 되는데,

pk여부는 시간순서로 따지면 되요.

맛집테이블이 수정,삭제가 될 때 맛집상세 테이블이 같이 영향을 받는다면, 굳이 pk로 두지 않아도 되고,
만약 게시글과 댓글처럼 독립적인 시간영향을 받는다면 pk를 두면 되겠죠?.

방문 테이블

  • 사용자1은 가게1을 09/22에 방문했다.
  • 사용자1은 가게2를 09/23에 방문했다
  • 사용자2는 가게2를 09/24에 방문했다.
사용자번호가게번호방문시간
사용자1가게109/22
사용자1가게209/23
사용자2가게209/24

사용자와 가게전부 여러번나오죠? 그러면 두 테이블전부 까마귀 발이에요.
사용자 -l---E 방문, 맛집 -l---E 방문

pk를 둬서 이런식으로 풀어나갈수도 있겠죠?

  • 이말은 즉슨 방문번호로 crud를 진행할 수 있어요.
방문번호사용자번호가게번호
방문번호1사용자1가게1
방문번호2사용자2가게1
방문번호3사용자2가게2

조금더 테이블을 세분화 시킨다면 이렇게도 가능해요

평가 테이블

  • 방문번호에대한 별점과, 사진을 수정,삭제 할 수 있어요.
방문번호메뉴사진별점
방문번호1사진15
방문번호1사진25
방문번호1사진35

지금까지 db 모델링에 대해 알아보았습니다.

정리하자면,

  1. db에 기록하는 것은 명사와 동사(history)이다.
  2. 제일먼저 뽑아야하는것은 1차도메인(영역)이다. == 1차도메인은 명사이다.
  3. 2차도메인은 동사(history)이다.
  4. 하나의 도메인은 여러개의 테이블로 만들어진다.
  5. 상위테이블의 pk가 하위테이블에 여러개 존재하면 까마귀발이다.
profile
의미있는 고찰

0개의 댓글