Дизайн базы данных: одна и та же сущность, разные отношения - PullRequest
0 голосов
/ 05 сентября 2018

Я работаю над сборкой платформы электронной коммерции с использованием Django и Postgresql. В моей платформе у меня есть сущность с именем «Категория» и сущность с именем «Атрибут». Категория может иметь несколько атрибутов, но атрибут может принадлежать только одной категории.

Например, категория «цифровая камера» может иметь в качестве атрибутов объектив, качество изображения и т. Д.

Я понял, что некоторые атрибуты могут принадлежать всем категориям. Например: упаковка, доставка, обслуживание клиентов и т. Д.

В дополнение к этим общим атрибутам в будущем у меня могут появиться атрибуты, которые принадлежат нескольким категориям. Например, батарея может принадлежать всем категориям в отделе электроники (категории принадлежат отделу). Но я не уверен, что это хорошая идея, поскольку она может усложнить задачу.

Какой лучший способ подойти к этому? Обратите внимание, что мне нужно часто запрашивать общие атрибуты. Я думал о следующих решениях:

  1. Создайте категорию по умолчанию и назначьте эти атрибуты этой категории. В коде напишите специальную логику, которая всегда будет смотреть на эти категории.
  2. Разрешить использование внешнего ключа в таблице атрибутов. Таким образом, атрибут не может принадлежать ни к какой конкретной категории, что указывает на то, что он принадлежит всем категориям.
  3. Создайте еще одну таблицу для общих атрибутов.
  4. Сохранить отношение категории-атрибута в третьей таблице. Но тогда у меня вопрос: как я могу запросить атрибуты, которые не принадлежат какой-либо конкретной категории?

Заранее благодарен за помощь.

UPDATE: Не уверен, что это лучшее решение, но я выбрал легкий путь и в итоге установил взаимозависимое отношение m2m между атрибутом и другими моделями. Спасибо всем за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...