2

私は学校に通い始めて以来、このサイトを優れたリソースとして使用してきましたが、これまでこの特定の問題が発生したことはなく、少しの助けを期待していました。私はデータベース構造を理解することに関しては決して最高ではありませんでした、そして私はいくつかのかなり特定の仕様でPHP/MySQLテストエンジンを作成することを任されました。

だからあなたは私がここで何をしようとしているのかをよりよく理解することができます-私は以下を考慮に入れようとしています:

  • 管理者と学生のログインが必要であり、さまざまなレベルのアクセスを提供します。
  • 管理者は、1つ以上のテストを作成し、それを1人以上の学生に割り当てることができる必要があります。
  • 管理者がテスト内で作成する質問ごとに、管理者はポイント値を割り当てることができる必要があります。
  • テストでは、1つ以上の質問を提示できる必要があります。
  • アプリケーションは、3つの基本的な質問タイプをサポートする必要があります。true/ false、複数選択、および空欄に記入してください。
  • 最終結果には、全体的なスコアと、各質問に対する生徒の回答が表示されます。
  • 学生は、アクセスできるテストについてのみ最終結果を見ることができるはずです。
  • 管理者は、複数の学生からのテストの結果を確認する必要があります。
  • 学生は同じテストを再受験することはできません。

ほとんどの場合、私は基本的な構造を処理しようとしています。最初は5つのテーブルがあり、質問/回答のセクションを1つのテーブルにまとめました。そして、ここで関係を切り替えるという私の貧弱な試みを許します。

私は正しい方向に進んでいますか?助言がありますか?

4

1 に答える 1

2

N-1 のデータベース設計の経験則。リレーションシップを持つすべてのテーブルには、N-1 リレーションシップが必要です (N はテーブルの数)。循環参照のあるテーブルはダメです。セキュリティコンポーネントとして配置し、テスト/質問/回答を見るだけで、いくつかの基本的なオブジェクトを持つ設計が必要になります:

  1. 管理者 (または教師) テーブル
  2. 試験台
  3. 生徒用テーブル
  4. 質問表

質問では言及していませんが、各テストを教師が教えるクラスに関連付けたい場合は、それも必要になります。これらの 4 つまたは 5 つのテーブルを使用して、リレーションシップを作成できるはずです。ヒント: これらの関係のほとんどは多対多であるため、これを解決するには XRef テーブルが必要です。これで何をするかを投稿してください。次に何をするかを確認できます。

于 2013-02-28T16:56:46.173 に答える