Это дополнительный вопрос из раздела Как моделировать отношения между наборами узлов. Я повторю рекламу на случай, если этот вопрос будет удален или существенно изменен:
В настоящее время я изучаю моделирование высших учебных заведений и других подобных объектов (MATH101, BIOL360, BSc и т. д.), и один из вариантов, который мы рассматриваем, — это графические базы данных. Я не знаком с базами данных графов, кроме как в теории.
Одним из вариантов использования этой базы данных является запрос возможных путей прохождения курсов; например, отвечая на вопрос «какие минимальные комбинации курсов действительны для выполнения требований для получения степени бакалавра компьютерных наук с отличием?». Некоторые из требований будут простыми (квалификация требует, чтобы вы выполнили Comp101, Math101 и Comp201), а некоторые будут предоставлять варианты (требуется, чтобы вы выполнили 80 баллов по статьям, классифицируемым как «научные» работы на уровне 100 или выше).
Я нашел списки neo4j, которые мне показались действительно многообещающими, но то, что я действительно хочу, - это иметь возможность возвращать список списков, где каждый список компонентов представляет один потенциальный путь. Однако я не вижу способа создать такой список списков, поэтому я предполагаю, что у меня что-то не так на концептуальном уровне.
Один из способов сделать это — создать цикл, который просматривает квалификационный узел, выбирает одну возможную комбинацию узлов, рекурсивно выполняет требования этого узла, а затем переходит к следующей возможной комбинации. Как разработчик базы данных, идея использования цикла для того, что теоретически решаемо как операция на основе набора, не дает мне спокойно спать по ночам, поэтому я приложу все усилия, чтобы избежать такой мерзости. Как создать запрос для создания такого набора наборов?
Опять же, я пометил Neo4J, потому что я склоняюсь к нему, поскольку (насколько я могу судить) это наиболее широко известная/используемая графическая СУБД (и у меня было довольно элегантное решение моего предыдущего вопроса, которое работает в этом) , но я открыт для решений и в других базах данных (на самом деле, если это возможно в самом новом предложении SQL Server, это, вероятно, было бы идеально, поскольку на нем есть другая инфраструктура).
collect()для сбора вещей в виде списков в своем запросе, и в зависимости от запроса вы можете снова использоватьcollect()для коллекций. Я думаю, что более важно получить хорошую модель для этого, включая способы выражения логики ИЛИ для требований разветвления. - person InverseFalcon   schedule 08.04.2018