ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์ProgrammingProgramming.ควรออกแบบฐานข้อมูลยังไงครับ เพื่อเก็บส่วนผสมอาหารหรือสูตร+
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: Programming.ควรออกแบบฐานข้อมูลยังไงครับ เพื่อเก็บส่วนผสมอาหารหรือสูตร+  (อ่าน 1174 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
ad2002
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 115
ออฟไลน์ ออฟไลน์

กระทู้: 1,291



ดูรายละเอียด
« เมื่อ: 17 พฤศจิกายน 2015, 11:21:41 »

ควรออกแบบฐานข้อมูลยังไงครับ เพื่อเก็บส่วนผสมอาหารหรือสูตรผลิตครับ
เช่น
น้ำมะพร้าว  = เกิดจาก   มะพร้าวอ่อน + น้ำ + น้ำตาล
น้ำลำใย  =  เกิดจาก  ลำใย + น้ำ + น้ำตาล + สารแต่งกลิ่นอาหาร
น้ำส้ม =  เกิดจาก  ส้ม + น้ำ + น้ำตาล
*** จะเห็นว่า ส่วนผสมบางอย่างซ้ำๆกัน  และบางอย่าง ก็ไม่ซ้ำ ***


ควรจะออกแบบฐานข้อมูลยังไงดี  เพื่อเก็บข้อมูลส่วนผสม หรือสูตรการผลิต  เหล่านี้ครับ  กรณีมีสินค้าเป็น10,000และไม่ต้องมานั่งจำ แค่คลิกดู ก็รู้ เป็นต้น
ไม่รู้อธิบาย เข้าใจไหม?  ถ้า งง ก็ขออภัยครับ  ขอบคุณครับ
 wanwan017
« แก้ไขครั้งสุดท้าย: 17 พฤศจิกายน 2015, 11:23:37 โดย ad2002 » บันทึกการเข้า
seo18
ก๊วนเสียว
*

พลังน้ำใจ: 16
ออฟไลน์ ออฟไลน์

กระทู้: 349



ดูรายละเอียด
« ตอบ #1 เมื่อ: 17 พฤศจิกายน 2015, 12:02:46 »

รอฟัง
« แก้ไขครั้งสุดท้าย: 28 พฤศจิกายน 2015, 00:43:45 โดย seo18 » บันทึกการเข้า
siriyot00
สมุนแก๊งเสียว
*

พลังน้ำใจ: 34
ออฟไลน์ ออฟไลน์

กระทู้: 760



ดูรายละเอียด
« ตอบ #2 เมื่อ: 17 พฤศจิกายน 2015, 12:04:32 »

ไม่แน่ใจแต่ก็น่าจะประมาณนี้

http://www.thaicreate.com/tutorial/sql-left-join.html
บันทึกการเข้า

Thaipromoteboard.com
ad2002
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 115
ออฟไลน์ ออฟไลน์

กระทู้: 1,291



ดูรายละเอียด
« ตอบ #3 เมื่อ: 17 พฤศจิกายน 2015, 12:20:14 »

ขอบคุณครับ  wanwan011  +1 ทุกท่าน
บันทึกการเข้า
polarisz13
คนรักเสียว
*

พลังน้ำใจ: 11
ออฟไลน์ ออฟไลน์

กระทู้: 125



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 17 พฤศจิกายน 2015, 12:45:55 »

- Product
-- ProductID (PK)
-- ProductName (Varchar)
-- created_at (Timestamp)
-- updated_at (Timestamp)

- Material
-- MaterialID (PK)
-- MaterialName (Varchar)
-- created_at (Timestamp)
-- updated_at (Timestamp)

- Product_Material
-- ProductMaterialID (PK)
-- ProductID (FK)
-- MaterialID (FK)
-- ProductMaterialQty (Float)
-- created_at (Timestamp)
-- updated_at (Timestamp)

เป็นผมคงประมาณนี้ครับ อิสระดี มีตารางเก็บ Product แยกเลย , มีตารางเก็บประเภทวัตถุดิบแยกไปเลย
แล้วค่อยใช้ 1->M<-1 แบบนี้มารวมว่า Product ไหนใช้วัตถุดิบอะไร แบบ One to Many  
แล้วเราทำระบบดูได้ด้วยว่า วัตดุดิบอะไรใช้ใน Product ไหนบ้าง ด้วย One to Many เช่นเดียวกัน ย้อนไปย้อนมา

Query หากต้องการดูว่า ProductID ไหนใช้ Material ไหนบ้าง

$Materials = mysql_query("SELECT * FROM `Product_Material` WHERE 'ProductID' = 'ค่าProductID'");

ประมาณนี้ ผมไม่ได้เขียน Query แบบดั้งเดิมมานานละใช้แต่ Eloquent ORM

Query หากต้องดูว่า Material ไหนถูกใช้ใน Product ไหนบ้าง

$Products = mysql_query("SELECT * FROM `Product_Material` WHERE 'MaterialID' = 'ค่าMaterialID'");

มีอะไรสอบถามเพิ่มเติมได้ครับ ^^

« แก้ไขครั้งสุดท้าย: 17 พฤศจิกายน 2015, 12:54:12 โดย polarisz13 » บันทึกการเข้า



รถมือสอง - ซื้อขายแลกเปลี่ยนรถมือสอง
ออกแบบเว็บไซต์ - พัฒนาและออกแบบเว็บไซต์ด้วยทีมงานคุณภาพ ราคามาตรฐาน
ad2002
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 115
ออฟไลน์ ออฟไลน์

กระทู้: 1,291



ดูรายละเอียด
« ตอบ #5 เมื่อ: 17 พฤศจิกายน 2015, 14:28:32 »

- Product
-- ProductID (PK)
-- ProductName (Varchar)
-- created_at (Timestamp)
-- updated_at (Timestamp)

- Material
-- MaterialID (PK)
-- MaterialName (Varchar)
-- created_at (Timestamp)
-- updated_at (Timestamp)

- Product_Material
-- ProductMaterialID (PK)
-- ProductID (FK)
-- MaterialID (FK)
-- ProductMaterialQty (Float)
-- created_at (Timestamp)
-- updated_at (Timestamp)

เป็นผมคงประมาณนี้ครับ อิสระดี มีตารางเก็บ Product แยกเลย , มีตารางเก็บประเภทวัตถุดิบแยกไปเลย
แล้วค่อยใช้ 1->M<-1 แบบนี้มารวมว่า Product ไหนใช้วัตถุดิบอะไร แบบ One to Many  
แล้วเราทำระบบดูได้ด้วยว่า วัตดุดิบอะไรใช้ใน Product ไหนบ้าง ด้วย One to Many เช่นเดียวกัน ย้อนไปย้อนมา

Query หากต้องการดูว่า ProductID ไหนใช้ Material ไหนบ้าง

$Materials = mysql_query("SELECT * FROM `Product_Material` WHERE 'ProductID' = 'ค่าProductID'");

ประมาณนี้ ผมไม่ได้เขียน Query แบบดั้งเดิมมานานละใช้แต่ Eloquent ORM

Query หากต้องดูว่า Material ไหนถูกใช้ใน Product ไหนบ้าง

$Products = mysql_query("SELECT * FROM `Product_Material` WHERE 'MaterialID' = 'ค่าMaterialID'");

มีอะไรสอบถามเพิ่มเติมได้ครับ ^^




ขอบคุณมากครับ  wanwan017   แจ่ม  ++
บันทึกการเข้า
gilbert
สมุนแก๊งเสียว
*

พลังน้ำใจ: 587
ออฟไลน์ ออฟไลน์

กระทู้: 713



ดูรายละเอียด
« ตอบ #6 เมื่อ: 17 พฤศจิกายน 2015, 16:12:46 »

อีกทางเลือก

table : material
-- matid (pk)
-- matname

table : material_detail
-- matid (pk)
-- parentid (pk) (reference table material)

ตัวอย่าง
table : material
matid matname
1       น้ำ
2       น้ำตาล
3       มะพร้าวอ่อน
4       น้ำมะพร้าว 

table : material_detail
matid    parentid
4           1
4           2
4           3

จากตัวอย่างน้ำมาพร้าวเกิดจาก mat 1 2 3 มารวมกัน


บันทึกการเข้า
sahawat
ก๊วนเสียว
*

พลังน้ำใจ: 6
ออฟไลน์ ออฟไลน์

กระทู้: 224



ดูรายละเอียด
« ตอบ #7 เมื่อ: 24 พฤศจิกายน 2015, 06:22:27 »

มาเก็บเกี่ยวความรู้ครับ wanwan017
บันทึกการเข้า
sys2528
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 301
ออฟไลน์ ออฟไลน์

กระทู้: 3,601



ดูรายละเอียด
« ตอบ #8 เมื่อ: 24 พฤศจิกายน 2015, 09:43:14 »

เยี่ยมเลยครับ ขอบคุณแทน จขกท. ด้วยนะครับ   wanwan017
บันทึกการเข้า

Nokky@#
ก๊วนเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 216



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 27 พฤศจิกายน 2015, 09:17:27 »

ผมว่าแยก 3 ตารางตามเมนูอาหารเลยดีสุด

ตอนเรียกดูจะได้เรียกแค่ตารางเดียวพอ ผมจะพยายามหลีกเลี่ยงการใช้ Left Join ไรพวกนี้ครับ เพราะ query มันจะช้า
ที่ผมเขียนผมเรียกและ update ที 6 - 7 ตารางเห็นจะได้ กะเลยต้องเซพทรัพยากรหน่อย
 Tongue Tongue Tongue

ป.ล. อย่าเพิ่งเชื่อผม ผมไม่ได้เรียน แค่เล่าตามประสบการณ์
บันทึกการเข้า

amazegu
สมุนแก๊งเสียว
*

พลังน้ำใจ: 80
ออฟไลน์ ออฟไลน์

กระทู้: 875



ดูรายละเอียด
« ตอบ #10 เมื่อ: 27 พฤศจิกายน 2015, 10:39:03 »

ผมว่าแยก 3 ตารางตามเมนูอาหารเลยดีสุด

ตอนเรียกดูจะได้เรียกแค่ตารางเดียวพอ ผมจะพยายามหลีกเลี่ยงการใช้ Left Join ไรพวกนี้ครับ เพราะ query มันจะช้า
ที่ผมเขียนผมเรียกและ update ที 6 - 7 ตารางเห็นจะได้ กะเลยต้องเซพทรัพยากรหน่อย
 Tongue Tongue Tongue

ป.ล. อย่าเพิ่งเชื่อผม ผมไม่ได้เรียน แค่เล่าตามประสบการณ์
แล้วถ้ามีเพิ่มเมนูอาหารละครับ ต้องคอยไปเพิ่มตารางใหม่อีก ผมว่าไม่ยืดหยุ่น(ความคิดเห็นส่วนตัวครับ)
เป็นผมเอาตามเรปนี้ครับ เพราะผ่านการ normalize แล้ว

- Product
-- ProductID (PK)
-- ProductName (Varchar)
-- created_at (Timestamp)
-- updated_at (Timestamp)

- Material
-- MaterialID (PK)
-- MaterialName (Varchar)
-- created_at (Timestamp)
-- updated_at (Timestamp)

- Product_Material
-- ProductMaterialID (PK)
-- ProductID (FK)
-- MaterialID (FK)
-- ProductMaterialQty (Float)
-- created_at (Timestamp)
-- updated_at (Timestamp)

เป็นผมคงประมาณนี้ครับ อิสระดี มีตารางเก็บ Product แยกเลย , มีตารางเก็บประเภทวัตถุดิบแยกไปเลย
แล้วค่อยใช้ 1->M<-1 แบบนี้มารวมว่า Product ไหนใช้วัตถุดิบอะไร แบบ One to Many 
แล้วเราทำระบบดูได้ด้วยว่า วัตดุดิบอะไรใช้ใน Product ไหนบ้าง ด้วย One to Many เช่นเดียวกัน ย้อนไปย้อนมา

Query หากต้องการดูว่า ProductID ไหนใช้ Material ไหนบ้าง

$Materials = mysql_query("SELECT * FROM `Product_Material` WHERE 'ProductID' = 'ค่าProductID'");

ประมาณนี้ ผมไม่ได้เขียน Query แบบดั้งเดิมมานานละใช้แต่ Eloquent ORM

Query หากต้องดูว่า Material ไหนถูกใช้ใน Product ไหนบ้าง

$Products = mysql_query("SELECT * FROM `Product_Material` WHERE 'MaterialID' = 'ค่าMaterialID'");

มีอะไรสอบถามเพิ่มเติมได้ครับ ^^


บันทึกการเข้า
litverpool
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 71



ดูรายละเอียด
« ตอบ #11 เมื่อ: 27 พฤศจิกายน 2015, 11:13:29 »

ตามนี้ครับ
ิBOM = Bill of Material

TBL_PRODUCT
PRODUCTID PRODUCTNAME PRODUCTTYPE

TBL_BOM
BOM_ID PRODUCTID

TBL_BOM_DETAIL
BOM_DETAIL_ID BOM_ID PRODUCTID

เช่น
TBL_PRODUCT
1   ผงกาแฟ   RAwMAT
2   น้ำตาล   RAwMAT
3   น้ำ   RAwMAT
4   นมข้น   RAwMAT
5   น้ำเชื่อม   Product
6   กาแฟสด   Product


TBL_BOM
BOM_ID PRODUCTID
1   5   น้ำเชื่อม
2   6   กาแฟสด
TBL_BOM_DETAIL
BOM_DETAIL_ID BOM_ID PRODUCTID
1   1   2   
2   1   3
3   2   1
4   2   4
5   2   5
« แก้ไขครั้งสุดท้าย: 27 พฤศจิกายน 2015, 11:23:49 โดย litverpool » บันทึกการเข้า
aomaaaaa
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 136
ออฟไลน์ ออฟไลน์

กระทู้: 2,749



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 27 พฤศจิกายน 2015, 11:21:26 »

เข้ามาฟังครับ wanwan017
บันทึกการเข้า

มารวยข้ามคืนกันหุ้นออนไลน์กัน http://www.xexness.com



หน้า: [1]   ขึ้นบน
พิมพ์