最近看了一些bbs的数据库,发现有些数据库根本不满足3NF,而且这些数据库也都没有视图、存储过程之类的东西,就只有表。难道说bbs这种级别的数据库都用不着存储过程之类的东西吗?就算存储过程用不着,那数据库的设计不满足3NF也没关系吗?我们在设计数据库时什么样的情况应该满足什么样的范式有什么标准吗?那什么级别的开发需要用试图和存储过程呢?恳求高人指点。谢谢。

解决方案 »

  1.   

    3NF那是理论,明白吧,“理论”马克思的理论很好吧,但实践中要看实际使用情况,如果性能都不行了,还要3NF吗?大胆的去冗余吧,我们不缺硬盘,主要是缺CPU和内存:-)
      

  2.   

    使用视图的话是不是会增加Web编程(jsp)的复杂度呢?
      

  3.   

    1.理论要与实践相结合,照搬3NF,会大大增加多表关联查询,而这种方式经常导致性能问题;解决这个问题,可以简单增加一些冗余字段;这是个哲学问题,需要理论和实践的平衡
    2.视图的作用很多,如合并查询、提升性能、保护数据安全等
    3.存储过程主要用与减少客户端与ORACLE服务器之间的网络传输,只返回执行结果,性能有很大提高
    4.是否要用视图和存储过程,要看实际情况,另外,并非数据库都支持视图和存储过程,bbs的数据库很多并非ORACLE
      

  4.   


    对于第1条来说的话,我觉得这里说的不对,个人感觉
    3NF是数据模型设计的方法,所以考虑的是数据模型,也就是业务建模,这个阶段的最主要的目标是建立模型。当然良构的设计,并不代表其性能优,而且开发效率好,所以我们在做进一步分析的时候,应该对建模的产物再次迭代。 所以3NF是我们建模的理论依据,是数据库设计的必要指导。不过还是如上所说 "法无定法,然后知非法法也" agile的编程是不是推翻了以前RUP的模式叻,当然不是,一句商业粗话 ”屁股决定大脑“