logo icon
Taninut.com

144

 
 
 
Content ID144
Category ID10
Writer ID(not set)
User ID(not set)
Lang Modeth
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>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรหัสค่าคุณสมบัติ<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- คอลัมน์ attribute_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง attributes เพื่อแสดงความสัมพันธ์กับคุณสมบัติของสินค้า<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- คอลัมน์ 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>&nbsp;</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>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- คอลัมน์ id เป็น Primary Key ที่ใช้ในการระบุรหัสความสัมพันธ์<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- คอลัมน์ product_id เป็น Foreign Key ที่เชื่อมโยงกับตาราง products เพื่อแสดงความสัมพันธ์กับสินค้า<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- คอลัมน์ 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>&nbsp;</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">&nbsp;</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">&nbsp; &nbsp; 7.ตาราง product_variation_stock ใช้ในการเก็บข้อมูลสต็อกสินค้าย่อย (Variations) โดยมีคอลัมน์หลักๆ ดังนี้:<br>&nbsp; &nbsp; &nbsp; &nbsp;id (PK): รหัสสต็อกสินค้าย่อย (Primary Key)<br>&nbsp; &nbsp; &nbsp; &nbsp;variation_id (FK): รหัสสินค้าย่อย (Foreign Key ที่เชื่อมโยงกับตาราง product_variations)<br>&nbsp; &nbsp; &nbsp; &nbsp;stock_quantity: ปริมาณสต็อกสินค้า<br>&nbsp; &nbsp; &nbsp; &nbsp;stock_status: สถานะสต็อกสินค้า (in_stock, out_of_stock, backorder, pre_order หรือ ค่าอื่นๆ ตามที่กำหนด)<br>&nbsp; &nbsp; &nbsp; low_stock_threshold: ค่าเกณฑ์ต่ำสุดสำหรับสต็อกสินค้า (เมื่อสต็อกลดลงเหลือเท่ากับหรือน้อยกว่าค่านี้ ระบบจะแจ้งเตือนหรือดำเนินการตามที่กำหนด)<br><br>&nbsp; &nbsp; &nbsp; &nbsp;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&nbsp;</strong></div>
</div>
</div>
</div>
</div>
<p>ออกแบบตารางส่วนลด (discount table)&nbsp; คุณสามารถมีตารางที่สามารถจัดการประเภทส่วนลด ความสัมพันธ์ระหว่างสินค้ากับส่วนลด และข้อมูลส่วนลดเอง ตัวอย่างตารางมีดังนี้:</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>&nbsp;</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>&nbsp;</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>&nbsp; &nbsp;- สินค้าที่มีรหัสสินค้าเป็น 1 ได้รับส่วนลดทั้งสองประเภท (รหัสส่วนลด 1 และ 3)<br>&nbsp; &nbsp;- สินค้าที่มีรหัสสินค้าเป็น 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>&nbsp; &nbsp;- สินค้าย่อยที่มีรหัสสินค้าย่อยเป็น 1 ได้รับส่วนลดทั้งสองประเภท (รหัสส่วนลด 1 และ 3)<br>&nbsp; &nbsp;- สินค้าย่อยที่มีรหัสสินค้าย่อยเป็น 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)]">&nbsp;</div>
</div>
</div>
<p>&nbsp;</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 View3650
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 Status1
Sort99999
Meta Titleออกแบบฐานข้อมูลสินค้าแบบ Variations product
Meta Descออกแบบฐานข้อมูลสินค้าแบบ Variations product
Meta Keywordฐานข้อมูลสินค้าแบบ Variations product, Variations product
Og Titleออกแบบฐานข้อมูลสินค้าแบบ Variations product
Og Descออกแบบฐานข้อมูลสินค้าแบบ Variations product
Status1
Create Date Time2023-03-31 08:56:58
Update Date Time2023-03-31 19:22:33
Create By
Update By