1

との間には多対多の関係がstudentありclassesます。

の主キーとstudent_classesの主キーを保持するために呼び出される別のテーブル(ジャンクションテーブル)を作成しました。これにより、多対多の関係を標準のデータベース設計としてモデル化できます。studentclass

また、という別のテーブルがありますbooks。これには、特定のクラスのコアブックがあります。

生徒は、クラスで使用するコアブックの1つを選択できます。私はそれをテーブルに追加するつもりclassesでしたが、本の選択は学生によって異なります。

それから、Iiがそれをジャンクションテーブルにマッピングできれば理想的だと思いました。コアブックは生徒だけでなくクラスにも依存するため、論理的に見えました。

これは、ジャンクションテーブルに本の別の鍵を保持させるのに適したデザインでしょうか?

だからテーブル:

[student]
stduent_id

[classes]
classes_id

[book]
book_id

[student_classes]
student_id
classes_id
book_id 
4

3 に答える 3

2

このモデルでは(あなたの説明によると)、学生は特定の主題に対して1冊の本しか使用できません。複数の本が必要な場合BookIDは、テーブルの主キーに移動しStudentBookます。StudentBookテーブルには2つの外部キーがあることに注意してください:FK1 {StudentID, SubjectID}FK2 {SubjectID, BookID}

ここに画像の説明を入力してください

于 2012-10-04T16:47:01.383 に答える
1

あなたが説明する状況では、あなたが提案するモデルは、大まかに言えば、次の理由で機能します。

  • 主キーは、テーブル内の行(エンティティ)を一意に定義します
  • テーブル内の他のすべての列は、主キーの属性です
  • ここで、主キーはstduent_id+classes_idです。
  • 正しく言えば、book_idはstduent_id+classes_idの属性です

明確にするために:book_Idを主キーの一部にしないでください。問題ありません。

于 2012-10-04T16:58:05.840 に答える
0

私はあなたが欲しいと思います:

[student_classes] student_id classes_id 
[student_classes_books] student_id classes_id book_id 

これにより、学生は必要に応じて複数の本を選択できるようになります。私の経験では、多くのクラスで複数のコアテキストが必要です。

于 2012-10-04T14:43:56.383 に答える