ASP.NETとワン・ツー・多対多のシナリオ
-
21-08-2019 - |
質問
私は、ASP.NETのではなく、プログラミングに新たなんです。私はASP.NET(3.5)/のSQLServerへのPHP / MySQLのから私たちの現在のサイトを移行しています。私は、サイトの立ち上げ以来、ここに潜んでてきたので、私はあなたの1つ(またはそれ以上)が私を助けることができると確信しています。ここではシナリオがあります:
このトレーニング部門サイトおよびdeptです。コースカタログは、テーブルcourse
に保存されています。各コースは、多くの前提条件コースを有していてもよく、例えば、A及びBは、私は通常course
または別のテーブルcourse_prereq
又はcourse_course
でカンマ区切り列として再帰的な関係のいずれかとしてこれを保存であろうC.ための前提条件です。この部分、私が行うことができます。
ただし、ビジネスルールは、各コースは、前提条件の複数のセットを持つことができることが必要です。例えばFORE、N
はA
、B
とC
を必要とする、またはN
はX
とY
を必要とします。私がこだわっているところです。
これまで、私はN
として行A,B,C|X,Y
の欄にこの情報を記憶され、PHP 2次元配列にIDが解析され、それらの行を分離するためにPHPを使用その後、そのIDがその配列中のすべての行の2番目のクエリを提出しそれぞれのグループに。このすべての処理が完了すると、前提条件のグループがそうのようなWebページ上の別々のテーブルとして表示されます:
| A | A's information goes here |
| B | B's information goes here |
| C | C's information goes here |
- - - - - - - OR - - - - - - - -
| X | X's information goes here |
| Y | Y's information goes here |
これはどのように使用してASP.NETを達成するのでしょうか?
解決
Prerequisite Sets
を保持するためにテーブルを追加します。このテーブルには、設定されたIDとセットで各コースのコーステーブルにキーバックを保持しています。あなたの主キーがのプラスのコースIDセットIDになりますので、表には、与えられたセットIDのための複数の行を有することができます。次に、あなたのcourse_prereq
テーブルに、あなたは別の前提セットにコースを関連付けます。任意OR
sがセットthemsevlesに適用されているのでAND
関係を想定することができる。
他のヒント
各前提条件にFKSことPrerequisiteSetと呼ばれるテーブルがあります。そして、多くのテーブルにCourse_PrerequisiteSetは多く持っていることFKSコースとPrerequisiteSetへ。時間のほとんどは唯一Course_PrerequistieSet内の1つのエントリが存在しますが、複数ある場合は、それはOR関係になります。
両方の答えは非常に有用でした。私が提案し2の代わりに一つだけのデータベーステーブルを使用して終了しました。テーブルは、すべて一緒に主キーを形成course_id
、prereq_id
、及びset_id
を含んでいます。
ASP.NETページで、私はもちろんの前提条件セットを返すのSqlDataSourceストアドプロシージャ、および第二のSqlDataSourceストアドプロシージャから個々の前提条件情報を読み出し、そのリピータ内部のGridViewをループにリピータを使用します。このように:
RepeaterSqlDataSource
(リターンはIDを設定)
Repeater
。 。 。GridViewSqlDataSource
は(セット内の各prereq_idのためのコース情報を返します
。 。 。GridView
が、これは同様のシナリオを見て他の誰にも有用であると思います。