什么时候在数据库中使用三元关系而不是二元关系?
When does one use ternary relationships instead of binary ones in a database?
我有个问题,如下:
一家互联网商店想要向客户发送电子邮件。它想要保留一个数据库来记录哪些消息已发送给哪个客户。假设一封电子邮件有邮件 ID (M-id)、主题 (Subject) 和邮件正文 (Body)。客户是通过他的电子邮件地址来识别的,其他客户信息包括姓名(Name)、性别(Gender)和地址(Address)。
当网上商店向客户发送电子邮件时,将记录 SendDate。
现在我们应该用上面给出的信息绘制一个 ERD,然后绘制一个关系数据库模式。
根据大胆的说法,我画了下面的ERD,不知道基数和参与度怎么办:
问题的答案是这样的:
请注意,Send 是一个弱实体,email 和 contains、sends 和 customer 之间存在完全参与。
Q1:为什么我不能在这个例子中使用三元关系?
Q2:抛开这个问题,在三元关系中,我们如何确定基数和参与度?
Q3:如何得出最终答案?
Q1: Why can't I use a ternary relationship for this example?
问题表明电子邮件是代表单个 Internet 商店记录的。无需在每个关联中指定,整个数据库属于商店。
如果您要对发送给多个 Internet 商店的客户的电子邮件建模,则三元关系是合适的。
Q2: Regardless of this problem, in a ternary relationship, how do we determine the cardinality and participation?
关系中每个角色的基数是该角色中可以与其他角色的每个有效组合相关联的值的数量。例如。如果您有关系 (A, B, C)
,则 A
的基数是 A
中可以出现在 (B, C)
的每个有效组合中的值的数量。如果 (B, C)
是一个超级键,那么 A
的基数就是一个。
参与更简单:对于每个角色,关联实体集中的所有值是否都必须参与关系,或者一些可以独立存在?我建议你也看看我对这个问题的回答:.
Q3: How does one arrive to the final answer?
我不同意您发布的最终答案。在ER模型中,弱实体集不能有多重标识关系,通常有一个弱键。我怀疑作者可能正在使用一些网络数据模型概念(例如将关系与外键约束混为一谈 and/or 认为只有实体才能具有属性)。
我自己对这个问题的回答是这样的:
我有个问题,如下:
一家互联网商店想要向客户发送电子邮件。它想要保留一个数据库来记录哪些消息已发送给哪个客户。假设一封电子邮件有邮件 ID (M-id)、主题 (Subject) 和邮件正文 (Body)。客户是通过他的电子邮件地址来识别的,其他客户信息包括姓名(Name)、性别(Gender)和地址(Address)。
当网上商店向客户发送电子邮件时,将记录 SendDate。
现在我们应该用上面给出的信息绘制一个 ERD,然后绘制一个关系数据库模式。
根据大胆的说法,我画了下面的ERD,不知道基数和参与度怎么办:
Q1:为什么我不能在这个例子中使用三元关系?
Q2:抛开这个问题,在三元关系中,我们如何确定基数和参与度?
Q3:如何得出最终答案?
Q1: Why can't I use a ternary relationship for this example?
问题表明电子邮件是代表单个 Internet 商店记录的。无需在每个关联中指定,整个数据库属于商店。
如果您要对发送给多个 Internet 商店的客户的电子邮件建模,则三元关系是合适的。
Q2: Regardless of this problem, in a ternary relationship, how do we determine the cardinality and participation?
关系中每个角色的基数是该角色中可以与其他角色的每个有效组合相关联的值的数量。例如。如果您有关系 (A, B, C)
,则 A
的基数是 A
中可以出现在 (B, C)
的每个有效组合中的值的数量。如果 (B, C)
是一个超级键,那么 A
的基数就是一个。
参与更简单:对于每个角色,关联实体集中的所有值是否都必须参与关系,或者一些可以独立存在?我建议你也看看我对这个问题的回答:
Q3: How does one arrive to the final answer?
我不同意您发布的最终答案。在ER模型中,弱实体集不能有多重标识关系,通常有一个弱键。我怀疑作者可能正在使用一些网络数据模型概念(例如将关系与外键约束混为一谈 and/or 认为只有实体才能具有属性)。
我自己对这个问题的回答是这样的: