Должен ли я сделать таблицу спецификаций ссылочной?
Так как я знаю, что здесь есть много опытных разработчиков ядра базы данных, я решил задать этот вопрос по stackru.
Я занимаюсь разработкой веб-сайта, основной задачей которого является индексирование каждого продукта, доступного в реальном мире, например цифровых камер, принтеров, холодильников и т. Д. Как известно, у каждого продукта есть свои технические характеристики. Например, цифровая камера имеет свой вес, объектив, скорость затвора и т. Д. Каждая спецификация имеет тип. Например, цена (я вижу это как спецификацию) это число.
Я думаю, что наиболее стандартным способом является создание любых спецификаций, необходимых для определенного продукта с его правильным типом, и назначение его продукту. Таким образом, для каждого отдельного продукта должна быть создана ЦЕНА, и на ней должен быть установлен номер типа.
Итак, вот мой вопрос: возможно ли иметь таблицу для спецификаций со всеми спецификациями в ней, например, PRICE с типом числа была создана ранее и просто нужно найти цену в таблице и присвоить ее продукту. Проблема с этим методом в том, что я не вижу хорошего способа предотвратить создание дублирующихся записей пользователем. Он должен быть в состоянии найти спецификацию, в которой он нуждается (если она была добавлена ранее), и я также хочу, чтобы он знал, что спецификация, которую он находит, на самом деле является той, которая ему нужна, поскольку могут быть некоторые спецификации с тем же именем, но другой тип и использование. Если он не найдет его, он создаст его.
Есть идеи?
---------------------------- ОБНОВИТЬ --------------------- -------
Мой вопрос не о гибкости БД. Я думаю, что во втором методе пользователи испортят таблицу характеристик! Они создадут тысячи повторяющихся записей, а также я думаю, что они не найдут свои правильные спецификации.
2 ответа
Моя предлагаемая модель данных на основе ваших требований:
SPECIFICATIONS
Таблица
SPECIFICATION_ID
, ркSPECIFICATION_DESCRIPTION
Это позволяет иметь множество спецификаций без привязки к элементу.
ITEM_SPECIFICATION_XREF
Таблица
ITEM_ID
pk, fk toITEMS
ТаблицаSPECIFICATION_ID
pk, fk toSPECIFICATIONS
ТаблицаVALUE
, рк
Выгоды:
- Создание первичного ключа в качестве составного гарантирует, что набор значений будет уникальным по всей таблице. Благо или проклятие, предмет с заданной спецификацией может иметь значения 0,99 и 1,00 - это будет допустимо.
- Эта настройка позволяет связать спецификацию с 0+ элементами.
Я только что закончил отвечать на Dynamic Table Generation, где обсуждается похожая проблема. Посмотрите на схему наблюдения. Если вы замените "наблюдение" на "спецификация" и "предмет" на "продукт", вы можете найти эту модель полезной - вам не понадобятся таблицы Report и Rep_mm_Obs.