179.阿里java开发手册

数据库范式

数据库:
第一范式: 要求表中不能存在重复列
第二范式: 必须表中每一行数据可以确定通过pk键完整表示的
第三范式: 表中每一列数据只完全依赖pk,数据列之间不存在依赖关系, 如果存在依赖则需要分表

阿里数据开发强制要求

阿里java开发手册:
1.表达是否概念,字段需要使用is_xxx, 数据类型使用unsigned tinyint 1:true 0:false
2.表名,字段名,必须使用小写字母,禁止出现数字开头,禁止两个下划线中间只出现数字
3. 表明不允许使用复数名词, 不允许使用保留字
4. 主机索引使用pk_字段名, 唯一索引使用uk_字段名, 普通索引使用idx_字段名称
5. 小数类型使用decimal, (float和double类型存在精度问题, 尤其是钱问题)
6. 如果字段长度几乎相等使用char字符串类型, 比如电话号码
7. varchar 为变长类型, 长度超过5000, 需使用text字段, 同时需要将该字段单独一张表, 防止影响数据库其他字段索引使用
8.表必须具备单个字段 id, gmt_create(创建时间:不允许修改), gmt_modified (更新时间: 可以修改)
9. 如果修改字段含义或对字段表示的状态追加时,需要及时更新字段注释
10.业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引. ( 时间比空间更重要, 同时保证数据唯一性)
11.超过三个表禁止 join。需要 join 的字段,数据类型保持绝对一致;多表关联查询时,保证被关联的字段需要有索引
12.在 varchar 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度
13.页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决。(索引其实就是排序, 组合索引就是先排序前面的字段, 再根据剩下字段排序,左模糊或者全模糊会导致索引失效 )
14.不要使用 count(列名)或 count(常量)来替代 count(*),count(*)是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。(count(*) 这个数据早就被记录在一个数据中,不需要查表)
15.count(distinct col) 计算该列除 NULL 之外的不重复行数,注意 count(distinct col1, col2) 如果其中一列全为 NULL,那么即使另一列有不同的值,也返回为 0。
16.当某一列的值全是 NULL 时,count(col)的返回结果为 0,但 sum(col)的返回结果为 NULL,因此使用 sum()时需注意 NPE 问题
17.使用 ISNULL()来判断是否为 NULL 值  (null和任何值比较都是null)
18.代码中写分页查询逻辑时,若 count 为 0 应直接返回,避免执行后面的分页语句。(先查后改)
19.不得使用外键与级联,一切外键概念必须在应用层解决

2020版阿里java开发手册
链接:https://pan.baidu.com/s/1zPabBvor-vkogwDIYz2RiA
提取码:bq3r

posted @ 2021-07-19 15:35  楠海  阅读(89)  评论(0编辑  收藏  举报