これを実現する最善の方法は、アプリケーションのアーキテクチャとニーズに応じて、データベースまたはハード ファイルのいずれかに、XML で「前提条件ルール」を格納することです。XML は、次のような前提条件セットを保存できるため、ニーズに適しています。
<Courses>
<Course>
<CourseCode>crs301</CourseCode>
<PrereqSets>
<PrereqSet>
<CourseCode>crs101<CourseCode>
<CourseCode>crs102<CourseCode>
<CourseCode>crs103<CourseCode>
</PrereqSet>
<PrereqSet>
<CourseCode>crs201<CourseCode>
<CourseCode>crs202<CourseCode>
</PrereqSet>
<PrereqSet>
<CourseCode>crs300<CourseCode>
</PrereqSet>
</PrereqSets>
</Course>
<Course>
<!--Some other course data goes here-->
</Course>
</Courses>
その後、XPath を使用して、XML データから非常に簡単にクエリを実行できます。
もちろん、データをデータベースに保存するだけでこれを達成する方法は他にもあります。そのような方法の 1 つは、以下のような複合キーを使用して連想テーブルに格納することです...
Course table
CourseID, Name
1, crs101
2, crs102
3, crs103
4, crs201
5, crs202
6, crs300
7, crs301
CoursePrereqMap table
CourseID, PrereqSetID, PrereqCourseID
7, 1, 1
7, 1, 2
7, 1, 3
7, 2, 4
7, 2, 5
7, 3, 6
どのような方法でも、前提条件セットをカスタム オブジェクト (古い用語でなければ VO または DTO) にロードするか、ある種のリストまたは配列にロードして、前提条件セット全体を処理するメソッドを記述できます。 、または前提条件セットのリストまたは配列でさえあり、すべてのコースが少なくとも 1 つのセットを完了していることを確認します。
これが、そのようなデータを保存する方法に関する 2 番目の質問の答えになることを願っています。これは具体的な答えではなく、それを実装するためのいくつかの方法についての提案です。もちろん、あなたが取ることができるアプローチはたくさんあります。