0

我正在计划一个数据库,用于记录学生每天的上学情况。

问题是我无法预测一个班级的学生总数,而且天数会稳步增加,所以我在 MySQL db 部分苦苦挣扎。

我应该使用学生姓名作为列,每个日期作为行吗?我知道每次在课堂上添加或删除学生时,使用这种方法将迫使我更改表格的列。例如

day    student1    student2   student3    studentN
----   --------    --------   --------    --------
1        x           x                       x

有没有人解决过类似的问题或有任何建议?

4

1 回答 1

2

使用所谓的“规范化”数据库完成此任务的“正确”方法是拥有一个学生表和一个出勤表

students
--------
id
name

attendance
----------
id
student_id
day

出勤表中的 student_id 只是对每个学生在学生表中的唯一整数 id 的引用。

现在您可以稍后添加更多学生数据,例如地址、电话、电子邮件等,并且通常将姓名拆分为名字和姓氏字段。它允许您更新学生姓名而不会弄乱出勤数据。

想象一下,如果您为 John Smith 存储一条记录,然后发现他的名字拼写为 Jon 而不是 John。您必须更新包含他姓名的所有个人记录。或者两个学生同名的情况呢?那将会发生。使用具有唯一 id 字段的单独学生表将允许您遇到这些情况,而无需对数据或逻辑进行重大重组。

于 2015-02-19T12:14:58.960 回答