2010-12-13 225 views
1

這是我的第一篇文章。提前感謝所有與我合作的人。實體框架中的複雜繼承

我正在研究一個新的MER,這是它的一部分:http://i.stack.imgur.com/jt5Mz.png

alt text

在鏈接MER,我對實體使用表每一個分層:個人,公司和個人。驅動程序實體基於表類型

我的大問題是,驅動可以個人公司

兩個個人公司從 inherites人保存來自兩個實體公共字段

有一種方法,使驅動實體靈活,是一個個人公司,在驅動實體使用每鍵入表?

謝謝大家!

回答

0

爲什麼不改變設計說「驅動程序」是「關聯」(0..1)而不是從Person繼承的。基本上使'司機'成爲人的可選實體,那麼個人或公司都會繼承這一點。

+0

當我設計我只是想在**面向對象的模型**。你認爲作爲**駕駛員的班級是正確的嗎? – gblmarquez 2010-12-15 03:02:57

+0

@gblmarquez是所有公司的驅動程序?所有的個人司機?如果兩者的答案都是肯定的,那麼爲什麼不讓公司和個人從「司機」而不是人中派生出來? – MerickOWA 2010-12-15 16:19:21

1

我想你需要改變它,以便司機有一個人而不是司機是一個人。即你有一個獨立的Driver類,它有一個名爲Person的字段,'Person'是個人或公司。

或者您應該將DriverNumber字段移動到Person類,以便某個Person(個人或公司)可以是'Driver',如果他們碰巧有一個驅動程序號。

+0

我不能**將**添加到** Person **字段** DriverNumber **,因爲會有另一個實體,如** Driver **。也許**客戶**是我心中的第一個。當我設計時我只是在**面向對象的模型**中思考。你認爲作爲**駕駛員的班級是正確的嗎? – gblmarquez 2010-12-15 03:05:31

+0

駕駛員不應該繼承人:在現實世界中,任何人都可以隨時成爲駕駛員,或者他們可以停止成爲駕駛員,但在OO中,對象不能改變駕駛等級。 將'駕駛員'與1:0關聯關聯到Person的單獨課程是正確的選擇,因爲它模擬了Person可以成爲駕駛員或可以隨時停止成爲駕駛員的事實。 (我還會將人員重新更名爲實體,因爲公司不是真正的人員)。 – 2010-12-16 19:32:14