現在、私のウェブサイトには 40 以上のテーブルがあり、MySQL を十分に活用しているとは思えません。私はMoodleに似たウェブサイトを作っています。基本的には、コースごとにグループ化された学生のテストを保持するだけです。
元のテーブル:
courses - Lists all courses (ID, Name)
c_$id - Lists all the Tests (ID, Name, etc) for course number $id
a_$id - Lists all questions for the test number $id (Question, A, B, C, D)
g_$id - Lists all grades for the course with course number $id.
c_a - Lists course ID and assignment ID pairs ex: (1,2) (1,3) (2,2) (2,3)
テーブル リビジョン 1:
courses - Lists all courses (ID, Name, etc)
tests - Lists all tests (ID, Name, etc)
questions - Lists all questions from all tests (ID, Ques, Ans)
grades* - Lists all grades (studentID, courseID, testID, grade)
students* - Lists all students and their courses (StudentID, courseID)
grades* テーブルは、基本的に 3 つの主キーと 1 つの値です。それについて何かが奇妙に思えます。より良い方法はありますか?学生テーブルについても同様です。どちらも基本的に他のテーブルの接続です。高速検索の主キーは使用できませんか?
元の投稿:
これを再現して MySQL の機能を利用する最も効率的な方法は何ですか?
現在、新しいコースが作成されると、そのコースの新しいテーブルが作成され ( c_$id
)、次に各課題のテーブルとそのコースの成績リストが作成されますg_$id
。次に、課題を作成するときに新しいa_$id
テーブルを作成し、そのコースと課題のペアを に追加しc_a
ます。
*
ほとんどのselectステートメントから「」を削除しLIMIT 1
、主キーを選択しているステートメントに「」を追加しました。次は、このOOPの問題を解決することです。