我是否正确归一化?

Did I normalize correctly?

user view

正在做一些练习题,只是想知道我是否正确归一化了。谢谢。

Un-normalized Table

INVOICE [Invoice#(pk), InvoiceDate, Sales, Cust#,
          (EquipClass, EquipClassDesc, Equip#, EquipDesc, EquipCharge, EquipQTY)]

1NF Tables

INVOICE [Invoice#(pk), InvoiceDate, Sales, Cust#]
Equipment [ Invoice#(pk), Equip#,(pk), EquipClass, EquipClassDesc,
            EquipDesc, EquipCharge, EquipQTY)]

2NF Tables

INVOICE [Invoice#(pk), InvoiceDate, Sales, Cust#]
Equipment [Equip#,(pk), EquipClass, EquipClassDesc, EquipDesc, EquipCharge]
INVOICE_Equipment [Invoice#(pk) (FK), Equip# (pk) (FK), EquipQTY]

3NF Tables

INVOICE [Invoice#(pk), InvoiceDate, Salesperson#(fk)]
Salesperson [Salesperson#(pk), SalespersonName]
Invoice_SalesPerson [Invoice#(pk)(fk), Salesperson#(pk)(fk), Cust#]
Equipment [Equip#,(pk), EquipClass(fk), EquipDesc, EquipCharge,]
Equipment_Class [EquipClass(pk), EquipClassDesc]
INVOICE_Equipment [Invoice#(pk) (FK), Equip# (pk) (FK), EquipQTY]

由于非规范化、1NF 和 2NF table 从未提及销售人员,因此在先前模式中从 2NF 进展到 3NF 时发生的拆分和添加没有依据。

此外,发票更有可能直接与客户和销售人员相关联(它将具有对客户 table(未在模式中标识)和销售人员的独立 FK 引用 table). Invoice_SalesPerson table 看起来是虚假的,从发票中删除客户编号看起来很可疑。它可以按照你展示的方式完成,但如果没有清晰、冗长、有说服力的解释为什么这是必要的,我永远不会将其标记为正确的(而且我仍然怀疑它没有必要)。