Programming.ควรออกแบบฐานข้อมูลยังไงครับ เพื่อเก็บส่วนผสมอาหารหรือสูตร+

เริ่มโดย ad2002, 17 พฤศจิกายน 2015, 11:21:41

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

ad2002

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


ควรจะออกแบบฐานข้อมูลยังไงดี  เพื่อเก็บข้อมูลส่วนผสม หรือสูตรการผลิต  เหล่านี้ครับ  กรณีมีสินค้าเป็น10,000และไม่ต้องมานั่งจำ แค่คลิกดู ก็รู้ เป็นต้น
ไม่รู้อธิบาย เข้าใจไหม?  ถ้า งง ก็ขออภัยครับ  ขอบคุณครับ
:wanwan017:

seo18


siriyot00


ad2002


polarisz13

- 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'");

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



[direct=http://www.easycar.in.th/]รถมือสอง[/direct] - ซื้อขายแลกเปลี่ยนรถมือสอง
[direct=http://polaris.design/]ออกแบบเว็บไซต์[/direct] - พัฒนาและออกแบบเว็บไซต์ด้วยทีมงานคุณภาพ ราคามาตรฐาน

ad2002

อ้างถึงจาก: polarisz13 ใน 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'");

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




ขอบคุณมากครับ  :wanwan017:   แจ่ม  ++

gilbert

อีกทางเลือก

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


sys2528

[direct=https://www.billing.in.th/aff.php?aff=51]แนะนำ Hosting คุณภาพ Support เยี่ยมครับ[/direct]

Nokky@#

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

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

ป.ล. อย่าเพิ่งเชื่อผม ผมไม่ได้เรียน แค่เล่าตามประสบการณ์
https://www.trcloud.org
[direct= *Link Removed* ]โปรแกรมบัญชีออนไลน์[/direct]

amazegu

อ้างถึงจาก: Nokky@# ใน 27 พฤศจิกายน 2015, 09:17:27
ผมว่าแยก 3 ตารางตามเมนูอาหารเลยดีสุด

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

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

อ้างถึงจาก: polarisz13 ใน 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'");

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



litverpool

ตามนี้ครับ
ิ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

aomaaaaa

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

[direct=https://www.exness.com/a/mkq4l69l][/direct]

[direct=https://clicks.pipaffiliates.com/c?m=36705&c=361620][/direct]