前言:
最近在做一个信息收集的小项目,一个星期,开始感觉时间挺富裕的因为需要的技巧什么啦可以说有现成的代码,稍微改动就行了,现在快到期了,数据库设计90%的完工,之前认为数据库设计没什么,现在在云姐的带领下,感觉数据库设计还是值得总结一下的,这里主要说一下字段的命名规范还有类型介绍,如果有时间就写一些类型选择,先写吧~
正文:
之前Wuli阿里公开了一pdf版的《Java开发手册》,大家都说好,以小菜现在的水平对这个还没有什么体会,不过~业界良心这个称赞是不为过滴
第三章有说mysql数据库,大家都是数据库、上下五百年差不了多少,就以MySQL为例了(一家之言,以后学习深入这句话可能就不是我说的了)
建表规约;
命名采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线'_'组成,共63个字符.不能出现其他字符(注 释除外).
是与否:
命名为:is_xxx,类型为;类型:unsigned tinyint(1为是,0为否);unsigned:将数字类型无符号化、tinyint:字段类型,一个TINYINT型数据只占用一个字节,一个INT型数据占用四个字节。
表、字段名:
小写字母、数字,两个字母中间要加“_”
禁止数字开头、2个"_"之间只有数字
表名不使用复数名词,最好的命名:业务名_表作用:tiger_task
禁用保留字(很多地方都有这样的要求)
小数类型:decimal,如果超过decimal范围,将数据拆成整数和小数、分开存储
长度超过5000,类型text且独立一张表,用主键对应,避免影响其他字段索引效率
必备字段:id、类型:unsigned bigint(整数值超过int),gmt_create,gmt_modified:类型data_time
索引
主键索引:pk_ 唯一索引:uk_ 普通索引:idx_
业务上具有唯一特性的字段,即使是多个字段的组合,也必须建立唯一索引(什么意思?)
超过三个表禁用join,join字段类型一致;多表关联查询,被关联字段需要有索引
varchar建立索引,指定索引长度:可根据count(distinct left(列名,索引长度))、count(*)区分度决定长度
建立索引时,等号条件列之前:where a> ? and b = ? X 错错错,是我的错,后面歌词是什么
推荐做法:注释及时跟上
字段适当冗余、冗余字段:不频改、非varchar、text
三年后预计单表行数超过500万行,单表容量超过2GB(宝宝表示惊呆了)推荐分库分表
pojo
布尔属性不能加is,数据库字段必须加
网路上的资源:
命名<=30个字符,采用英文字符,不要空格
库:
使用前缀,1、正式数据库:前有;2、备份数据库:正式库名_备份时间
表:
1、正式 :前缀(表明应用)_***:论坛前缀:cdb 博客:supe:前缀<=5字
2、备份:正式表名_时间
字段:
1、单词组合完成,首字母小写,后面单词的首字母大写,最好是带表名前缀(单词间_)
2、
更新数据库不要改动无变化的字段
对应类型推荐:
索引:http://blog.csdn.net/desow/article/details/4683241