MySQL数据库设计建议

【强制】数据库的名称必须控制在32个字符以内,由英文字符和数字组成。禁止使用中文。

【强制】创建数据库时必须显式指定字符集,并且字符集只能是utf8或者gbk。

【强制】表名称必须控制在32个字符以内。不能使用系统保留字和特殊字符,只能使用字母、数字和下划线。

【强制】列名称必须控制在32个字符以内。不能使用系统保留字和特殊字符,只能使用字母、数字和下划线。

【强制】创建表时必须显式指定字符集,并且字符集必须与数据库字符集相同,utf8或者gbk。

【强制】创建表时必须显式指定表存储引擎类型,默认使用InnoDB。如果需要选用MyISAM等其他引擎,统一平台无法支持。

【强制】InnoDB表必须有主键,主键必须为自增(auto_increment属性)BIGINT类型。主键列禁止被更新。

【强制】表中所有字段必须都是NOT NULL属性,业务可以根据需要定义DEFAULT值。

【强制】字段及表必须要有COMMENT。

【强制】表中字段名不能使用关键字

【强制】BLOB/TEXT不要有默认值

【强制】不允许使用分区表。

【强制】禁止使用SELECT * 取所有字段

【强制】INSERT需要指明需要插入的字段名

【强制】不支持触发器(Triger)

【强制】不支持存储过程(Procedure)

【强制】不支持外键(Foreign Key)

【强制】不支持函数(Function)

【强制】不支持视图(Views)

【强制】不支持事件(Event)

【强制】DML语句和DDL语句要分开提单

【强制】DML SQL上线单必须每修改1500行数据进行select sleep(1)

【强制】drop语句必须带 IF EXISTS,且一条drop语句只能删除一张表

【强烈建议】表自增临界值检查

【强烈建议】表名|字段名只能用小写

【强烈建议】不推荐使用ENUM和SET。

【强烈建议】VARCHAR与CHAR的选择:以UTF8或GBK为例,VARCHAR(200)对比CHAR(200),在存储上InnoDB中已将CHAR(200)字段当成变长字段在处理,两者已经不存在区别。但比如我们存放32长度的md5值,这时候就应该用CHAR(32),因为虽然在InnoDB存储层面与VARCHAR(32)已经没有区别,但使用CHAR(32)有利于传递出这是一个有规律的字段这样的信息。

【强烈建议】BLOB,TEXT,MEDIUMTEXT,LONGTEXT不推荐使用。

【强烈建议】业务活跃的大表中必须有行数据的创建时间字段create_time和最后更新时间字段update_time

【强烈建议】唯一键以“uk_”开头,普通索引以“idx_”开头,一律使用小写格式,以表名/字段的名称或缩写作为后缀。

【强烈建议】InnoDB和MyISAM存储引擎表,索引类型必须为BTREE。

【强烈建议】单个索引中每个索引记录的长度不能超过64KB

【强烈建议】单个表上的索引个数不能超过7个

【强烈建议】sql where条件必须要有索引

【强烈建议】JOIN表不推荐超过3个

【强制建议】强烈不建议sql语句有使用%S%或者%S进行模糊查询

建议】业务中选择性很少的状态status、类型type等字段推荐使用tinytint或者smallint类型

建议】业务中IP地址字段推荐使用无符号整型int(10) UNSIGNED类型

【建议】datetime推荐使用int替代

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值