比方說,我有典型的實體汽車DDD:亞類根實體
class Car : Entity
{
public double MaxSpeed { get; set; }
public Color Color { get; set; }
/* ... */
}
這個實體,在我的域模型,將是一個聚合的根實體。
現在讓我們說我專注於汽車。我創建了一個法拉利,和法拉利的車主高興通過像一個綽號叫他們:
class Ferrari : Car
{
public string Nickname { get; set; }
}
比方說,我有另外一個實體,在公司實體。這將是根實體的另一個總計。有很多人在一家公司工作,由實體人代表。人可能有汽車。但公司的總統通常是非常豐富,這樣的人,他們有法拉利:
class President : Person
{
public Ferrari Ferrari { get; set; }
}
在這種情況下,我有實體總統,誰是內的公司彙總,這是持有一個法拉利的參考,專業化的另一個聚合的根實體。
鑑於DDD,這是否正確?可以/我應該考慮將根實體本身作爲同一個聚合的根實體嗎?我的意思是,在我所描述的領域中,實體法拉利也是汽車總成的根本實體(因爲法拉利也是汽車)?
現在,讓我們說,我要堅持這個模型到數據庫。我認爲我的問題不依賴於我將使用的OR/M框架。
我應該如何建造桌上持有汽車?我是否應該建立一個帶有「CarType」列的Cars Cars(可能的值:「Car」,「Ferrari」)和一個可以爲空的暱稱列?
或者我應該爲Cars創建一張桌子,爲Ferraris創建一個桌子,後者的PK有FK的Cars?
謝謝!
太棒了!謝謝!事實上,在我的「真實」系統中,「汽車」是非常重要的,但「法拉利」是我的領域中唯一最重要的東西,我不能疏忽跟蹤,我必須對其進行統計。 – 2009-08-29 21:55:43