gpt4 book ai didi

c# - 我应该如何处理数据库中的渐进状态代码?

转载 作者:行者123 更新时间:2023-11-30 13:04:44 24 4
gpt4 key购买 nike

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

学院行政部门最近修订了学院的学术标准政策。以前,管理只有三个状态代码,所以这不是什么大问题。但是,新策略有六个状态代码:

  1. 信誉良好
  2. 学术关注
  3. 学术干预 (1)
  4. 一次性解雇
  5. 学术干预 (2)
  6. 四年解雇

从这里开始,我将用 termGPA 来区分学期的 GPA 和用 cumGPA 来区分累积 GPA。如果学生的 termGPA 低于 2.0,并导致他/她的 cumGPA 也低于 2.0,他/她将被置于 Academic Concern 状态。一旦进入 Academic Concern,以下三种情况之一可能会发生在学生身上。他们:

  1. 如果他们的学期 GPA 和 cumGPA 升至 2.0 以上,则恢复良好信誉。
  2. 如果他们的学期 GPA 高于 2.0,但他们的 cumGPA 保持在 2.0 以下,则保持当前状态。
  3. 如果他们的 termGPA 和 cumGPA 均低于 2.0,则转到下一个状态。

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

此外,此政策必须在尚未指定的时间段内追溯应用(因为以前的学生可以返回大学,然后将受到新政策的限制),一旦我将一名学生纳入数据集,我必须回顾那个学生在大学的整个历史。我保守地猜测我将检查至少一百万个学生记录并计算每个学生的学期 GPA 和滚动 cumGPA。

问题:

  1. 有没有办法在 SQL 中处理这个问题并避免使用游标?
  2. (假设 1. 的答案是“否”)我应该如何构建控制台应用程序?我应该创建一个大型集合并在写入数据库之前一次处理几千名学生,还是应该在每次处理完每个学生后更新数据库?
  3. 我是不是太过分了?

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


编辑:根据此处对答案的评论,我应该提供有关数据结构和我计算 GPA 的方式的更多信息。

我不能在我们的数据库中使用预先计算的 cumGPA 值——我需要学生在每个累进学期结束时的 cumGPA,就像这样(注意:我在下面编造了 GPA 值):

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 中使用游标来获取每个学生的最新状态代码,这不是我感兴趣的东西,因为我在一所资金紧张的大学工作恰好有三台数据库服务器:一台用于测试,两台服务器上有相同的数据(我们正在迁移到 SQL Server 2008 R2)。

最佳答案

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

关于c# - 我应该如何处理数据库中的渐进状态代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com