Путаница в настройке функциональных зависимостей

Учитывая следующее определение таблицы:

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}

Мне также дают следующие примечания / ограничения:

  1. Грузовик базируется на одной базе.

  2. База может быть основой для многих грузовых автомобилей.

Во всяком случае, у меня вопрос на самом деле довольно простой и (возможно) совершенно новый. Что меня смущает, так это BaseNum.

Обратите внимание, у меня есть это:

TruckNum -> (...) BaseNum

а потом

BaseNum -> (...)

Посмотрите, как я использую BaseNum дважды? Это разрешено?

Определение для 1NF состоит в том, что в таблице не должно быть повторяющихся групп. Но это не только для определения таблицы (а не FDs)? Я не совсем понимаю.

2 ответа

Решение

Из того, что я вижу / понимаю в вашей ситуации, вы идете в правильном направлении.

У вас есть список атрибутов, и при нормализации (на самом деле вы опережаете 1NF), вполне нормально, что вы используете BaseNum в качестве атрибута в таблице Trucks.

Ваши функциональные зависимости легко конвертируются в пары PK/FK. С этой точки зрения вы также идете в правильном направлении.

У меня никогда не было формального курса баз данных как предмета информатики, но практическое определение 1NF состоит в том, что в ячейке таблицы не может быть списков значений, разделенных запятыми. Вот и все.

Таким образом, вы можете иметь функциональные зависимости, как описано в OP. Пока вы храните свои trackNums (или другие объекты) в отдельных строках некоторой таблицы, а не в виде списков, разделенных запятыми, это будет соответствовать 1NF.

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