快乐学习
前程无忧、中华英才非你莫属!

同乐大话MySQL建表规范

此篇原创,可以尽情转载
 
前言
所谓的业务建模,在小编理解基本上就是,在数据库中东北话(lizheng)的建几张表,这几张表就不能随随便便建立了,也不能随随便便推倒从来,一旦数据量大了,在推倒重来还是比较恶心的!
 
应该根据未来要经常执行的查询语句来设计Schema,这里往往要权衡各种利弊因素。其实我转载的众多以及原创DBA的文章部分都注明很多次,严谨建表,规范建表,并且都严重的说明建表值得您花费大量时间,往小了说你造后期给团队会省多少钱,省多少事,省多少人力成本!so,业务规范从建表开始,这是板上钉钉的事情,虽然用户看不到后台数据库中的表长什么样,但是后台都很乱,你也别想前台能好几天,时间长了,因为后台的杂乱也会导致前台很多业务进行不下去!
 
 
 
小编总结的建表规律,以喝酒为例给大家生动的解释:
0、生病了,禁止喝酒!(例如:要选择好的存储引擎才能存大量数据,才是提高性能的王道!过时了的存储引擎myisam就不能再用了,防止坑人坑己!)
 
1、能用杯子喝酒,就不要直接对瓶子吹。(例如:就是告诉你说,数据库能用char的就别用vachar,其他数据类型也是一样要遵循极简原则,杜绝浪费空间和时间!)
 
2、要吃饱之后,在开喝,不伤胃,也喝不了多少,老铁没毛病!(例如:就是告诉你说,数据库在关键的查询字段、以及核心字段一定要设置非空,保证数据不空!)
 
3、在选酒的时候,一定要照顾大家喜好,在衡量度数,味道,价格!((例如:就是告诉你说,想要不乱码,那就要遵循国际通用原则,但是在今天数据格式、开发接口众多,直接使用UTF-8可能不适用,一般公司会选择UTF-8的子类(utf8mb4),来承接各种复杂的符号,例如各种多媒体的表情包等等 ! 这个要考察你的业务会带进来什么样的数据编码格式,以及百分之80左右的前端浏览装备默认都是什么字符集!甚至要结合测试,开发、DBA的经验观点来进行设置,介个一定不要拍脑袋 ) )
 
4、吃炸鸡一定要喝啤酒 (例如:建表一定要有个名字叫id的字段,且为无声明(UNSIGNED)的就是bigint,为啥这个ID就没遵循极简原则,你就没想过你的数据要超过几千万行!还有很多人设置ID为vachar类型,脑子里都TM肿么想的,看一个公司技术牛不牛逼,看表就行了!)
 
5、喝酒不遭罪,提前声明好!(例如:开发代码强调注释,除了专业互联网公司,我越来越发现,好多公司,项目中的表结构里不加注释是什么情况,谁能给我解释一下这个怪异的名称字段是什么玩意!为啥数据库表里,有一半字段里面没有值!尼玛能解释明白么,其实简单注释也不会影响性能,后台的表没给我注释好,不准走!  注释的严重性我不用说了吧!)
 
6、能喝多少酒,心理一定要有个数!(例如:数据类型一定要用精度最好的,防止业务出错,在后台处理麻烦点无所谓,银行、金融行业的小数都用Decimal而杜绝使用Float,和Double,就连阿里也明确出规范说明了,如果数据超出范围可以将数据拆分成整数和小数)
 
7、老铁~ 酒不能混着喝,小心伤身体(例如:很多同学傻傻分不清楚怎么去用varchar和text,个人感觉字符长度大于3000的一定要用text!)
 
 
8、有一句话说的好,不要喝擦皮了!(例如:就是给字段起名称,不要跟mysql里面的关键字段相冲突,如果起的一样,当时没有报错后期出现error这也是非常致命的,而且会一头雾水,都不造杂回事!)
 
 
9、喝酒要进兴,时间地点住宿要选好!尽量不开车!(例如:存储年要用year,存储日期要用date、存储时间要用timestamp)
 
 
10、喝酒不要拼酒!到位才是关系好!(例如:关系型数据库就不能存储大文件和以及用BLOB存储图片,逞能非好汉!)
11、喝酒要规范,尽量别闷头(例如:尽量不让开发有root甚至领导有root,ROOT只有DBA有才最合适,修改表结构,哪怕稍微一丢丢,也要大家来审核!因为数据量大的时候,触及的业务代码、运维服务,中间层等等都会产生很可怕的蝴蝶效应,所以修改表结构要严抓严打!)
12、喝酒一定要拉帮结派,不要单独怂(如果研发力量薄弱,后台数据操纵不6,这时候一定要设置外键关联,拉帮结派并声明式把它变成有关系的表!要是研发高手,可以不用设置外键,第一是为不屑,第二是这样会产生降低性能的问题。所以小编建议还是设置外键比较好,因为企业大数据关系复杂,一定要声明式主外键关系,谁知道他哪天离职!损耗性能可以在其它方面找回场子!)
………………………………..
还有好多,好多,这里就不继续说了!
 
尽量使用 NOT NULL
 
NULL 类型比较特殊,SQL 难优化。虽然 MySQL NULL类型和 Oracle 的NULL 有差异,会进入索引中,但如果是一个组合索引,那么这个NULL 类型的字段会极大影响整个索引的效率。此外,NULL 在索引中的处理也是特殊的,也会占用额外的存放空间。
 
 
 

 
 
 
 
 
打赏

未经允许不得转载:同乐学堂 » 同乐大话MySQL建表规范

分享到:更多 ()

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    如果上天再给我一次机会,我会对你的博客说,下次还来看你!

    增达网1年前 (2017-08-19)回复

特别的技术,给特别的你!

联系QQ:1071235258QQ群:226134712
error: Sorry,暂时内容不可复制!