Должен ли я сделать таблицу спецификаций доступной для ссылок?
-
11-09-2019 - |
Вопрос
Поскольку я знаю, что здесь много опытных разработчиков ядра базы данных, я решил задать этот вопрос в stackoverflow.
Я разрабатываю веб-сайт, главной задачей которого является индексирование каждого продукта, доступного в реальном мире, такого как цифровые фотоаппараты, принтеры, холодильники и так далее.Как мы знаем, каждый продукт имеет свои собственные спецификации.Например, цифровой фотоаппарат имеет свой вес, объектив, скорость затвора и т.д.Каждая спецификация имеет свой тип.Например, цена (я вижу это как спецификацию) - это число.
Я думаю, что самый стандартный способ - это создать все спецификации, необходимые для определенного продукта, с соответствующим типом и присвоить его продукту.Таким образом, для каждого отдельного продукта должна быть создана ЦЕНА и на ней должен быть установлен номер типа.
Итак, вот мой вопрос, возможно ли создать таблицу для спецификаций со всеми спецификациями в ней, чтобы, например, ЦЕНА с типом номера была создана ранее, и просто нужно найти цену в таблице и присвоить ее продукту.Проблема с этим методом заключается в том, что я не вижу хорошего способа запретить пользователю создавать повторяющиеся записи.Он должен быть в состоянии найти нужную ему спецификацию (если она была добавлена ранее), и я также хочу, чтобы он знал, что найденная им спецификация на самом деле именно та, которая ему нужна, поскольку могут быть некоторые спецификации с одинаковым именем, но разного типа и использования.Если он этого не найдет, он это создаст.
Есть какие-нибудь идеи?
---------------------------- ОБНОВЛЕНИЕ ----------------------------
Мой вопрос не о гибкости БД.Я думаю, что при втором способе пользователи перепутают таблицу спецификаций!Они создадут тысячи повторяющихся записей, и также я думаю, что они не найдут своих надлежащих спецификаций.
Решение
Моя предлагаемая модель данных основана на ваших требованиях:
SPECIFICATIONS
таблица
SPECIFICATION_ID
, пкSPECIFICATION_DESCRIPTION
Это позволяет вам иметь множество спецификаций, не будучи привязанным к какому-либо изделию.
ITEM_SPECIFICATION_XREF
таблица
ITEM_ID
, pk, fk кITEMS
таблицаSPECIFICATION_ID
, pk, fk кSPECIFICATIONS
таблицаVALUE
, пк
Преимущества:
- Создание составного первичного ключа гарантирует, что набор значений будет уникальным во всей таблице.Благословение или проклятие, предмет с заданной спецификацией может иметь значения 0.99 и 1.00 - они были бы допустимы.
- Эта настройка позволяет связать спецификацию с элементами 0+.
Другие советы
Я только что закончил отвечать Генерация динамической таблицы в котором обсуждается аналогичная проблема.Взгляните на схема наблюдения.Если вы замените "наблюдение" на "спецификацию" и "предмет" на "продукт", вы можете найти эта модель полезно - вам не понадобятся таблицы Report и Rep_mm_Obs.