【问题标题】:When does one use ternary relationships instead of binary ones in a database?什么时候在数据库中使用三元关系而不是二元关系?
【发布时间】:2017-09-20 05:21:12
【问题描述】:

我有个问题,如下:

一家互联网商店想要向客户发送电子邮件。它想保留一个数据库来记录哪些消息已发送给哪个客户。假设一封电子邮件有一个消息 ID (M-id)、一个主题 (Subject) 和消息正文 (Body)。客户通过电子邮件地址识别,其他客户信息包括姓名(Name)、性别(Gender)和地址(Address)。

当网店向客户发送电子邮件时,SendDate 会被记录。

现在我们应该使用上面给出的信息绘制一个 ERD,然后绘制一个关系数据库模式。

根据加粗的说法,我画了下面的ERD,不知道基数和参与度怎么办: 问题的答案是这样的: 请注意,Send 是一个弱实体,并且 email 与 contains、send 和 customer 之间存在完全的参与。

Q1:为什么我不能在这个例子中使用三元关系?

Q2:不管这个问题,在三元关系中,我们如何确定基数和参与度?

Q3:如何得出最终答案?

【问题讨论】:

    标签: database relationship erd ternary


    【解决方案1】:

    Q1:为什么我不能在这个例子中使用三元关系?

    问题表明电子邮件是代表单个 Internet 商店记录的。不用在每个关联中都指定,整个数据库都属于store。

    如果您要对发送给多个互联网商店的客户的电子邮件进行建模,则适合使用三元关系。

    Q2:不管这个问题,在三元关系中,我们如何确定基数和参与度?

    关系中每个角色的基数是该角色中可以与其他角色的每个有效组合相关联的值的数量。例如。如果您有一个关系(A, B, C),那么A 的基数是A 中每个(B, C) 的有效组合可以出现的值的数量。如果(B, C) 是一个超级键,那么A 的基数就是一。

    参与更简单:对于每个角色,关联实体集中的所有值都必须参与关系,还是可以独立存在?我建议你也看看我对这个问题的回答:is optionality (mandatory, optional) and participation (total, partial) are same?

    Q3:如何得出最终答案?

    我不同意您发布的最终答案。在 ER 模型中,弱实体集不能有多个标识关系,通常有一个弱键。我怀疑作者可能使用了一些网络数据模型概念(例如将关系与外键约束混为一谈和/或认为只有实体可以具有属性)。

    我自己对这个问题的回答如下:

    【讨论】:

      猜你喜欢
      • 2019-05-09
      • 2017-01-08
      • 2010-10-14
      • 2012-05-22
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      相关资源
      最近更新 更多