บทความ
ออกฐานข้อมูลสินค้าแบบ Variations product แบบที่ 2
ฐานข้อมูลสินค้าแบบ Variations product จะประกอบด้วยตารางดังนี้
Table: Product
Field Name | Data Type | Key | Description |
---|---|---|---|
product_id | INT | Primary | รหัสสินค้า |
product_name | VARCHAR(255) | ชื่อสินค้า | |
product_description | TEXT | รายละเอียดสินค้า | |
product_image | VARCHAR(255) | ชื่อไฟล์รูปภาพสินค้า | |
price | DECIMAL(10, 2) | ราคาสินค้า | |
stock | INT | จำนวนสต็อกสินค้า |
Table: Variation option
Field Name | Data Type | Key | Description |
---|---|---|---|
variation_option_id | INT | Primary | รหัสตัวเลือกของสินค้า |
variation_option_name | VARCHAR(255) | ชื่อตัวเลือกของสินค้า |
Table: Variation value
Field Name | Data Type | Key | Description |
---|---|---|---|
variation_value_id | INT | Primary | รหัสค่าตัวเลือกของสินค้า |
variation_value_name | VARCHAR(255) | ชื่อค่าตัวเลือกของสินค้า | |
variation_option_id | INT | Foreign | รหัสตัวเลือกของสินค้า |
Table: Product variation
Field Name | Data Type | Key | Description |
---|---|---|---|
product_variation_id | INT | Primary | รหัสสินค้าแบบตัวเลือก |
product_id | INT | Foreign | รหัสสินค้า |
variation_value_id | INT | Foreign | รหัสค่าตัวเลือกของสินค้า |
price | DECIMAL(10, 2) | ราคาสินค้าตามตัวเลือก | |
stock | INT | จำนวนสต็อกสินค้าตามตัวเลือก |
Table: Product variation option
Field Name | Data Type | Key | Description |
---|---|---|---|
product_variation_id | INT | Foreign | รหัสสินค้าแบบตัวเลือก |
variation_option_id | INT | Foreign | รหัสตัวเลือกของสินค้า |
variation_value_id | INT | Foreign | รหัสค่าตัวเลือกของสินค้า |
ตัวอย่างฐานข้อมูลสินค้าแบบ Variations product แสดง table ตามนี้
Table: Product
product_id | product_name | product_description | product_image | price | stock |
---|---|---|---|---|---|
1 | Product A | Description A | image1.jpg | 100 | 10 |
2 | Product B | Description B | image2.jpg | 200 | 5 |
Table: Variation option
variation_option_id | variation_option_name |
---|---|
1 | Size |
2 | Color |
Table: Variation value
variation_value_id | variation_value_name | variation_option_id |
---|---|---|
1 | S | 1 |
2 | M | 1 |
3 | L | 1 |
4 | Red | 2 |
5 | Green | 2 |
6 | Blue | 2 |
Table: Product variation
product_variation_id | product_id | variation_value_id | price | stock |
---|---|---|---|---|
1 | 1 | 1 | 100 | 3 |
2 | 1 | 2 | 110 | 4 |
3 | 1 | 3 | 120 | 3 |
4 | 1 | 4 | 100 | 2 |
5 | 1 | 5 | 100 | 3 |
6 | 1 | 6 | 100 | 4 |
7 | 2 | 1 | 200 | 2 |
8 | 2 | 2 | 220 | 3 |
9 | 2 | 3 | 230 | 1 |
10 | 2 | 4 | 200 | 0 |
11 | 2 | 5 | 210 | 2 |
12 | 2 | 6 | 210 | 1 |
Table: Product variation option
product_variation_id | variation_option_id | variation_value_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 2 |
3 | 1 | 3 |
4 | 2 | 4 |
5 | 2 | 5 |
6 | 2 | 6 |
7 | 1 | 1 |
8 | 1 | 2 |
9 | 1 | 3 |
10 | 2 | 4 |
11 | 2 | 5 |
12 | 2 | 6 |
ฐานข้อมูลสินค้าแบบ Variations product ประกอบด้วยตาราง Product, Variation option, Variation value, Product variation, และ Product variation option โดยมีความสัมพันธ์กันดังนี้
- ตาราง Product เก็บข้อมูลสินค้าหลัก โดยมี primary key เป็น product_id และเป็นตารางหลักของฐานข้อมูล
- ตาราง Variation option เก็บข้อมูลตัวเลือกของสินค้า เช่น ไซส์, สี โดยมี primary key เป็น variation_option_id
- ตาราง Variation value เก็บข้อมูลค่าตัวเลือกของสินค้า เช่น S, M, L หรือสีแดง, สีเขียว โดยมี primary key เป็น variation_value_id และ foreign key เชื่อมต่อกับตาราง Variation option
- ตาราง Product variation เก็บข้อมูลสินค้าแต่ละรายการที่มีตัวเลือก โดยมี primary key เป็น product_variation_id และ foreign key เชื่อมต่อกับตาราง Product และ Variation value
- ตาราง Product variation option เก็บข้อมูลตัวเลือกของสินค้าสำหรับแต่ละรายการ โดยมี primary key เป็น (product_variation_id, variation_option_id) และ foreign key เชื่อมต่อกับตาราง Product variation และ Variation value
ดังนั้น การออกแบบฐานข้อมูลสินค้าแบบ Variations product จะเน้นการเชื่อมโยงข้อมูลระหว่างตาราง โดยมีการใช้ primary key และ foreign key เพื่อให้สามารถเชื่อมข้อมูลระหว่างตารางได้อย่างถูกต้องและมีประสิทธิภาพในการจัดเก็บและการดึงข้อมูลสินค้าต่าง ๆ ที่มีตัวเลือกอยู่ในตัวแต่ละรายการได้อย่างมีประสิทธิภาพและเร็วด้วย SQL Query ที่เหมาะสม
SQL สำหรับฐานข้อมูลสินค้าแบบ Variations product สามารถเขียนได้ตามนี้
สร้างตารางสำหรับเก็บข้อมูลสินค้า (Product)
CREATE TABLE Product (
product_id INT PRIMARY KEY,
product_name VARCHAR(255) NOT NULL,
product_description TEXT,
product_image VARCHAR(255),
price DECIMAL(10, 2) NOT NULL,
stock INT NOT NULL
);
สร้างตารางสำหรับเก็บข้อมูลตัวเลือกของสินค้า (Variation option)
CREATE TABLE Variation_option (
variation_option_id INT PRIMARY KEY,
variation_option_name VARCHAR(255) NOT NULL
);
สร้างตารางสำหรับเก็บข้อมูลค่าตัวเลือกของสินค้า (Variation value)
CREATE TABLE Variation_value (
variation_value_id INT PRIMARY KEY,
variation_value_name VARCHAR(255) NOT NULL,
variation_option_id INT NOT NULL,
FOREIGN KEY (variation_option_id) REFERENCES Variation_option(variation_option_id)
);
สร้างตารางสำหรับเก็บข้อมูลสินค้าแต่ละรายการพร้อมกับค่าตัวเลือก (Product variation)
CREATE TABLE Product_variation (
product_variation_id INT PRIMARY KEY,
product_id INT NOT NULL,
variation_value_id INT NOT NULL,
price DECIMAL(10, 2) NOT NULL,
stock INT NOT NULL,
FOREIGN KEY (product_id) REFERENCES Product(product_id),
FOREIGN KEY (variation_value_id) REFERENCES Variation_value(variation_value_id)
);
สร้างตารางสำหรับเก็บข้อมูลตัวเลือกของสินค้าสำหรับแต่ละรายการ (Product variation option)
CREATE TABLE Product_variation_option (
product_variation_id INT NOT NULL,
variation_option_id INT NOT NULL,
variation_value_id INT NOT NULL,
PRIMARY KEY (product_variation_id, variation_option_id, variation_value_id),
FOREIGN KEY (product_variation_id) REFERENCES Product_variation(product_variation_id),
FOREIGN KEY (variation_option_id) REFERENCES Variation_option(variation_option_id),
FOREIGN KEY (variation_value_id) REFERENCES Variation_value(variation_value_id)
);
เพิ่มข้อมูลเข้าไปในตารางสินค้าแบบ Variations product สามารถทำได้ด้วยคำสั่ง INSERT INTO ตามตัวอย่างนี้
เพิ่มข้อมูลสินค้าหลัก (Product)
INSERT INTO Product (product_id, product_name, product_description, product_image, price, stock)
VALUES (1, 'Product A', 'Description A', 'image1.jpg', 100, 10),
(2, 'Product B', 'Description B', 'image2.jpg', 200, 5);
เพิ่มข้อมูลตัวเลือกของสินค้า (Variation option)
INSERT INTO Variation_option (variation_option_id, variation_option_name)
VALUES (1, 'Size'), (2, 'Color');
เพิ่มข้อมูลค่าตัวเลือกของสินค้า (Variation value)
INSERT INTO Variation_value (variation_value_id, variation_value_name, variation_option_id)
VALUES (1, 'S', 1), (2, 'M', 1), (3, 'L', 1),
(4, 'Red', 2), (5, 'Green', 2), (6, 'Blue', 2);
เพิ่มข้อมูลสินค้าแต่ละรายการพร้อมกับค่าตัวเลือก (Product variation)
INSERT INTO Product_variation (product_variation_id, product_id, variation_value_id, price, stock)
VALUES (1, 1, 1, 100, 3), (2, 1, 2, 110, 4), (3, 1, 3, 120, 3),
(4, 1, 4, 100, 2), (5, 1, 5, 100, 3), (6, 1, 6, 100, 4),
(7, 2, 1, 200, 2),
(8, 2, 2, 220, 3), (9, 2, 3, 230, 1), (10, 2, 4, 200, 0), (11, 2, 5, 210, 2),
(12, 2, 6, 210, 1);
เพิ่มข้อมูลตัวเลือกของสินค้าสำหรับแต่ละรายการ (Product variation option)
INSERT INTO Product_variation_option (product_variation_id, variation_option_id, variation_value_id)
VALUES (1, 1, 1), (2, 1, 2), (3, 1, 3), (4, 2, 4), (5, 2, 5),
(6, 2, 6), (7, 1, 1), (8, 1, 2), (9, 1, 3), (10, 2, 4),
(11, 2, 5), (12, 2, 6);
ฐานข้อมูลสินค้าแบบ Variations product มีความสัมพันธ์แบบ One-to-Many หรือแบบหนึ่งต่อหลาย ซึ่งหมายความว่าแต่ละสินค้าสามารถมีได้หลายตัวเลือก (Variation) โดยแต่ละตัวเลือก (Variation) สามารถมีค่าตัวเลือก (Value) ได้หลายค่า
โดยเริ่มต้นจากตาราง Product ซึ่งมี primary key เป็น product_id และมีความสัมพันธ์กับตาราง Product_variation โดยเชื่อมโยงด้วย foreign key คือ product_id ซึ่งหมายความว่าแต่ละสินค้าสามารถมีได้หลายรายการ (Variation) ซึ่งอยู่ในตาราง Product_variation
ตาราง Product_variation จะมี primary key เป็น product_variation_id และมีความสัมพันธ์กับตาราง Variation_value โดยเชื่อมโยงด้วย foreign key คือ variation_value_id ซึ่งหมายความว่าแต่ละรายการสินค้าแต่ละตัวเลือกจะมีค่าตัวเลือก (Value) เดียวหรือมากกว่าได้
ตาราง Variation_value จะมี primary key เป็น variation_value_id และมีความสัมพันธ์กับตาราง Variation_option โดยเชื่อมโยงด้วย foreign key คือ variation_option_id ซึ่งหมายความว่าแต่ละค่าตัวเลือก (Value) จะเป็นค่าของตัวเลือก (Option) เดียวหรือมากกว่าได้
สุดท้ายตาราง Product_variation_option จะมี primary key เป็น product_variation_id, variation_option_id และ variation_value_id ซึ่งหมายความว่าแต่ละรายการสินค้าแต่ละตัวเลือกจะมีค่าตัวเลือก (Value) ของตัวเลือก (Option) เดียวหรือมากกว่าได้
ออกแบบฐานข้อมูล discount table
การออกแบบตาราง discount_types สำหรับเก็บข้อมูลประเภทส่วนลดสามารถทำได้ดังนี้
ออกแบบฐานข้อมูล table Order สำหรับสินค้าแบบ Variations product
สำหรับการออกแบบฐานข้อมูล table Order สำหรับสินค้าแบบ Variations product นั้น จะต้องมีการเก็บข้อมูลต่างๆ ที่เกี่ยวข้องกับสินค้าและการสั่งซื้อ เช่น รายละเอียดสินค้าแต่ละตัวที่มีความแตกต่างกันเช่น สี ขนาด รุ่น หรือโมเดล ราคา รวมถึงข้อมูลที่เกี่ยวข้องกับการสั่งซื้อเช่น วันที่สั่งซื้อ ชื่อลูกค้า ที่อยู่จัดส่ง ราคารวม และสถานะการสั่งซื้อ เป็นต้น
ดังนั้น ออกแบบฐานข้อมูล table Order สำหรับสินค้าแบบ Variations product สามารถออกแบบได้ดังนี้
Table: Orders
Field Name | Data Type | Description |
---|---|---|
order_id | INT | รหัสการสั่งซื้อ |
customer_name | VARCHAR | ชื่อลูกค้า |
customer_address | VARCHAR | ที่อยู่จัดส่ง |
total_price | DECIMAL(10,2) | ราคารวม |
order_date | DATE | วันที่สั่งซื้อ |
status | VARCHAR | สถานะการสั่งซื้อ (เช่น ยังไม่ชำระเงิน, กำลังจัดส่ง, จัดส่งแล้ว) |
Table: Order_Details
Field Name | Data Type | Description |
---|---|---|
order_detail_id | INT | รหัสรายละเอียดการสั่งซื้อ |
order_id | INT | รหัสการสั่งซื้อ |
product_id | INT | รหัสสินค้า |
variation_id | INT | รหัส variation |
quantity | INT | จำนวน |
price | DECIMAL(10,2) | ราคาต่อหน่วย |
subtotal | DECIMAL(10,2) | ราคารวม |
สำหรับฐานข้อมูล Table: Orders นี้จะเก็บข้อมูลเกี่ยวกับรายการสั่งซื้อของลูกค้า ดังนี้
Field Name | Data Type | Description |
---|---|---|
order_id | INT | รหัสการสั่งซื้อ |
customer_name | VARCHAR | ชื่อลูกค้า |
customer_address | VARCHAR | ที่อยู่จัดส่ง |
total_price | DECIMAL(10,2) | ราคารวม |
order_date | DATE | วันที่สั่งซื้อ |
status | VARCHAR | สถานะการสั่งซื้อ (เช่น ยังไม่ชำระเงิน, กำลังจัดส่ง, จัดส่งแล้ว) |
สำหรับฐานข้อมูล Table: Order_Details นี้จะเก็บข้อมูลเกี่ยวกับรายละเอียดของสินค้าในแต่ละรายการสั่งซื้อ ดังนี้
Field Name | Data Type | Description |
---|---|---|
order_detail_id | INT | รหัสรายละเอียดการสั่งซื้อ |
order_id | INT | รหัสการสั่งซื้อ |
product_id | INT | รหัสสินค้า |
variation_id | INT | รหัส variation |
quantity | INT | จำนวน |
price | DECIMAL(10,2) | ราคาต่อหน่วย |
subtotal | DECIMAL(10,2) | ราคารวม |
สร้าง Table ชื่อ SQL Orders หรือเป็นการใช้ SQL เพื่อจัดการกับ Table Orders ที่มีอยู่แล้ว ดังนั้นผมจะแสดงตัวอย่างทั้งสองกรณีด้านล่าง
- สร้าง Table Orders ด้วยคำสั่ง SQL
CREATE TABLE Orders (
order_id INT PRIMARY KEY,
customer_name VARCHAR(50),
customer_address VARCHAR(100),
total_price DECIMAL(10,2),
order_date DATE,
status VARCHAR(50)
);
- แทรกข้อมูลลงใน Table Orders ด้วยคำสั่ง SQL
INSERT INTO Orders (order_id, customer_name, customer_address, total_price, order_date, status)
VALUES (1, 'John Smith', '123 Main St, Anytown USA', 99.99, '2023-03-31', 'Pending');
SQL ตาราง Order_Details เป็นตารางที่ใช้เก็บข้อมูลรายละเอียดสินค้าในแต่ละรายการสั่งซื้อ ดังนั้นเราจะออกแบบตารางดังนี้
- สร้าง SQL Table Order_Details ด้วยคำสั่ง SQL
CREATE TABLE Order_Details (
order_detail_id INT PRIMARY KEY,
order_id INT,
product_id INT,
variation_id INT,
quantity INT,
price DECIMAL(10,2),
subtotal DECIMAL(10,2),
FOREIGN KEY (order_id) REFERENCES SQL_Orders(order_id)
);
เมื่อเรามีตาราง Order_Details แล้ว เราสามารถเพิ่มข้อมูลลงในตารางด้วยคำสั่ง INSERT INTO ได้ดังนี้
2.แทรกข้อมูลลงใน Table Order_Details ด้วยคำสั่ง SQL
INSERT INTO Order_Details (order_detail_id, order_id, product_id, variation_id, quantity, price, subtotal)
VALUES (1, 1, 101, 1, 2, 49.99, 99.98);
หนังสือพัฒนาตัวเอง
จุดเริ่มต้นที่ชัดเจน