论坛首页 综合技术论坛

浅谈数据库设计

浏览 1275 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-03-31  

 这篇文章谈不上指导性文章,只是分享一下自己对数据库设计方面的一些经验,希望对刚涉及这一工作的朋友提供一些建议,也希望有高手可以对一些错误或不合理的地方有一个指导,以便于我自身提高数据库设计水平。

       首先,我想说一下数据库设计工作在一个项目周期中的重要性,我个人认为,只有四个字“极为重要”,一个好的数据库设计可以 很大程度缩短项目开发时间,为客户展示丰富的业务数据,需求变更过程简单快速。如果说在项目组中,项目经理是大脑,开发测试人员是四肢,那么数据库设计人 员就是心脏,心脏不给力,谈不上优秀的项目组。

       数据库设计人员应该具备的素质和能力,我认为可以用以下几点概况:“比需求人员更了解需求”、“比开发人员更懂得编码”、 “比销售人员更了解客户”。前面两点大家可能很好理解,但是为什么要“比销售人员更了解客户”,我感觉这一点和前面两点同等重要,因为数据库设计人员要判 断客户中提出需求的人员是否是项目主要干系人,客户是否对业务流程精通,客户性格是否优柔寡断反复无常,最重要一点,客户是不是此系统最终使用人。如果你 判断客户性格是优柔寡断反复无常型,事事汇报,无权决断,那前期数据库设计就要采用单表少字段,多表关联的设计方法,以应付后期大量的需求变更情况(我深 有感触,需求确认单就是一张废纸)。

当设计一个表的时候,需要判断此表一段时间内的数据量,可能是 1 天、 1 个月或 1 年。根据数据量的程度合理的进行表设计。根据数据量和查询的方式来进行索引的建立。设计数据库首先要满足需求,在满足需求 的条件下,关注对性能的影响,最后再不大损耗性能的基础上,尽可能的给开发人员开发时带来方便,一个表多几个冗余字段,我感觉是可以的。尽量让开发人员少 用到多表联查的方式。

一个好的数据库设计,对整个系统的帮助是巨大的,当一个系统需要提高性能进行重构时,才发现,代码写的再好,一个垃圾 SQL 就给废了。一个 SQL 再怎么优化,不如在数据库设计的时候就考虑到。因为我个人认为,在这个世界中,能量是守恒的,做一件事所用到的能量是恒定 的,不能减少,只能转移,放到软件开发上,就是,想完成一个业务流程,所用到的能量是一定的,性能不如意,我们只能将能量转移,根据功能使用频率,将需要 长时间处理的转移到不怎么使用的功能上。每个环节都分担一点,到了需要大数据量查询的时候,性能会提升不少,人机交互体验也会改善很多。

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics