Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
gm-sql-rules
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
gm-sql-rules
Commits
afa0b913
Commit
afa0b913
authored
Aug 07, 2020
by
Chengyang Zhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update gm-sql-rules.md
parent
142540f1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
5 additions
and
27 deletions
+5
-27
gm-sql-rules.md
gm-sql-rules.md
+5
-27
No files found.
gm-sql-rules.md
View file @
afa0b913
...
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment