你如何解决关系数据库悖论?

时间:2013-08-02 06:22:00

标签: sql foreign-keys relational-database

我有一个网站正在进行中,用户在Feed中创建帖子,并且可能有很多Feed。他们的个人资料将显示他们选择的默认Feed。

此悖论中的3个表格是“帐户”,“个人资料”和“供稿”。 配置文件中的条目包含有关用户的其他信息。这是在一个单独的表中,因为它可能会更频繁地修改,并且许多查询使用accounts表而不需要此信息。

帐户(个人资料)中的字段必须引用个人资料。我已经这样做了,而不是使用配置文件引用帐户,因为否则帐户可能没有配置文件。没有帐户的配置文件将是已停用帐户的结果(前提是用户明确选择不从网站中删除其个人资料)。

配置文件中的字段(default_feed)必须引用Feed。这可能会经常更改,大多数查询都不需要这样做,因此这对于这些数据来说似乎是一个合理的位置。

Feed中的字段必须引用帐户;所有Feed都有一个创建者。

您可能已经看到了我的问题,但我会详细说明: 我不能在没有制作个人资料的情况下创建一个帐户,如果没有制作饲料我无法创建,如果不进行帐户等我就无法制作...

我必须放弃已停用帐户的配置文件的功能(这不会是一个大问题,但我想知道是否有另一种方式),或者是否有一个明智的技巧可以让我解决这种关系的自相矛盾的性质?

编辑:我已经意识到我可以简单地设置default_feed字段,因此允许它为null,并让应用程序处理这种特殊情况(无论如何都应该发生,因为使用该帐户创建了一个feed)此用户没有默认Feed“消息。我仍然想知道我是否错过了更有创意的解决方案。

1 个答案:

答案 0 :(得分:2)

打破依赖关系的一种简单方法是使配置文件中的default_feed成为可空。

  • 首先创建默认Feed设为null的配置文件
  • 创建引用该配置文件的帐户。
  • 设置帐户后,使用已创建为所有者的帐户创建默认Feed。