Я правильно нормализовал?

вид пользователя

Делал некоторые практические вопросы и просто хотел узнать, правильно ли я нормализуется. Благодарю.

Ненормализованная таблица

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

1NF Столы

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

2NF Столы

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

3NF Столы

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]

1 ответ

Решение

Поскольку в таблицах Unnormalized, 1NF и 2NF никогда не упоминается продавец, нет никаких оснований для расщеплений и дополнений, которые происходят при переходе от 2NF к 3NF в предыдущих схемах.

Кроме того, счет-фактура, скорее всего, напрямую связан с клиентом и продавцом (он будет иметь независимые ссылки FK на таблицу клиентов (которая не указана в схеме) и таблицу продавцов). Таблица Invoice_SalesPerson выглядит ложной, а удаление номера клиента из Invoice выглядит сомнительным. Это можно сделать так, как вы показали, но я бы никогда не пометил это как правильное без четкого, подробного и убедительного объяснения того, почему это было необходимо (и я все еще скептически относился бы к тому, что это не нужно).

Другие вопросы по тегам