防止数据库设计中的圈子

时间:2014-02-01 21:51:24

标签: database database-design

这是我的表说明:

用户

  • ID
  • 名称
  • 密码

文章

  • ID
  • USER_ID
  • 文本

注释

  • ID
  • 文本
  • USER_ID
  • ARTICLE_ID

正如你所看到的,我在这个设计中有一个圆圈,你有任何想法阻止这个吗?

2 个答案:

答案 0 :(得分:0)

没有圆圈(或者更准确地说,是一个循环)。

数据库关系是方向性的,所以我们在这里有:

 Article --(User_ID)------> Users
   ^                         ^  
   |                         |
  (Article_ID)               |
   |                         |
 Comment------(User_ID)------|

您可以通过两种不同的方式访问用户,但这不是一个循环。

文章和评论中的User_ID可能意味着两个不同的东西,所以这是一个非常好的设计。

答案 1 :(得分:0)

如果我错了,请纠正我,但我假设这是你当前的模特:

enter image description here

  • User可能有多个Article s
  • User文章
  • 上可能有多个Comment
  • Article可能有多个Comment s

这是一个没有循环引用的有效模型。

User_ID用于不同的上下文;而且,即使有循环引用,它们也不错本身 - 只是针对某些特定情况的解决方案。 Oracle和MS SQL等数据库通过可延迟外键支持它们。