質問編集履歴

1 補足

s.1009

s.1009 score 42

2015/03/28 14:00  投稿

データベース設計、テーブルの関連付けについて
こんにちわ。
PHP初心者で、練習のために教師が更新可能な生徒向けのアンケートを作っています。
そこで、データベース設計について質問があります。
概要なのですが、
ーコンテンツをアップデート可能なのは1人しかいない
ー1年制のプログラムで4学期あり、学期毎にアンケートを行う(1学期は3ヶ月です)
ープログラムは6つあり、将来増える可能性もある
ープログラムの中にグループ(クラス)があり、2学期毎に生徒が入学してくるのでグループが増える。
ープログラムごとに教師が複数人勤めている。
ー生徒が学期毎に答えるアンケートは3つあり、学校のプログラムに対するもの、自分がうけている授業に対するもの、自分が授業を受けている教師に対するものである。(生徒がログインしたときのトップ画面に、3つのアンケートへ飛べるリンクをはる予定です。)
ーアンケートは基本的に4択と100字程度のコメントで構成されていて、教師側でアップデート可能である。
ー生徒はそれぞれ学生番号が与えられており、それを使ってアンケートページにログインできる。
また、パスワードはないものとする。
私の質問というのはデータベースのテーブルの関連付けについてです。
生徒にはそれぞれ学績番号が与えられているため、ログインした時点でどのプログラムに属するかがわかります。
ユーザー(生徒)視点のイメージとしては、ログインするとトップ画面に3つのアンケートに飛ぶことができるリンクがあり、それぞれのアンケートに答えます。
例えば、自分が授業を受けている教師に対するアンケートに答えるときは、ドロップダウンリストを3つ用意してプログラム、授業名、教師名をそれぞれ選んでからアンケートに回答するかたちをイメージしています。
そのため、データベースのテーブル同士の関連付けが重要になってくると思うのですが、いくつか疑問があります。
まず、questionsテーブルはinstructors,courses,programs,answers,student_answer テーブルと関連付ける必要があると思うのですが、どのように関連付けるべきが迷っています。
というのも、questionsテーブル上は他テーブルのIdで占められており、関連付いてはいると思うのですが不自然に感じます。
それと添付した画像は、私なりに他の方からの助言などを参考にして、データベースの設計を考えてみました。  
穴だらけだとは思うのですが、改善できる点など助言いただければ幸いです。  
 
初めての練習としてはハードなものを仮定してしまったかと思っているのですが、やり始めたからには完成させたいと思っています。
駄文になってしまったのですが、回答いただければ幸いです。
よろしくお願いします。
![イメージ説明][WIDTH:600](433517eac7dafc93a073975077465d49.jpeg)![イメージ説明][WIDTH:600](943250b751f6ae6efc26b13d3efc7fda.jpeg)
  • PHP

    26019 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    7594 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る