【问题标题】:Best way to build sql table with unknown number of columns构建具有未知列数的 sql 表的最佳方法
【发布时间】:2015-04-20 18:21:25
【问题描述】:

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

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

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

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

有没有人解决过类似的问题或有什么建议?

【问题讨论】:

  • 您使用的是哪个数据库系统? MySql 还是 Microsoft SQL Server?你有两个标签反对你的问题。
  • 我不明白你的问题。尽管您想要的是数据库的用途..将多个数据存储在一次定义的表中。请再澄清一点。
  • @Elliveny。数据库系统是MySql。我已经删除了 sql-server 标记

标签: mysql time-and-attendance


【解决方案1】:

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

students
--------
id
name

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2018-07-14
    • 2013-06-11
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2012-05-19
    相关资源
    最近更新 更多