【发布时间】:2011-11-14 20:19:21
【问题描述】:
我有一个 mysql 表用于对单个学生的分数进行评分:
studentID int(11)
studentname varchar(70)
maths_score int(11)
science_score int(11)
english_score int(11)
与维护数据库的原子性规则相比,此表效率低下。是否可以将数学-科学-英语的分数存储在一列中,并且可以单独检索?如果不可能,如何符合原子性规则?
【问题讨论】:
-
您能解释一下为什么要将它们全部放在同一列中吗?
-
避免多出两列
-
不要试图超越模型。列是这种数据存储的最有效机制。将它们与某种
varcharblob monstrosity 结合起来几乎违反了书中的所有规范化规则,更不用说它在存储、比较和搜索方面效率低下。 -
如果您想减少存储空间,您可能需要考虑
SMALLINT(范围 -32768 到 32767)或TINYINT(范围 -127 到 127),具体取决于您的评分.当然,除非您的学生在考试中得分 2147483647。