我有一个 mysql 表,用于对单个学生进行评分:
studentID int(11)
studentname varchar(70)
maths_score int(11)
science_score int(11)
english_score int(11)
与维护数据库的原子性规则相比,该表效率低下。是否可以将数学-科学-英语的分数存储在一列中,并且可以单独检索?如果不可能,我如何遵守原子性规则?
最佳答案
您应该始终将此类数据标准化为单独的列。将选择的不同数据放入一个组合列中违反了第一范式,这是关系数据库模型的标准(如果不是要求)。
但是,您可以将数据复制到附加列中,以便更有效地执行某些查询。重复比非规范化危害较小。例如,您可以存储一个 total_score
列,以节省您重新计算某种形式的加权平均值的时间,但将分数折叠到一列中并不是一个好主意。
如果您正在寻找一种存储任意数量分数的方法,请创建一个“科目”表和一个“分数”表,并将它们链接起来,以便每个学生可以有多个分数,每个分数都相互关联到一个主题。
关于mysql - 在一个mysql列中存储多个数据并单独检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8121401/