Должен ли я разделить избыточные данные в моей базе данных? - PullRequest
1 голос
/ 04 октября 2011

У меня есть приложение базы данных, которое хранит цены на вещи в разных местах. С каждой ценой связаны следующие данные:

  • цена
  • дата
  • идентификатор продукта
  • страна
  • тип цены (фабрика / опт / розница)

Последние три элемента (pID, страна, тип цены) можно рассматривать как один составной элемент, описывающий назначение цены; в этих данных много избыточности. Поэтому я подумываю: разделить их в своей таблице, чтобы сэкономить место и упростить запросы.

Normal:
Prices (price_id, price, date, product_id, country_id, pricetype_id)

vs:
Prices (price_id, price, date, descriptor_id)
Descriptors (descriptor_id, product_id, country_id, pricetype_id)

Стоит ли это дополнительных усилий по программированию? Будет ли он более или менее расширяемым / поддерживаемым в долгосрочной перспективе?

Ответы [ 2 ]

1 голос
/ 04 октября 2011

Стоит ли это дополнительных усилий по программированию?

Да

Будет ли он более или менее расширяемым / поддерживаемым в долгосрочной перспективе?

Более расширяемый и простой в обслуживании.

В общем
Вы должны всегда нормализовать как минимум до 3NF.

См. Эту статью: http://databases.about.com/od/specificproducts/a/normalization.htm

0 голосов
/ 04 октября 2011

Это зависит от количества данных, которые вы ожидаете в этой таблице. Если у вас нет проблем с производительностью / хранилищем, вам не нужны отдельные таблицы (из соображений производительности).

С другой стороны, вы получите все недостатки, связанные с избыточностью. Вы должны проверить свои данные на наличие несоответствий и т. Д.

Но: Независимо от выбранного вами дизайна, еще есть время изменить дорогу, по которой вы идете.

...