0

そこで私は、地元の教会の教育省のために登録システムを作成することを志願しました。新入生を登録し、進捗状況を追跡できる必要があります。私が集めた要件は次のとおりです。

  1. 教育機関はいくつかのコースを提供しています。

  2. コースには名前と説明があります。

  3. コースはレベルごとに編成されています。レベルごとにいくつかのコースがあります。

  4. コースには要件もあります (つまり、最初に受講する必要がある他のコース)。

  5. 学生は、そのレベルのすべてのコースに合格すると、そのレベルを卒業します。

  6. 生徒がコースに合格できない場合は、必要に応じて何度でも繰り返すことができます。

  7. 学生は学期ごとに 1 つのコースのみを受講できます。

  8. 非アクティブな学生とは、現在の学期に登録されていない学生です。

  9. 教師は学期ごとに 1 つのコースのみを教えます。教師は学期ごとに異なるコースを教えることができます。

  10. 教師が教えない学期があるかもしれません。

さて、これが私のリレーショナル モデルです。

![https://dl.dropbox.com/u/10900918/rmodels.jpg][1]

私の質問は次のとおりです。

  1. 欠落しているテーブルはありますか?

  2. semester + semester_code_description を見ると、これが最善の方法ですか? 1 年に 2 学期があり、各学期の開始月と終了月が同じであると仮定した場合 (つまり、学期 1: 8 月から 12 月、学期 2: 1 月から 5 月)、semester_code_description テーブルは本当に必要ですか?

  3. どうすればデザインを改善できますか?

申し訳ありませんが、矢印は含まれていません。私が使用しているプログラムはめちゃくちゃです。

貴重なお時間を割いていただき、誠にありがとうございました。

4

1 に答える 1

0

1)あなたのデザインは素晴らしい仕事です。不足しているテーブルはありません。すべての要件を満たしているようです。

2)semester_descriptionテーブルは私には理にかなっています。それが必要かどうかは、そのデータで何かをする予定があるかどうかによって異なります。

3)「学生は学期ごとに1つのコースしか受講できない」という要件は、Has_Taken関係の主キーが(student_id、semester_id)であることを意味します。現在のところ、同じ学生と学期に2つの異なるコースを挿入することができます。Has_Teached関係についても同様です。

他のいくつかの考え:

一部のテーブルの「last_whatever」列は、実際のアプリケーションに追加の処理を強制します。それらを監視/更新するためのメカニズムが必要になります。別のオプションは、テーブルからそれらを導出することです。最大年/コードの学期を見つけることで、学生のlast_semesterを取得できます。

最後の考慮事項として、これらのコース/説明/レベルはどの程度安定していますか?私は大学で数年間働いていましたが、学期ごとにコースが変更され、学生の記録にその時点で実際に取ったものを反映させたいため、変更ごとにコース記録のコピー全体を保存する必要がありました。

これがあなたのアプリの小さな例です。レベル1を卒業したとしましょう。その後、1年後、教会はレベル1に新しいコース(コースA)を追加します。レベル1のコースがないので、実質的に卒業しません(コースA)。 )。

あなたのコースがかなり安定しているなら、これはあなたにとって重要ではないかもしれません。幸運を!

于 2012-12-20T03:20:40.507 に答える