Professional Documents
Culture Documents
3.数据库结构设计说明 V1.1
3.数据库结构设计说明 V1.1
3.数据库结构设计说明 V1.1
危化品大屏
数据库结构设计说明
数据库结构设计说明
目 录
1 数据库(MySQL)开发规范....................................................................................................4
1.1 说明..............................................................................................................................4
1.2 概述..............................................................................................................................4
2 命名规范...................................................................................................................................5
2.1 总则..............................................................................................................................5
2.2 数据库命名...................................................................................................................5
2.3 表命名..........................................................................................................................5
2.4 字段命名......................................................................................................................5
2.5 索引命名......................................................................................................................5
2.6 示例..............................................................................................................................6
3. 对象设计规范...........................................................................................................................7
3.1 总则..............................................................................................................................7
3.2 数据类型......................................................................................................................7
3.2.1 数值类型...........................................................................................................7
3.2.2 字符串类型.......................................................................................................7
3.2.3 时间类型...........................................................................................................8
3.3 表设计..........................................................................................................................8
3.4 约束使用......................................................................................................................9
3.4.1 主键...................................................................................................................9
3.4.2 唯一约束...........................................................................................................9
3.4.3 外键...................................................................................................................9
3.4.4 非空列.............................................................................................................10
3.4.5 存储过程、触发器、视图、计划任务.........................................................10
4 SQL 编写规范..........................................................................................................................10
4.1 绑定变量与替代变量.................................................................................................10
4.1.1 原则.................................................................................................................10
4.2 数据类型转换.............................................................................................................10
4.2.1 原则.................................................................................................................10
4.2.2 说明.................................................................................................................10
4.2.3 示例.................................................................................................................11
4.3 "select * from …"使用.................................................................................................11
4.3.1 原则.................................................................................................................11
4.3.2 说明.................................................................................................................11
4.4 "insert into tablename values()"使用.........................................................................11
4.4.1 原则.................................................................................................................11
4.4.2 说明.................................................................................................................11
4.5 表连接........................................................................................................................12
4.5.1 原则.................................................................................................................12
4.5.2 说明.................................................................................................................12
4.5.3 示例.................................................................................................................12
4.6 分页查询....................................................................................................................13
4.6.1 说明.................................................................................................................13
数据库结构设计说明
4.6.2 示例.................................................................................................................13
5 数据库级别规范.....................................................................................................................13
5.1 连接池的使用.............................................................................................................13
5.2 存储引擎的选择.........................................................................................................13
数据库结构设计说明
1 数据库(MySQL)开发规范
1.1说明
1.2概述
禁止明文传播数据库帐号和密码。
禁止开发工程师通过应用帐号登录生产数据库。
2 命名规范
1.3总则
数据库对象名仅可包含小写英文字母、数字、下划线(_)三类字符,并以英文字母
开头。
PAGE \* MERGEFORMAT11
数据库结构设计说明
多个单词之间用下划线(_)分隔。
对象名称长度若超过限制,则使用简写/缩写命名。
1.4数据库命名
数据库以"db_"前缀 + "站点名_"前缀及其所服务的应用名称命名。
1.5表命名
所属同一模块的表必须以模块名作为前缀命名。
历史数据表在原表基础上增加"_his"后缀命名。
1.6字段命名
布尔意义的字段以"_flag"作为后缀,前接动词。如:表示逻辑删除意义的字段可命名
为 delete_flag。
各表间相同意义的字段(如:作为连接关系的引用字段)使用相同的字段名。
1.7索引命名
1.8 示例
站点名:maymay
PAGE \* MERGEFORMAT11
数据库结构设计说明
模块名:order ;
数据表:item;
字段组成:order_item_id,add_time,raw_update_time,c1,c2,c3,c4,c5
标准数据库名:db_maymay_order;
标准数据表名:order_item;
历史数据表名:order_item_his;
字段实际意义:是否已删除;
标准字段名:delete_flag;
order_item 表中与之对应的字段命名必须为:order_id
3 对象设计规范
1.9总则
所有表、字段必须添加能够清楚表示其含义的注释。状态类字段的注释中必须明确
列出各状态值的说明。
MySQL 数据库中仅可以使用下文提及的数据类型。
PAGE \* MERGEFORMAT11
数据库结构设计说明
1.10 数据类型
1.10.1 数值类型
DECIMAL(M,D)
当表示定点小数的情况下使用该类型,禁止使用浮点类型,会带来不精确。定点数在
MySQL 内部以字符串形式存储,比浮点数更精确,适合用来表示货币等精度高的数据。
INT 系列
所 有 整 数 类 型 字 段 使 用
INT(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT),根据所存放的数据大
小选择合适的子类型,且所有 INT 类型都不使用长度限制。
1.10.2 字符串类型
VARCHAR
TEXT 系列
仅 当 需 存 储 的 字 节 数 可 能 超 过 20000 时 , 使 用 TEXT 系 列 类 型
(TEXT、MEDIUMTEXT、LONGTEXT)。并和原表进行分拆,与原表主键组成新表
存储,且每个表只允许有一个 TEXT 系列类型字段。
CHAR
PAGE \* MERGEFORMAT11
数据库结构设计说明
1.10.3 时间类型
DATE
TIMESTAMP
该 类 型 仅 允 许 raw_update_time 字 段 使 用 , 其 它 字 段 不 允 许 使 用 该 类 型 。 取 值 范
围:'1970-01-01 00:00:00'到'2037-01-01 00:00:00'
1.11 表设计
必含字段
raw_add_time DATETIME:创建日期(大字段拆分表除外),必须使用数据库时间
(用 now()生成)
以上 3 个字段都必须是没有任何商业意义的与业务无关的字段,不允许赋予任何商业
意义
作为表间连接关系的字段,数据类型必须保持严格一致,避免索引无法正常使用。
附属表拆分后,附属表关联字段使用主表主键字段,且附属表须有独立主键(大字
段拆分的表不需要单独的主键)
PAGE \* MERGEFORMAT11
数据库结构设计说明
存在过期概念的表,在其设计之初就必须有过期机制,且有明确的过期时间。过期
数据必须迁移至历史表中。
线上表中若有不再使用的字段,为保证数据完整,禁止删除,而是进行更名归档,
名称统一增加"droped_"前缀
1.12 约束使用
1.12.1 主键
主键不能包含业务含义。
主键在任何情况下不允许被更新。
1.12.2 唯一约束
除主键外,需存在唯一性约束的,可通过创建以"uk_"为前缀的唯一索引实现。
1.12.3 外键
任何情况不在数据库创建外键约束,外键规则由应用控制。
1.12.4 非空列
所有非空列须在建表之初明确标识"NOT NULL",上线之后,不允许再变更。
1.12.5 存储过程、触发器、视图、计划任务
禁止任何业务逻辑通过封装在数据库中的 procedure/function/trigger 实现。
禁止应用程序使用 view。
禁止业务逻辑使用数据库的计划任务。
PAGE \* MERGEFORMAT11
数据库结构设计说明
2 SQL 编写规范
2.1绑定变量与替代变量
2.1.1 原则
所有 Query 的 Where 条件中的变量,都需要使用绑定变量来实现,此要求并不完全是基于性能的考
虑,更多是基于安全方面的考虑。
2.2数据类型转换
2.2.1 原则
避免因数据类型转换导致执行计划有误。
2.2.2 说明
where 条件中的过滤字段如需转换类型,只可转换过滤值,不可转换被过滤字段。
表连接操作中,作为连接条件的字段的数据类型严格一致。
2.2.3 示例
正确用法 1:select col1, col2 from tbl1, tbl2
其中"tbl1.col3"与"tbl2.col4"数据类型严格一致。
"count(…)"使用
PAGE \* MERGEFORMAT11
数据库结构设计说明
除非是明确目的是统计某个字段上值不为空的记录的数目,否者只允许之用 count(*),而
不允许使用 count(column_name) 或者 count(1)。
2.3.1 原则
为避免查询中无用字段参与排序操作而导致的性能降低及潜在的安全隐患。禁止使用"select *
from …"。
2.3.2 说明
任何情况都要明确列出查询需要返回的字段,禁止使用 select * 返回所有字段。
2.4.1 原则
为避免增加或删除字段带来的 SQL 报错。禁止使用省略字段名的 insert into 语句。
2.4.2 说明
任何情况都要明确列出需要写入的字段名称。
2.5 表连接
2.5.1 原则
规范连接语法以方便 SQL 脚本的阅读及提升连接操作性能。
2.5.2 说明
非外连接查询中,连接表在"from"子句中列出,并以逗号分隔;连接条件
在"where"子句中列出,而不允许使用 join … on 方式实现 join。
PAGE \* MERGEFORMAT11
数据库结构设计说明
可以改写为连接的子查询禁止使用子查询方式,而应改写为连接方式。
2.5.3 示例
规范
select col1, col2 from tbl1 left outer join tbl2 on tbl1.col4 = tbl2.col3;
select col1, col2 from tbl1 left outer join tbl2 on tbl1.col4 = tbl2.col3;
select col1 from tbl1 left join tbl2 on tbl1.col2 = tbl2.col3 where tbl2.col3 is null;
非规范:
select col1 from tbl1 where col2 in (select col3 from tbl2);
select col1 from tbl1 where col2 not in (select col3 from tbl2);
2.6分页查询
2.6.1 说明
分页查询必须带有唯一的排序条件,除非业务逻辑明确要求随机展现数据。对于多
表连接的分页语句,如果过滤条件在单个表上,则先分页,后连接。见示例
PAGE \* MERGEFORMAT11
数据库结构设计说明
2.6.2 示例
规范化用法:
3 数据库级别规范
3.1 连接池的使用
应用程序连接数据库必须使用连接池。
3.2 存储引擎的选择
尽量不要使用 memory 引擎的表,除非能把握好对内存表的控制。
4 数据库表详细设计
4.1 实时数据管理
FK Defau
PK (主 lt
序 表说 数据类 长 备
表名称 字段名 字段说明 (主 外键 (默
号 明 型 度 注
键) 关 认
系) 值)
PLCNumber varchar 255 Y
1 plcthresho MinData 最小值 decimal 255
lddata MaxData 最大值 decimal 255
PAGE \* MERGEFORMAT11
数据库结构设计说明
FK Defau
PK (主 lt
序 表说 数据类 长 备
表名称 字段名 字段说明 (主 外键 (默
号 明 型 度 注
键) 关 认
系) 值)
NAME varchar 255 Y
过渡 QUALITY varchar 255
1 collectdat
表 TIME varchar 255
a
VALUE varchar
FK Defau
PK (主 lt
序 表说 数据类 长 备
表名称 字段名 字段说明 (主 外键 (默
号 明 型 度 注
键) 关 认
系) 值)
NAME varchar 255 Y
实时
QUALITY varchar 255
1 DataCol 原始
TIME varchar 255
表
VALUE varchar
FK Defau
PK (主 lt
序 表说 数据类 长 备
表名称 字段名 字段说明 (主 外键 (默
号 明 型 度 注
键) 关 认
系) 值)
id int Y
PLCNumber PLC 位号 varchar
实时 PLCAddr PLC 地址 varchar
1 plcrealtim 原始 datetim
CollectTime 采集时间 255
edata 表 e
CValue 采集数值 varchar 255
CStatus 采集状态 varchar
4.2 基础信息管理
FK Defau
PK (主 lt
序 表说 数据类 长 备
表名称 字段名 字段说明 (主 外键 (默
号 明 型 度 注
键) 关 认
系) 值)
实时 id int Y
1 plcrealtim 原始 Type varchar 255
edata 表 TypeNo Int
PAGE \* MERGEFORMAT11
数据库结构设计说明
FK Defau
PK (主 lt
序 表说 数据类 长 备
表名称 字段名 字段说明 (主 外键 (默
号 明 型 度 注
键) 关 认
系) 值)
Id varchar 255 Y
1 equipmento Name varchar 255
fvideo Address varchar 255
4.3 报警信息管理
FK Defau
PK (主 lt
序 表说 数据类 长 备
表名称 字段名 字段说明 (主 外键 (默
号 明 型 度 注
键) 关 认
系) 值)
id int Y
EquipId varchar 255
报警 Type Int
1 equipmenta 信息 AlarmTime 报警时间 varchar 255
larminfo 表 Conclusion varchar 255
Remark varchar 255
PLCId varchar 255
4.4 系统管理
FK Defau
PK (主 lt
序 表说 数据类 长 备
表名称 字段名 字段说明 (主 外键 (默
号 明 型 度 注
键) 关 认
系) 值)
信息 上级菜单
ParientID int Y
1 sys_author 管理 ID
ity_inform 表 c_Name 菜单名称 varchar 255
PAGE \* MERGEFORMAT11
数据库结构设计说明
4.5 安全保密设计
(说明在数据库的设计中,将如何通过区分不同的访问者、不同的访问类型和不同的数据对象,进行分
别对待而获得的数据库安全保密的设计考虑)
序号 数据库用户 用户角色描 可以访问的表清单 是否具有表的 可以访问 备注
述 编 辑 权 限 的视图清
(Y/N) 单
1 Zhjx_admin 管理员 所有系统表及业务 Y 所有视图
表
2 Zhjx_PROD_READ 只读用户 所有业务表 N 无
PAGE \* MERGEFORMAT11