Процесс нормализации базы данных в 3NF CustomerRental для CustNo, PropNo, OwnerNo и т. Д.
Я пытаюсь нормализовать следующую таблицу. Я хочу перейти от формы UNF к форме 3NF. Я хочу знать, что вы делаете на этапе 1NF? Там написано, что вы удаляете повторяющиеся столбцы или группы (например, ManagerID, ManagerName). Это считается повторяющимся, потому что это приводит к одним и тем же данным.
Таблица ненормализованных данных имеет следующие столбцы CustomerRental(CustNo,CustName,PropNo,PAddress,RentStart,RentFinish,Rent,OwnerNo,OName)
Нет повторяющихся столбцов / полей, и каждая ячейка имеет одно значение, но первичного ключа нет. Функциональные зависимости, которые я вижу в таблице:
{CustNo}->{Cname}
{PropNo}->{Paddress,RentStart,RentFinish,Rent,OwnerNo,Oname}
{CustNo,PropNo}->
{Paddress,RentStart,RentFinish,Rent,OwnerNo,OName,CustName}
{OwnerNo,PropNo}->{Rent,Paddress,Oname,RentInfo}
Первичный ключ, который я выбрал, был составным ключом, CustNo + PropNo. Так как он имеет первичный ключ, таблица в форме 1NF, правильно? Это то, что я подумал, но ответ исключает CustNo и CustName из таблицы. Они в своем собственном столе.
Из вышесказанного я нормализовал его 2НФ. На этом этапе вы должны убедиться, что все непростые атрибуты полностью зависят от первичного ключа. Это не вариант. Это функциональные зависимости в таблице:
{OwnerNo}->{Oname}
{CustNo}->{CustName}
{PropNo}->{Paddress,Rent,OwnerNo,Oname}
Я переместил эти значения из таблицы, чтобы создать три новые таблицы в форме 2NF:
Customers(CustNo(PK),CustName)
Property(PropNo(PK),Paddress,City,Rent,OwnerNo,OwnerName)
Rentals(RentalNo(PK),CustNo,OwnerNo,PropNo,RentStart,RentFinish)
Теперь основной стол Rentals находится в форме 2NF. У него есть первичный ключ, RentalNo, и каждый из непростых атрибутов зависит от него.
Я думаю, что есть переходная зависимость от этого. Вы можете найти OwnerNo через PropNo. Таким образом, чтобы он соответствовал правилам 3NF, вы должны переместить OwnerNo в свою собственную таблицу, чтобы создать эти таблицы:
Customers(CustNo,CustName)
Property(PropNo,Paddress,City,Rent)
Owners(OwnerNo,OwnerName)
Rentals(RentalNo,CustNo,PropNo,RentStart,RentFinish)
Это правильно? Я читал, что на этапе 1NF вы должны удалить повторяющиеся столбцы (например, OwnerNo,OwnerName). Это правда? Почему или почему нет?
Картинка с моими таблицами здесь: Нормализованные таблицы
1 ответ
Мы не нормализуем NF (нормальную форму), проходя более низкие NF между ним и 1NF. Мы используем проверенный алгоритм для NF, который мы хотим. Найдите его в опубликованном учебнике. (Если это не описывает ссылку (и), которую вам сказали использовать, найдите ту, которая есть, и процитируйте ее.)
Обратите особое внимание на сроки и действия. Детали имеют значение. Например, вам нужно знать все имеющиеся FD (функциональные зависимости), а не только некоторые из них. Например, всякий раз, когда держатся некоторые FD, выполняются все те, которые генерируются аксиомами Армстронга. Например, PK (первичные ключи) не имеют значения, CK (ключи-кандидаты) имеют значение. Например, на каждом столе есть CK. Например, нормализация к более высоким NF не изменяет имена столбцов. Так что уже ваш вопрос не отражает правильный процесс.
Вы действительно должны прочитать и процитировать ссылки, которые вам сказали использовать, чтобы перейти к "1NF", потому что "1NF" находится в поле зрения зрителя. Нормализация в высшие НФ работает на любом отношении.