테이블 설계
User Table
| Field | Type | Constraints | description |
|
id
|
INT
|
pk, auto..
|
사용자 고유 ID
|
|
username
|
VARCHAR(50)
|
not null
|
사용자 이름
|
|
email
|
VARCHAR(100)
|
not null, Unique
|
이메일 주소
|
|
password
|
VARCHAR(255)
|
not null
|
비밀번호
|
|
address
|
VARCHAR(255)
|
-
|
주소
|
|
created_at
|
TIMESTAMP
|
Default CURRENT_TIMESTAMP
|
계성 생성 시간
|
Product Table
| Field | Type | Constraints | description |
|
id
|
int
|
pk, auto..
|
식별자
|
|
name
|
varchar(100)
|
not null
|
상품 이름
|
|
description
|
TEXT
|
-
|
상품 설명
|
|
price
|
DECIMARL(10, 2)
|
not null
|
가격
|
|
stock
|
int
|
default 0
|
재고 수량
|
|
created_at
|
TIMESTAMP
|
Default CURRENT_TIMESTAMP
|
상품 등록 시간
|
Order Table
| Field | Type | Constraints | description |
|
id
|
int
|
pk, au-in..
|
주문 고유 ID
|
|
user_id
|
int
|
not null, fk
|
주문한 사용자에 ID
|
|
total_price
|
DECIMAL(10,2)
|
not null
|
총 주문 금액
|
|
created_at
|
TIMESTAMP
|
defualt C_T
|
주문 시간
|
Order Detail Table
| Field | Type | Constraints | description |
|
id
|
int
|
pk, au_in
|
주문 상세 고유 ID
|
|
order_id
|
int
|
not null, fk
|
주문 ID
|
|
proudct_id
|
int
|
not null, fk
|
주문한 상품 ID
|
|
count
|
int
|
not null
|
주문 수량
|
|
price
|
DECIMAL(10,2)
|
not null
|
상품의 주문 가격
|
주문(orders) 테이블과 주문 상세 (order_details) 테이블을 분리하여 설계한 이유는 무엇일까?
→ 데이터베이스 정규화 원칙에 기반한 것
정규화는 데이터베이스 설계에서 중요한 과정으로, 데이터 중복을 최소화하고, 데이터 무결성을 향상시키며, 수정, 삽입, 삭제 등의 데이터베이스 작업 시 발생할 수 있는 문제점들을 방지하기 위해 사용된다.
주문과 주문 상세 테이블 분리의 목적
중복 제거 : 주문 정보와 주문 상세 정보를 하나의 테이블로 관리할 경우, 주문 정보 (예: 주문자 ID, 주문 날짜)가 각 주문 상품마다 반복적으로 저장된다.
이는 데이터 중복을 초래하고, 디스크 공간을 불필요하게 사용하게 한다.
'MySQL' 카테고리의 다른 글
| 제 1정규화(First Normal Form, 1NF) (0) | 2024.06.13 |
|---|---|
| 서브 쿼리(subquery) (0) | 2024.06.13 |
| 블로그 서비스의 DB 구축 (0) | 2024.06.12 |
| SELF JOIN (0) | 2024.06.12 |
| 정규화(1단계) (1) | 2024.06.11 |