【发布时间】:2014-05-01 23:42:21
【问题描述】:
以前我认为将考试数据存储在这样的简单表格中很容易:
id
subject_id
student_id
mark
date
但我注意到这是一个非常愚蠢的想法,因为它使数据库变得非常庞大 假设我们的学校有 5000 名学生,每个学生每月有 12 门科目......这意味着我们的考试表每年将包含 5000*12*10 = 600000 行,好吧,如果我们决定知道怎么办从加入日期到当前日期的学生历史 ..我认为这很愚蠢,而且我认为还有最佳解决方案可以制作另一种设计以满足我的需求.... 我需要以另一种更轻松的方式存储考试数据 提前谢谢:)
【问题讨论】:
-
5000 名学生每个月要参加 12 场考试??
-
无论如何,您不会在此处存储任何重复数据。它占用了多少空间。没有真正“更轻松”的方式。
-
5 年内每年 600k 行仍然只有大约 3M 行。假设每条数据记录大约 40 字节 + 一些索引,每条记录将消耗大约 100 字节的存储空间,这使我们在 5 年的活动中需要 300MB 的总数据存储空间,这绝不归类为“巨大”甚至“ big"...基本设计还可以,我会坚持下去的。
-
您当前的设计还不错。但是,按照您的标准,我的想法会使其更加愚蠢。但是,如果在现实生活中,不同的考试对最终分数的权重不同,那将是有利的。
-
如果您必须记录
N考试,您需要N行。最好的设计是 3 个表格,1 个带有student,1 个带有exam和 1 个与我认为您正在展示的属性的关联
标签: sql sql-server database database-design relational-database