Должен ли я сделать таблицу спецификаций ссылочной?

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

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

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

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

Есть идеи?

---------------------------- ОБНОВИТЬ --------------------- -------

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

2 ответа

Решение

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

SPECIFICATIONS Таблица

  • SPECIFICATION_ID, рк
  • SPECIFICATION_DESCRIPTION

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

ITEM_SPECIFICATION_XREF Таблица

  • ITEM_IDpk, fk to ITEMS Таблица
  • SPECIFICATION_IDpk, fk to SPECIFICATIONS Таблица
  • VALUE, рк

Выгоды:

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

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

Другие вопросы по тегам