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
c107a079
Commit
c107a079
authored
Aug 07, 2020
by
王鹏鸿
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update gm-sql-rules.md
parent
afa0b913
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
21 deletions
+18
-21
gm-sql-rules.md
gm-sql-rules.md
+18
-21
No files found.
gm-sql-rules.md
View file @
c107a079
...
...
@@ -11,32 +11,32 @@
8.
原则上,Mysql用户名与数据库名字一样。涉及到各端使用相同db的,各自使用独立账户。
#### 命名
a)
命名应使用富有意义的英文词汇,多个单词组成的,中间以下划线分割。
b)
命名只能使用英文字母,数字和下划线。
c)
命名避免使用 Mysql 的保留字(详见附录 A)和系统关键字。
d)
命名长度以不超过 15 个字符为宜(避免超过 20)。
e)
命名全部采用小写,并且名称前后不能加引号。
1.
命名应使用富有意义的英文词汇,多个单词组成的,中间以下划线分割。
2.
命名只能使用英文字母,数字和下划线。
3.
命名避免使用 Mysql 的保留字(详见附录 A)和系统关键字。
4.
命名长度以不超过 15 个字符为宜(避免超过 20)。
5.
命名全部采用小写,并且名称前后不能加引号。
### 数据库对象设计规范
#### 1. 表
##### 表设计
a)
在设计时尽量包含两个日期字段:gmt_created(创建日期),gmt_modified(修改日期)且非空, 对表的记录进行更新的时候,必须包含对 gmt_modified 字段的更新。datetime, timestamp?
b)
必须要有主键,主键尽量用自增字段类型,推荐类型为 INT 或者 BIGINT 类型。
c)
需要多表 join 的字段,数据类型保持绝对一致。
e)
当表的字段数非常多时,可以将表分成两张表,一张作为条件查询表,一张作为详细内容表(主要是为了性能考虑)。case by case
f)
当字段的类型为枚举型或布尔型时,建议使用 char(1)类型。??
g)
同一表中,所有 varchar 字段的长度加起来,不能大于 65535.如果有这样的需求,请使用 TEXT/LONGTEXT 类型。
1.
在设计时尽量包含两个日期字段:gmt_created(创建日期),gmt_modified(修改日期)且非空, 对表的记录进行更新的时候,必须包含对 gmt_modified 字段的更新。datetime, timestamp?
2.
必须要有主键,主键尽量用自增字段类型,推荐类型为 INT 或者 BIGINT 类型。
3.
需要多表 join 的字段,数据类型保持绝对一致。
4.
当表的字段数非常多时,可以将表分成两张表,一张作为条件查询表,一张作为详细内容表(主要是为了性能考虑)。case by case
5.
当字段的类型为枚举型或布尔型时,建议使用 char(1)类型。??
6.
同一表中,所有 varchar 字段的长度加起来,不能大于 65535.如果有这样的需求,请使用 TEXT/LONGTEXT 类型。
##### 表命名
> 业务团队同学共同参与制定
参考:
a)
同一个模块的表尽可能使用相同的前缀,表名尽可能表达含义,例如:CRM_SAL_FUND_ITEM。
b)
字段命名应尽可能使用表达实际含义的英文单词或缩写,
1.
同一个模块的表尽可能使用相同的前缀,表名尽可能表达含义,例如:CRM_SAL_FUND_ITEM。
2.
字段命名应尽可能使用表达实际含义的英文单词或缩写,
如,公司 ID,不要使用:corporation_id, 而用:corp_id 即可。
c)
布尔值类型的字段命名为 is+描述。如 member 表上表示是否为 enabled 的会员的字段命名为 IsEnabled
3.
布尔值类型的字段命名为 is+描述。如 member 表上表示是否为 enabled 的会员的字段命名为 IsEnabled
##### 字段类型
...
...
@@ -65,14 +65,13 @@ c) 布尔值类型的字段命名为 is+描述。如 member 表上表示是否
### SQL开发规范
#### 1. 编码&格式规范
-
表与表的关联只使用左连接和全连接,避免使用右连接,保证主表在前,从表在后的顺序,按照从左向右的思维逻辑,方便SQL业务逻辑的阅读
1.
表与表的关联只使用左连接和全连接,避免使用右连接,保证主表在前,从表在后的顺序,按照从左向右的思维逻辑,方便SQL业务逻辑的阅读
-
代码中SQL关键字保证右对齐,这样SQL中的字段就能保证左对齐
2.
代码中SQL关键字保证右对齐,这样SQL中的字段就能保证左对齐
-
同一级别的表关联,左侧缩进一致,并保证关键字右对齐
3.
同一级别的表关联,左侧缩进一致,并保证关键字右对齐
-
在同一个变更中,不要同时进行DDL和DML
4.
在同一个变更中,不要同时进行DDL和DML
...
...
@@ -81,6 +80,4 @@ c) 布尔值类型的字段命名为 is+描述。如 member 表上表示是否
1 不允许drop table / column
2 禁止在create table语句中指定字符集为utf8。我们所有环境mysql指定字符集为utf8mb4 存储引擎为innodb
3 sql create table / alter column 需要有注释
字段"business_id"与参数类型不匹配,隐式转换会导致条件不能使用索引
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