Я столкнулся с проблемой хранения иерархической структуры данных в реляционной базе данных.Ситуация осложняется тем фактом, что два уровня этой иерархии связаны отношением «многие ко многим».В настоящий момент я думаю о таком решении этой проблемы:
Как видите, я использую таблицу StructuralUnit в качестве своего рода интерфейса.Это создает проблему добавления данных в базу данных, сначала вам нужно добавить строки в StructuralUnit, а затем в одну из других таблиц.Это не очень удобный способ решения этой проблемы, особенно учитывая тот факт, что я пытаюсь использовать EF Core.Другой вариант, который я рассматривал, - это собрать все в один стол, как-то перенося отношения «многие ко многим» в другой.Но я не уверен, что это лучшее решение.
Не могли бы вы дать совет, как справиться с этой ситуацией?
UPD 1 : Мне нужно представить структуру контингента образовательного учреждения.Для этого у меня есть 4 уровня: группы, потоки, курсы и представлять все курсы на текущий год - контингент.Отношение «многие ко многим» вытекает из того факта, что некоторые потоки могут быть «виртуальными», что означает, что они не являются частью реального условного дерева, а состоят из групп, которые являются частью других «реальных» потоков.Следовательно, группа может иметь несколько родительских потоков.
Мне также необходимо хранить одну таблицу, в которой может быть ссылка на структурную единицу любого из 4 уровней.Вот откуда пришла эта интерфейсная таблица.(который на самом деле должен быть представлением, но, к сожалению (или к счастью?), нельзя ссылаться на представления в sql)
Надеюсь, я объяснил, что я пытаюсь сделать.