我想问一下这个schema设计是不是循环引用。
语言 <--(one-to-many)--> 用户语言 <--(many-to-one)-->配置文件 <--(one-to-one)--> 用户 --(一对多)--> UserProject --(多对一)--> 项目 <--(one-to-many)--> 项目语言 --(多对一)--> 语言
如果是这样,我该如何解决这个问题?
提前谢谢您
我找到了这两个参考文献
https://medium.com/akurey/dont-be-circular-b59c5609d472
https://www.codeproject.com/Articles/38655/Prevent-Circular-References-in-Database-Design
第一个说我应该添加一个中间表,另一个说我应该删除其中一个关系并修改架构
这个设计很好,没有歧义或可能的不一致,事实上,在任何重要的模型中,这种“循环”都是很常见的。唯一的潜在问题是技术问题,例如MS SQL Server(与 Oracle 不同,我不知道其他的)将图视为无向,并且如果您尝试将级联更新/删除附加到图的非叶节点,则会抱怨存在循环:这是 DBMS 的一个(众所周知的)技术限制,而不是模型本身的限制。