2010-12-13 167 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