2012-10-08 110 views
0

他們給了我一個任務來完成以下任務:如何規範表訂單詳細信息

enter image description here

我將使用C#和SQL Server解決以上。然而,我需要一個多少桌我需要,因爲我是完全新的這個。我試了一下,如果有人能解決我的問題,或者可以給我一個更好的替代解決方案。 這就是我現在試過的東西。 我做了3個表,如下圖所示圖像uptill現在:

enter image description here

現在,如果你在第二圖像請注意,我只能爲一方使訂單號適用。但是,我仍然面臨的問題是,當一方訂購多種類型的產品時,我將不得不在訂單表中生成2個訂單號。

這裏我的問題的解決方案是什麼?我如何進一步標準化?

P.S.這可能聽起來像一個簡單的問題,因爲這是我對Normalization的第一次嘗試。

+1

家庭作業標記已被棄用,所以我將其刪除。 – Taryn

+0

爲什麼每個表格中的「詳細信息」一詞?這是沒有必要的。 訂單有許多訂單項目或「訂單項目」。 –

+0

PO屬性應該位於單獨的表中,或者與訂單數據位於同一個表中。 (不是訂單明細數據。)參考屬性相同。 –

回答

0

4個表:

  1. Partyinformation:ID,姓名,地址
  2. 產品信息:ID,名稱,價格
  3. Orderinformation:ID:紅棗等
  4. 訂單行:訂單,ProductID,金額 其中orderID和ProductID是將外鍵轉換爲產品信息和訂單信息

將產品添加到(創建的)訂單隻需將[productID]和[OrderID]添加到[orderline]中,即在同一產品輸入兩次時增加金額。

0

我會建議添加另一個名爲「訂單」的表。此表格將包含整個訂單的信息,例如PONumber,PODate,RefDate,PartyID。然後你的OrdersDetail表將包含訂購的每個產品的信息,例如ProductId,Quantity,Rate,Amount,OrderId(FK到新訂單表中)。

此外,不要使所有的數據類型文本。考慮使用適合存儲信息的數據類型。我還會考慮不包括金額或將其作爲計算字段,因爲它是根據同一記錄中的其他信息計算的(數量*費率)。

此外,您可以考慮使用除PONumber之外的其他值作爲主鍵。作爲一般規則,主鍵除了內部識別記錄之外沒有其他用途。我會建議添加一個OrderDetailsId並將其作爲主鍵。

編輯:(我已經添加了額外的信息來回答以下問題Lohits)

如果我理解你在你的問題是什麼聲明,甲方可以有多個訂單;在每個訂單上,聚會可以購買多種產品。因此PartyDetails和Order之間會有一對多的關係,Order和OrderDetail之間會有一對一的關係;以及ProductDetails和OrderDetails之間的一對一關係。 Party表存儲關於購買訂單的人的信息。訂單表存儲有關人員放置的每個訂單的信息。 OrderDetails存儲關於每個人爲每個訂單購買的每個產品的信息。 ProductDetails表存儲所有產品的列表。

下面是我看到它的數據結構圖....請注意,它沒有每個的細節。但希望它會給你足夠的開始。

enter image description here

+0

+1這是一個經典的設計模式 –

+0

產品ID在哪裏去?我如何保持一個締約方購買的多個產品的跟蹤?我不明白上述如何解決我的問題。 –

+0

@Lohit。我已將信息添加到我的答案中以回答您的問題。 –

1

也許你可以使用這種設計。請注意,每個訂單每個訂單隻有一個採購訂單編號。這假定您想要手動提供採購訂單編號;否則,您可以使用OrderID作爲方便的自動生成PO號碼。

enter image description here

+0

產品表中的'數量'應該是什麼?單價? OrderProduct(又名OrderLines或OrderDetails)表中還應該有一個'price'字段。 –

+0

他/她可以稱之爲'OwnSauce',儘管我不會推薦它。如果他/她想要將計算的「金額」字段添加到OrderProduct(OrderProduct.Quantity * Product.OwnSauce),他/她也可以這樣做。哎呀,他/他甚至可以添加'條碼'或甚至'OmgIGotPwntByAnUndeadPriest'。天空纔是極限!設計的確體現了一個標準化的結構,考慮到每個聚會每個訂單1個採購訂單。 – Jeremy

相關問題