请大家耐心看完,肯定有收获!
在一个项目中,数据库是骨架,数据库的好坏直接影响到整个项目的可扩展性,也就是二期开发的难易程度,也会影响公司对于该项目的盈亏情况。
数据库设计似乎都是高层领导的事,离程序员很远,遥不可及!但,程序员必须掌握一些数据库设计的基本能力!
在这里,简单列出一些数据库设计时必须知道的几个要点。
一:没有完美的数据库设计,只有符合业务的数据库设计!
在数据库的设计中,业务起主导作用,我们要根据客户的业务需求来设计数据库。客户的需求千奇百怪,我们的数据库必须要满足客户的业务需求。
但我们也必须拥有后瞻能力。尽可能的预料以后客户的需求,提前做好数据的存储!
二:数据库设计中的三大范式
众所周知,数据库的范式越高,数据库中表与表中的关系越明确,数据查询效率越低,项目开发成本增高,项目的用户体验度越低。
基于这几点,我们在设计数据库时到底要不要遵守三大范式呢?答案是肯定的,三大范式是数据库设计的一种标准!我们可以遵守,但也是有个度。
在客户的 体验度和标准之间,很多公司都会选择前者,因为现在的互联网中,谁抓住了客户,谁就是王者!不管是以搜索引擎为生的百度,还是游戏娱乐为主
的腾讯,现在电子商务巨头阿里巴巴!哪个手中不是掌握着不可计数的用户?所以我们的数据库设计,在遵守标准的同时也要考虑客户的体验!有用户才有天下!
三:数据库设计时必须要做的
1.需求的分析;
2.考虑.需求的变更;
以上两点中,需求分析是必须的,第二点尤为重要,但考虑需求的变更,这点关乎整个项目在上线后的项目的后期维护难易程度(公司前期开发是不怎么赚钱的,
最赚钱是在后期的维护中,比如增加新功能,增加新业务!),这也就关系到了公司的盈利情况了。(一切要为公司着想!这才是老板需要的人!)
四:数据库设计中具体要注意的几点;
1.凡是用户输入的不能作为主键;
这点大概都知道,主键是唯一的,一般不能让客户做任何操作;
2.凡是有业务意义的不能作为主键;
既然是具有业务意义,客户随时都有可能提出这个业务,要求修改业务,也会有变动的可能!
3.除非确定是有必要的字段,其他都允许为空;
设计数据库时,约束简单点最好,约束多则在系统中开发时要注意的就多,开发效率相对会底,因为系统是可以通过验证辅助完成这些约束的!
4.不能缺少时间或日期字段;
有时间是永远前进,时间的用处很多,打个很简单的比方,在用户表中我们有一个用户创建的时间,在吧项目交个客户后使用一段时间,客户提出新的需求,
比如说:要搞一个周年庆活动,每个满5个月的用户都奖励200代金卷,等等。在这时我们如国有时间字段,那就很容易加上这个业务,但要是没有呢?
将会如何?修改数据库?公司的利益会受到严重的打击;
5. 业务的时效(时间有效)性;
6.数据的采集宁滥毋缺
这点非常重要,这就是数据库设计者的后瞻能力了,也就是说我们能在用户还没有提出一些新的需求是,已经把数据都采集好了,就等客户提出需求
很轻松的搞定一些业务;有了数据什么都不怕;但有些人也会问,我们前期就把没有用到的数据存进去,后期可以利用也就罢了,如果没有利用到呢?
是不是很浪费空间;其实这个问题,我可以这样回答,绝大多数公司在很多方面都是以空间换取时间的;(相信大家都明白!比如在web中使用的AJAX技术)
7.外键字段需要维护或变更,就需要表来维护,如果字段简单,不需要经常变更的,可以直接是程序维护;
这点我就不在赘述;