我正在开发一个旅游管理应用程序。 在问题的设计是一样的东西如下:
在参观每个人被指定为旅行者。 每个旅行者具有Passport。 现在,旅行者可以是MainMember或亚段,要看他是否是家庭的头。 一个MainMember决定的东西一样TourPackage,为他的家庭旅行总金额等。亚段依赖于在旅行中的MainMember。 所以,如果一个MainMember被删除,它的所有子成员都被删除。
因此,旅客有一个护照。 (一对一的关系)一个旅行者可以是一个MainMember或亚段。 (一到零/一个旅行者-MainMember和旅行者-亚段之间)甲MainMember可以具有若干子成员。 (一到多)甲亚段仅具有一个MainMembers。 (多到一个)
我现在的ERD的东西如下。
正如你所看到的,三个表 - 旅行者,MainMember和亚段 - 已经形成了循环依赖。 我不知道这是否会伤害我的应用程序,虽然。 如果我删除一个旅行者谁是MainMember,然后1.旅行者一条记录被删除。 2.其相关MainMember记录被删除。 3.依赖MainMember的亚段记录被删除。 4.子成员的旅行者记录被删除。
虽然它似乎并不成为一个问题,作为一个旅行者,MainMember删除永远只删除旅行者 - 子构件(S)。 不过,我对此有一种不好的预感。
任何人都可以引导我到一个更好的设计?
UPDATE -
在等待答复,我想出了另一种设计,基于@ Daveo的答复。 基本上,旅行者包含自参照外键。 它将使亚段记录被用来识别他们的父母。
这里是ERD了点。
现在,因为没有我以前的设计循环依赖,如指向的@Branko的问题,我想知道哪些设计是更好?
此外,该设计会更好,通过Hibernate实现? 我认为,虽然通过Hibernate实现第二种方法可能导致的复杂性。
我还希望关于实现模式(继承在Hibernate中的实体,等等),你更喜欢设计一些指点。