1

我有一个包含以下表格的数据结构

Customers
Transactions (Type A)
Transactions (Type B)

我们正在添加一个Comments表格

Customers多一个,Transactions A并且Transactions B Comments可以与 theTransactions或 the相关Customer

我们正在就数据库格式进行内部讨论。

一方想要创建一个评论表和 3 个交叉表。一方想要创建一个评论表,其中包含客户的外键和交易的 2 个可空键。

是否有一个范式规则说一个比另一个更好?有没有共识?

编辑:

更多答案和细节

  • 评论永远不会与一个以上的客户相关联
  • 评论永远不会与一个以上的交易相关联
  • 评论只会与交易 A、交易 B 或两者都不相关;但绝不会两者兼而有之
  • 客户和交易可能有 0 条或更多评论
4

1 回答 1

1

最重要的范式(1NF-6NF、BCNF 和衍生物)不允许在表中使用空值,因为它们都只基于与值的关系,而不是空值。更有用的是,有一个称为正交设计原则的设计原则,它指定不应允许具有相同属性的元组出现在模式中的多个位置。您的两个事务表和在多个地方有评论似乎很可能会打破正交设计的规则。

您可以创建一个父事务表,它结合了两个事务表的公共属性,包括注释属性(超类型/子类型模式)。

于 2013-04-29T20:38:27.617 回答