因此,如果你可以想象一个人同时参加了100门不同的课程,并且刚刚获得了所有课程的最终成绩,那么最好这样存储这些信息(宽列(:
personID | 数学 | 科学英语||
---|---|---|---|
1 | 90 | 88 | >td>98|
2 | 91 | 98 | 90 |
在任何表上创建100多列总是个坏主意。任何数据库中的列数都有限制。读这篇文章可以获得更好的想法。正如你可以想到以下方式。
学生标记详细信息
StudentsMarkDetailsID | 人员ID | 受试者ID获得的标记考试ID | |||
---|---|---|---|---|---|
1 | 1 | 3 | 64 | 1 | |
2 | 2 | 4 | 36 | <1>||
3 | 1 | 436 | 2 |
绝对选项二-少数固定列数。
原因有很多。以下是一些:
- 维护:如果你现在有100列,明天你就会有101列。添加列需要更改模式,这很痛苦
- access:要获取值,需要对列名进行编码。这是访问它的代码中的一种维护问题,无论是查询还是应用程序代码
- 查询:基本查询变得不可能。编写一个查询,返回学生的平均成绩,问题就会立即显现出来
以下是我为自己制定的两条从未打破的坚实规则:
- 喜欢更多的行而不是更多的列
- 喜欢多列而不是多表
最好每个人和每个课程存储一行数据。为什么?以下是一些原因:
- 不同的人可能有不同的课程
- 大多数数据库对表中的列数都有限制
- 您可能希望存储每个分数的附加信息,例如输入分数的日期/时间
- 如有必要,添加新课程或更改现有分数都很容易