1. DB 설계 과정
1) 6가지 규칙 적용시키면서 테이블 분리해나가기
#1 데이터 중복을 확인하기 위해 임의의 데이터 넣어보기
기획자에게 각 컬럼의 특징을 물어보면서 데이터베이스 설계 진행
컬럼 특징을 고려해 값 넣기
∙ 강제로 중복 만들어보며 가짜 중복인지 진짜 중복인지 판별하기
∙ 필요없는 컬럼은 지우기
#2 테이블 분리
∙ 한 칸에 한 가지 정보만 들어가기 : 어기면 테이블 분리
∙ 어떤 테이블에 FK를 넣어도 "규칙 1"을 못 지킬 때 중간 테이블 생성
∙ 관계 파악 (1:1, 1:N, N:M)
1:N : N 쪽 테이블에 FK 들어감
N:M : 중간 테이블을 만들어 두 테이블의 FK가 들어가고, 1:N 관계로 바꿔 표현
1:1 : 아무 테이블에 FK를 넣어도 되지만, 합쳐도 되는지 고려
∙ 진짜 중복인 경우 테이블 분리
∙ 숨은 데이터 중복을 없애려면 중복 컬럼 삭제, 삭제한 컬럼에 대한 테이블 생성
- users (사용자)
| id | 이메일 | 비밀번호 | 이름 | 주소 | 전화번호 |
| 1 | abc@naver.com | pwd1234 | 송진성 | 서울특별시 ... | 01023456789 |
| 2 | def@naver.com | abc1234 | 김땡땡 | 울산광역시 ... | 01011112222 |
- products (상품)
| id | 상품명 | 설명 | 가격 | 재고량 | 카테고리 id (FK) | 등록시간 | 등록자 : 사용자 id (FK) |
| 1 | 락스 | 락스 | 1000 | 10 | 1 | 24.06.07 23:00:00 | 1 |
| 2 | 살균제 | 살균제 | 2000 | 10 | 1 | 24.06.07 23:00:00 | 1 |
- product_categories (상품 카테고리)
| id | 카테고리명 |
| 1 | 생활용품 |
- orders (주문 정보)
| id | 주문한 사용자 : 사용자 id (FK) | 주문 일시 | 배송 id (FK) |
| 1 | 1 | 24.06.10 23:00:00 | 1 |
| 2 | 2 | 24.06.10 23:00:00 | 2 |
- ordered_products (주문 상품)
| id | 주문 id (FK) | 상품 id (FK) | 주문시 각 상품 수량 | 주문시 각 상품 가격 |
| 1 | 1 | 1 | 3 | 1000 |
| 2 | 1 | 2 | 5 | 2000 |
| 3 | 2 | 1 | 1 | 1000 |
| 4 | 2 | 2 | 1 | 2000 |
* 상품 테이블 가격과 주문 상품 테이블 가격은 각각 다르다.
상품 가격이 나중에 변경되어도, 주문 상품은 가격 변경 전에 이미 구매했으므로 바뀌면 안됨
- deliveries (배송 정보)
| id | 이름 | 주소 | 전화번호 |
| 1 | 송땡땡 | 서울특별시 구로구 | 01023456789 |
| 2 | 송진성 | 서울특별시 구로구 | 01023456789 |
* 배송 정보 조회가 많다고 가정하여 1:1 관계 테이블을 합치치 않고 분리
* 배송 정보는 상황에 따라 바뀔 수 있으므로 모든 컬럼 가짜 중복
- reviews (리뷰)
| id | 리뷰 작성자 : 사용자 id (FK) | 리뷰 내용 | 리뷰 평점 | 리뷰 상품 : 상품 id (FK) |
| 1 | 1 | 내용1 | 5 | 1 |
| 2 | 1 | 내용1 | 5 | 2 |
- admins (관리자)
| id | 이메일 | 비밀번호 |
| 1 | abc@naver.com | password |
| 2 | def@naver.com | pwd1111 |
관계 파악1)
상품, 주문 정보
#1 엔티티 간에 어울리는 동사 찾기
상품은 주문 정보에 "속한다."
주문 정보는 상품을 "가지고 있다."
#2 찾은 동사를 활용해 적절한 단어(하나의 or 여러 개의) 찾기
하나의 상품은 "여러 개의" 주문 정보에 속한다.
하나의 주문 정보는 "여러 개의" 상품을 가지고 있다.
#3 관계 판단
상품 : 주문 정보 = N : M
관계 파악2)
주문 정보, 배송 정보
#1 엔티티 간에 어울리는 동사 찾기
주문 정보는 배송 정보를 "가진다."
배송 정보는 주문 정보에 "속해있다."
#2 찾은 동사를 활용해 적절한 단어(하나의 or 여러 개의) 찾기
하나의 주문 정보는 "하나의" 배송 정보를 가진다.
하나의 배송 정보는 "하나의" 주문 정보에 속해있다.
#3 관계 판단
주문 정보 : 배송 정보 = 1 : 1
참고링크 : https://www.inflearn.com/course/%EB%B9%84%EC%A0%84%EA%B3%B5%EC%9E%90-db-%EC%84%A4%EA%B3%84-%EC%9E%85%EB%AC%B8?cid=335049
비전공자도 이해할 수 있는 DB 설계 입문/실전| JSCODE 박재성 - 인프런 강의
현재 평점 4.9점 수강생 1,510명인 강의를 만나보세요. 비전공자 입장에서도 쉽게 이해할 수 있고, 실전에서 바로 적용 가능한 'DB 설계 입문/실전' 강의를 만들어봤습니다! 복잡한 개념을 몰라도
www.inflearn.com
'강의 실습 > 비전공자도 이해할 수 있는 DB 설계 입문 실전' 카테고리의 다른 글
| [실습] 화면 UI 디자인을 보고 DB 설계해보기 - JSCODE 투두리스트 (0) | 2026.03.08 |
|---|---|
| [실습] 화면 UI 디자인을 보고 DB 설계해보기 - JSCODE 게시판 (0) | 2026.03.08 |
| [실습] 요구사항을 보고 DB 설계해보기 - JSCODE 쇼핑몰 (1) (2) | 2026.03.04 |
| [실습] 요구사항을 보고 DB 설계해보기 - JSCODE 커뮤니티 (2) (0) | 2026.03.02 |
| [실습] 요구사항을 보고 DB 설계해보기 - JSCODE 커뮤니티 (1) (0) | 2026.02.28 |
댓글