【发布时间】:2013-10-06 08:37:30
【问题描述】:
我正在 php [处理学生考勤系统] 中处理我的项目。我有一个学生列表以及他们的唯一 ID [jntuno],我需要在 mysql 中创建一个数据库来存储每个学生在每个科目中的每日出勤率。所以我以这种方式创建了我的表:
我在 mysql 中有一个表 students,其中包含以下字段和数据:
现在我想创建一个新表,将jntuno 字段中的每个值作为我的新表的列。
我希望我的新表 [让我们将其命名为 attendance] 具有这样的列:
+------------+-----------+----------+-----------+-----------+
|11341A0501 |11341A0502 |11341A0503|11341A0504 |11341A0505 |......
+------------+-----------+----------+-----------+-----------+
| | | | | |
如何在 mysql 中做到这一点?
我稍后会在attendance 表中添加 3 个字段:
-> date[教授特定科目的日期],
->subject[所教科目的名称]和
->hours taught[教授特定科目的小时数(可以是 1 或 2 或 3 ... 最多 6)]
针对特定date 教授的每个subject 都会在attendance 表中添加一个新row
示例:
+------------+-----------+-----------------+------------+-----------+----------+-----------+-----------+
|date |subject | classes taught |11341A0501 |11341A0502 |11341A0503|11341A0504 |11341A0505 |..
+------------+-----------+-----------------+------------+-----------+----------+-----------+-----------+
|2013-09-31 |OOPS |3 |2 |3 |0 |1 |3 |
我这样选桌,是为了让考勤进入桌更快捷。
但许多人称之为糟糕的数据库结构。所以如果我的问题有其他好的和有效的数据库设计,请建议我
【问题讨论】:
-
这通常不是一个精心设计的模型。你确定有一个规范化的数据库模式吗?
-
这类问题有替代方案吗?如果是这样,请建议我
-
如果您想存储有关学生的数据,只需在新表中添加
student_id。将其定义为student表的外键。也许this 可以帮助你。 -
您可以在之前的表中插入任何新条目时,对新表使用alter table。
-
不怎么样,告诉我们为什么要将 student_id 作为列名,如果您的表增长到 5K 学生 id,那么您会创建 5k 行的表吗?糟糕的设计。
标签: mysql sql database-design pivot-table