2016-04-25 2 views
0

Скажем, у меня есть эта таблица, где пицца код является первичным ключомНормализация и 3NF

pizza table

Является ли эта таблица в 3NF? Если я изменю имя пиццы, тогда, безусловно, будет затронута цена. Но в то же время, я могу видеть, что эта зависимость является изолированным, поэтому мой вопрос был:

  1. С текущей структурой данных, где представлены зависимости Наименование/Цена изолированы в отдельной таблице, мы можем сказать, что этот стол находится в 3NF?
  2. Если 2 столбца без ключа были частью более крупной, скажем, таблицы «Заказы» , тогда таблица ордеров не была бы в 3NF, правильно?
+0

Исправить. Храните только пиццакоды в таблице заказов. – jarlh

+0

Возможно, вы ищете медленно меняющийся размер, поэтому имя и цена могут меняться со временем для заданного кода. –

ответ

0

Вы должны спросить себя, что является смысл из PizzaCode в таблице:

  1. Это просто способ сокращенные названия (как это кажется, от текущих значений)? Другими словами, является ли операция изменения названия (и цены) пиццы чем-то, что можно рассматривать как вставку нового вида пиццы вместо старого?

  2. Он используется для однозначного определения определенного объекта (такой же объект), который может изменить название и/или цену?

В первом случае просто избавьтесь от него и используйте PizzaName как первичный ключ (и как внешний ключ в таблице заказов). Операция смены названия пиццы и ее цены будет эквивалентна добавлению новой пиццы и удалению старой (или просто вы можете пометить старый с атрибутом, доступным/недоступным, если вы хотите сохранить отслеживать все проданные пиццы).

Во втором случае используйте PizzaCode как первичный ключ и как внешний ключ в таблице Order.

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

  • Нет связанных вопросов^_^