0

Должен ли v_type находиться в отдельной таблице, да или нет, объясните, какое правило нормирования применяется? Я хочу, чтобы эта таблица нормализовалась до 3NF.Путаница нормализации - это нечто вроде транзитивной зависимости?

Vechile 
v_id (pk) | V_name  | V_type 
---------------------------------- 
v1   Ferrai  car 
v2   merto   train 
v3   City_bus  bus 
v4   Lamborgini car 
v5   grey hound bus 
+1

Необходимо определить ключи-кандидаты и зависимости. Вы указали v_id как PK, но этого недостаточно для продолжения. Неясно, каков будет детерминант (ы) v_type. – sqlvogel

+0

так значит, что v_type должен быть на отдельной таблице, здесь V1 определяет имя транспортного средства (V_name), но я запутаюсь, что v_name или V-id определяет тип. какое предположение вы можете сделать. – mhrzn

+0

Вы должны решить, что определяет v_type на основе вашего анализа и понимания бизнес-домена. Вы не можете применять принципы нормализации, если не будете правильно понимать проблему, которую пытаетесь решить. – sqlvogel

ответ

0

Насколько это стоит, эта таблица нормализована. Законно использовать такие строки, как «автомобиль» или «метро» в качестве первичного ключа для таблицы V_type, или как атрибуты таблицы вашего автомобиля. Нормализация будет нарушена только в том случае, если вы добавите дополнительные атрибуты объекта V_type в таблицу транспортного средства, например. атрибут public, который определяет, является ли это государственным или частным транспортом.

Даже если у вас нет таких дополнительных атрибутов, может возникнуть причина для разделения типов транспортных средств на собственную таблицу. Таким образом, вы можете контролировать, какие типы транспортных средств могут существовать. В вашем текущем дизайне, если кто-то занесет запись, такую ​​как

v18 Mercedes cra 

, что было бы принято. Если, однако, у вас есть таблица типа транспортного средства, которая содержит записи только для действительных типов транспортных средств, таких как автомобиль, метро, ​​автобус и поезд, вы можете обеспечить с помощью ограничения внешнего ключа, что таблица автомобилей будет ссылаться только на эти типы.

+1

Я считаю, что потенциальное нарушение 3NF, о котором беспокоит @mhrzn, это v_name-> v_type. В приведенной информации мы не знаем, должна ли эта зависимость выполняться или нет, мы также не знаем, является ли v_name ключом или нет, поэтому мы не знаем, удовлетворяет ли таблица транспортного средства 3NF. – sqlvogel