728x90
반응형
SMALL
1. 설계
회원가입에 대한 테이블 설계가 필요
상품에 대한 정보를 저장하는 테이블이 필요
주문테이블, 주문상세테이블이 필요하다
User Table 설계 도면
Field | Type | Constraints | Desc |
user_id | INT | pk, auto.. | 사용자 고유 ID |
user_name | VARCHAR(50) | not null | 사용자 이름 |
VARCHAR(100) | not null, Unique | 이메일 주소 | |
password | VARCHAR(255) | not null | 비밀번호 |
address | VARCHAR(255) | - | 주소 |
created_at | TIMESTAMP | Deault CURRENT_TIMESTAMP |
계정 생성 시간 |
Product Table
Field | Type | Constraints | Desc |
product_id | INT | pk, auto.. | 상품 고유 ID |
product_name | VARCHAR(100) | not null | 상품 이름 |
description | TEXT | - | 상품 설명 |
price | DECIMARL(10, 2) | not null | 가격 |
stock | int | default 0 | 재고 수량 |
created_at | TIMESTAMP | Deault CURRENT_TIMESTAMP |
상품 등록 시간 |
Orders Table
Field | Type | Constraints | Desc |
id | INT | pk, auto.. | 주문 고유 ID |
user_id | INT | not null, FK | 사용자 ID |
total_price | DECIMARL(10, 2) | not null | 총 주문 금액 |
created_at | TIMESTAMP | Deault CURRENT_TIMESTAMP |
주문 시간 |
Order Detail Table
Field | Type | Constraints | Desc |
id | INT | pk, auto.. | 주문 상세 고유 ID |
order_id | INT | not null, fk | 주문 ID |
product_id | VARCHAR(100) | not null, foreign key | 상품 ID |
count | INT | not null | 주문 수량 |
price | DECIMARL(10, 2) | not null | 상품의 주문 가격 |
주문(orders) 테이블과 주문 상세(order_details) 테이블을 분리하여 설계한 이유는 뭘까?
→ 데이터베이스 정규화 원칙에 기반한 것
정규화는 데이터베이스 설계에서 중요한 과정으로, 데이터 중복을 최소화하고, 데이터 무결성을 향상시키며, 수정, 삽입, 삭제 등의 데이터베이스 작업 시 발생할 수 있는 문제점들을 방지하기 위해 사용됩니다.
주문과 주문 상세 테이블 분리의 목적
- 중복 제거 : 주문 정보와 주문 상세 정보를 하나의 테이블로 관리할 경우, 주문 정보(예: 주문자 ID, 주문 날짜)가 각 주문 상품마다 반복적으로 저장된다. 이는 데이터 중복을 초래하고, 디스크 공간을 불필요하게 사용하게 한다.
728x90
반응형
SMALL
'MySQL' 카테고리의 다른 글
쇼핑몰과 카테고리 1단계 (0) | 2024.06.24 |
---|---|
블로그 서비스의 DB 구축 (0) | 2024.06.24 |
SELF JOIN (0) | 2024.06.24 |
정규화란(1단계) (0) | 2024.06.24 |
DML, DDL, DCL 이란? (0) | 2024.06.24 |