在做教务基础数据的时候遇到了这样一个问题,在基础数据库中是否使用触发器?
因为有其他的系统依赖于基础数据库,为了使数据结构解耦和良好的扩展性,没有采用一贯的在一个表中添加相关的外键字段,而是将关联提取到第三章表中,专门管理这些关联,如果将来有新的关联,那么就新建一张关联表,这样就避免了修改原有的表结构。这样耦合性虽然低了,但是表操作起来就比较麻烦一些,而且很难避免使用一些视图进行查询,这样对系统的性能又是一个很大的影响。
在基础数据表中,有另外三个系统要依赖于这个关系,为保持数据的一致,在关系表中保持了与基础独立表的主外键关系。我们在学习数据库的时候,学到了触发器可以保持数据的一致,但是这里应该不应该使用触发器呢?
触发器,实际是一种特殊的存储过程,如果使用了触发器,就相当于把一系列数据更新、删除、插入业务,交给了数据库自动去执行,而这个执行对于我们开发的程序来说,往往是觉察不到的。现实的业务往往是一个系统要对数据修改,而其他的子系统却没有这个业务,所以,如果不是所有的系统,以及每个系统中所有的业务都需要将数据同时处理,那么触发器的使用就要慎之慎之了。
任何知识的存在,都有存在的道理,往往有积极的一面,如果使用的场合不对那么就可能会带来预料不到的后果,知识的学习也是活的,不能因为第一次接触知识的时候所有的主外键字段在一个表中,就认定所有的表都应该这样。对知识再进一步的抽象,看到知识后面的内涵与思想,学会灵活变通才是最重要的。