由于下周需要给小学弟学妹补知识,我趁这个机会将自己的数据库相关的知识体系化一下。
数据库设计基础规范:
必需使用InnoDB存储引擎。
必需使用UTF-8字符集
数据表,数据字段必需加入中文注释
禁止使用存储过程,视图,触发器,Event
禁止存储大文件或者大照片。
数据库设计命名规范:
只允许使用内网域名,而不是ip连接数据库。
库名,表明,字段名:小写,下划线风格,不超过32个字符,必需见名知意,禁止拼音与中英文混用。
表名: t_xxx; 非唯一索引名: idx_xxx, 唯一索引名: uniq_xxx
数据库设计表设计规范:
单表列数必须小于30
表必须有主键,如自增主键
禁止使用外键,如有完整性约束,需用程序控制
字段设计规范:
必须把字段定义为NOT NULL 并且提供默认值
禁止使用Text,Blob类型。
必须使用varchar(20)存储手机号
禁止使用ENUM,使用TINYINT代替。
SQL使用规范:
禁止使用 SELECT * ,只获取必要的字段,需要显示说明列属性。
禁止使用 INSERT INTO t_xxx VALUES(xxx),必须显示指定插入的列属性
禁止使用属性隐式转换。
禁止大表使用子查询以及JOIN查询。
禁止使用OR条件,必须改为IN查询。
-------------------------------------------------------------------------------------------------------------------------------------------
突然发现一个问题,就是里面的问题比较空,或者说自己的经验还是比较少,没有再实际的环境中遇到这样的问题。还是去互联网再去补充一点。。。。
命名规范:
禁止使用mysql 保留关键字
临时表必须以tmp_为前缀并以日期为后缀。
备份表必须以bak_为前缀并以日期为后缀
设计规范:
禁止在表中建立预留字段
不要使用uuid,md5,hash ,字符串列作为主键。