У меня есть ряд отдельных элементов, хранящихся в разных таблицах MySQL, которые я хотел бы поместить в древовидную иерархию. Используя модель списка смежности, я могу добавить поле parent_id в каждую таблицу и связать таблицы с помощью отношения внешнего ключа.
Однако я хотел бы использовать модель обхода дерева вложенных наборов/модифицированного предварительного заказа. Данные будут использоваться в среде, которая сильно ориентирована на чтение, и типы запросов, которые я ожидаю выполнять, благоприятствуют этому подходу.
Проблема в том, что вся информация о вложенных множествах, которая у меня есть, предполагает, что у вас есть только один тип элементов, хранящихся в одной таблице. Способы обойти это, о которых я могу думать, следующие:
- Наличие нескольких полей внешнего ключа в дереве, по одному для каждого типа таблицы/элемента.
- Сохранение имени таблицы элементов в древовидной структуре, а также идентификатора элемента.
Оба подхода, мягко говоря, неэлегантны, так что есть ли лучший способ сделать это?