일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Github
- 패키지설치에러
- Express
- Database
- class
- git
- javascript
- 웹소켓재시작
- aws
- 클래스
- 클라우드
- gpt3.5turbo
- gptapi
- 웹소켓연결끊김
- gitlab
- db
- chatGPTAPI
- 버킷생성
- GPT3.5
- 호스팅영역
- java
- aiapi
- openaiapi
- ChatGPT
- 자바
- nodejs
- iam사용자
- 웹소켓연결
- 노드버전
- nvmrc
- Today
- Total
IT's Jenna
데이터베이스 모델링 본문
데이터베이스 모델링
- 현실에 존재하는 복잡한 데이터들을 체계화 및 단순화하여 컴퓨터상의 데이터베이스로 옮기는 과정
- 데이터베이스 모델링을 어떻게 하느냐에 따라 데이터 품질 및 서비스의 질이 달라질 수 있다
데이터베이스 모델링 설계할 때 가이드
- 데이터 중복 줄이기
- 유연하게 설계 (서비스 동작이 변경될 때 대응할 수 있도록 설계되어야 함)
- 일관적으로 설계 (설계 및 명명 기준이 명확할 수 있도록)
- 데이터베이스에 null 값이 없도록 설계
but, 현실적으로 위 규칙을 지키는 것이 쉽지는 않다..
ERD (Entity Relationship Diagram)
- Entity : 하나의 독립적인 데이터 (테이블), Entity는 관계에 따라 다른 데이터를 속성으로 가질 수 있다.
- ERD : 각각의 독립적인 데이터들의 관계를 그림(Diagram)으로 도식화한 것
- 데이터들의 관계를 한눈에 보기 용이하기 때문에 협업할 때 유용하게 사용된다
ERD 표시 방법
- 실선 : 데이터가 1:1 로 매칭 될 때 사용
- 점선 : 데이터가 1:n 으로 매칭 될 때 사용
- PK(Primary Key) : 테이블의 가장 기본이 되는 key
MySQL로 ERD 그리기
- File -> New model -> add diagram
테이블 설정
하나의 쇼핑몰 페이지를 만든다고 가정하고 테이블을 설정해보았다. 필수적으로 필요한 데이터는 다음과 같다.
- 유저
- 상품
- 카테고리
- 주문
- 장바구니
- 리뷰
- 배너
테이블을 만들 때 나는 1:n 부분이 가장 헷갈렸었다. 예를 들어 order 데이터 테이블은 한 유저에 대한 주문이 아니라 모든 주문 데이터를 가지고 있는 테이블이다. 거기서 몇 개의 주문이 하나의 유저로 부터 생성된 데이터인 것이다. goods 또한, 모든 주문 데이터 중에서 다수의 주문이 특정 제품의 것이다.
아래 테이블을 보면 더욱 이해하기 쉽다. 총 5개의 주문이 들어왔을 때 user 1번이 제품 1,2,3을 주문했고, user 2번이 제품 1,3을 주문했다. 따라서 order에 다수의 user와 goods를 사용할 수 있다.
order_idx | user_idx | goods_idx | qty |
1 | 1 | 1 | 6 |
2 | 1 | 2 | 6 |
3 | 1 | 3 | 6 |
4 | 2 | 1 | 6 |
5 | 2 | 3 | 6 |
이제 ERD를 만들었으니 다음 포스팅엔 실제로 데이터를 사용하는 방법을 알아보도록 하겠다.
<참고>
'Backend > Backend 기본' 카테고리의 다른 글
Swagger (0) | 2021.02.28 |
---|---|
서버 API 만들기 (0) | 2021.02.18 |
formidable로 파일 업로드하기 (0) | 2021.02.18 |
Crypto (0) | 2021.02.01 |
모듈화 (0) | 2021.01.27 |