当子表将它的Id放入另一个表时,是否可以使用父表Id而不是子表Id

时间:2013-04-10 14:42:11

标签: class-design uml class-diagram

我的类图中的某些类之间存在此泛化关系。 FirstClass作为具有Name属性的基类,SecondClass作为派生类,FirstClass是它的基类,并且具有一些其他属性,最后是ThirdClass,它是SecondClass的派生类,它也有一些其他属性。 ThirdClass作为与Widget类的关联关系,1。*。

enter image description here


当我想从类图中实现数据模型时,我使用了Joined策略。所以FirstTable在SecondTable中有他们的Pk,而SecondTable在ThirdTable中有他们的PK。 如您所见,第三个表应该在Widget类中具有它的PK。每当我想将小部件表与第三个表连接起来时会有一些成本,因为我需要从第一个表中获取名称。

我是否适合从FirtTable(实际上是它的基类)中读取Id并将其放入Widget表中?


1 个答案:

答案 0 :(得分:1)

我认为问题是,如果你这样做,你就无法阻止Widget与FirstTable的实例相关,而FirstTable实例不是ThirdTable的实例。

也许您可以同时放置ThirdTable id和FirstTable id,但在这种情况下,您必须管理两个ID之间一致性的安全控制。

在这两种情况下,我都会建议反对。如果加入成本对您来说是个问题,则应考虑使用“单表”继承策略。