我正在为一所学校制作一些软件,其中包含所有学生的成绩,并允许他们检查它,以及所有这些东西。我在包含学生及其信息的四个等级中的每个等级的数据库中都有表格 - 除了我还需要存储班级数据,例如班级博客的URL。我想知道存储数据的最佳实践是什么,因为我无法将它们放在所有学生中。以下是数据库中的表格:
Teachers (stores teachers & their emails, passwords, etc)
Alpha (stores all the alpha kids)
Beta (stores all the beta kids)
Gamma (gamma kids)
Delta (delta kids)
答案 0 :(得分:1)
就个人而言,我不会有一张EACH成绩表。为什么?因为无论等级如何,所有数据都是相同的。如果您想添加“date_student_graduted”或“age_of_student”等列,该怎么办...您必须更新所有这4个表。
相反,创建一个存储所有学生的表格,并有一个标识其成绩的列。
如果您现在想要将学生与特定班级相关联,您可以通过为每个学生和班级提供特定的ID来创建他们之间的关系(您可能已经这样做了)。
您将在学生数据库中创建一个类似“class_id”的列,然后将学生所在的班级ID分开。
现在,例如,如果你想选择一个类和该类中的所有学生,你首先要选择该类,然后有一个进入数据库的循环,并选择每个学生,如果他们的class_id匹配当前class id。
//Pseudo code
//select all classes
$classes = mysql_query('SELECT * FROM classes');
foreach($classes as $class) {
$class_id = $class['class_id'];
$students = mysql_query("SELECT * FROM students where class_id='$class_id' ");
echo "list of students in the class $class[name] <br>";
foreach($students as $stu) {
echo "$stu[name] <br>";
}
}