软件设计包括系统设计和数据库设计,一个专业的软件工程项目数据表大都超过100个,有的几百个。作为专业的编程人员,如果不对数据表形成概念,编程时必然会造成困难。解决问题的关键就是熟悉它们,再熟悉它们。随着项目的进展,业务、逻辑、数据逐渐清晰。
编程时可供参考的资料一般是数据库设计文档,包括ER图。数据表中的所有关联都反映在ER图中,编程者需要理解表之间的关系,根据业务需要编制SQL代码。这些工作看起来很简单,当表之间的关系越来越复杂时,正确理解并完整地实现就不容易了。
为了更好地理解数据表,可以从面向对象和关系数据库两方面的观点来分析。关于面向对象分析方法和关系数据库的设计,可以从网上找到相当多的论文。设计数据库时仍会为现实的类与存储的表之间的映射而费尽心思,因此设计数据库需要理论、经验和判断。而编程时则要从数据表的关系中看出业务系统的框架来,或者说将二者结合起来形成清晰的概念。“不当家不知柴米贵”,谈何容易!
一种典型的业务流是单据流转。单据有一个生存周期及状态迁移,针对其特点表中对应一个状态字段。单据的不同状态决定其所属的业务位置。这时问题就来了,程序除了处理正常的用户操作,还要对所有可能的异常操作做出正确的反应。迫在眉睫的交付期限,有时更象打心理战。完成代码时要象作外科手术一样,一针一线条理清楚,线线不虚其用。
程序进入测试期,对业务流程的测试繁琐、复杂。此时测出的BUG如果是通过多个特殊的步骤出现的,要迅速地定位并修正就很不容易了。当然,这只是相对而言,任何BUG都会象蛛丝一样被轻轻抹去,只要事先有充足的准备,例如对数据表很熟悉,这确实很重要。