(一) 建表规约

  1. 【强制】表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint ( 1表示是,0表示否)。
    说明:任何字段如果为非负数,必须是 unsigned。
    正例:表达逻辑删除的字段名 is_deleted,1 表示删除,0 表示未删除。
  2. 【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只 出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。 正例:getter_admin,task_config,level3_name 反例:GetterAdmin,taskConfig,level_3_name
  3. 【强制】表名不使用复数名词。 说明:表名应该仅仅表示表里面的实体内容,不应该表示实体数量,对应于 DO 类名也是单数 形式,符合表达习惯。
  4. 【强制】禁用保留字,如 desc、range、match、delayed 等,请参考 MySQL 官方保留字。
  5. 【强制】主键索引名为 pk_字段名;唯一索引名为 uk_字段名;普通索引名则为 idx_字段名。 说明:pk_ 即 primary key;uk_ 即 unique key;idx_ 即 index 的简称。
  6. 【强制】小数类型为 decimal,禁止使用 float 和 double。
    说明:float 和 double 在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不 正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数分开存储。
  7. 【强制】如果存储的字符串长度几乎相等,使用 char 定长字符串类型。
  8. 【强制】varchar 是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长 度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索 引效率。
  9. 【强制】表必备三字段:id, gmt_create, gmt_modified。 说明:其中id必为主键,类型为unsigned bigint、单表时自增、步长为1。gmt_create, gmt_modified 的类型均为 date_time 类型。

10. 【推荐】表的命名最好是加上“业务名称_表的作用”。 正例:tiger_task / tiger_reader / mpp_config

11. 【推荐】库名与应用名称尽量一致。
12. 【推荐】如果修改字段含义或对字段表示的状态追加时,需要及时更新字段注释。
13. 【推荐】字段允许适当冗余,以提高查询性能,但必须考虑数据一致。冗余字段应遵循:

1)不是频繁修改的字段。

2)不是 varchar 超长字段,更不能是 text 字段。 正例:商品类目名称使用频率高,字段长度短,名称基本一成不变,可在相关联的表中冗余存 储类目名称,避免关联查询。

14. 【推荐】单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。 说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

15. 【参考】合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检 索速度。

正例:如下表,其中无符号值可以避免误存负数,且扩大了表示范围。

