我正在爲使用Sql服務器作爲後端的零售業務設計一個數據庫。有一些產品可以以多種單位出售,例如,鉛筆可以以ea和十幾種方式銷售,紙張可以以單張,鉸鏈和廣告形式出售。基本上,每個產品都可以以多個單位銷售。具有多個單元的產品的數據庫設計
應用程序需要支持
- 可以接收來自供應商的產品在衆多單元。有時候我們可能會訂購1支鉛筆,下次我們訂購2盒鉛筆時,我們可能會訂購 。
- 可以以多個單位銷售產品,例如,我們必須能夠在同一帳單中銷售1盒和2支鉛筆。
- 應用程序還需要FIFO或LIFO 支持
下面是我最初的設計
Table: Products
ProductId | Barcode | Name | BaseUnitId
1 | XXXX | Pencil | 1
Table: Units
UnitId | Name
1 | Each/Pieces
2 | Box
Table: UnitConversion
ProductId | BaseUnitId | Multiplier | ToUnitId |
1 | 1 | 24 | 2 | // 24 pencils in a box
Table: Inventories
Id | ProductId | UnitId | Quantity
1 | 1 | 1 | 48 //In pieces
Table Invoices
Id | ProductId | UnitId | Quantity
1 | 1 | 2 | 1.5 //Sold/Purchased 1.5 boxes that means 18 pieces
有沒有在我的設計任何瑕疵?有什麼我想念的嗎?這不是一個新問題。有沒有人有任何想法(或例子)?
我刪除了無關的數據庫標記。 –