求一架构 : 保留历史数据

      最近做一个学校管理系统,当中遇到一个比较麻烦的问题“保留历史数据”,很疑惑,说出来大家讨论下,相信很多人也遇到同样的问题。
      校方提出需求如下:
      1.要保留学期留历史数据
            比如:
            ●  一年级一班2008-2009上学期有30个人,下学期有35个人,在查看上学期历史数据的时候只能显示上学期的30个人
            ●  某学生在上学期名叫“张三”,而下学期改名叫“张四”,在查看上学期历史数据的时候应显示“张三”
            ●    某教师在上学期可能任职“总务”,而下学期可能任职“主任”,在查看上学期历史数据的时候应显示教师当时的任职情况,即“总务”

      2.能实现跨学期数据统计
            而在统计分析中,要能实现在不同学期间实现统计,比如,可以统计2000年-2009年,某教师的考评情况,生成图表;可以统计学生从一年级到六年级的成绩,生成图表

      有考虑过以下几种方案,但每种方案都有不足之处
      1. 数据库分离
            不同学期数据库独立,在学期交替的时候将数据备份到另一个数据库,作为历史数据保留,对现有数据的修改不会影响历史数据,去年叫“张三”的学生,今年改名“张四”,查看历史数据的时候,还是叫“张三”
            优点:容易实现历史数据的保留,能实现不同学期数据绝对独立
            缺点:跨学期统计,则需要跨数据库访问,不方便

      2. 数据表分离
            不同学期表独立,比如表 Students ,在学期交替时将数据备份至另一个表 "2008-2009 上 Students ",作为Students 2008-2009上学期历史数据保留
            优点:跟方案1一样,容易实现历史数据的保留,能实现不同学期数据绝对独立,互不影响
            缺点:随着学期的增加,数据库容量巨增;跨学期统计,需在多表之间统计,较方案1中跨数据库统计方便些,但也不方便;因为不同学期表名不同,和ORM的映射关系不容易处理。

      3.在需要保留历史数据的每个表都加学期字段
            一个表包含所有学期的数据,如Students: 
学期编号姓名成绩
2008-2009 上01张三80
2008-2009 下01张四90
2008-2009 下02李四85
            优点:能实现不同学期数据独立,跨学期统计数据很方便,在一个表内
            缺点:每一个查询都要带上学期,一个表包含多条编号相同的记录,表之间的关系如何建立。学期增加,数据库容量巨增。

转载于:https://www.cnblogs.com/kuiyouli/archive/2009/09/14/1566140.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值