【MySQL】MySQL数据库设计规范
命名规范
一. 基本规范
- 原则:清晰明了,简洁准确,见名知意。
- 组成:英文字母, 下划线, 阿拉伯数字。
- 长度:最长64个字符,建议不超过32, 以免对后序的操作带来不便。
- 命名方式。
- 名称中除下划线、数字的部分,要使用英文单词或英文短语或相应缩写,不推荐使用汉语拼音。
- 禁止使用MySQL关键字和保留字,见附录-关键字和保留字。
- 禁止出现数字开头。
- 英文字母使用小写形式,避免因操作系统或mysql服务配置的不同引起的问题。
- 名词使用单数。
- 多个单词用下划线分隔。
- 禁止两个下划线中间只出现数字。
二. 具体规范
1. 数据库库命名
1)使用项目名缩写作为前缀,如游戏项目: game_xxx。
2)库名长度控制在10个字符内,超出10个字符时,尽量使用单词缩写。
3)备份库必须以bak_为前缀,以日期为后缀 例:bak_video_20180307。
4)临时库必须以tmp_为前缀,以日期为后缀 例:tmp_video_20180307;
2. 表命名
1)用系统或模块的英文名的缩写作为前缀,优先使用模块名。
2)表名长度控制在15个字符内,超出15个字符时,尽量使用单词缩写。
3)备份表必须以bak_为前缀,以日期为后缀 例:bak_video_user_20180307。
4)临时表必须以tmp_为前缀,以日期为后缀 例:tmp_video_user_20180307。
3. 字段命名
1)避免出现数字。
2)除其它表的主键外,不需要添加前缀。
3)字段名长度控制在20个字符内,超出20个字符时,使用单词缩写。
4. 索引命名
1)主键索引名为pk_字段名,pk_即 primary key。
2)非唯一索引 按照idx_字段名称_字段名称[_字段名]进行命名, idx_ 即 index。
3)唯一索引 按照uk_字段名称_字段名称[_字段名] 进行命名, uk_ 即unique key。
4)如索引名过长,使用缩写。
三. 注释
1. 表注释
1)每个表必须要有注释。
2)描述数据表用途。
3)注释不超过30个字符。
2. 字段注释
1)每个字段必须要有注释。
2)描述该字段的用途及可能存储的内容,字段的取值含义或者范围。
3)如果是枚举类型,将该字段中使用的内容都定义出来。
4)注释不超过30个字符。
这个就是一个比较规范的创建表语句及注释
三. MySQL字符集
1. 字符集推荐
1) 非特殊需求,所有字符存储与表示,均使用utf8编码。
2)解读:通用,无乱码风险,汉字3字节,英文1字节。
3)如果需要存储表情符号,字段选择utf8mb4(utf8的超集)来进行存储,有些特殊字符串可以保存,比如IOS的表情。
2. 创建对象的字符集
2.1 字符集和校对规则的4个级别 (从上到下,级别递减)
1)服务器级别。
2)数据库级别。
3)表级别、列级别。
4)连接级别。
2.2. 更低级别的设置会继承高级别的设置。
2.3. 通用规则
1)先为服务器或者数据库选择一个合理的字符集,然后根据不同的实际情况,让某个列选择自己的字符集。
2)字符集能表达的字符范围 utf8 > gbk > gb2312 > latin1。
3)字符集中的ci 为 Case Insensitive (大小写不敏感)的缩写, cs 为Case Sensitive (大小写敏感)的缩写。
4)字符集中 bin 表示用二进制存储数据,用编码值进行比较,区分大小写。
3. 控制server和client端交互通信的字符集
1)character_set_server:mysql server默认字符集。
2)character_set_database:数据库默认字符集。
3)character_set_client:MySQL server假定客户端发送的查询使用的字符集。
4)character_set_connection:MySQL Server接收客户端发布的查询请求后,将其转换为character_set_connection变量指定的字符集。
5)character_set_results:mysql server把结果集和错误信息转换为character_set_results指定的字符集,并发送给客户端。
6)character_set_system:系统元数据(字段名等)字符集。