Я работаю над сборкой платформы электронной коммерции с использованием Django и Postgresql. В моей платформе у меня есть сущность с именем «Категория» и сущность с именем «Атрибут». Категория может иметь несколько атрибутов, но атрибут может принадлежать только одной категории.
Например, категория «цифровая камера» может иметь в качестве атрибутов объектив, качество изображения и т. Д.
Я понял, что некоторые атрибуты могут принадлежать всем категориям. Например: упаковка, доставка, обслуживание клиентов и т. Д.
В дополнение к этим общим атрибутам в будущем у меня могут появиться атрибуты, которые принадлежат нескольким категориям. Например, батарея может принадлежать всем категориям в отделе электроники (категории принадлежат отделу). Но я не уверен, что это хорошая идея, поскольку она может усложнить задачу.
Какой лучший способ подойти к этому? Обратите внимание, что мне нужно часто запрашивать общие атрибуты. Я думал о следующих решениях:
- Создайте категорию по умолчанию и назначьте эти атрибуты этой категории. В коде напишите специальную логику, которая всегда будет смотреть на эти категории.
- Разрешить использование внешнего ключа в таблице атрибутов. Таким образом, атрибут не может принадлежать ни к какой конкретной категории, что указывает на то, что он принадлежит всем категориям.
- Создайте еще одну таблицу для общих атрибутов.
- Сохранить отношение категории-атрибута в третьей таблице. Но тогда у меня вопрос: как я могу запросить атрибуты, которые не принадлежат какой-либо конкретной категории?
Заранее благодарен за помощь.
UPDATE:
Не уверен, что это лучшее решение, но я выбрал легкий путь и в итоге установил взаимозависимое отношение m2m между атрибутом и другими моделями. Спасибо всем за помощь.