阿里Java开发手册学习 3 MYSQL规约
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
建表规约
1.表达是与否概念的字段,必须使用is_XXX的方式命名,数据类型是 unsigned tinyint (1表示是,0表示否)。
2.表名不使用复数名词。
3.禁用保留字。
4.小数类型为decimal,禁止使用float和double。
5.表的命名最好是加上“业务名词_表的作用” 。
6.修改字段时要及时更新字段注释。
7.字段允许适当冗余,以提高性能。
8.单表行数超过500万行或者单表超过2G时才考虑分库分表。
9.合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。
索引规约
1.业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。
2.超过3个表禁止join;多表关联查询时,保证被关联的字段需要有索引。
3.页面搜索严禁左模糊和全模糊。
4.利用延迟关联或者子查询优化超多分页场景。即先查出索引主键,再根据主键关联找出需要的信息。
5.建组合索引的时候,区分度最高的在最左边。
SQL规约
1.不要使用count(列名)或count(常量)来代替count(*),count(*)会统计值为null的行,而count(列名)不会统计此列为NULL的值。
2.count(district col) 计算该列除NULL之外的不重复数量。
3.当列值全是null时,count(col)的返回结果是0,sum(col)的返回结果是NULL。注意NPE问题。
4.必须使用ISNULL()来判断是否为NULL值,NULL与任何值得比较都为NULL。
5.不得使用外键与级联,一切外键概念必须在应用层解决。
6.禁止使用存储过程,存储过程难以调试和扩展,更没有移植性。
ORM规约
1.禁止使用*作为查询的字段列表。
2.POJO的boolean属性不准使用is,而数据库必须使用is_,在resultMap中进行字段与属性之间的映射。
3.不要写一个大而全的数据接口,。
阿里Java开发手册学习 3 MYSQL规约的更多相关文章
- 阿里 JAVA 开发手册 学习 4 工程规约
应用分层 1.分层如下 1)开放接口层:可以直接封装Service接口暴露成RPC:通过web封装成http接口:网关控制层等. 2)终端显示层:各个端的模板渲染并执行显示层. 3)Web层:主要是度 ...
- JUC学习笔记--从阿里Java开发手册学习线程池的正确创建方法
前言 最近看阿里的 Java开发手册,上面有线程池的一个建议: [强制]线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式, 这样的处理方式让写的同学 ...
- 从阿里Java开发手册学习线程池的正确创建方法
前言 最近看阿里的 Java开发手册,上面有线程池的一个建议: [强制]线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更 ...
- 【转】线程池体系介绍及从阿里Java开发手册学习线程池的正确创建方法
jdk1.7中java.util.concurrent.Executor线程池体系介绍 java.util.concurrent.Executor : 负责线程的使用与调度的根接口 |–Execut ...
- 阿里Java开发手册学习 2 异常日志
异常日志 异常处理 1.不要捕获继承自RuntimeException的运行时异常类,这类异常通常由程序员来校验,来保证查询的健壮性. 2. 不要对大段代码 try catch,分清稳定代码和非稳定代 ...
- 阅读阿里Java开发手册记录
概述 在阅读完阿里Java开发手册(嵩山版)后,发现自己在开发过程中有一些没有按照规范开发的情况,这里将容易忘记的规范记录下来,并且添加自己的理解,一方面方便自己巩固记忆,另一方面希望对其他同学能够提 ...
- 阿里JAVA开发手册零度的思考理解(一)
转载请注明原创出处,谢谢! 缘由 阿里JAVA开发手册已经发表有很长时间了,值得认真研究思考推广 阿里官方的Java代码规范标准,这份开发手册不仅规范了一些开发细节,也提出了很多工程开发的哲学,值得好 ...
- 阿里JAVA开发手册零度的思考理解(二)
转载请注明原创出处,谢谢! 说在前面 人生的大道上默默地走,就必须要有一盏灯亮着为你引导方向!而这盏灯抑或只是一句话,一句鼓励,一个赞美,一次承认,一次认可,一次相识一次交流-- 上篇文章:阿里JAV ...
- 阿里java开发手册中命名规约解读之DO/BO/DTO/VO/AO
前言 在阅读<阿里巴巴Java开发手册>时,看到命名规则中有这样一条 虽然知道这些是根据Java对象的角色所分配名称的后缀,但是没有弄清楚分别是什么意思,日常开发中也没有使用到. 网上查找 ...
随机推荐
- C语言中的bool类型
C99中提供了一个头文件 <stdbool.h> 定义了bool代表_Bool,true代表1,false代表0.只要导入 stdbool.h ,就能非常方便的操作布尔类型了. 代码如下: ...
- linux 时间模块 二
Linux中有硬件时钟与系统时钟 在Linux中有硬件时钟与系统时钟等两种时钟.硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟.系统时钟则是指kernel中的时钟.当Linux启 ...
- gpio_direction_output vs gpio_set_value之间的使用关系
在Linux驱动中常常会碰到gpio_set_value(port_num,0/1)或gpio_direction_output (port_num,0/1) 这两者有什么关系呢gpio_set_va ...
- LeetCode OJ——Unique Binary Search Trees
class Solution { public: int numTrees(int n) { ); vector<int> numVector; numVector.assign(n+,) ...
- java mail Received fatal alert: handshake_failure java 无法发送邮件问题 java 发送qq邮件(含源码)
java 无法发送邮件问题 java 发送qq邮件 报错:java mail Received fatal alert: handshake_failure (使用ssl) javax.mail.M ...
- AC日记——[USACO07DEC]手链Charm Bracelet 洛谷 P2871
题目描述 Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like t ...
- Go语言 -- 获取命令行参数
部署golang项目时难免要通过命令行来设置一些参数,那么在golang中如何操作命令行参数呢?可以使用flag库和os库.1.flag库的使用 Go语言标准库提供了用于快迅解析命令行参数的flag包 ...
- HashMap 和 Hashtable 的同和不同
综述 可以直接根据 hashcode 值判断两个对象是否相等吗?肯定是不可以的,因为不同的对象可能会生成相同的 hashcode 值.虽然不能根据 hashcode 值判断两个对象是否相等,但是可以直 ...
- SWTBOK測试实践系列(5) -- 项目中使用手动和自己主动化的策略
手动測试和自己主动化測试永远是一个非常热门的话题.自己主动化也一直被人们捧上神坛.自己主动化測试和手动測试从技术上来说本质事实上都是測试用例设计.仅仅只是终于形式一个是人工运行,一个是代码运行罢了.这 ...
- webpack 项目实战
步骤一: npm init 步骤二: npm install -D clean-webpack-plugin css-loader extract-text-webpack-plugin html-w ...