我搞java数据库应用系统1-2年了,还是比较菜,苦恼啊,不知道有天涯沦落人也是这样不。
其间也经历了好几个系统的开发(工作流),但是发现数据库设计和数据性能优化上还是很白,不知道如何下手。 
顺便问几个问题:1.存储过程对系统有什么帮助,什么时候需要使用存储工程。
                2.不按照关系数据库范式设计,会出现那些问题。
                3.怎么减少数据过于复杂带来的系统效率问题。

解决方案 »

  1.   


    1,存储过程主要应用在报表以及数据迁移,执行任务等情况下,业务应用系统跑存储过程的比较少的。除非比较复杂的应用,在前台一个SQL一个SQL拼起来效率太低。2,会出现数据冗余,资源严重浪费,数据关联关系太散漫不严谨;会对业务应用造成影响,还会导致重复select表,影响系统性能。3,熟悉三个范式,熟悉数据库设计模式(有专门的书籍介绍的),有时候为了业务应用要灵活使用反范式。4,熟悉项目中你所用大的数据库产品的运行原理,大概普遍就是oracle、sqlserver、mysql吧,就3种数据库,原理也好学好用的,原理深入理解了,你在设计数据库的时候,以及写SQL语句的时候,就不会写出超级垃圾严重非法占用资源的BUG sql脚本来。暂时就这么多吧,希望对你有所帮助!
      

  2.   

    1. 系统实时性要求比较高的时候需要用存储过程,很多大项目的架构都倾向于裸jdbc + stored procedure的方式。如果只涉及 到后台的数据转换也需要用存储过程
    2. 可能导致数据冗余,数据不一致,插入、更新异常。严谨的设计可以避免这些问题,不一定要过分追求高范式
    3. 良好的系统规划和设计可以缓解这个问题