Как мне продолжить эту базу данных? (привязка характеристик с предопределенными значениями к категориям)

Я изо всех сил пытаюсь понять, как мне это нужно сделать. Итак, моя проблема: я должен позволить кому-то продавать продукт на веб-сайте. Перед продажей он должен выбрать определенную категорию. Каждая категория имеет разные характеристики, которые могут быть отмечены, и эти характеристики полностью зависят от выбранной категории. Значения этих характеристик предопределены и уже внесены в базу данных.

Теперь у меня вопрос, как мне продолжить с этим? Как связать эти характеристики с выбранной категорией и как связать разное количество предопределенных значений с этими конкретными характеристиками?

пример:


категория: клавиатура
характеристики: условие (раскрывающийся список), раскладка клавиатуры (раскрывающийся список), дополнительные параметры (множественный выбор)
условие имеет 3 варианта: новая, как новая, бывшая в употреблении
раскладка клавиатуры имеет 2 варианта: qwerty, azerty
дополнительные параметры - множественный выбор, имеет 3 варианта: игровая клавиатура, беспроводная, 60%


второй пример:


категория: ноутбук
характеристики: состояние (раскрывающееся меню), частота обновления (раскрывающееся меню)
условие имеет 3 варианта: новое, как как новый, подержанный
Имеется 5 вариантов частоты обновления: 50 Гц, 60 Гц, 120 Гц, 144 Гц, 240 Гц


Теперь мне пришлось бы проделать эту работу в моей базе данных, но я даже не могу понять это на диаграмме реляционной базы данных.

Любая помощь, безусловно, будет оценена по достоинству!


person xenomorphing    schedule 02.05.2020    source источник


Ответы (1)


Я бы так распределил поля:

КАТЕГОРИИ (клавиатура, ноутбук)
id
имя

АТРИБУТЫ (частота_обновления, макет)
идентификатор
имя

ОСОБЕННОСТИ (50 Гц, 60 Гц, qwerty и т. д.)
id
attribute_id
имя

CATEGORIES_ATTRIBUTES
id
category_id
attribute_id

ПРОДУКТЫ
идентификатор
имя
category_id
условие (может быть перечисление, я поместил его здесь, поскольку у каждого продукта есть условие)

PRODUCT_FEATURES
product_id
attribute_id (избыточно, но может спасти вас от объединения при выполнении запросов)
feature_id

Ваше здоровье!

person Damil    schedule 02.05.2020
comment
Спасибо за ответ, не ожидал так быстро! Я не хочу извлекать из вас выгоду, но не могли бы вы помочь мне продолжить работу над другой частью? Было бы очень признательно! stackoverflow.com/ questions / 61576225 / - person xenomorphing; 03.05.2020