【问题标题】:How do you solve a relational database paradox?如何解决关系数据库悖论?
【发布时间】:2013-08-02 06:22:00
【问题描述】:

我有一个网站正在开发中,用户可以在其中创建提要中的帖子,并且可能有许多提要。他们的个人资料将显示他们选择的默认提要。

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

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

配置文件 (default_feed) 中的字段必须引用一个提要。这可能会经常更改,并且大多数查询都不需要,因此这似乎是处理这些数据的明智之选。

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

您可能已经看到了我的问题,但我会详细说明: 不创建个人资料就无法创建帐户,不创建提要就无法创建帐户,不创建帐户就无法创建帐户等等......

我是否必须放弃停用帐户的配置文件功能(这不是什么大不了的事,但我想知道是否有其他方法),或者是否有一个明智的技巧可以让我解决这种关系的矛盾性质?

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

【问题讨论】:

    标签: sql foreign-keys relational-database


    【解决方案1】:

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

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

    【讨论】:

    • 在我编辑后一分钟。不过,这似乎是一个完美的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    相关资源
    最近更新 更多