您好我对我在数据库设计中遇到的一些循环关系有疑问。我读了几个类似的问题,但无法解决我的问题,所以这是我的类图:
这是逻辑:
the value should be saved according to the fieldType ( date , char , long , double... )
但是,从数据库架构师的角度来看,这种循环关系是不正确的,因为它可能导致完整性问题:
如果你有任何想法如何解决这个问题,欢迎发表评论。
提前感谢您的帮助。
答案 0 :(得分:1)
这里的情况比你的其他类似问题更简单。很明显,底层两个类描述抽象文档结构,而前两个类描述具体文档。
抽象元素永远不应该依赖于具体的元素,所以只需要将两个垂直关联单向化并将它们指向抽象类。这将彻底打破循环依赖。
此外,我会进一步完善您的模型:
<强>更新强>
答案 1 :(得分:0)
我实际上无法看到您的建模目标。在我看来,你将元元素(DocumentType和DocumentField)与元元素的构建元素实例(Document和FieldValue)混合。
Document的语义是什么 - &gt; DocumentType关系?它是一个&#34; isA&#34;关系?如果是这样,为什么不使用扩展/泛化(继承)或接口实现(实现)?
为什么需要反向关系DocumentType - &gt; Document?如果你可以避免它,你就不会有循环关系。
[更新] 为什么不在AbstractDocument中重命名DocumentType并使其成为抽象类。 然后用Document(Documentization)替换Document与DocumentType之间的关联(泛化) 最后创建一个从AbstractDocument到自身的1 .. *关联
[UPDATE2] 还要考虑根据您的解释,从Document到DocumentType的关联具有不同的语义,因此与从DocumentType到Document的关联不同(另一个关联)