想象一家麪包店。我有一個產品表,它與公式表有一對多的關係,而公式表又與成分有一對多的關係。問題是我有一個蛋糕,但其中一個成分是糖霜,它本身就是一種產品(你不能將糖霜分解成單個糖塊,因爲糖霜適用於許多事情,蛋糕上的糖霜量可能需要改變)。什麼是這樣的設置表設計?帶循環參考的設計關係數據庫
3
A
回答
2
你正在尋找的是一種常見的數據庫設計模式,稱爲Bi材料爲。
這是一個很好的blog about bill of materials。
爲了更容易地使用這種設計所涉及的不平等樹結構,您可以使用一種稱爲訪問數字的物理實現技術,我在我對this question的回答中詳細描述了這種技術。
3
如何在您的配料表中的兩列,一個用於實際配料,另一個指向其他配方。只有一個將被設置爲任何給定的行。
使用兩列還可以強制執行參照完整性。
1
看來你只有兩個對象:公式和東西。一個公式用其他東西來描述東西。一件東西可能是也可能不是產品。這是一個二元屬性:第三個表。該計劃將是這樣的:
Stuff
-----
id : integer
name : string
FormulaPairs
------------
stuff_described_id : integer
ingredient_id : integer
amount : float
Product
-------
stuff_id : integer
查詢示例:
獲取蘋果派成分的所有ID:
select ingredient_id from Stuff s inner join FormulaPairs p
where s.id == p.stuff_described_id and s.name == 'Apple Pie'
獲得的產品的所有名稱:
select name from Stuff s inner join Product p where s.id == p.stuff_id
相關問題
- 1. 關係數據庫設計 - 「循環」圖
- 2. 3個表的數據庫設計中的循環關係
- 3. 具有循環關係的數據庫實體模型設計
- 4. SQL數據庫設計中的關係循環
- 5. 關係數據庫設計
- 6. 關係數據庫設計
- 7. 數據庫設計/關係
- 8. 數據庫設計關係
- 9. 數據庫設計如何參考表
- 10. 關閉循環參考?
- 11. 數據庫架構設計的關係
- 12. 數據庫表關係的設計
- 13. 關係數據庫設計(MySQL的)
- 14. 關係數據庫設計(MySQL的)
- 15. 數據庫設計:循環引用
- 16. 關於雙向關係的JPA循環參考
- 17. 循環與數據庫(數據表對象不參考)ASP.NET VB
- 18. 關係數據庫設計用MySQL,
- 19. 關係數據庫設計問題
- 20. 多對多關係數據庫設計
- 21. 1-M關係數據庫設計
- 22. 數據庫設計一對一關係
- 23. 關係數據庫設計週期
- 24. 努力與數據庫設計/關係
- 25. 關係數據庫設計方案
- 26. MySQL數據庫設計 - 關係表
- 27. 關係數據庫設計 - 拆分表
- 28. 數據庫設計:OR關係
- 29. 電影關係數據庫設計
- 30. MySQL關係數據庫設計
「配方」與「配方」是一樣的,對吧?同一產品可以有多個公式嗎?即如果你用不同的方式做蛋糕,它應該仍然被認爲是蛋糕的同一個孩子嗎?您的陳述:_「與公式表具有一對多關係的產品」似乎暗示了這一點,但我不確定您是在描述數據的基本屬性,還是僅僅描述當前數據庫設計(這可能與數據的實際外觀差異)。 –
樹,搜索SQL樹。 –