Commit afa0b913 authored by Chengyang Zhong's avatar Chengyang Zhong

Update gm-sql-rules.md

parent 142540f1
......@@ -8,7 +8,6 @@
4. 如果应用使用的是长连接,应用必须具有自动重连的机制。但请避免每执行一个 SQL去检查一次 DB 可用性。
5. 如果应用使用的是长连接,应用应该具有连接的 TIMEOUT 检查机制,及时回收长时间没有使用的连接。 TIMEOUT 时间一般建议为 20min。
6. 我们所有的 MySQL 数据库除历史原因外,都采用 UTF8MB4 编码。
7. Mysql 对 DDL 支持很差,表结构推荐设计为 Key-Value 结构。如果是关系型结构的数据库,请尽量预留一些字段,如 value1 ,value2 ,value3。 ???
8. 原则上,Mysql用户名与数据库名字一样。涉及到各端使用相同db的,各自使用独立账户。
#### 命名
......@@ -23,17 +22,12 @@ e) 命名全部采用小写,并且名称前后不能加引号。
#### 1. 表
##### 表设计
a) 在设计时尽量包含两个日期字段:gmt_created(创建日期),gmt_modified(修改日期)且非空, 对表的记录进行更新的时候,必须包含对 gmt_modified 字段的更新。
a) 在设计时尽量包含两个日期字段:gmt_created(创建日期),gmt_modified(修改日期)且非空, 对表的记录进行更新的时候,必须包含对 gmt_modified 字段的更新。datetime, timestamp?
b) 必须要有主键,主键尽量用自增字段类型,推荐类型为 INT 或者 BIGINT 类型。
c) 需要多表 join 的字段,数据类型保持绝对一致。
d) Mysql 的表尽量设置成 KV(Key-Value)结构,这样便于扩展和维护。
e) 当表的字段数非常多时,可以将表分成两张表,一张作为条件查询表,一张作为详
细内容表(主要是为了性能考虑)。
f) 当字段的类型为枚举型或布尔型时,建议使用 char(1)类型。
g) 同一表中,所有 varchar 字段的长度加起来,不能大于 65535.如果有这样的需求,请
使用 TEXT/LONGTEXT 类型。
h) 由于 MYSQL 表 DDL 维护成本很高,所以在适当的时候,可以有一定的字段容余。
比如:Value1,Value2,Value3 这样的字段。
e) 当表的字段数非常多时,可以将表分成两张表,一张作为条件查询表,一张作为详细内容表(主要是为了性能考虑)。case by case
f) 当字段的类型为枚举型或布尔型时,建议使用 char(1)类型。??
g) 同一表中,所有 varchar 字段的长度加起来,不能大于 65535.如果有这样的需求,请使用 TEXT/LONGTEXT 类型。
##### 表命名
> 业务团队同学共同参与制定
......@@ -53,9 +47,6 @@ c) 布尔值类型的字段命名为 is+描述。如 member 表上表示是否
##### 字段注释
- 新增列、新建表,务必增加字段注释
- 标准字段注释由一组"@"开头的标签+空格+文本组成。
以 MD_USER 表的部分字段为例:
![](https://tva1.sinaimg.cn/large/007S8ZIlly1ggsonreafij30hd0u2751.jpg)
......@@ -67,26 +58,12 @@ c) 布尔值类型的字段命名为 is+描述。如 member 表上表示是否
1. 普通索引使用idx_
2. 唯一索引使用uniq_开头
#### 3. 约束
##### 设计
##### 命名
#### 4. 触发器
#### 5. 存储过程、函数
### SQL开发规范
#### 1. 编码&格式规范
- SQL代码格式化,尽可能的按照统一的格式
- 代码除字符串中为小写,其余全部大写
- 代码中不出现单独的括号行
- 表与表的关联只使用左连接和全连接,避免使用右连接,保证主表在前,从表在后的顺序,按照从左向右的思维逻辑,方便SQL业务逻辑的阅读
......@@ -94,6 +71,7 @@ c) 布尔值类型的字段命名为 is+描述。如 member 表上表示是否
- 同一级别的表关联,左侧缩进一致,并保证关键字右对齐
- 在同一个变更中,不要同时进行DDL和DML
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment