logo icon
ธนินัชดอทคอม - รับสร้าง Website, Mobile Application
image

บทความ

ธนินัช ดอทคอม - ผู้เชี่ยวชาญทำเว็บไซต์

ออกฐานข้อมูลสินค้าแบบ Variations product แบบที่ 2

ออกฐานข้อมูลสินค้าแบบ Variations product  :

ฐานข้อมูลสินค้าแบบ 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

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 ที่มีอยู่แล้ว ดังนั้นผมจะแสดงตัวอย่างทั้งสองกรณีด้านล่าง

  1. สร้าง 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) );
  1. แทรกข้อมูลลงใน 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 เป็นตารางที่ใช้เก็บข้อมูลรายละเอียดสินค้าในแต่ละรายการสั่งซื้อ ดังนั้นเราจะออกแบบตารางดังนี้

  1. สร้าง 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);

หนังสือพัฒนาตัวเอง

จุดเริ่มต้นที่ชัดเจน

เว็บไซต์หรือแอปพลิเคชั่นของคุณเริ่มต้นที่นี่

ลงทะเบียนแล้วเราจะส่งข้อเสนอที่ดีที่สุดให้กับคุณ