数据库规范化和结构

时间:2013-04-29 19:14:33

标签: database database-design relational-database theory database-theory

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

Customers
Transactions (Type A)
Transactions (Type B)

我们正在添加Comments

Customers还有一个Transactions ATransactions B Comments可以与TransactionsCustomer

相关联

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

一方想要创建一个评论表和三个交叉表。 一方想要创建一个带有客户外键的评论表和2个可以为交易的可空键。

是否存在一个普通表格规则,表明一个比另一个好?有没有达成共识?

编辑:

更多答案和细节

  • 评论永远不会与多个客户相关联
  • 评论永远不会与多个交易相关联
  • 评论只会与交易A,交易B或两者都无关;但从来没有两个
  • 客户和交易可能有0条或更多条评论

1 个答案:

答案 0 :(得分:1)

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

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