1

大学のアプリケーション用のデータベースを設計しています。次のようなレポートエンティティがあります。

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

それぞれに、、 およびその上の学生reportのリストがあります。studentscoursesrating

問題は、時間の経過とともに、コースと学生の数が変わる可能性があることです。データベース構造は柔軟で、これらの変更に簡単に適応できる必要があります。この場合、リレーショナルデータベースでこれらのエンティティと設計テーブルの間の関係を定義するのに最適な方法はありますか?

私はその問題についていくつか考えています。おそらく、このモデルは関係を最もよく表し、問題の問題を解決します。ここに画像の説明を入力してください

それとも、関係はREPORT to STUDENT不必要で冗長ですか?レポートには1つの関係で十分ですか?たとえば、REPORT to COURSEなし のみREPORT to STUDENTここに画像の説明を入力してください どちらの選択が優れているのか、そしてその理由は?この構造には他に欠点がありますか?

よろしくお願いします!

4

2 に答える 2

0

学生テーブルまたはコーステーブルのいずれにも、「レポート」テーブルへのリンクを含めないでください。次の構造を使用することをお勧めします。

STUDENT
id
forename
surname
dob  
... other fields

LECTURER
id
forename
surname
honorific (Mr/Dr/Professor, etc)
department id
... other fields

COURSE
id
name
duration
credits

SEMESTER
id
course id
lecturer id

RATINGS
semester id
student id
mark

このようにして、異なる日に複数の講師が教えるコース(経済学入門など)を受講できます。学生は特定の学期に登録され、その学期のマークを持っています。特定のコース/学期に学生に複数のマークを付けたい場合は、評価テーブルに日付フィールドを追加します。

レポートは通常、評価テーブルを照会します。

于 2013-03-25T09:40:44.480 に答える
0

「レポートは一連の評価ですか?」はい

OK、それは物事を少しクリアします。正確に何をモデル化しようとしているのかはまだわかりませんが、突き刺します。

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

RATING PK 1は、生徒が同じコースを2回以上評価できないようにします。レポートは単なる評価のセットです。

この構造は、レポート内のすべての評価が同じコースに関連していることを保証するものではなく、コースへの出席を強制するものでもありません2


1具体的にはREPORT_ID、 PKの範囲外であるため、1つの評価を複数のレポートの一部にすることはできません。反対の場合は、PKにそのフィールドを含めることはできません。これにより、異なるVALUEsが可能になるため、代わりに適切なジャンクションテーブルが必要になります。

2コースに参加しなかった学生によるコースの評価を禁止したい場合があります。コースへの参加をどのように表現するつもりか教えてください。それを評価やレポートに関連付ける方法についていくつかのアイデアがあるかもしれません...

于 2013-03-26T23:39:20.407 に答える