背景:
项目需要实现这样的功能,根据不同的课程类型,设计不同的评估项目,我们需要的课程类型只有两种:理论课与实践课。但是课程类型是从另一个系统XX中读取出来的。最开始的时候,课程类型是固定的,只有理论课与实践课。我们的项目也是在这个基础上设计的。
问题:
后来,XX系统改变了这一设计,不再是两种课程类型,变成了N多种。它这一改,给我们带来了很大的麻烦。
先看一下我们的表设计:
评估项目表:
ID、内容、课程类型ID
由于现在课程类型变成了N种,那么,这个表中就必须存放N套评估项目,可是,好多种课程类型的评估项目又是相同的,这样不仅造成了数据的冗余,而且给客户带来了很大的麻烦。
解决方案:
创建模板表,评估项目不再直接与课程类型关联,而是通过模板间接与课程类型关联。表设计如下:
模板表:
id,名称
考核项目表:
ID、内容、模板id
关系表
模板ID,课程类型ID
这样一来,我们不用关心XX系统中的课程类型有多少种,只关心我们需要几种就可以了。而对应的配置也很简单,在关系表中加入对应的关系就OK啦。
后话:
模板的方法是可以解决这一问题,可问题是XX系统修改设计的时候,并没有通知我们,等我们知道的时候,系统已经接近尾声,验收也快来临了。所以,这次就先这样,更多修改只能等到完善的时候来解决了。
感想:
单个项目开发,沟通很重要。做这种依赖性比较强的项目,沟通的重要性就更为突出了。