【问题标题】:How to design this database to avoid Circular Reference between 3 tables如何设计此数据库以避免 3 个表之间的循环引用
【发布时间】:2015-12-17 17:51:06
【问题描述】:

我有 3 张桌子。

  • 发布
  • 喜欢

当我设计 ER 时,它具有循环引用(循环依赖)..

 1:N

人 --------

 1:N

发帖----------

 1:M

人 --------

逻辑是

  • 1 个人可以发布多个帖子。
  • 1 条帖子获得了很多赞。
  • 1人可以点赞多个帖子(创建的人不能点赞自己的 发布)。

我怎样才能去除这种循环设计?还是我的数据库设计错了??

任何建议..谢谢提前

【问题讨论】:

  • 我不确定你的意思,我没有看到循环引用。
  • 人发帖和点赞三个是相互关联的??是不是循环引用
  • 不,不一定。您需要发布实际的数据结构。
  • 另外,你的第三个关系不正确。这是 1:N,而不是 N:M。
  • 您需要发布实际的 DDL。但是,如果您的结构类似于下面发布的@bcampolo,那么它就不是循环引用。请参阅此线程中的答案:stackoverflow.com/questions/14999131/avoid-circular-dependency

标签: mysql sql database design-patterns


【解决方案1】:

我不确定您的示例中哪个部分是循环的,但我首先想到的设计是这样的:

人员
第 1 列:个人 ID
第 2 列:姓名

发布
第 1 列:发布 ID
第 2 列:发布的人员 ID


Column1:赞 ID
Column2:被赞的帖子 ID
Column3:赞帖子的个人 ID

【讨论】:

  • 我是这样设计的,但我认为 likes 表有循环引用..我不确定..当我通过 post 从 like 表中获取人时。它会加载无限数据??跨度>
  • 不。没有无限数据。无论您试图通过查询获得什么答案,都可以不使用循环引用。
  • 虽然这是一个不错的设计,但我认为 likes 表中的 LikeId 字段没什么用处。
  • @Dan Bracuk - 是的,它不是必需的,但它提供了一个主键,以后可以用作另一个表中的 FK 或用作 RESTful 服务中的资源标识符。
猜你喜欢
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多