sql&db

数据库设计技巧以及总结

字号+ 作者:风潇潇 来源:原创 2016-01-29 23:32 我要评论( )

一直在加强java设计模式的学习。没有对数据库建模学习,今天来总结一下。因为今天设计数据库遇到坎了,当然也是因为心理浮躁

        今天接到一个任务,来做附件的权限。个人一直觉得数据库设计没多少学问,当然也许是我涉世未深呀,因为就是用一个二维表来表示个对象,然后用对象间的状态变化来表示逻辑业务的进行。只要弄清逻辑适、遵循一定得原则,就不难了。当然事实证明这个东西还是有一定得灵活性。可以这样说,应该是没有对错,只有更好
       而今天我就是不是很好,然后遇到了个还可以的。在设计的时候,没有去认真想这个业务的细节,我也弄出来了,只是我的好像没有他的那么简洁。另外就是数据库的设计是来表达业务的,这一点也是我所犯的错误,因为没想好会出现哪些业务。还有一个问题就是急于表现,心里不淡定,我之前大boss说我一个缺点,我现在更有深刻的体会,就是学技术的比较急功近利。不清楚为什么会这样,有可能是因为老大夸我夸多了,或者说同事说我好厉害被捧上来,然后心里真认为自己什么都会。天啊,不会这样吧。
     这里我说一下我的期望的心态。当听到有人捧你的话,微微一笑;当听到打击的话,也心中有数;战术上重视 战略上藐视,只为我自己的目标努力奋斗。时刻提醒自己,一定要记得自己要干嘛
     好了,接下来总结一下数据库的设计方法和原则。
1、按照一般原则,数据库设计一般是是遵循三大范式的
(1)、第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范
 (2)、第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)
 (3)、在满足第二范式的基础上,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。这句话的意思是,一个数据库表中如果要 包含其他表中的信息,就必须只包含主键。而非主键也就是其他属性不能放进来,这个有时候可以违反增加一下性能。
2、要理解业务,搞清楚这个业务是干嘛的。用户使用这个业务的过程设计数据库的人必须非常清楚。如果不清楚怎么知道去设计数据库呢?所以这第二点必须就是非常了解业务
3、第一个是原则,第二个是核心,第三的话,估计就是注意细节了
(1)、数据库的表看到很多大系统,都是基本有who字段,这其实也是和业务相关,就是客户需要看到当前记录是谁操作的,最后一次更新时间等等,create_by,creation_time,update_by,last_update_date,version.
 ( 2 ) 、一般来说还会还会有status字段,这个字段用处也挺大的,因为可以作逻辑删除,可以标志各种状态等等,很多数据库的设计都是不会作物理删除的
(3)、如果有个评论表什么的,或者数据库表什么的,要为整个系统服务的,可以这样做表:这个表可以关联任何表,source_code 表示哪个表或者哪个业务,而source_key 则表示关联source_code这个表的哪个id
(4)、有些设计很奇怪,数据库设计的时候他会预留很多字段,给的解释是如果以后要用到某个字段就不用去改了。当然这个也是,如果某个业务突然发现需要个字段就直接使用这个,对于某些小业务量的东西是比较方便,如果改动某些地方要加入好几个字段,个人觉得如果来使用原先预留的字段,是不是对于以后的维护人员是不是更搞不清里面的关系,命名这么不规范
 暂时这些,以后再加

转载请注明出处。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 数据库迁移及及区别(Oracle,MySQL,SQLServer)

    数据库迁移及及区别(Oracle,MySQL,SQLServer)

    2016-01-08 14:58

网友点评
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)