-1

我正在从事的项目逐年跟踪数据。用户将登录系统并指定要访问数据的年份。例如,用户可以指定 2004 年,.jsp 页面将显示 2004 年的数据。

我的问题是,从 2013 年开始,一个 .jsp 页面的数据会有所不同,需要修改当前的数据库表架构,但需要保持 2012 年及之前的向后兼容性。

目前(2012 年及之前),相关数据库表显示两列,“继续学生”和“新开始”,由单个 .jsp 显示。对于 2013 年及以后的版本,需要显示 4 列。原来的两列被分成两个子类别,本科生和研究生。所以我不能简单地将这些新列添加到现有表中,因为这会违反第三范式。

您认为处理这种情况的最佳方法是什么?如何在显示旧数据的同时保持向后兼容性以显示新数据?

4

1 回答 1

1

一些选项:

  1. 引入字段并允许旧数据为空。我想你拒绝了这个想法。
  2. 创建新的表结构来存储新的数据。如果您不想要(1),这至少是一个选择。您可以轻松地创建一个从两个表中查询并呈现一组统一数据的视图。您还可以在 UI 中处理此问题,并根据查询的年份调用两个单独的存储过程。
  3. 使用新属性创建一个新表,然后选择性地加入原始表。这使旧表保持不变,新表只是旧数据的扩展。您可能会编写一个存储过程以获取该年,然后返回适当的数据。

真正要考虑的一件事是旧数据现在处于非活动状态。如果您不再写信给它,那么它只是可以在心理上“存档”的历史数据。在那种情况下,我认为冻结模式和数据并让它自己存在是可以的。

还要考虑您的客户是否可能再次更改架构。如果是这样,那么也许(1)是最好的。

于 2013-01-18T21:02:29.250 回答