Commit c107a079 authored by 王鹏鸿's avatar 王鹏鸿

Update gm-sql-rules.md

parent afa0b913
......@@ -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"与参数类型不匹配,隐式转换会导致条件不能使用索引
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