Я использую Модель Списка Смежности для создания категорий, и она работает отлично.
При получении статей в определенной категории (например, электроника), я хотел бы также получить статьи в sub категориях (например, электроника-> камеры или даже электроника-> камеры-> объективы фотокамеры).
Путем я делаю его, теперь вытягивает от DB весь идентификатор категории sub категорий электроники и находит все статьи с category_id в этом списке.
Это кажется мне очень неэффективным и трудоемким, так как это могло привести ко многим запросам для получения этих sub категорий.
Иначе я думал о выполнении, этому связывали каждую статью с целым деревом категории (например, статья об объективах фотокамеры будет также связана с камерой и категориями электроники в таблице MANY_MANY), и когда я получу все статьи в электронике, это также появится.
Это добавило бы много избыточных данных к базе данных, хотя, поскольку мне, возможно, придется сохранить 3 или 4 категории для каждой статьи. Кроме того, это усложнило бы действия как перемещение статьи к другой категории.
Действительно ли это - правильный способ пойти? Или есть ли лучший/более простой способ, которым я не думал?
Любая справка ценится!
Читайте эту статью о моделировании вложенных множеств: Управление иерархическими данными в MySQL.
Используя предложенную методику, можно получить целые деревья или поддеревья в одном SELECT. Это немного сложнее, чем "нормальный" подход, но это того стоит, если вы собираетесь делать много чтений из таблицы.
.