티스토리 뷰

 

최종목표:

디비 개발하는 프로세스에 따라 개발을 해보겠습니다.

나라, 상점, 고객, 브랜드, 상품 테이블을 구성하고 인덱싱 후, 더미데이터를 생성해 보겠습니다.

 

📍요구사항 → 개념 설계(ERD) → 논리 설계 → 물리 설계 → 구현 → 테스트 → 운영

 

 

 

 

내멋대로 요구사항
1. 한 나라에는 여러개의 샵이 존재한다.
2. 하나의 브랜드에는 상품이 0개, 1개~N개가 등록된다.
3. 샵에는 0개, 1개, N개의 상품이 등록된다.
4. 고객은 1개~N개의 상품을 구매한다.
5. 하나의 주문 건안에 여러개의 상품이 담긴다. (주문상세 개념)

 

 

 

개념 설계
ERD

 

위의 표식을 통해 손으로 연관관계를 간단히 표현해보겠습니다. 

 

 

논리 설계

 

 

ERD의 각 개체를 하나의 릴레이션으로 표현합니다.

  • 객체의 이름 → 릴레이션 이름
  • 개체의 속성 → 릴레이션의 속성
  • 개체의 키 속성 → 릴레이션의 기본키
  • 개체의 속성이 복합 속성인 경우에는 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환

 

 

물리 설계

 

-- 나라 테이블
CREATE TABLE country (
    country_id INT AUTO_INCREMENT PRIMARY KEY,
    country_name VARCHAR(100) NOT NULL,
    country_code CHAR(2) NOT NULL
);

-- 지점 테이블
CREATE TABLE shop (
    shop_id INT AUTO_INCREMENT PRIMARY KEY,
    shop_name VARCHAR(255) NOT NULL,
    country_id INT NOT NULL,
    FOREIGN KEY (country_id) REFERENCES country(country_id)
);

-- 브랜드 테이블
CREATE TABLE brand (
    brand_id INT AUTO_INCREMENT PRIMARY KEY,
    brand_name VARCHAR(255) NOT NULL
);

-- 상품 테이블
CREATE TABLE goods (
    goods_id INT AUTO_INCREMENT PRIMARY KEY,
    goods_name VARCHAR(255) NOT NULL,
    brand_id INT NOT NULL,
    FOREIGN KEY (brand_id) REFERENCES brand(brand_id)
);

-- 고객 테이블
CREATE TABLE customer (
    customer_id INT AUTO_INCREMENT PRIMARY KEY,
    customer_name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE
);

-- 주문_상품 테이블 (구매 테이블에 해당)
CREATE TABLE purchase_goods (
    purchase_goods_id INT AUTO_INCREMENT PRIMARY KEY, -- PK 추가 (구매 상세 ID)
    quantity INT NOT NULL DEFAULT 1,                  -- 상품 개수
    customer_id INT NOT NULL,
    goods_id INT NOT NULL,
    FOREIGN KEY (customer_id) REFERENCES customer(customer_id),
    FOREIGN KEY (goods_id) REFERENCES goods(goods_id)
);

 

** 다음장에서 계속됩니다..

 

 

 

 

 

 

 

 


참고 자료 ^^

 

ERD 연관관계 표식 - 1
ERD 연관관계 표식 - 2