mysql 建表_别再胡乱建表了,看看阿里P8总结的mysql建表规约吧相关推荐

  1. 阿里P8的《MySQL学习笔记》火了,完整版开放下载!

    伴找我要一些 MySQL基础资料,于是我翻箱倒柜,把这份阿里大牛总结的 MySQL 归纳笔记找出来,免费共享给大家! 据说有小伙伴靠这份笔记顺利进入 BAT 哦,所以一定要好好学习这份资料! 资料介绍 ...

  2. mysql内存淘汰_从创建索引过程中内存变化来看SQL Server与MySQL的内存淘汰算法

    在sqlserver中,几年之前就注意到一个现象:sqlserver中对一个大表创建索引或者rebuild索引的过程中,会引起内存剧烈的动荡,究其原因为何,这种现象到底正不正常,是不是sqlserve ...

  3. jdbc mysql 源码_【JDBC系列】从源码角度理解JDBC和Mysql的预编译特性

    背景 最近因为工作调整的关系,都在和数据库打交道,增加了许多和JDBC亲密接触的机会,其实我们用的是Mybatis啦.知其然,知其所以然,是我们工程师童鞋们应该追求的事情,能够帮助你更好的理解这个技术 ...

  4. 最新微服务、MySQL、Nginx加Redis实战,助你成功向阿里P8进军!

    前言 当下互联网时代,国际社会发展迅速,技术革新更加迅猛.未来智能时代,是一个数据时代,而如何处理好这些数据,就是科技发展的趋势. 本文主要为大家介绍一些2020年阿里P8对标学习教程,涵盖微服务架构 ...

  5. 云速建站_华为云域名专场钜惠,助推中小企业云速建站

    域名不仅是一个简单的网址,更是企业在市场竞争中获得持久优势的有力工具.所以对于中小企业而言,拥有一个优质的域名对企业发展而言是很重要的.为了帮助中小企业轻松注册域名,快速搭建好网站,让用户在最短的时间 ...

  6. 苹果删除照片不释放内存_别再胡乱清理垃圾了,只要删除这6个文件夹,瞬间释放20GB内存...

    大家好,我是你们的好朋友护肤小晨铺,一个喜欢在健康生活美容护肤领域不断探索的小编,为的是可以和大家一起在健康生活的路上一起走的更远,虽然我们素未谋生,但是我相信文字的感染力,让我们此刻相聚在一起,人家 ...

  7. bilibili缓存文件在哪里_不要再胡乱清理手机内存,花1分钟删掉这些文件夹,释放大量空间...

    大家都知道手机用久了,空间不足是常事,但是有很多人都说没存什么东西,内存怎么就没了呢?其实在我们运行手机的时候就会产生很多缓存垃圾,浏览网页的时候还会有很多不认识的图片自动保存在手机里面. 当然,这些 ...

  8. mysql dump 导出表_误删库,别跑路!教你一招MySQL 数据恢复

    日常工作中,总会有因手抖.写错条件.写错表名.错连生产库造成的误删库表和数据的事情发生.但是,如果每次删库都跑路的话,怕是再也不好找工作了吧!所以,删库跑路不是上上策. 1.前言 数据恢复的前提的做好 ...

  9. java mysql重要吗_干了三年的Java,你竟然还不会MySQL性能优化

    摘要:MySQL性能优化就算通过合理安排资源,调整系统参数使MySQL运行更快,更节省资源.MySQL性能优化包括查询速度优化,更新速度优化,MySQL服务器优化等等. 前言 MySQL性能优化就算通 ...

最新文章

  1. Strusts2笔记7--国际化
  2. jmeter吞吐量图形显示_Jmeter系列(43)- 详解 Jmeter 图形化 HTML 压测报告之 Charts 模块...
  3. (备忘)Java数据类型中String、Integer、int相互间的转换
  4. shell之实战应用一(查找xml文档中的关键字段)
  5. 详细讲解JAVA中的IO流
  6. 树分治树链剖分相关题目讨论
  7. kotlin学习之密封类(五)
  8. 新手学习python(四)字符串方法
  9. vscode同时打开多个文档方法,简直了
  10. 微软全球AI负责人沈向洋博士:下一个智能终端的风口 | IoT in Action
  11. 为什么只有软件就可以用盗版?
  12. pythonsqlite3模糊_让 Python 更加充分的使用 Sqlite3
  13. 【NLP基础理论】 08 词汇语义学 Lexical Semantics
  14. 前端合并单元格(行合并、列合并)
  15. vscode: Code Runner直接运行多文件C++程序
  16. mt4双线macd_手机版MT4双线MACD设置视频教程
  17. 基于Phyton爬虫索引设计与实现答辩PPT模板
  18. 小武与tfpyth的碰撞----torch.autograd.Function进阶版本
  19. 微信小程序之头像裁剪,添加字幕,生成新图片下载等 解决真机调试和开发者工具 图片不显示等问题
  20. 2099年的flag——writeup

热门文章

  1. 解决安装完ubuntu登陆无root账户问题
  2. 用python实现点阵屏_MicroPython拼插编程实例:点亮心形8x8点阵
  3. python并行编程语言_Python3 系列之 并行编程
  4. 通话过程中显示呼叫失败_电销行业如何破局?深海捷云呼叫中心协助企业通过挑战...
  5. python职业规划书_Python学习过后,职业规划怎样规划?
  6. free 内存 注意点的事
  7. Linux基础命令---zip
  8. Linux学习笔记6月1日任务
  9. 阿里云中间件技术 促进互联网高速发展
  10. Go简单的Goroutine示例