MySQL

쇼핑몰과 카테고리 1단계

H_u 2024. 6. 24. 10:18
728x90
반응형
SMALL

1. 설계

tb_categories

Field Name Data Type Descripition value
category_id int 카테고리 고유 ID 1, 2, 3, 4
category_name varchar(100) 카테고리 이름 "상의", "하의", "외투"

 

tb_products

Field Name Data Type Descripition value
product_id int 상품 고유 ID 1, 2, 3, 4
product_name varchar(255) 상품 이름 "상의", "하의", "외투"
category_id int fk  
price dicimal(10, 2) 상품 가격  
size enum 상품 사이즈 "S", "M", "L", "XL"
color varchar(50) 상품 컬러 "흰색", "검정색", "청색" ...

 

테이블 관계

  • tb_categories 와 tb_products 는 일대다 관계( 1 : N )
     각 카테고리는 여러 상품을 포함할 수 있으며, 각 상품은 하나의 카테고리에만 속한다.

2. 코드

CREATE TABLE tb_categories (
    category_id INT AUTO_INCREMENT PRIMARY KEY,
    category_name VARCHAR(100) NOT NULL
);

INSERT INTO tb_categories(category_name) VALUES('상의');
INSERT INTO tb_categories(category_name) VALUES('하의');
INSERT INTO tb_categories(category_name) VALUES('외투');

CREATE TABLE tb_products (
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(255),
    category_id INT,
    price DECIMAL(10 , 2 ),
    size ENUM('S', 'M', 'L', 'XL'),
    color VARCHAR(50),
    FOREIGN KEY (category_id)
        REFERENCES tb_categories (category_id)
);

SELECT * FROM tb_categories;

INSERT INTO tb_products(product_name, category_id, price, size, color)
VALUES('티셔츠', 1, 19900, 'M', '흰색');

INSERT INTO tb_products(product_name, category_id, price, size, color)
VALUES('청바지', 2, 49900, 'L', '청색');

INSERT INTO tb_products(product_name, category_id, price, size, color)
VALUES('자켓', 3, 99900, 'L', '검정색');

INSERT INTO tb_products(product_name, category_id, price, size, color)
VALUES('셔츠', 1, 29900, 'S', '보라색');

SELECT * FROM tb_products;

-- 특정 카테고리에 속하는 모든 상품을 조회하는 쿼리
SELECT p.product_name, p.price, p.size, p.color
FROM tb_products p
JOIN tb_categories c ON p.category_id = c.category_id
WHERE c.category_name = '상의';
728x90
반응형
SMALL