0

私は現在、大学モジュール オプション フォーム用のリレーショナル データベースを作成する方法を考え出そうとしています。まず、学生 ID、名前、姓を入力し、人事管理などの学位プログラムを選択します。次に、各プログラムの各学期の合計クレジットが選択されるまで、チェックボックスを使用してフォームから複数のモジュールを選択します。

ただし、複数のモジュールを選択し、リレーショナル データベース設計であるため、以下に示すように、これらの複数の回答を Student Options テーブルに保存する方法がわかりません。

私は現在のテーブルを持っています

表: 学生 フィールド名: 学生 ID (主キー) 名前 姓

表: プログラム Program (主キー) Semester 1 Credits (異なるプログラムは異なる量のクレジットを許可します) Semester 2 Credits (異なるプログラムは異なる量のクレジットを許可します)

表: モジュール モジュール ID (主キー) モジュール名 クレジット 前提条件

最後のテーブルは、モジュールがフォームから選択された後、このテーブルに格納され、現在これを持っているため、私が苦労しているものです...

表: 学生オプション 学生 ID (主キー) プログラム (プログラム表へのリンク)

ただし、以下に示すように、すべてが個別に保存されているモジュールテーブルへのリンクを保持したり、雑然としたりせずに、どのフィールドにそれらを保存する必要があるのか​​ わかりません。

リレーショナル データベースにするために、モジュール テーブルに学生オプション テーブルへの関係リンクが必要ですか?

選択した複数のモジュールを学生オプション フォームに保存するにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

あなたの中心的な問題については、以下に概説するデータベース設計で十分だと思います。

問題を解決するシンプルなERM

学生が選択したモジュールと学生が登録しているプログラムの両方を同じテーブルに保存しないでください。代わりに、上記のように実行してください。

  • 学生が登録されているプログラムは、学生テーブルの外部キーである必要があるため、1 対多の関係が得られます (ただし、これは重要なポイントです。これは、1 人の学生が 1 つのプログラムにしか登録できないことを意味するためです) ! データベースで 1 人の学生を複数のプログラムに登録できるようにする必要がある場合は、そこにも多対多の関係が必要です。)
  • モジュールは、中央のテーブル (この場合は StudentModule と呼びます) を介して学生に関連付ける必要があるため、必要な多対多の関係が得られます。もちろん、モジュールが学生によってまだ選択されていない場合は、コードを介してチェックする必要があります(その他のすべての小さな詳細と大きな詳細も...)。しかし、これは、私の知る限り、どのデータベース設計にも関係があります。
  • ご覧のとおり、モジュールとプログラムの関係を表す中間テーブルも挿入しました。これは、1 つのモジュールが複数のプログラムに適格であると想定しているためです。このようにモジュールをプログラムに関連付けることで、「この学生はこのモジュールを選択できるか」などを確認できます...
于 2016-12-14T17:48:08.963 に答える