我有一個MVC4應用程序,員工可以在其中訂購午餐。購物清單隨後可用於那天去超市的人。管理員可以用每月的工資結算每個月的成本。中央訂單模型如下所示:更改數據庫結構
public class Order
{
public int OrderId { get; set; }
public int ProductId { get; set; }
public decimal UnitPrice { get; set; }
public int Quantity { get; set; }
public int UserId { get; set; }
public DateTime Date { get; set; }
public bool IsConfirmed { get; set; }
public bool IsSettledWithSalary { get; set; }
public virtual Product Product { get; set; }
public virtual User User { get; set; }
}
此表存儲訂購的每種產品的訂單。訂單確實有一個數量,用於人們訂購多件產品時,但通常它會成爲訂單和產品的長表。
可以看出,表中有兩個布爾值。一個IsConfirmed
和IsSettledWithSalary
屬性。這是因爲人們可以下訂單(IsConfirmed=false
,IsSettledWithSalary=false
),然後可以使用超市中的可用物品和實際價格(IsConfirmed=true
,IsSettledWithSalary=false
)進行檢查,最後可以通過管理員用工資結算相同的訂單(IsConfirmed=true
,IsSettledWithSalary=true
)。
這最後一步,現在由添加了一個名爲Transaction
的產品和價格設定爲負值,使得用戶的餘額變爲0,並將其存儲在另一個Transaction
表看起來像這樣:
public class Transaction
{
public int TransactionId { get; set; }
public DateTime Date { get; set; }
public List<Order> Orders { get; set; }
public decimal TransactionAmount { get; set; }
public virtual Order Order { get; set; }
}
這給出了一個概述。
我確實從存儲負面交易產品的想法入手了該項目,但回過頭來看,我認爲可能會有更優雅的解決方案。
一位朋友建議我應該使用多個訂單表。或者使用將更多兩個不同表格鏈接在一起的表格。
我不清楚如何做到這一點,並考慮到它並不慢,它的工作原理,我很想聽聽你對數據庫結構的想法,並接受關於如何做到這一點的建議。繼續。
那麼額外的「中間表」(或「koppeltabellen」,因爲它們被稱爲您的語言)如何?你有沒有看到實施這些機會或優勢? –
或者是這個OrderOverview表完全一樣嗎? :) –
是的,這就是我的意思:「實際上,這意味着一個額外的1-N表格將跟蹤訂單內的產品。」你將需要這樣一個表來保存這兩個字段:'OrderId'和'OrderDetailsId'(這裏應該有一個主鍵,爲了清楚起見,我會對其進行編輯)。 –