php - 在数据库中组织类数据的最佳方式是什么?

标签 php mysql sql database database-design

我正在为一所学校制作一些软件,其中包含所有学生的成绩并允许他们检查成绩,以及所有这些东西。我在包含学生及其信息的四个年级中的每一个的数据库中都有表格 - 除了我还需要存储类(class)数据,例如类(class)博客的 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)

最佳答案

就我个人而言,我不会为每个年级准备一张表格。为什么?因为无论等级如何,所有数据都是一样的。如果您想添加像“date_student_graduted”或“age_of_student”这样的列怎么办...您将不得不更新所有 4 个表。

相反,创建 1 个表来存储所有学生,并有一列标识他们的成绩。

如果您现在想将学生与特定类(class)相关联,您可以通过为每个学生和类(class)指定一个特定 ID 来创建他们之间的关系(您可能已经这样做了)。

您将在学生数据库中创建一个类似“class_id”的列,然后放置学生所属的类(class) ID。

现在,例如,如果您想选择一个类(class)和该类(class)中的所有学生,您将首先选择该类(class),然后有一个循环进入数据库并选择每个学生,如果他们的 class_id 与当前类(class)编号。

//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>";

  }




}

关于php - 在数据库中组织类数据的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17053598/

相关文章:

javascript - 正确显示链接

php - MySQL 使用 LIKE 或 REGEX 匹配数字列表

mysql - 如何使用sql从其他表上的值更新表

sql - Spark sql 查询与数据帧函数

sql - 具有存储库模式的抽象

php - 为什么我可以用 NULL 值初始化该列,但无法这样更新它?

javascript - 如何从下拉列表中选择项目名称时自动将项目 ID 显示到文本框中

javascript - php中onclick后的mySQL请求

java - 如何使用Where子句从多个表中删除多行?

php - 带制表符分隔符的 fputcsv