給SO中的每個人的好日子。爲具有多個可選列和依賴關係的表設計數據庫
我在爲我的項目設計數據庫時出現問題,這是eyelet工廠生產模塊。爲了記錄,我爲我的項目使用了MySQL,C#.NET Framework和NHibernate。
故事背景
我的項目,將有項目表。項目定義了包括在生產孔眼中的所有項目。它可以是可以出售的原材料(卷材,油漆,板材等),中間產品(現在的打孔產品)和最終產品(裝配產品,拋光產品,彩色產品等)。
所有項目都有名稱,股票,閾值列,但一些項目可以有例如外徑或顏色列,而一些項目沒有那個。 可選列這裏依賴於項目類型(例如線圈只有外徑,內徑和高度,而Paint只有顏色,最終產品包含所有這些)。 項目也有多個單位(千克,個人電腦,包等),可以轉換爲其他單位。同樣,某些項目可能只有Kg單位關聯,而其他項目可能有Kg和Pcs單位關聯(以及它們之間的轉換速率)。
這就是我的想法。
- 項目
- ID
- ItemType_ID [FK]
- 名稱
- 庫存
- Treshold
- 時間戳(CreatedAt,UpdatedAt,DeletedAt)
- IsDelet ED
- 尺寸
- 的Item_ID [FK]
- 外徑
- 內徑
- 身高
- 顏色
- 的Item_ID [FK]
- 顏色
- 的ItemType
- ID
- 名稱
- 單位
- ID
- 名稱
Item_Unit關聯表
- 的Item_ID [PK]
- UNIT_ID [PK]
......還沒說完,來這裏尋求建議。
我想問的事情是:
- 這是我的第二個設計,而我的第一個設計將在項目表中的所有可選 列,並指派空當用戶沒有輸入該列的 值。使用我的第一個設計更好嗎?導致它 簡化我的代碼(只選擇1個表格)。但是我聽說在數據庫中有空值是不好的?
- 在這種情況下使用繼承更好嗎?使用父表和子表(項目表和線圈表作爲孩子)?
- 裝配項目,彩色項目,拋光項目,它們的前提項目可以是中級項目或其他最終項目(某些彩色項目可以由中間項目+塗料製造,其他一些彩色項目可以從裝配項目+繪畫,而裝配項目總是由中間項目組成)。我如何設計表格以便查找?在我的主要製作形式中,將會有組合框選取組件。
- 如何在此場景中存儲物品轉化率?
任何意見,更正或甚至整個作出了讚賞。非常感謝你