| Content ID | 144 |
|---|---|
| Category ID | 10 |
| Writer ID | (not set) |
| User ID | (not set) |
| Lang Mode | th |
| Content Name | ออกแบบฐานข้อมูลสินค้าแบบ Variations product |
| Content Url | ออกแบบฐานข้อมูลสินค้าแบบ-Variations-product |
| Content Desc | <p>การออกแบบฐานข้อมูลสินค้าแบบ Variations product คือระบบเก็บข้อมูลของสินค้าที่มีคุณสมบัติแตกต่างกันในแต่ละตัวเลือก เช่น สี ขนาด น้ำหนัก เป็นต้น แต่ยังมีชื่อสินค้าเดียวกัน คุณจำเป็นต้องมีตารางที่สามารถจัดการคุณสมบัติของสินค้าและความสัมพันธ์ระหว่างกัน ตัวอย่างตารางมีดังนี้:<br><br></p> <ol> <li dir="ltr" aria-level="1"> <p>ตาราง products ที่เก็บข้อมูลของสินค้าจะประกอบด้วยคอลัมน์ดังนี้:</p> <table> <thead> <tr> <th>Column Name</th> <th>Data Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>id (PK)</td> <td>INT</td> <td>รหัสสินค้า</td> </tr> <tr> <td>name</td> <td>VARCHAR(255)</td> <td>ชื่อสินค้า</td> </tr> <tr> <td>sku</td> <td>VARCHAR(100)</td> <td>รหัสสินค้า (Stock Keeping Unit)</td> </tr> <tr> <td>price</td> <td>DECIMAL(10,2)</td> <td>ราคาพื้นฐาน</td> </tr> </tbody> </table> <br>- คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรหัสสินค้า<br>- คอลัมน์ name เป็นชื่อของสินค้า<br>- คอลัมน์ sku เป็นรหัสของสินค้าที่ใช้ในการติดตามสินค้าในระบบ Inventory Management<br>- คอลัมน์ price เป็นราคาของสินค้าที่ถูกกำหนดไว้ตามค่าพื้นฐานของสินค้า<br><br> <p>ตัวอย่างสำหรับตาราง products ที่เก็บข้อมูลของสินค้าต่าง ๆ จะประกอบด้วยคอลัมน์ดังนี้:</p> <table> <thead> <tr> <th>id</th> <th>name</th> <th>sku</th> <th>price</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>T-Shirt Black</td> <td>TSB-0001</td> <td>250</td> </tr> <tr> <td>2</td> <td>T-Shirt White</td> <td>TSW-0001</td> <td>250</td> </tr> <tr> <td>3</td> <td>Hoodie Black</td> <td>HDB-0001</td> <td>650</td> </tr> <tr> <td>4</td> <td>Hoodie Gray</td> <td>HDG-0001</td> <td>650</td> </tr> </tbody> </table> <p>ในตัวอย่างนี้, คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรายการสินค้าแต่ละรายการ คอลัมน์ name เป็นคอลัมน์ที่ใช้เก็บชื่อสินค้า คอลัมน์ sku เป็นคอลัมน์ที่ใช้เก็บรหัสสินค้า (Stock Keeping Unit) ซึ่งใช้ในการระบุสินค้าอย่างชัดเจน และคอลัมน์ price เป็นคอลัมน์ที่ใช้เก็บราคาพื้นฐานของสินค้า<br><br></p> </li> </ol> <ol start="2"> <li dir="ltr" aria-level="1"> <p>ตาราง attributes ที่เก็บข้อมูลคุณสมบัติของสินค้าจะประกอบด้วยคอลัมน์ดังนี้:</p> <table> <thead> <tr> <th>Column Name</th> <th>Data Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>id (PK)</td> <td>INT</td> <td>รหัสคุณสมบัติ</td> </tr> <tr> <td>name</td> <td>VARCHAR(255)</td> <td>ชื่อคุณสมบัติ</td> </tr> </tbody> </table> <br><br>- คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรหัสคุณสมบัติ<br>- คอลัมน์ name เป็นชื่อของคุณสมบัติของสินค้าที่ถูกกำหนดขึ้นมาเพื่อให้ผู้ใช้งานสามารถค้นหาสินค้าที่ต้องการได้ง่ายขึ้น</li> </ol> <p style="padding-left: 40px;">ตัวอย่างสำหรับตาราง attributes ที่เก็บข้อมูลคุณสมบัติของสินค้าจะประกอบด้วยคอลัมน์ดังนี้:</p> <table style="margin-left: 40px;"> <thead> <tr> <th>id</th> <th>name</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>Size</td> </tr> <tr> <td>2</td> <td>Color</td> </tr> <tr> <td>3</td> <td>Material</td> </tr> </tbody> </table> <p>ในตัวอย่างนี้, คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรายการคุณสมบัติแต่ละรายการ คอลัมน์ name เป็นคอลัมน์ที่ใช้เก็บชื่อคุณสมบัติของสินค้า ซึ่งอาจมีความหลากหลายตามลักษณะของสินค้า ตัวอย่างเช่น ขนาด (Size) สี (Color) วัสดุ (Material) และอื่น ๆ ตามที่ต้องการ<br><br></p> <ol start="3"> <li dir="ltr" aria-level="1"> <p>ตาราง attribute_values ที่เก็บข้อมูลค่าคุณสมบัติของสินค้าจะประกอบด้วยคอลัมน์ดังนี้:</p> <table> <thead> <tr> <th>Column Name</th> <th>Data Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>id (PK)</td> <td>INT</td> <td>รหัสค่าคุณสมบัติ</td> </tr> <tr> <td>attribute_id (FK)</td> <td>INT</td> <td>รหัสคุณสมบัติ (Foreign Key จากตาราง attributes)</td> </tr> <tr> <td>value</td> <td>VARCHAR(255)</td> <td>ค่าคุณสมบัติ</td> </tr> </tbody> </table> </li> </ol> <p> - คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรหัสค่าคุณสมบัติ<br> - คอลัมน์ attribute_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง attributes เพื่อแสดงความสัมพันธ์กับคุณสมบัติของสินค้า<br> - คอลัมน์ value เป็นค่าของคุณสมบัติของสินค้าที่ถูกกำหนดขึ้นเพื่ออธิบายลักษณะและลักษณะของสินค้าให้ผู้ใช้งานเห็นได้ชัดเจน</p> <p style="padding-left: 40px;">ตัวอย่างสำหรับตาราง attribute_values ที่เก็บข้อมูลค่าคุณสมบัติของสินค้าจะประกอบด้วยคอลัมน์ดังนี้:</p> <table style="margin-left: 40px;"> <thead style="padding-left: 40px;"> <tr style="padding-left: 40px;"> <th style="padding-left: 40px;">id</th> <th style="padding-left: 40px;">attribute_id</th> <th style="padding-left: 40px;">value</th> </tr> </thead> <tbody style="padding-left: 40px;"> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">S</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">M</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">3</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">L</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">4</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">XL</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">5</td> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">Black</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">6</td> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">White</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">7</td> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">Red</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">8</td> <td style="padding-left: 40px;">3</td> <td style="padding-left: 40px;">Cotton</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">9</td> <td style="padding-left: 40px;">3</td> <td style="padding-left: 40px;">Polyester</td> </tr> </tbody> </table> <p style="padding-left: 40px;">ในตัวอย่างนี้, คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรายการค่าคุณสมบัติแต่ละรายการ คอลัมน์ attribute_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง attributes ซึ่งเป็นคอลัมน์ที่ใช้เก็บรหัสคุณสมบัติ ส่วนคอลัมน์ value เป็นคอลัมน์ที่ใช้เก็บค่าคุณสมบัติของสินค้า ตัวอย่างเช่น ขนาดตัวอักษร (S, M, L, XL) สี (Black, White, Red) และวัสดุ (Cotton, Polyester)</p> <p> </p> <ol start="4"> <li dir="ltr" aria-level="1"> <p>ตาราง product_attributes ที่เก็บข้อมูลความสัมพันธ์ระหว่างสินค้ากับคุณสมบัติจะประกอบด้วยคอลัมน์ดังนี้:</p> <table> <thead> <tr> <th>Column Name</th> <th>Data Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>id (PK)</td> <td>INT</td> <td>รหัสความสัมพันธ์</td> </tr> <tr> <td>product_id (FK)</td> <td>INT</td> <td>รหัสสินค้า (Foreign Key จากตาราง products)</td> </tr> <tr> <td>attribute_id (FK)</td> <td>INT</td> <td>รหัสคุณสมบัติ (Foreign Key จากตาราง attributes)</td> </tr> </tbody> </table> </li> </ol> <p> - คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรหัสความสัมพันธ์<br> - คอลัมน์ product_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง products เพื่อแสดงความสัมพันธ์กับสินค้า<br> - คอลัมน์ attribute_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง attributes เพื่อแสดงความสัมพันธ์กับคุณสมบัติของสินค้า</p> <p style="padding-left: 40px;">ตัวอย่างข้อมูลในตาราง product_attributes:</p> <table style="margin-left: 40px;"> <thead style="padding-left: 40px;"> <tr style="padding-left: 40px;"> <th style="padding-left: 40px;">id</th> <th style="padding-left: 40px;">product_id</th> <th style="padding-left: 40px;">attribute_id</th> </tr> </thead> <tbody style="padding-left: 40px;"> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">1001</td> <td style="padding-left: 40px;">1</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">1001</td> <td style="padding-left: 40px;">2</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">3</td> <td style="padding-left: 40px;">1002</td> <td style="padding-left: 40px;">1</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">4</td> <td style="padding-left: 40px;">1002</td> <td style="padding-left: 40px;">3</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">5</td> <td style="padding-left: 40px;">1002</td> <td style="padding-left: 40px;">4</td> </tr> </tbody> </table> <p> </p> <p style="padding-left: 40px;">- สินค้าที่มีรหัสสินค้าเป็น 1001 มีคุณสมบัติ 2 คุณสมบัติคือ 1 และ 2<br>- สินค้าที่มีรหัสสินค้าเป็น 1002 มีคุณสมบัติ 3 คุณสมบัติคือ 1, 3 และ 4<br><br></p> <ol start="5"> <li dir="ltr" aria-level="1"> <p>ตาราง product_variations ที่เก็บข้อมูลสินค้าย่อย (Variations) จะมีรูปแบบดังนี้:</p> <table> <thead> <tr> <th>Column Name</th> <th>Data Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>id (PK)</td> <td>INT</td> <td>รหัสสินค้าย่อย</td> </tr> <tr> <td>product_id (FK)</td> <td>INT</td> <td>รหัสสินค้า (Foreign Key จากตาราง products)</td> </tr> <tr> <td>sku</td> <td>VARCHAR(255)</td> <td>รหัสสินค้าย่อย (Stock Keeping Unit)</td> </tr> <tr> <td>price</td> <td>DECIMAL(10,2)</td> <td>ราคาของสินค้าย่อย</td> </tr> </tbody> </table> </li> </ol> <p dir="ltr"> </p> <p style="padding-left: 40px;">ตัวอย่างสำหรับตาราง product_variations ที่เก็บข้อมูลสินค้าย่อย (Variations) จะประกอบด้วยคอลัมน์ดังนี้:</p> <table style="margin-left: 40px;"> <thead style="padding-left: 40px;"> <tr style="padding-left: 40px;"> <th style="padding-left: 40px;">id</th> <th style="padding-left: 40px;">product_id</th> <th style="padding-left: 40px;">sku</th> <th style="padding-left: 40px;">price</th> </tr> </thead> <tbody style="padding-left: 40px;"> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">TSB-0001-S</td> <td style="padding-left: 40px;">250</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">TSB-0001-M</td> <td style="padding-left: 40px;">250</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">3</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">TSB-0001-L</td> <td style="padding-left: 40px;">250</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">4</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">TSB-0001-XL</td> <td style="padding-left: 40px;">250</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">5</td> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">TSW-0001-S</td> <td style="padding-left: 40px;">250</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">6</td> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">TSW-0001-M</td> <td style="padding-left: 40px;">250</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">7</td> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">TSW-0001-L</td> <td style="padding-left: 40px;">250</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">8</td> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">TSW-0001-XL</td> <td style="padding-left: 40px;">250</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">9</td> <td style="padding-left: 40px;">3</td> <td style="padding-left: 40px;">HDB-0001-S</td> <td style="padding-left: 40px;">650</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">10</td> <td style="padding-left: 40px;">3</td> <td style="padding-left: 40px;">HDB-0001-M</td> <td style="padding-left: 40px;">650</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">11</td> <td style="padding-left: 40px;">3</td> <td style="padding-left: 40px;">HDB-0001-L</td> <td style="padding-left: 40px;">650</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">12</td> <td style="padding-left: 40px;">3</td> <td style="padding-left: 40px;">HDB-0001-XL</td> <td style="padding-left: 40px;">650</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">13</td> <td style="padding-left: 40px;">4</td> <td style="padding-left: 40px;">HDG-0001-S</td> <td style="padding-left: 40px;">650</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">14</td> <td style="padding-left: 40px;">4</td> <td style="padding-left: 40px;">HDG-0001-M</td> <td style="padding-left: 40px;">650</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">15</td> <td style="padding-left: 40px;">4</td> <td style="padding-left: 40px;">HDG-0001-L</td> <td style="padding-left: 40px;">650</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">16</td> <td style="padding-left: 40px;">4</td> <td style="padding-left: 40px;">HDG-0001-XL</td> <td style="padding-left: 40px;">650</td> </tr> </tbody> </table> <p style="padding-left: 40px;">ในตัวอย่างนี้, คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรายการสินค้าย่อยแต่ละรายการ คอลัมน์ product_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง products และเป็นคอลัมน์ที่ใช้เก็บรหัสสินค้าหลัก คอลัมน์ sku เป็นคอลัมน์ที่ใช้เก็บรหัสสินค้าย่อย (Stock Keeping Unit) ของแต่ละสินค้าย่อย และคอลัมน์ price เป็นคอลัมน์ที่ใช้เก็บราคาของสินค้าย่อยในแต่ละแบบซึ่งอาจแตกต่างกันไปตามคุณสมบัติของสินค้าย่อยแต่ละตัว<br><br></p> <ol start="6"> <li dir="ltr" aria-level="1"> <p>ตาราง product_variation_attributes: เก็บข้อมูลความสัมพันธ์ระหว่างสินค้าย่อยกับค่าคุณสมบัติ</p> </li> </ol> <p style="padding-left: 40px;">id (PK): รหัสความสัมพันธ์<br>variation_id (FK): รหัสสินค้าย่อย<br>attribute_id (FK): รหัสคุณสมบัติ<br>attribute_value_id (FK): รหัสค่าคุณสมบัติ</p> <p style="padding-left: 40px;">โดยที่ data type เป็นดังนี้</p> <p style="padding-left: 40px;">id: INT<br>variation_id: INT<br>attribute_id: INT<br>attribute_value_id: INT</p> <p style="padding-left: 40px;">ตัวอย่างสำหรับตาราง product_variation_attributes: เก็บข้อมูลความสัมพันธ์ระหว่างสินค้าย่อยกับค่าคุณสมบัติ ดังนี้</p> <table style="margin-left: 40px;"> <thead style="padding-left: 40px;"> <tr style="padding-left: 40px;"> <th style="padding-left: 40px;">id</th> <th style="padding-left: 40px;">variation_id</th> <th style="padding-left: 40px;">attribute_id</th> <th style="padding-left: 40px;">attribute_value_id</th> </tr> </thead> <tbody style="padding-left: 40px;"> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">1</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">3</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">3</td> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">1</td> <td style="padding-left: 40px;">2</td> </tr> <tr style="padding-left: 40px;"> <td style="padding-left: 40px;">4</td> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">2</td> <td style="padding-left: 40px;">4</td> </tr> </tbody> </table> <p style="padding-left: 40px;">โดยที่ตารางนี้เก็บข้อมูลความสัมพันธ์ระหว่างสินค้าย่อยกับค่าคุณสมบัติ โดยใช้ id เป็น primary key และเชื่อมตารางนี้กับตารางสินค้าย่อย (product_variations) และตารางค่าคุณสมบัติ (attribute_values) ด้วย foreign key ที่เก็บไว้ใน column variation_id, attribute_id, และ attribute_value_id ตามลำดับ<br><br></p> <p dir="ltr"> 7.ตาราง product_variation_stock ใช้ในการเก็บข้อมูลสต็อกสินค้าย่อย (Variations) โดยมีคอลัมน์หลักๆ ดังนี้:<br> id (PK): รหัสสต็อกสินค้าย่อย (Primary Key)<br> variation_id (FK): รหัสสินค้าย่อย (Foreign Key ที่เชื่อมโยงกับตาราง product_variations)<br> stock_quantity: ปริมาณสต็อกสินค้า<br> stock_status: สถานะสต็อกสินค้า (in_stock, out_of_stock, backorder, pre_order หรือ ค่าอื่นๆ ตามที่กำหนด)<br> low_stock_threshold: ค่าเกณฑ์ต่ำสุดสำหรับสต็อกสินค้า (เมื่อสต็อกลดลงเหลือเท่ากับหรือน้อยกว่าค่านี้ ระบบจะแจ้งเตือนหรือดำเนินการตามที่กำหนด)<br><br> Data type ที่ใช้ในตาราง product_variation_stock มีดังนี้</p> <p style="padding-left: 40px;">id: integer<br>variation_id: integer<br>stock_quantity: integer<br>stock_status: string<br>low_stock_threshold: integer</p> <p style="padding-left: 40px;">ตัวอย่างสำหรับตาราง product_variation_stock:</p> <table style="margin-left: 40px;"> <thead> <tr> <th>id</th> <th>variation_id</th> <th>stock_quantity</th> <th>stock_status</th> <th>low_stock_threshold</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>50</td> <td>in_stock</td> <td>10</td> </tr> <tr> <td>2</td> <td>2</td> <td>0</td> <td>out_of_stock</td> <td>10</td> </tr> <tr> <td>3</td> <td>3</td> <td>25</td> <td>in_stock</td> <td>10</td> </tr> </tbody> </table> <div class="group w-full text-gray-800 dark:text-gray-100 border-b border-black/10 dark:border-gray-900/50 dark:bg-gray-800"> <div class="text-base gap-4 md:gap-6 md:max-w-2xl lg:max-w-xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0 m-auto"> <div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"> <div class="flex flex-grow flex-col gap-3"> <div class="min-h-[20px] flex flex-col items-start gap-4 whitespace-pre-wrap"><strong><br>ออกแบบฐานข้อมูล discount table </strong></div> </div> </div> </div> </div> <p>ออกแบบตารางส่วนลด (discount table) คุณสามารถมีตารางที่สามารถจัดการประเภทส่วนลด ความสัมพันธ์ระหว่างสินค้ากับส่วนลด และข้อมูลส่วนลดเอง ตัวอย่างตารางมีดังนี้:</p> <ol> <li>ตาราง discount_types: เก็บข้อมูลประเภทส่วนลด<br><br>id (PK): รหัสประเภทส่วนลด<br>name: ชื่อประเภทส่วนลด<br><br> <p>ตัวอย่างสำหรับตาราง discount_types ที่เก็บข้อมูลประเภทส่วนลดจะประกอบด้วยคอลัมน์ดังนี้:</p> <table> <thead> <tr> <th>id</th> <th>name</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>ส่วนลดเปอร์เซ็นต์</td> </tr> <tr> <td>2</td> <td>ส่วนลดจำนวนเงิน</td> </tr> </tbody> </table> <p>ในตัวอย่างนี้, คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรหัสประเภทส่วนลด ส่วนคอลัมน์ name เป็นคอลัมน์ที่ใช้เก็บชื่อประเภทส่วนลดที่เป็นไปได้ในระบบของร้านค้า โดยในตัวอย่างนี้มีสองประเภทส่วนลดคือ ส่วนลดเปอร์เซ็นต์ และส่วนลดจำนวนเงิน<br><br></p> </li> </ol> <ol start="2"> <li>ตาราง discounts: เก็บข้อมูลส่วนลด<br><br>id (PK): รหัสส่วนลด<br>discount_type_id (FK): รหัสประเภทส่วนลด<br>name: ชื่อส่วนลด<br>value: มูลค่าส่วนลด (เปอร์เซ็นต์หรือจำนวนเงิน)<br>start_date: วันเริ่มต้นส่วนลด<br>end_date: วันสิ้นสุดส่วนลด<br>min_purchase: จำนวนซื้อขั้นต่ำ (ถ้ามี)<br>max_discount_amount: จำนวนส่วนลดสูงสุด (ถ้ามี)<br><br> <p>ตัวอย่างสำหรับตาราง discounts ที่เก็บข้อมูลส่วนลดจะประกอบด้วยคอลัมน์ดังนี้:</p> <table> <thead> <tr> <th>id</th> <th>discount_type_id</th> <th>name</th> <th>value</th> <th>start_date</th> <th>end_date</th> <th>min_purchase</th> <th>max_discount_amount</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>ส่วนลด 10%</td> <td>10</td> <td>2023-04-01</td> <td>2023-04-30</td> <td>1000</td> <td> </td> </tr> <tr> <td>2</td> <td>2</td> <td>ส่วนลด 100 บาท</td> <td>100</td> <td>2023-04-15</td> <td>2023-05-15</td> <td>5000</td> <td>500</td> </tr> <tr> <td>3</td> <td>1</td> <td>ส่วนลด 5%</td> <td>5</td> <td>2023-05-01</td> <td>2023-05-31</td> <td>500</td> <td> </td> </tr> </tbody> </table> <p>ในตัวอย่างนี้, คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรหัสส่วนลด คอลัมน์ discount_type_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง discount_types และเป็นคอลัมน์ที่ใช้เก็บรหัสประเภทส่วนลด คอลัมน์ name เป็นคอลัมน์ที่ใช้เก็บชื่อส่วนลด คอลัมน์ value เป็นคอลัมน์ที่ใช้เก็บมูลค่าส่วนลด เป็นเปอร์เซ็นต์หรือจำนวนเงิน คอลัมน์ start_date เป็นคอลัมน์ที่ใช้เก็บวันที่เริ่มต้นของส่วนลด คอลัมน์ end_date เป็นคอลัมน์ที่ใช้เก็บวันที่สิ้นสุดของส่วนลด คอลัมน์ min_purchase เป็นคอลัมน์ที่ใช้เก็บจำนวนซื้อขั้นต่ำที่ต้องการใช้ส่วนลด (ถ้ามี) ส่วนคอลัมน์ max_discount_amount เป็นคอลัมน์ที่ใช้เก็บจำนวนส่วนลดสูงสุดที่สามารถใช้ได้ (ถ้ามี)<br><br></p> </li> </ol> <ol start="3"> <li>ตาราง product_discounts: เก็บข้อมูลความสัมพันธ์ระหว่างสินค้ากับส่วนลด<br>id (PK): รหัสความสัมพันธ์<br>product_id (FK): รหัสสินค้า<br>discount_id (FK): รหัสส่วนลด<br><br> <p>ตัวอย่างสำหรับตาราง product_discounts ที่เก็บข้อมูลความสัมพันธ์ระหว่างสินค้ากับส่วนลดจะประกอบด้วยคอลัมน์ดังนี้:</p> <table> <thead> <tr> <th>id</th> <th>product_id</th> <th>discount_id</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>2</td> <td>1</td> <td>3</td> </tr> <tr> <td>3</td> <td>2</td> <td>2</td> </tr> </tbody> </table> <p>ในตัวอย่างนี้, คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรหัสความสัมพันธ์ระหว่างสินค้ากับส่วนลด คอลัมน์ product_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง products และเป็นคอลัมน์ที่ใช้เก็บรหัสสินค้า คอลัมน์ discount_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง discounts และเป็นคอลัมน์ที่ใช้เก็บรหัสส่วนลด ดังนั้น, ความสัมพันธ์ในตาราง product_discounts จะแสดงว่าสินค้าในตาราง products ได้รับส่วนลดในตาราง discounts ได้แบบนี้:<br> - สินค้าที่มีรหัสสินค้าเป็น 1 ได้รับส่วนลดทั้งสองประเภท (รหัสส่วนลด 1 และ 3)<br> - สินค้าที่มีรหัสสินค้าเป็น 2 ได้รับส่วนลดประเภทเดียว (รหัสส่วนลด 2)<br><br></p> </li> </ol> <ol start="4"> <li>ตาราง product_variation_discounts: เก็บข้อมูลความสัมพันธ์ระหว่างสินค้าย่อยกับส่วนลด<br><br>id (PK): รหัสความสัมพันธ์<br>variation_id (FK): รหัสสินค้าย่อย<br>discount_id (FK): รหัสส่วนลด<br><br> <p>ตัวอย่างสำหรับตาราง product_variation_discounts ที่เก็บข้อมูลความสัมพันธ์ระหว่างสินค้าย่อยกับส่วนลดจะประกอบด้วยคอลัมน์ดังนี้:</p> <table> <thead> <tr> <th>id</th> <th>variation_id</th> <th>discount_id</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>1</td> <td>1</td> </tr> <tr> <td>2</td> <td>1</td> <td>3</td> </tr> <tr> <td>3</td> <td>2</td> <td>2</td> </tr> </tbody> </table> <p>ในตัวอย่างนี้, คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรหัสความสัมพันธ์ระหว่างสินค้าย่อยกับส่วนลด คอลัมน์ variation_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง product_variations และเป็นคอลัมน์ที่ใช้เก็บรหัสสินค้าย่อย คอลัมน์ discount_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง discounts และเป็นคอลัมน์ที่ใช้เก็บรหัสส่วนลด ดังนั้น, ความสัมพันธ์ในตาราง product_variation_discounts จะแสดงว่าสินค้าย่อยในตาราง product_variations ได้รับส่วนลดในตาราง discounts ได้แบบนี้:<br><br> - สินค้าย่อยที่มีรหัสสินค้าย่อยเป็น 1 ได้รับส่วนลดทั้งสองประเภท (รหัสส่วนลด 1 และ 3)<br> - สินค้าย่อยที่มีรหัสสินค้าย่อยเป็น 2 ได้รับส่วนลดประเภทเดียว (รหัสส่วนลด 2)</p> </li> </ol> <div class="group w-full text-gray-800 dark:text-gray-100 border-b border-black/10 dark:border-gray-900/50 dark:bg-gray-800"> <div class="text-base gap-4 md:gap-6 md:max-w-2xl lg:max-w-xl xl:max-w-3xl p-4 md:py-6 flex lg:px-0 m-auto"> <div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"> </div> </div> </div> <p> </p> <p><strong>SQL ฐานข้อมูลสินค้าแบบ Variable product</strong></p> <p>โดย Variable product หมายถึง สินค้าที่มีคุณสมบัติหลายรูปแบบหรือตัวเลือกสินค้าย่อย ที่มีรหัสสินค้าแตกต่างกันตามคุณสมบัติแต่ละตัว เช่น ตัวเลือกสีหรือขนาดของเสื้อผ้า</p> <p>เราสามารถออกแบบฐานข้อมูลสินค้าแบบ Variable product ด้วยตารางข้อมูลต่อไปนี้:</p> <p style="padding-left: 40px;">- products (ตารางหลักของสินค้า)<br>- product_attributes (ตารางคุณสมบัติของสินค้า)<br>- attribute_values (ตารางค่าคุณสมบัติของสินค้า)<br>- product_variations (ตารางสินค้าย่อยหรือตัวเลือกสินค้า)<br>- product_variation_attributes (ตารางความสัมพันธ์ระหว่างสินค้าย่อยกับค่าคุณสมบัติ)<br>- product_variation_stock (ตารางสต็อกสินค้าย่อย)<br>- discounts (ตารางส่วนลด)<br>- discount_types (ตารางประเภทส่วนลด)<br>- product_discounts (ตารางความสัมพันธ์ระหว่างสินค้ากับส่วนลด)<br>- product_variation_discounts (ตารางความสัมพันธ์ระหว่างสินค้าย่อยกับส่วนลด)<br><br></p> <p>ดังนั้นเราสามารถสร้างฐานข้อมูล Variable product ด้วย SQL ดังนี้:<br><br><strong>ตาราง products:</strong></p> <div class="bg-black rounded-md mb-4"> <div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> products ( id <span class="hljs-type">INT</span> <span class="hljs-keyword">PRIMARY</span> KEY, name <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">255</span>), sku <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">50</span>), price <span class="hljs-type">DECIMAL</span>(<span class="hljs-number">10</span>,<span class="hljs-number">2</span>) ); </code></div> </div> <p><strong>ตาราง attributes:</strong></p> <div class="bg-black rounded-md mb-4"> <div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> attributes ( id <span class="hljs-type">INT</span> <span class="hljs-keyword">PRIMARY</span> KEY, name <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">255</span>) ); </code></div> </div> <p><strong>ตาราง attribute_values:</strong></p> <div class="bg-black rounded-md mb-4"> <div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> attribute_values ( id <span class="hljs-type">INT</span> <span class="hljs-keyword">PRIMARY</span> KEY, attribute_id <span class="hljs-type">INT</span>, <span class="hljs-keyword">value</span> <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">255</span>), <span class="hljs-keyword">FOREIGN</span> KEY (attribute_id) <span class="hljs-keyword">REFERENCES</span> attributes(id) ); </code></div> </div> <p><strong>ตาราง product_attributes:</strong></p> <div class="bg-black rounded-md mb-4"> <div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> product_attributes ( id <span class="hljs-type">INT</span> <span class="hljs-keyword">PRIMARY</span> KEY, product_id <span class="hljs-type">INT</span>, attribute_id <span class="hljs-type">INT</span>, <span class="hljs-keyword">FOREIGN</span> KEY (product_id) <span class="hljs-keyword">REFERENCES</span> products(id), <span class="hljs-keyword">FOREIGN</span> KEY (attribute_id) <span class="hljs-keyword">REFERENCES</span> attributes(id) ); </code></div> </div> <p><strong>ตาราง product_variations:</strong></p> <div class="bg-black rounded-md mb-4"> <div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> product_variations ( id <span class="hljs-type">INT</span> <span class="hljs-keyword">PRIMARY</span> KEY, product_id <span class="hljs-type">INT</span>, sku <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">50</span>), price <span class="hljs-type">DECIMAL</span>(<span class="hljs-number">10</span>,<span class="hljs-number">2</span>), <span class="hljs-keyword">FOREIGN</span> KEY (product_id) <span class="hljs-keyword">REFERENCES</span> products(id) ); </code></div> </div> <p><strong>ตาราง product_variation_attributes:</strong></p> <div class="bg-black rounded-md mb-4"> <div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> product_variation_attributes ( id <span class="hljs-type">INT</span> <span class="hljs-keyword">PRIMARY</span> KEY, variation_id <span class="hljs-type">INT</span>, attribute_value_id <span class="hljs-type">INT</span>, <span class="hljs-keyword">FOREIGN</span> KEY (variation_id) <span class="hljs-keyword">REFERENCES</span> product_variations(id), <span class="hljs-keyword">FOREIGN</span> KEY (attribute_value_id) <span class="hljs-keyword">REFERENCES</span> attribute_values(id) ); </code></div> </div> <p><strong>ตาราง product_variation_stock:</strong></p> <div class="bg-black rounded-md mb-4"> <div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> product_variation_stock ( id <span class="hljs-type">INT</span> <span class="hljs-keyword">PRIMARY</span> KEY, variation_id <span class="hljs-type">INT</span>, stock_quantity <span class="hljs-type">INT</span>, stock_status <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">20</span>), low_stock_threshold <span class="hljs-type">INT</span>, <span class="hljs-keyword">FOREIGN</span> KEY (variation_id) <span class="hljs-keyword">REFERENCES</span> product_variations(id) ); </code></div> </div> <p><strong>ตาราง discount_types:</strong></p> <div class="bg-black rounded-md mb-4"> <div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> discount_types ( id <span class="hljs-type">INT</span> <span class="hljs-keyword">PRIMARY</span> KEY, name <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">255</span>) ); </code></div> </div> <p><strong>ตาราง discounts:</strong></p> <div class="bg-black rounded-md mb-4"> <div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> discounts ( id <span class="hljs-type">INT</span> <span class="hljs-keyword">PRIMARY</span> KEY, discount_type_id <span class="hljs-type">INT</span>, name <span class="hljs-type">VARCHAR</span>(<span class="hljs-number">255</span>), <span class="hljs-keyword">value</span> <span class="hljs-type">DECIMAL</span>(<span class="hljs-number">10</span>,<span class="hljs-number">2</span>), start_date <span class="hljs-type">DATE</span>, end_date <span class="hljs-type">DATE</span>, min_purchase <span class="hljs-type">DECIMAL</span>(<span class="hljs-number">10</span>,<span class="hljs-number">2</span>), max_discount_amount <span class="hljs-type">DECIMAL</span>(<span class="hljs-number">10</span>,<span class="hljs-number">2</span>), <span class="hljs-keyword">FOREIGN</span> KEY (discount_type_id) <span class="hljs-keyword">REFERENCES</span> discount_types(id) ); </code></div> </div> <p><strong>ตาราง product_discounts:</strong></p> <div class="bg-black rounded-md mb-4"> <div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> product_discounts ( id <span class="hljs-type">INT</span> <span class="hljs-keyword">PRIMARY</span> KEY, product_id <span class="hljs-type">INT</span>, discount_id <span class="hljs-type">INT</span>, <span class="hljs-keyword">FOREIGN</span> KEY (product_id) <span class="hljs-keyword">REFERENCES</span> products(id), <span class="hljs-keyword">FOREIGN</span> KEY (discount_id) <span class="hljs-keyword">REFERENCES</span> discounts(id) ); </code></div> </div> <p><strong>ตาราง product_variation_discounts:</strong></p> <div class="bg-black rounded-md mb-4"> <div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> product_variation_discounts ( id <span class="hljs-type">INT</span> <span class="hljs-keyword">PRIMARY</span> KEY, variation_id <span class="hljs-type">INT</span>, discount_id <span class="hljs-type">INT</span>, <span class="hljs-keyword">FOREIGN</span> KEY (variation_id) <span class="hljs-keyword">REFERENCES</span> product_variations(id), <span class="hljs-keyword">FOREIGN</span> KEY (discount_id) <span class="hljs-keyword">REFERENCES</span> discounts(id) );</code></div> </div> |
| Content Short | |
| Content View | 3650 |
| Content Thumb Highlight | |
| Content Thumb | /uploads/article/dKe5MCakuD.png |
| Content Img Alt | ออกแบบฐานข้อมูลสินค้าแบบ Variations product |
| Content Tag | ฐานข้อมูลสินค้าแบบ Variations product, Variations product |
| Content Date | (not set) |
| Active Status | 1 |
| Sort | 99999 |
| Meta Title | ออกแบบฐานข้อมูลสินค้าแบบ Variations product |
| Meta Desc | ออกแบบฐานข้อมูลสินค้าแบบ Variations product |
| Meta Keyword | ฐานข้อมูลสินค้าแบบ Variations product, Variations product |
| Og Title | ออกแบบฐานข้อมูลสินค้าแบบ Variations product |
| Og Desc | ออกแบบฐานข้อมูลสินค้าแบบ Variations product |
| Status | 1 |
| Create Date Time | 2023-03-31 08:56:58 |
| Update Date Time | 2023-03-31 19:22:33 |
| Create By | |
| Update By |