Emove

  • 首页
  • 归档
  • 分类
  • 标签

  • 搜索
context 反射 channel LRU BeanDefinition JVM 装饰者模式 MyBatis 快慢指针 归并排序 链表 hash表 栈 回溯 贪心 主从复制 二分查找 双指针 动态规划 AOF RDB 规范 BASE理论 CAP B树 RocketMQ Sentinel Ribbon Eureka 命令模式 访问者模式 迭代器模式 中介者模式 备忘录模式 解释器模式 状态模式 策略模式 职责链模式 模板方法模式 代理模式 享元模式 桥接模式 外观模式 组合模式 适配器模式 建造者模式 原型模式 工场模式 单例 UML 锁 事务 sql 索引

表设计规范

发表于 2020-04-06 | 分类于 MySQL | 0 | 阅读次数 157

表设计规范

  1. 每张表都要有主键

    id int(10) unsigned not null auto_increment
    
  2. 强烈建议字段定义为not null

    需要为空的字段可定义为not null default ‘’ 或0(0不要赋予实际意义)

  3. 库名、表名、字段名

    1. 必须使用小写,并且单词间使用下划线(“_”)分割
    2. 命名尽量不超过12个字符
    3. 应尽量做到见名知意,尽量使用名词而不是动词
    4. 禁止出现数字开头
    5. 禁止两个下划线中间只出现数字
    6. 禁止表名使用复数形式
    7. 禁止使用保留字,请参考MySQL官方保留字
    8. 表的命名最好是“业务名称_表的作用”
    9. 库名与应用名称应尽量一致
    10. 追加字段或对字段表示的状态追加时,必须及时更新字段注释

    说明:MySQL在windows下不区分大小写,但在Linux下默认是区分大小写的。因此数据库名,表名,字段名都不允许出现任何大写字母,避免节外生枝

  4. 小数类型字段数据类型为decimal,禁止使用float、double

  5. 建议使用unsigned存储非负数值

    如tinyint,取值范围为[-128,127],加了unsigned之后,取值范围为[0,255]

  6. 建议使用int unsigned存储IPV4

  7. 整形定义中建议采用int(10),而不是int(1)、int**(**13)或其他

  8. 存储状态等,用tinyint(3)

    1. 表示是与否概念的字段,必须使用is_xxx的方式命名,且1表示是,0表示否
  9. 不建议使用enum,用tinyint代替

  10. 尽量不使用text、blob类型

  11. varchar(N),N表示的是字符数而不是字节数,比如varchar(255),可以最大存储255个汉字,需根据实际情况来定义N的大小。N尽可能小,因为MySQL一个表中所有varchar字段最大长度为65535个字节,、21845个汉字(UTF-8编码格式下),进行排序和创建临时表一类的内存操作时,会使用N的长度申请内存

    说明:

    1. varchar(N),如果N < 256时会使用一个字节来存储长度,如果M >= 256则使用两个字节来存储长度
    2. 使用UTF-8字符集,如果是汉字,占3个字节,但ASCII码字符还是一个字节
  12. 表字符集选择UTF-8

  13. 存储年使用year类型

  14. 存储日期使用date类型

  15. 存储日期(精确到秒)建议使用TIMESTAMP类型,因为timestamp使用4字节,datetime使用8个字节,timestamp类型保存的值不能早于1970年或晚于2038年

  16. 禁止在表中使用varbinary、blob存储图片、文件等

  17. 如果存储的字符串长度几乎相等,使用char定长字符串类型

  18. 表必须由create_time、update_time字段(或表示相同含义的字段名如阿里的gmt_create、gmt_modified)

    说明:前者表示记录创建时间、后者表示记录更新时间

  19. 字段允许适当冗余、以减少关联查表,提高查询性能。但必须考虑数据一致。

    冗余字段应遵循:

    1. 不是频繁更新的字段
    2. 不是varchar超长字段,更不能是text字段

​

# context # 反射 # channel # LRU # BeanDefinition # JVM # 装饰者模式 # MyBatis # 快慢指针 # 归并排序 # 链表 # hash表 # 栈 # 回溯 # 贪心 # 主从复制 # 二分查找 # 双指针 # 动态规划 # AOF # RDB # 规范 # BASE理论 # CAP # B树 # RocketMQ # Sentinel # Ribbon # Eureka # 命令模式 # 访问者模式 # 迭代器模式 # 中介者模式 # 备忘录模式 # 解释器模式 # 状态模式 # 策略模式 # 职责链模式 # 模板方法模式 # 代理模式 # 享元模式 # 桥接模式 # 外观模式 # 组合模式 # 适配器模式 # 建造者模式 # 原型模式 # 工场模式 # 单例 # UML # 锁 # 事务 # sql # 索引
SQL规范
索引规范
  • 文章目录
  •   |  
  • 概览
林亦庭

林亦庭

less can be more

87 文章
11 分类
54 标签
RSS
Github
Creative Commons
© 2021 林亦庭
粤ICP备20029050号