MySQL

2024.06.11 MySQL활용 쇼핑몰 서비스의 DB 구축(1)

정훈5 2024. 6. 11. 10:24

쇼핑몰 사이트 구축하기 위해서

 

1. 회원가입에 대한 테이블 설계가 필요하다.

2. 상품에 대한 정보를 저장하는 테이블이 필요하다.

3. 주문 테이블 필요, 주문 상세테이블 필요 (정규화 과정 때문에)

 

User Table 설계 도면 (사용자 테이블)

Field (속성) Type (타입) Constraints (제약) desc (설명)
id INT PK, auto_increment 사용자 고유 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(제약) desc(설명)
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 desc
Id INT PK, 
auto_increment
주문 고유 ID
user_id INT Foreign Key 주문한 사용자의 ID
total_price DECIMAL(10, 2) not null  총 주문 금액
create_at TIMESTAMP DEFAULT CurrentTime 주문시간

 

Order Detail Table (주문 상세 테이블)

Field Type Constraints desc
id INT pk, auto_increment 주문 상세 고유 ID
order_id INT not null, fk 주문 ID
product_id INT not null, fk 주문한 상품ID
count INT not null 주문 수량
price DECIMAL(10, 2) not null 상품의 주문 가격

 

주문(orders) 테이블과 주문 상세(order_details) 테이블을 분리하여 설계한 이유는 뭘까?
데이터베이스 정규화 원칙에 기반한 것

 

정규화는 데이터베이스 설계에서 중요한 과정으로, 데이터 중복을 최소화하고, 데이터 무결성을 향상시키며,
수정, 삽입, 삭제 등의 데이터베이스 작업 시 발생할 수 있는 문제점들을 방지하기 위해 사용됩니다.

 

주문과 주문 상세 테이블 분리의 목적

  1. 중복 제거
    주문 정보와 주문 상세 정보를 하나의 테이블로 관리할 경우, 주문 정보(예: 주문자 ID, 주문 날짜)가 각 주문 상품마다 반복적으로 저장됩니다. 이는 데이터 중복을 초래하고, 디스크 공간을 불필요하게 사용하게 합니다.


 

한번 테스트 해봄

Item Table 

Field Type Constraints desc
ID INT PK, unique,
auto_increment
물건의번호
name   Foreign Key user table 이름
       
       
       

 

User Order Table (사용자 테이블에서 주문할 때 필요한 데이터)

Field Type Constraints desc
id INT   user table 주문하는 식별자
name VARCHAR(50)   user table 이름
address VARCHAR(255)   user table 주소

 

Product  Order Table (상품 테이블에서 주문할 때 필요한 데이터)

Field Type Constraints desc
id INT   user table 주문하는 사람
price   Foreign Key user table 이름
stock   Foreign Key user table 주소