Как хранить модификации продукта в БД? - PullRequest
0 голосов
/ 12 ноября 2011

Может кто-нибудь объяснить, как продукты с модификацией могут храниться в базе данных.
Например:

  • Флэш-память USB

    • 2 Гб
      • красный (цена 9,90, в наличии 10)
      • черный (цена 9,90, в наличии 4)
      • белый (цена 9,90, в наличии 30)
    • 4Gb
      • красный (цена 15,90, в наличии 5)
      • черный (цена 15,90, в наличии 1)
    • 8Gb
      • красный (цена 20,90, в наличии 10)
  • Автомобиль Chevrolet Cruze

    • год 2010

      • коробка передач «механическая», двигатель «бензин 1,8 л», цвет «серый», цена: 20k, в наличии: 10
      • коробка передач «механическая»', двигатель' бензин 1.8L ', цвет' серый '
      • коробка передач' auto ', двигатель' disel 2.0L ', цвет' белый '
    • год выпуска 2011

      • коробка передач «механическая», двигатель «бензин 1,6 л», цвет «красный»
      • коробка передач «механическая», двигатель «бензин 1,6 л», цвет »черный '
      • коробка передач' авто ', двигатель' disel 2.0L ', цвет' белый 'и т. д.

Любой продукт можетесть много модификаций многих функций.Как это может быть сохранено в реляционной БД?EAV?

1 Ответ

2 голосов
/ 12 ноября 2011

Ну, не зная, что вы собираетесь делать с данными, трудно ответить.

Но при условии, что вы хотите охватить мир неограниченного количества типов и функций продуктов, вероятно, лучше всего иметь полностью общую таблицу «тип-значение».

Итак:

Таблица: ПРОДУКТЫ (все общие характеристики продукта)

Таблица: ФУНКЦИЯ (имя, комментарий и т. Д.)

Таблица: ФУНКЦИЯ-ПРОДУКТ (fk для продукта, fk для функции, значениефункция, измененная дата)

Вы можете включить функцию продукта для продукта со строго типизированными значениями и типом объекта.

Вы также можете рассмотреть вопрос об отсутствии таблицы объектов и просто использоватьстрока в элементе для каждого продукта

обновление: Я хотел бы указать минимальный объем данных в продукте и разделить столько функций.Вы всегда можете восстановить (мигает 2 ГБ красного) из трех функций, но другой способ намного сложнее.Компромисс заключается в большем количестве данных и больших запросах, но с приличными индексами и, возможно, некоторыми представлениями с кластерными индексами, которые можно обрабатывать

Так что мой совет: продукт представляет собой Flash USB, а цвет и гигабайт - это функции

...