【MySQL】MySQL数据库设计规范

命名规范

  一. 基本规范 

  1. 原则:清晰明了,简洁准确,见名知意
  2. 组成:英文字母, 下划线, 阿拉伯数字
  3. 长度:最长64个字符,建议不超过32, 以免对后序的操作带来不便
  4. 命名方式。
  5. 名称中除下划线、数字的部分,要使用英文单词或英文短语或相应缩写,不推荐使用汉语拼音
  6. 禁止使用MySQL关键字和保留字,见附录-关键字和保留字
  7. 禁止出现数字开头
  8. 英文字母使用小写形式,避免因操作系统或mysql服务配置的不同引起的问题
  9. 名词使用单数
  10. 多个单词用下划线分隔
  11. 禁止两个下划线中间只出现数字

 二. 具体规范

  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)如果需要存储表情符号,字段选择utf8mb4utf8的超集)来进行存储,有些特殊字符串可以保存,比如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. 控制serverclient端交互通信的字符集

   1)character_set_servermysql server默认字符集

     2)character_set_database:数据库默认字符集

   3)character_set_clientMySQL server假定客户端发送的查询使用的字符集

   4)character_set_connectionMySQL Server接收客户端发布的查询请求后,将其转换为character_set_connection变量指定的字符集

   5)character_set_resultsmysql server把结果集和错误信息转换为character_set_results指定的字符集,并发送给客户端

   6)character_set_system:系统元数据(字段名等)字符集。


 

原文地址:https://www.cnblogs.com/songgj/p/11376128.html