更好的数据库设计性能

时间:2013-12-01 00:47:44

标签: mysql database-design

我正在开发一个具有评分系统的网络应用。为此,我有10种不同类型的考试。

exam_1,exam_2,... exam_10

这是每个学生。案例是学生将参加随机考试,最初可能是考试_10,考试3和第二考试。

我想将分数存储到数据库中,关键是student_id,所以我对设计的想法是:

  1. student_id,exam_type,exam_score
  2. student_id,exam_1,exam_2,... exam_10
  3. 或者您有更好的选择,请与我分享。
  4. 我想知道哪种方法对于那些比我这样的新手有更多经验的人来说效果更好。

    更新 我将运行的示例查询

    1. 哪位学生在此考试中获得分数
    2. 所有考试中学生的总得分是多少(我将获得所有考试成绩然后计算核心成绩)
    3. 显示与每位学生的考试类型相关的所有分数

2 个答案:

答案 0 :(得分:1)

您真的需要专注于性能来评估设计吗? MySQL的单个实例可以在商品hw上每秒运行超过10k个选择查询,无论您选择哪种设计,都可以使用正确的索引。我认为你应该考虑其他非功能性属性,如可维护性,可扩展性,表达性。

所以,我会选择数字1. student_id,exam_type,exam_score。这使得以后更容易添加其他类型的考试。此外,如果您想进行聚合(min,max,avg),则选择查询会更容易。

答案 1 :(得分:0)

如果您没有大量学生,那么使用选项1就可以在性能方面进行这些简单的聚合。

对于大量学生,您可能需要考虑使用数据仓库选项来首先在多维数据集中聚合数据。