본문 바로가기
강의 실습/비전공자도 이해할 수 있는 DB 설계 입문 실전

[실습] 요구사항을 보고 DB 설계해보기 - JSCODE 쇼핑몰 (2)

by jint 2026. 3. 7.

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

댓글