在模式中合并两个关系的规则是什么?

时间:2017-05-19 23:11:13

标签: database merge schema

例如,我在分解关系并将它们转换为3NF后创建了一个关系模式(用于在线书店)。以下是两个关系。

ShoppingCart(CartID{PK}, TimeStamp)
CustomerCart(CartID{PK and FK}, Email)

这些可以合并吗?唯一的规则是将这两者合并在一起,他们需要拥有相同的主键吗?客户购物车中的CartID也是外键吗?

2 个答案:

答案 0 :(得分:0)

合并的一个好的经验法则* 应该是结果表中与主键没有直接关系的任何信息(列)(称为{{3} })。

当然,这种关系是1比1.(在数据库表示法意义上不是1:1但是两个表中的每个条目都应该匹配另一个中的一个条目)

因此,在您的情况下,如果CustomerCart(电子邮件)直接与ShoppingCart(CartId)相同的ID(因为它是外键AND也是确保唯一性的主键),那么您可以合并它们。 / p>

(*)仅此规则是不够的,请参阅所有规则的文档。

答案 1 :(得分:0)

了解规范化。一般情况的唯一规则是,在您加入表后,您需要的是NF。在这两种关系的某些特殊情况下,你可以知道他们的联系在那个NF中。在这种情况下,您无法通过JOIN替换它们,因为在CustomerCart中没有CartID的ShoppingCart行不会在加入中。

你不能通过" merge"来表达你的意思,但如果你通过为添加的CartID值的电子邮件设置NULL来修改CustomerCart以获得与ShoppingCart相同的CartID值集合,那么你可以通过连接替换两个表。即ShoppingCart LEFT JOIN CustomerCart包含与两个表相同的信息。