Должен ли я сделать таблицу спецификаций ссылочной? - PullRequest
0 голосов
/ 01 ноября 2009

Поскольку я знаю, что здесь есть много опытных разработчиков ядра баз данных, я решил задать этот вопрос по stackoverflow.

Я занимаюсь разработкой веб-сайта, главной задачей которого является индексирование каждого продукта, доступного в реальном мире, например цифровых камер, принтеров, холодильников и т. Д. Как известно, каждый продукт имеет свои технические характеристики. Например, цифровая камера имеет свой вес, объектив, скорость затвора и т. Д. Каждая спецификация имеет тип. Например, цена (я вижу это как спецификацию) это число.

Я думаю, что наиболее стандартным способом является создание любых спецификаций, необходимых для указанного продукта с его соответствующим типом, и назначение его продукту. Таким образом, для каждого отдельного продукта должна быть создана ЦЕНА, и на ней должен быть установлен номер типа.

Итак, вот мой вопрос: возможно ли иметь таблицу для спецификаций со всеми спецификациями в ней, например, ЦЕНА с типом числа была создана ранее и просто нужно найти цену в таблице и присвоить ее продукт. Проблема этого метода в том, что я не вижу хорошего способа предотвратить создание дублирующихся записей пользователем. Он должен быть в состоянии найти спецификацию, которая ему нужна (если она была добавлена ​​ранее), и я также хочу, чтобы он знал, что спецификация, которую он находит, на самом деле является той, которая ему нужна, поскольку могут быть некоторые спецификации с тем же именем, но другой тип и использование. Если он не найдет его, он создаст его.

Есть идеи?

---------------------------- ОБНОВЛЕНИЕ ------------------ ----------

Мой вопрос не о гибкости БД. Я думаю, что во втором методе пользователи испортят таблицу характеристик! Они создадут тысячи повторяющихся записей, а также я думаю, что они не найдут свои правильные спецификации.

Ответы [ 2 ]

1 голос
/ 02 ноября 2009

Я только что закончил отвечать Генерация динамической таблицы в котором обсуждается похожая проблема. Взгляните на схему наблюдения . Если вы замените «наблюдение» на «спецификация» и «предмет» на «продукт», вы можете найти эту модель полезной - вам не понадобятся таблицы Report и Rep_mm_Obs.

0 голосов
/ 02 ноября 2009

Моя предложенная модель данных на основе ваших требований:

SPECIFICATIONS стол

  • SPECIFICATION_ID, шт
  • SPECIFICATION_DESCRIPTION

Это позволяет иметь множество спецификаций без привязки к элементу.

ITEM_SPECIFICATION_XREF таблица

  • ITEM_ID, pk, fk to ITEMS table
  • SPECIFICATION_ID, pk, fk to SPECIFICATIONS table
  • VALUE, шт

Преимущества:

  1. Превращение первичного ключа в составной гарантирует, что набор значений будет уникальным по всей таблице. Благо или проклятие, предмет с заданной спецификацией может иметь значения 0,99 и 1,00 - они будут действительными.
  2. Эта настройка позволяет связать спецификацию с 0+ элементами.
...