Database 如何优化此数据库设计?

Database 如何优化此数据库设计?,database,database-design,normalization,Database,Database Design,Normalization,我正在创建一个应用程序,该应用程序可以生成学生在校期间表现的统计信息。为了实现这一点,我需要存储学生所获得的每一个等级 但我不知道如何以最佳方式存储这些信息。这是一个初步的设计,但不知道它在实践中会起什么作用。 因此,每名学生在接受了16年的完整教育后,将拥有288份年级数据,每年18份。除此之外,还有他们的个人信息,包括他们的姓名、出生日期等 那么,我怎样才能最佳地保存这些数据呢?您的设计太具体了。每次评分方案更改或添加新课程时,您都需要更改模式 相反,您可以使用课程、成绩和路基表格进行抽象

我正在创建一个应用程序,该应用程序可以生成学生在校期间表现的统计信息。为了实现这一点,我需要存储学生所获得的每一个等级

但我不知道如何以最佳方式存储这些信息。这是一个初步的设计,但不知道它在实践中会起什么作用。

因此,每名学生在接受了16年的完整教育后,将拥有288份年级数据,每年18份。除此之外,还有他们的个人信息,包括他们的姓名、出生日期等


那么,我怎样才能最佳地保存这些数据呢?

您的设计太具体了。每次评分方案更改或添加新课程时,您都需要更改模式


相反,您可以使用
课程
成绩
路基
表格进行抽象设计。课程将有名称,年级和子年级将有类型。这将给你很大的灵活性。

与其为每门课程设置一个单独的表,不如为所有课程设置一个表,其中一个课程id和一个学生id作为主键。

我要做的第一件事是将其反规范化,取下大约10个表,用一个表和一个主题列替换它们。查询和扩展将是一场噩梦。

在当前设计中添加另一个等级或另一门课程太难了

事实上,最好有4个表格,“学生”、“成绩”、“课程”和“笔记”

  • 学生桌上摆着所有的学生 需要关于学生的信息

  • 每个学生都属于某一特定的群体
    特定时刻的“分数”

  • 每个等级包含几个
    “课程”(例如英语、数学……)在 特定时刻
  • 每门课程有0+个笔记(例如
    阅读,听英语,…)

听起来你想做的是报告,也就是所谓的报告)。报告查询往往涉及大量数据,这使得它们的优化与标准数据库完全不同。数据趋向于大规模非规范化。这使得将事务数据与报告数据分开非常重要。如果您尝试对用于让教师输入成绩、学生查看小的成绩集等的相同数据进行报告,则数据库操作将被拖动,因为它是为OLAP或OLTP设计的次优数据库

实现这一点的标准方法是使用一个数据库来存储非规范化数据,该数据由您的网站/事务系统使用。然后,使用其中一个OLAP工具构建数据仓库,并以一定的时间间隔(如每天一次)使用流程将新事务数据加载到报告数据库中


现在,这一切都是假设这是一个非常大的项目,您手头有大量的时间,并且您希望深入研究数据仓库概念,如星型架构等。

回顾一下以前的文章,我想我应该让您知道我已经着手做了这件事。在研究和实施OLAP系统的短短几个月里,我学到了很多东西。该项目获得了几乎满分,并在当地一所学校积极使用。谢谢你的回答!