1

次の状況を考慮してください。学生はさまざまなトピックの成績を受け取ります。n年生の学生はn目のトピックをカバーするコースにのみ出席します。したがって、可換な「所属する」正方形が得られます。

 Grades -----> Students
   |             |
   |             |
   v             v
 Topics -----> Levels

これは、私が主題の「マルチパス」によって意味するものです。

(1)この種の制約の専門用語は何ですか?

次に、次のデータを追加します。トピックはサブジェクトにグループ化され、特定のペア(学生、サブジェクト)に追加のデータXが付加されるため、Xは基本的にデカルト積StudentxSubjectのサブセットです。これで、次の事実(F)がわかりました。成績は常にXにレコードを持つペア(学生、科目)に対応するため、テーブルの成績の学生の外部キーをXを参照する外部キーに持ち上げることができます。

 Grades -------> X -------> Students
   |             |
   |             |
   v             v
 Topics ----> Subjects

別のマルチパス制約を導入します(ただし、条件(F)を保証します)。

(2)これらのことについての理論的見解は何ですか?

これがあいまいすぎる場合は、次のように制限します。

(2')好ましい設計は何ですか:テーブルの成績に学生とトピックの外部キーがあるような「互いに素な」方法、または制約を導入することを犠牲にしてより近いテーブルXを参照する「タイトな」方法?

4

2 に答える 2

0

次のテーブルデザインでアプローチします。

a)主題-主題

b)トピック-利用可能なすべてのトピックのリスト。各トピックには対象となるFKがあります。

c)学生-学生の詳細

d)student_subject-学生への主題の割り当て、追加のメタデータには、レベルまたはクラス、開始日または終了日が含まれます(学生は繰り返す可能性があるため)

e)成績-FKとstudent_subjectの組み合わせ、追加のメタデータ、日付、成績、コメントなど。

于 2012-05-10T05:49:01.893 に答える
0

実際、今のところ、共通の外部キーを持つ2つのソーステーブルに関連する連想テーブルに制約を提供する方法で与えられた解決策に満足していますか?

概要:成績に列level_idを追加し、トピックと学生をそれぞれ参照する複数列の外部キー(topic_id、level_id)と(student_id、level_id)を設定します。

于 2012-05-13T17:55:40.540 に答える