关于数据库设计的思考(一)
最近大半年由于公司上马游戏项目,自己转向前台开发,专注于 flex 、flash、js 开发,很久没有进行后台的开发了。但最后这个游戏项目不了了之,这两个月又重新转回开发网页程序。在这之前,自己进行后台开发都是一些比较小的项目,设计数据库都是很随意的,两三个人沟通好就行了,沟通起来也很方便。今次公司重新开发新的办公系统,项目算了比较大的了,数据库设计工作也有专人来设计,数据库的设计也相对比较规范,开发的人员也不只是两三个人了,也多了一。通过这次项目我开始思索怎样可以的设计一个规范、便于维护、便于招展的数据库呢?
数据库的命名规则
1. 怎样给数据表命名?分模块命名,同一模块的前缀相同,前后的字符用“_”连接。尽量不要超过两个“_”连接符。
例如:织梦的会员系统的前缀用 member 来表示,会员空间的表名用前缀 member 加上 空间的单词 space 。最后命名就是member_space。但这还不是完整的命名,还要加上系统的前缀名,这个前缀名一般是用户创建数据库命名的。比如系统前缀名是gd,那完整的表名就是 gd_member_space。织梦这样的命名应该是考虑到安全因素,因为织梦是一套开源系统,如果没有系统前缀名,所有用户的数据表名我们都可以一清三楚。
比较:我们现在做的新办公系统基本上也采用这样的方式。区别是我们没有用到系统前缀名。因为我们这套系统只针对本公司的人员使用。所有我们的命名规则是 大模块的前缀(service) + 小模块的前缀(technique) + 具体模块(flowlog),完整的表名就是service_technique_flowlog 。
2. 怎么给字段命名?字段由表的简称和实际名字组组成。如果此字段关联另外的字段,那么加下划线 “_” 连接关联表字段的字段名。
很多人没有采用下划线 “_” 联接的方式,而是采用驼峰命名法。就我个人而言我觉得采用下划线的方式更方便阅读。
补充说明:
驼峰命名法就是当变量名或函式名是由一个或多个单字连结在一起,而构成的唯一识别字时,第一个单字以小写字母开始;第二个单字的首字母大写或每一个单字的首字母都采用大写字母,例如:myFirstName、myLastName,这样的变量名看上去就像骆驼峰一样此起彼伏,故得名。