Редактировать: на основе обновления вопроса мое предлагаемое решение выделено жирным шрифтом, ниже:
Во-первых, давайте выясним, действительно ли это ситуация "многие ко многим"потому что из вашего описания не ясно, правда это или нет.
Вы описываете древовидную структуру, в которой у сущности могут быть «вложенные» сущности, и, предположительно, у этих вложенных сущностей могут быть свои собственные вложенные сущности.Но это только вопрос «многие ко многим», если одна сущность может принадлежать одновременно нескольким родителям.
В любом случае вы сохраните все сущности в одной таблице. Если вы хотите представить «простое» дерево вложенных сущностей без множественного происхождения, то вы можете добавить столбец parent_entity_id
в таблицу entities
, который указывает на entity_id
родительского элемента.В этом столбце сущности верхнего уровня будут иметь либо значение флага (например, -1), либо NULL
. В этом случае вам потребуется только еще один столбец и никаких новых таблиц для представления взаимосвязи.
Если это отношение «многие ко многим» с несколькими родителями, то вы создадите новую таблицу entity_links
со столбцами parent_entity_id
и child_entity_id
.Вы управляете отношениями, вставляя и удаляя строки в этой таблице.