基础系统开发经验共享

1 项目介绍


基础系统主要负责教务系统的基础数据的维护,目的是为了避免各个系统单独开发而出现的业务重复和数据不同步的问题,实现数据的共享。
本系统主要就是业务比较复杂,可能用不到比较先进的技术,但是设计理念和对一些业务的处理还有很有借鉴意义的。

2 设计理念


系统分布设计:

参考博客  http://blog.csdn.net/jesse621/article/details/8655631

数据表设计原则:

本系统是基础系统,主要业务是维护基础数据,在此之上会有其他的子系统,如选课系统,评教系统,考试系统等等。由于子系统会不断的变化,需要考虑基础系统的可扩展性和灵活性。
表结构设计尽量粒度比较小,基本表没主外键,基本表之间的关系完全靠第三张表来维护。这样在基本表之间的关系发生变化的时候只需要修改或者添加第三张表即可,不需要对基本表做任何操作,保证了基本数据的安全。同时在有新的子系统出现,关系逻辑和以往的不同的时候,只需要建立自己的关系表,不会对已经存在的系统有影响,可以依独立的逻辑运行。增加了系统的可扩展性。
子系统只能依附于基础系统的数据,所有的数据只能从基础中读取,如果基础系统的数据有变更,子系统需要更新读取新数据,保持数据一致。为了避免基础系统依赖子系统,子系统不可以建立和基础系统维护表的主外键关系,数据一致需要用代码控制。主外键在子系统中不要和基本表有关系。

3 业务处理


1 历史记录问题

参考博客 http://blog.csdn.net/jesse621/article/details/8604098

2 用户权限管理

参考博客 http://blog.csdn.net/jesse621/article/details/8623892

3 查询效率优化

有时候一个界面需要的数据是很多表联合查询出来的结果,建视图也会join好几个,很大程度上影响效率。此时最好采用冗余表处理。
如果一张表关系复杂和多个表有关联,并且频繁的被访问,就把关联的信息都冗余放到一张表中,避免查询多张表。

4 关系数据的处理

举个例子:学院下有专业,专业下有班级,班级下有学生,那么如果一个学院被删除了,是否底下的专业,班级,还有学生都全部被删除?
一开做系统的时候,我们就是按照这个逻辑来的,只要大头被删除掉,同时其底下的数据也都同样被处理,当时全部都是用触发器实现的。这样会有一个问题,很可能就是不经意间把一个大头给删除了,而程序内部执行的一系列操作(删除专业,班级,学生)用户都看不到,就没有想到会有这么大的变动,此时再想把数据恢复回来也是一个很繁琐的过程。
解决方案:
删除从小开始。从最小方面一步步的进行,这样用户能参与整个的过程。当删除一个大头的数据的时候,必须保证其下的数据位空。Sql server就是这样设计的,只有一个字段下面没有任何记录的时候才能进行更改。

4 细节共享


1 数据库方面

1) 主键生成器的使用。
主键的选择:用自己系统设定的主键,不用任何有意义的属性作为主键,这样可以应对变化。我们采用的GUID。
2) 触发器中游标的使用。
参考博客 http://blog.csdn.net/jesse621/article/details/8285228

我们系统中使用了大量的触发器, update触发器只会被update触发一次,无论更新的记录数是多少,同理Delete触发器也是一样,对于处理集合性的数据,sql往往是同时处理的,没有按照先后顺序,这样相应的触发器就不会一一触发。需要用游标处理。

2 代码方面

1) 界面采用模板
使用现成的框架,好处:界面美观,用户体验好。坏处:对于我们学习知识来说意义不大,都是在套用,没有练习到学到的知识。
2)B层使用事物,这样就可以把逻辑放在B层,而不会因为把逻辑都写在存储过程里面而架空B层
3)UpdatePanel的使用,使用UpdatePanel可以很轻松的将一个非AJAX页面变成AJAX页面,但是使用UpdatePanel会带来一系列的问题。比如:自己写的JQuery脚本会失效
4)用正则表达式和页面提示最大限度的限制用户输入
5)导入和导出EXCEL,设置EXCEL的格式,单元格的数据类型,单元格的格式
将导入EXCEL中的错误的和无效数据挑出来导出,并给出提示:错误原因
6)枚举返回类型,可以解决多个返回值问题,以及更多应用
7)Json的使用:
为了界面友好,基础系统的授课部分我用JS实现,传递的数据是JSON。

参考博客  http://blog.csdn.net/mazhaojuan/article/details/8599167

                  http://blog.csdn.net/mazhaojuan/article/details/8592015

3 开发流程

1) 模板驱动:
我们这次基本上是遇到一类问题,一个人解决,其他人参考该方法。效率较高,但是也有问题。其他人只是在用,没有思考和探索的过程。一旦出了问题,需要改动的地方比较大。
2) 任务分工:
项目一共三层,按层开发,每一个人的分工都是一条线来的,这样的好处:对自己的那一块从头负责到尾,自己改也容易,开发速度比较快;不足:不便于了解其他人得业务逻辑和实现。
发布了79 篇原创文章 · 获赞 16 · 访问量 59万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章