我的类图中的某些类之间存在此泛化关系。 FirstClass作为具有Name属性的基类,SecondClass作为派生类,FirstClass是它的基类,并且具有一些其他属性,最后是ThirdClass,它是SecondClass的派生类,它也有一些其他属性。 ThirdClass作为与Widget类的关联关系,1。*。
当我想从类图中实现数据模型时,我使用了Joined策略。所以FirstTable在SecondTable中有他们的Pk,而SecondTable在ThirdTable中有他们的PK。 如您所见,第三个表应该在Widget类中具有它的PK。每当我想将小部件表与第三个表连接起来时会有一些成本,因为我需要从第一个表中获取名称。
我是否适合从FirtTable(实际上是它的基类)中读取Id并将其放入Widget表中?
答案 0 :(得分:1)
我认为问题是,如果你这样做,你就无法阻止Widget与FirstTable的实例相关,而FirstTable实例不是ThirdTable的实例。
也许您可以同时放置ThirdTable id和FirstTable id,但在这种情况下,您必须管理两个ID之间一致性的安全控制。
在这两种情况下,我都会建议反对。如果加入成本对您来说是个问题,则应考虑使用“单表”继承策略。