首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理数据库中的渐进状态代码?

如何处理数据库中的渐进状态代码?
EN

Stack Overflow用户
提问于 2011-10-05 17:05:52
回答 4查看 172关注 0票数 4

我正在为一个学术机构做一个项目,我需要关于解决这个问题的最佳方法的建议。我已经很久没有做过任何传统的应用程序开发了(将近五年)。

学院管理部门最近修改了学院的学术标准政策。在此之前,奥巴马政府只有三个身份代码,所以这并不是什么大问题。然而,新政策有六个地位代码:

好的Standing

  • Academic Concern

  • Academic干预(
  1. Good 干预)(1)
    1. 一学期Dismissal
    2. Academic干预(2)
    3. Four-Term

从现在开始,我将用termGPA来区分GPA和用cumGPA来区分GPA。如果一个学生的termGPA低于2.0,而这也导致他/她的cumGPA下降到2.0以下,那么他/她就会受到学术上的关注。一旦有了学术上的关注,三件事中的一件可能会发生在学生身上。他们:

如果

  1. 的termGPA和cumGPA高于2.0,则恢复良好的地位。如果termGPA高于2.0,则
  2. 保持在当前状态,而cumGPA则保持在2.0以下。如果termGPA和cumGPA都低于2.0,则
  3. 将进入下一个状态。

通常,我会通过编写一个控制台应用程序来处理这个过程,这个应用程序可以迭代地处理每个学生,并在我进行过程中构建状态代码。然而,我们正在处理至少8000名学生,在大多数情况下,每学期大约有12,500名学生。

此外,这项政策必须在一段尚未指明的时期内追溯适用(因为以前的学生可以返回学院,然后将受到新政策的限制),一旦我将一名学生纳入数据集,我就必须回顾该学生在学院的全部历史。我保守地猜测,我至少要通过一百万次学生记录,计算每个学生的termGPA和滚动cumGPA。

问题:

在cursor?

  • (Assuming中有什么方法可以解决这个问题吗?
  1. 的答案是“否”)我应该如何构造一个控制台应用程序?我应该在写到数据库之前一次创建一个大型的集合并处理几千名学生,还是在我每次处理每个学生之后更新数据库?
  2. ,我是不是在这方面做的太大了?

提前感谢您的任何见解和建议。

编辑:基于这里对答案的评论,我应该提供更多关于数据结构和计算GPA的方式的信息。

我不能在我们的数据库中使用预先计算过的cumGPA值--我需要学生的cumGPA在每个累进项的末尾,像这样(注意:我在下面合成了GPA值):

代码语言:javascript
复制
ID      TermID  CumGpa  TermGPA TermNumber PolicyCode
123545  09-10-2  2.08   2.08      1         GoodStanding
123545  09-10-3  1.94   0.00      2         AcademicConcern
123545  09-10-4  1.75   1.00      3         AcademicIntervention
123545  10-11-2  1.88   2.07      4         AcademicIntervention
123545  10-11-4  2.15   2.40      5         GoodStanding
123545  11-12-1  2.30   2.86      6         GoodStanding

问题是,每个后续术语的状态代码可能取决于前一项的状态代码--良好的信誉实际上是唯一不依赖的。

据我所知,这意味着我必须使用SQL中的游标来获取每个学生的最新状态代码,这不是我感兴趣的事情,因为我在一所资金紧张的大学工作,该学院恰恰有三台数据库服务器:一台用于测试,两台服务器上有相同的数据(我们正在转向Server 2008 R2)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-12 15:04:59

最后,我用C#编写了一个控制台应用程序来处理这些状态代码。我的用户更改了最初的状态更新要求,只包括前两个术语,但是这个过程有足够的边缘情况,因此我选择花时间编写更干净、面向对象的代码,这样在这个策略成熟和改变之后(他希望)能够更容易地恢复(他说)。

而且,我最后不得不将这个数据库部署到一个SQL 2005实例中,因此表值参数对我来说是不可用的。如果是的话,我会选择只在处理每个学生之后,而不是在处理每个学生的每个学期之后,才提交数据库。

票数 0
EN

Stack Overflow用户

发布于 2011-10-05 17:14:56

这很有趣。我认为您不必太担心SQL性能。对于您的应用程序,它将运行得相当快。我只是运行了一个愚蠢的小控制台应用程序来解决一个混乱,并插入了15000条记录一次。大约花了5秒。

票数 0
EN

Stack Overflow用户

发布于 2011-10-05 17:20:50

首先,对于现在的数据库来说,12000条记录是没有意义的,所以这不是你的任务。你应该专注于保持简单。似乎您的数据库将基于事件被关闭,所以我将使用触发器(即:当插入termGPA时使用)更新cumGPA,在cumGPA更新之后的第二个触发器检查您的标准和更新状态(如果它们发生了)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7664962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档