在为应用程序设计数据库时,我知道一些通用的最佳做法,但是重新设计呢?
我正在一个负责重新设计内部业务应用程序的团队中,尽管尽管我说的是“内部”,但不幸的是,我仍然有很多很多层次的人无法与系统的实际用户联系。
当前程序以Oracle Forms形式存在,散布在许多非规范化表中,有时还有多个几乎重复的表,它们在彼此的数据上略有不同。约束通常以存储过程执行不力的形式出现。甚至类型似乎也没有正确存储。我遇到了各种各样的错误数据,Oracle似乎忽略了这些错误数据,但这些数据适合SQL Server的“导入/导出向导”。(例如,两位整数不构成完整的日期时间!)
原始程序可能要追溯到二十年前,所有原始开发人员都已经退休很久了,以至于这里的老年人也不知道他们是谁。结果,实际上也没有任何干净的要求—我们只应该复制现有应用程序的功能并保留其现有数据。
重写的最终结果将是在ASP.NET上运行的基于Web的版本,后端是MS SQL Server。
我的另外两个开发团队成员都比我大得多,都具有商业/ MIS背景,而我的则是CS。高级成员的经验几乎完全是Oracle表格,而其他成员则主要在Visual Basic中完成业务应用程序工作。尽管我的数据库背景仅限于为MySQL或SQLite中的项目设计新数据库,主要是针对我的本科课程,但我似乎是唯一拥有实际设计数据库经验的人。
我已经用C#编写了一个小程序,该程序将所有现有数据读取为中性格式,可以重新广播并放置到新数据库中。我计划在设计目标数据库之后编写加载代码,以便可以在新的规范化表中正确分割数据,以正确的顺序添加数据以遵循新的约束,等等。然后可以再次运行同一程序将生产数据复制到真正新部署的完成的重新设计中。剩下的主要工作是对数据库进行实际的重新设计。
所以我的问题的核心:从现有应用程序的数据库级别进行重新设计的最佳实践是什么?