一、数据库命名规范
1、所有的数据库对象名称必须使用小写字母并用下划线表示,MySQL本质上是Linux系统下的一个文件,Linux系统对大小写敏感。
2、所有数据库对象名称禁止使用MySQL保留关键字
3、数据库对象名称要能做到见名知意,长度不超过32个字符,太长会在传输时增加网络开销
4、临时表必须以tmp_为前缀并以日期为后缀
5、备份表必须以bak_为前缀并以日期为后缀
6、所有存储相同数据的列名和类型必须一致,比如user表中的id和order表中的user_id一致
7、表达是与否概念的字段,必须使用is_xxxx的方式命名,数据类型是unsigned tinyint(1表示是,0表示否)
8、禁用保留字,如desc、range、match、delayed等
9、主键索引为pk_字段名、唯一索引名为uk_字段名;普通索引名为idx_字段名
10、小数类型为decimal,禁止使用float,double 说明:float 和 double 在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不 正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数分开存储。
11、如果存储的字符串长度几乎相等,使用char定长字符串类型
12、Varchar是可变长字符串,不预先分配存储空间,长度不可超过5000,如果大于这个长度可以定义text来存储
13、表必备三个字段id、is_delete、gmt_create、gmt_modified。说明:其中id必为主键,类型为unsigned bigint、单表时自增、步长为1。gmt_create, gmt_modified 的类型均为 date_time 类型,前者现在时表示主动创建,后者过去分词表示被 动更新。
14、表示状态的字段使用TINYINT UNSIGNED
15、表示Boolean类型的使用TINYINT表示
二、数据库基本设计规范
1、数据库和表的字符集统一使用UTF-8
2、如果要存储一些如表情符号的,还需要使用UTF-8的拓展字符集
3、数据库,表,字段字符集一定要统一,统一字符集可以避免由于字符集转换产生的乱码
4、所有表和字段都要添加注释
5、从一开始就进行数据字典的维护
6、尽量控制单表据量大小。建议控制在500万以内,虽然500万并不是MySQL的数据库限制,但会给修改表结构,备份,恢复带来很大困难。可存储数量大小取决于存储设置和文件系统。想减少单表数据量可以历史数据归档,分库分表,分区表。
7、禁止在数据库中存储图片,文件等二进制数据。如果要存储这类数据,就要使用blog或者text这样的大字段加以存储,会影响数据库的性能。通常所占数据容量很大,会在短时间内造成数据库文件的快速增长,而数据库在读取数据时,会进行大量的随机IO操作,如果数据文件过大,IO操作会非常耗时,从而影响数据库性能。正确做法是将这类数据存储在文件服务器中,而数据库只村存储地址信息
三、索引设计规范(Innodb中主键实质上是一个索引)
1、限制每张表表上索引数量,建议单表不超过5个索引。索引并不是越多越好,可以提高查询效率,但是会降低插入和更新的效率,偶尔会英影响查询效率。
2、每个Innodb表都必须有一个主键,Innodb是一种索引组织表,是按照主键索引的顺序来组织表的,如果没有指定主键,那么Innodb会优先选择表中第一个非空唯一索引作为主键,如果没有这个索引,那么Innodb会自动生成一个占6个字节的主键,而这个主键的性能并不是最好。
内容不断更新中,欢迎评论或私信补充哦!!!
网友评论