Путаница в настройке функциональных зависимостей
Учитывая следующее определение таблицы:
TRUCK (TruckNum, TruckType, TypeDesc, TruckMiles, DatePurchased, TruckSerialNum, BaseCity, BaseState, BaseNum, BaseManagerName, ManagerPhone, BasePhone)
Мне нужно настроить список функциональных зависимостей.
Пока что у меня есть:
FDs = {TruckNum -> TruckType, TypeDesc, TruckMiles, DatePurchased, TruckSerialNum, BaseNum
BaseNum -> BaseCity, BaseState, BasePhone
BaseManagerName -> ManagerPhone}
Мне также дают следующие примечания / ограничения:
Грузовик базируется на одной базе.
База может быть основой для многих грузовых автомобилей.
Во всяком случае, у меня вопрос на самом деле довольно простой и (возможно) совершенно новый. Что меня смущает, так это BaseNum.
Обратите внимание, у меня есть это:
TruckNum -> (...) BaseNum
а потом
BaseNum -> (...)
Посмотрите, как я использую BaseNum дважды? Это разрешено?
Определение для 1NF состоит в том, что в таблице не должно быть повторяющихся групп. Но это не только для определения таблицы (а не FDs)? Я не совсем понимаю.
2 ответа
Из того, что я вижу / понимаю в вашей ситуации, вы идете в правильном направлении.
У вас есть список атрибутов, и при нормализации (на самом деле вы опережаете 1NF), вполне нормально, что вы используете BaseNum в качестве атрибута в таблице Trucks.
Ваши функциональные зависимости легко конвертируются в пары PK/FK. С этой точки зрения вы также идете в правильном направлении.
У меня никогда не было формального курса баз данных как предмета информатики, но практическое определение 1NF состоит в том, что в ячейке таблицы не может быть списков значений, разделенных запятыми. Вот и все.
Таким образом, вы можете иметь функциональные зависимости, как описано в OP. Пока вы храните свои trackNums (или другие объекты) в отдельных строках некоторой таблицы, а не в виде списков, разделенных запятыми, это будет соответствовать 1NF.