【问题标题】:Modeling cyclic 1:N relations in database在数据库中建模循环 1:N 关系
【发布时间】:2020-04-10 07:17:15
【问题描述】:

是否可以将以下 ER 图建模为 SQL 数据库表,尤其是因为循环 1:N 关系:

【问题讨论】:

  • use text, not images/links, for text--including tables & ERDs。转述或引用其他文本。只提供您需要的东西并将其与您的问题联系起来。仅将图像用于无法表达为文本或增强文本的内容。无法搜索或剪切和粘贴图像。在图片中包含图例/键和说明。
  • 为什么不能这样?它说有 3 个关系发生在每个关系上,涉及不同的实体对。吃(宠物,食物),讨厌(人,食物),拥有(人,宠物)。 “循环”到底是什么意思?为什么你认为这是个问题?如果您不说为什么会出现问题,那么除了该图表说明您的特定设计方法和图表风格所说的内容之外,我们还能说什么?你甚至不会试图找到一个有问题或没有问题的例子。
  • 请参阅我对 Thorsten Kettner 的回答的最后评论,该评论所讨论的问题不是您的图表所描述的。它正在谈论可能在您的图表描述的情况下存在的约束,但它不是由您的图表描述的内容引起的。也可以在那里查看我的其他 cmets。

标签: sql database-design database-schema entity-relationship


【解决方案1】:

这是一个完全正常的设计。

吃(宠物、食物)
讨厌(人,食物)
拥有(人,宠物)

随意分配 Es、Rs 和 1:Ms。

不必担心您碰巧注意到的某些模式,尤其是当您没有经验时。了解如何应用您的信息建模方法以及如何使用图表方法来表达其设计。

【讨论】:

    【解决方案2】:

    这是一种罕见的设计,但有可能。

    一个例子:您的数据库包含网站。每个网站都有聘请的作者撰写要在该网站上发表的文章。但是这些网站是相互友好的,并且每个网站都在其主页上链接到另一个网站的推荐文章。

    • E3 = 网站(website_id、域、recommended_article_id)
    • E1 = 作者(作者 ID、作者姓名、网站 ID)
    • E2 = 文章(article_id、text、author_id)

    问题是如何填写表格。您可能希望外键是强制性的,即一篇文章必须分配给一个作者,作者本身必须与一个网站相关联,该网站又必须包含链接的文章。不先添加作者就不能添加文章,没有网站就没有作者,没有文章就没有网站 - 经典的鸡或蛋的因果关系困境。

    解决方案是/或...

    • ... 使其中一列可以为空。例如。您可以插入没有链接文章的网站(即 website.article_id 可以为空)。然后在添加作者和文章后,您将更新网站表格行并设置链接文章。
    • ... 如果 DBMS 具有延迟约束,则可以使用它们。这意味着您插入所有行(网站、作者和文章),并且在插入时不检查外键的一致性(没问题,因此当网站被插入时,网站引用的文章不在文章表中)。然后,只有在提交数据时,才会检查外键并准备好所需的一切。

    通常采用第一种方法,因为我们很少真正希望所有关系都是强制性的。在给定的示例中,我们可以从一个没有任何链接文章的网站开始。只有稍后当我们添加另一个网站时,我们才能为这两个网站中的每一个添加一个交叉文章链接。

    【讨论】:

    • 问题中的关系是二元的。他们不能在一个实体上形成 FK 循环。这个答案不是问题的情况。
    • @philipxy:它们是 1:n 关系。什么是二元关系?
    • 您似乎不了解如何阅读 Chen 真实的 ER 图(问题显然是这样)或相关的标准数学术语。钻石是实体-关系模型和关系模型中的关系(船)/关联。二元关系是两个实体/值参与的关系。 FK 约束被错误地称为 ER 的方法错误地称为“关系”。它们是事实。或表和列列表上的元关系实例。请参阅我的回答和我们的 cmets here
    • 在 Chen 图中,arity >1 的所有关系(船舶)/关联都用菱形表示,每个参与者都有一条线。因此,您没有以与其一致的方式使用术语,并且您的设计与给定的图表不一致。 (陈图经典地不涉及部分参与与全部参与。)(线确实映射到 FK。)单独的 PS 表代表关系。约束没有。关系(船舶)/关联不是由 FK 建模的。然而,FK 约束与某个二元关系(船舶)/关联关联,该关联与 FK 所在的表的投影相关联。
    • 您描述/假设的涉及同时更新的约束是由于涉及给定图表无话可说的 3 个关系(船)/关联的约束。它所说的只是实体参与关系(船)/关联,即从关系(船)/关联表到实体表有 FK。此外,图中的 1:Ms 讨论了 3 个关系(船舶)/关联表中的每一个,并且与 FK 或 FK 被称为“关系”或“1:M”无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    相关资源
    最近更新 更多