我正在开发一个旅行管理应用程序。所讨论的设计如下:
旅游中的每一个人都被指定为旅行者。每个旅行者都有护照。现在,旅行者可以是MainMember或SubMember,这取决于他是否是一家之主。一个MainMember决定像TourPackage,他的旅行家庭的总金额,等等。SubMember在旅行时依赖于MainMember。因此,如果一个MainMember被删除,那么它的所有SubMembers也必须被删除。
旅行者有护照。(一对一的关系)旅行者要么是MainMember,要么是SubMember。(1到0/1在旅行者-主成员和旅行者-子成员之间)一个MainMember可能有几个SubMembers。(一对多) SubMember只有一个MainMembers。(多对一)
我目前的ERD如下所示。
如您所见,这三个表-- Traveler、MainMember和SubMember --形成了一个循环依赖关系。不过,我不确定这是否会损害我的申请。如果我删除一个旅行者谁是MainMember,那么1.一个记录从旅行者被删除。2.删除了相关的MainMember记录。3.删除依赖于SubMember的MainMember记录。4.删除了SubMembers的旅行者记录。
虽然这似乎不是一个问题,因为一个旅行者-主成员删除将永远只删除旅行者-子成员(S)。尽管如此,我还是有一种不好的预感。
有人能引导我找到更好的设计吗?
更新-
在等待回复的同时,我根据@Daveo的答复提出了另一个设计方案。基本上,Traveler包含自引用外键.它将被SubMember记录用来识别他们的父母。
这是那个的ERD。
现在,由于在我以前的设计中没有循环依赖的问题,正如@布兰科所指出的那样,我想知道哪个设计更好?
另外,哪种设计更适合通过Hibernate来实现?我认为第二种方法在通过Hibernate实现时可能会导致复杂性。
我也希望了解一些关于实现模式的提示( Hibernate实体中的继承,等等)。你喜欢的设计。
发布于 2013-02-21 10:05:14
我在数据库中只会有两个表。
旅客及密码
旅行者将有一个Parent_Id字段,该字段将链接回旅行者表,并将存储主/头旅行者是谁。另外,在本表中存储主/子成员共同的字段,如联系人号码
然后使用继承和ORM在实际应用程序中创建两个不同的类。MainMember和SubMember MainMember将是Traveller中的所有行,其中Parent_Id为空,SubMember将是Traveller中的所有行,而Parent_Id不为空。
https://stackoverflow.com/questions/14999131
复制相似问题