2012-05-15 3 views
0

Итак, у меня есть 2 стола. Имя первой таблицы является owner сВыполняет ли эта конструкция базы данных 2NF или 3NF?

owner_id primary key 
first_name 
last_name 

и у меня есть еще один стол car с

car_reg_no primary key 
car_type 
car_make 
car_model 
car_origin 
owner_id foreign key 

Это дизайн в 2НФ или 3NF или ни?

+0

Это домашнее задание? Если это так, пометьте его как таковой. –

+0

нет домашней работы. –

ответ

1

A 3NF означает его в 2NF, и нет transitive functional dependencies. В несколько более понятных терминах: «все атрибуты зависят от ключа, всего ключа и ничего, кроме ключа».

Первая таблица выполняет все это, поэтому она находится в 3NF.

Вторая таблица нуждается в некотором анализе: существуют ли функциональные зависимости от не-ключей? В частности, может ли быть одна и та же модель автомобиля, принадлежащая другому марку?

  • Если да, то функциональная зависимость car_model ->car_makeне существует, и таблица в 3NF (если какой-либо другой зависимости не нарушает 3NF - см комментарий car_origin ниже).
  • Это нет, то есть car_model ->car_make который нарушает 3NF.

Кроме того, в чем смысл car_origin? Если он функционально зависит от не-ключа, это также может нарушить 3NF.

+0

Нет 2 автомобилей, изготовленных разными производителями, не может иметь такую ​​же модель. Так что я думаю, что это нарушает 3NF. –

+0

@SomeBody Yup, это означало бы, что это нарушает 3NF. –

2

AFAIK, 2NF, из-за взаимозависимости полей таблицы car. Вам понадобится третий стол для car_type, в котором перечислены марка, модель и происхождение, а также иностранный car_type_id в таблице car.

+0

Я согласен, что данные типа автомобиля будут дублированы –

+0

Нормализация не имеет ничего общего с добавлением суррогатных идентификационных номеров. –

+0

@Catcall: нет, но он имеет какое-то отношение к дублированию данных. Новое поле - это просто средство для достижения цели. – Amadan

Смежные вопросы