数据库规范定义

数据库表规范

  1. 表名格式:模块名_表含义名,如 认证中心人员表:auth_human;如果系统功能简单,没有划分为模块,则可以以系统英文名称的缩写作为前缀,否则以各模块的英文名称缩写作为前缀
  2. 不再使用tc_,to_,tr_前缀
  3. 表的名称必须易于理解,使用能表达功能的英文单词或缩写英文单词,词间以_分割
  4. 在命名表时,用单数形式表示名称。例如,使用auth_human,而不是auth_humans
  5. 表名用小写
  6. 表名称长度不能超过30个字符(几种数据库中Oracle要求最高)
  7. 职责相近的表,命名规则应该相同

数据库字段规范

  1. 业务表须要有主键,例如自增主键
  2. 字段名称必须易于理解,使用能表达功能的英文单词或缩写英文单词,词间以_分割
  3. 字段名用小写,且需要加入中文注释
  4. 字段名称长度不能超过30个字符(几种数据库中Oracle要求最高)
  5. 字段名称不要重复表的名称;例如,在名为auth_human的表中推荐使用namehuman_name,避免使用名为auth_human_name 的字段
  6. 有unique约束的varchar类型字段长度推荐设置为190(考虑到utf8mb4编码支持),但不允许超过255
  7. 不建议设置外键约束,但要保证与实际外键字段类型一致

数据库索引规范

  1. 如果字段事实上是与其它表的关键字相关联而未设计为外键引用,需建为该字段建立索引
  2. 常见索引列建议
    • select、update、delete语句的where从句中的列
    • 包含在order by、group by、distinct中的字段
    • 多表join的关联列
  3. 不要滥用索引,限制每张表上的索引数量,建议单张表索引不超过5个
  4. 避免使用外键约束,但一定在表与表之间的关联键上建立索引,外键可用于保证数据的参照完整性,但建议在业务端实现,外键会影响父表和子表的写操作从而降低性能。
  5. 避免建立冗余索引和重复索引
    • primary key(id)、index(id)、unique index(id)重复索引
    • index(a,b,c)、index(a,b)、index(a)冗余索引(解释

数据库版本管理规范

  1. 使用liquibase管理数据库版本
  2. 使用xml格式编写数据库changeset版本变更代码
  3. 提交到代码仓库后,changeset内容不允许再修改,例如在一个changeset中创建一个表后发现字段类型不对,而且代码已经提交到git或者svn了,这时应该创建另外一个changeset去修改字段类型

    <changeSet id="create-table-oauth-code" author="xxx">
    <createTable tableName="oauth_code">
    <column name="code" type="VARCHAR(255)"/>
    <column name="authentication" type="MEDIUMBLOB"/>
    </createTable>
    </changeSet>
    <changeSet id="change-blob-to-text" author="xxx">
    <modifyDataType tableName="oauth_code" columnName="authentication" newDataType="text"/>
    </changeSet>

常用表名约定

名称表含义备注
*_wf_*工作流相关表
*_log_*日志相关表
*_his_*对应历史记录表
*_dic_*字典表表示字典表命名模式
*_im_*即时通讯相关表
*_job_*定时任务相关表
*_rec_*案件相关表
*_form_*表单相关表
*_human_*人员相关表
*_patrol_*监督员相关表
*_role_*角色相关表
auth_client申请接入应用表
auth_client_sys_right应用权限表
auth_client_unit应用部门关联表
auth_dic_data_type数据类型字典表
auth_dic_item通用字典项表
auth_dic_table_column字段字典表
auth_human用户表
auth_human_relation人员自定义关系表
auth_human_request_detail申请明细表(预留)
auth_human_role人员角色表
auth_human_role_request岗位申请表(预留)
auth_human_unit人员所属部门表
auth_log操作记录表
auth_message消息表(预留)
auth_part_ex扩展信息表
auth_reg_url注册地址表
auth_reg_url_role_audit注册地址审核岗位表
auth_reg_url_role_default注册地址初始岗位表
auth_register注册记录表
auth_role角色表
auth_sys_right权限表
auth_unit部门表

常用列名约定

名称字段类型(mysql)字段类型(oracle)字段类型(liquibase)备注
passwordvarchar(100)varchar2(100 char)varchar(100)可以使用包括md5,sm3,sha-1,sha-224,sha-256,sha-384在内的散列算法
tel_homevarchar(20)varchar2(20 char)varchar(20)家庭座机号码
tel_mobilevarchar(20)varchar2(20 char)varchar(20)手机号码
tel_officevarchar(20)varchar2(20 char)varchar(20)办公室座机号码
ipint(10)number(10)intip4地址(解释)
*_flagtinyinitnumber(3)tinyint适用于delete_flag,valid_flag,gender_flag等值范围在127以内的字段,比如性别,是否删除等
display_orderintnumber(10)int显示顺序
create_timedatetimedatedatetime创建时间,精确到秒
create_datedatedatedate创建日期,精确到天
delete_timedatetimedatedatetime删除时间,精确到秒, 不允许有delete_date,记录精度不够
*_timedatetimedatedatetime时间字段,精确到秒,适用于create_time,update_time,delete_time等
*_datedatedatedate日期字段,精确到天,适用于create_date, register_date等
emailvarchar(190)varchar2(190 char)varchar(190)邮箱地址
postal_codevarchar(6)varchar2(6 char)varchar(6)邮编
addresstextvarchar2(2000 char)text通讯地址
remarktextvarchar2(2000 char)text备注
district_idintnumber(10)int(城)区id
district_namevarchar(190)varchar2(190 char)varchar(190)(城)区名称
community_idintnumber(10)int社区id
community_namevarchar(190)varchar2(190 char)varchar(190)社区名称
street_idintnumber(10)int街道id
street_namevarchar(190)varchar2(190 char)varchar(190)街道名称
duty_grid_idintnumber(10)int责任网格id
duty_grid_namevarchar(190)varchar2(190 char)varchar(190)责任网格名称
duty_grid_codevarchar(190)varchar2(190 char)varchar(190)责任网格编码
cell_idintnumber(10)int网格id
cell_namevarchar(190)varchar2(190 char)varchar(190)网格名称
latdouble(18,6)number(18,6)double(18,6)纬度
londouble(18,6)number(18,6)double(18,6)经度
coord_xdouble(18,6)number(18,6)double(18,6)横坐标
coord_ydouble(18,6)number(18,6)double(18,6)纵坐标
coord_typeintnumber(10)int坐标类型
speeddouble(10,2)number(10,2)double(10,2)速度(单位米每秒,m/s)
speed_msdouble(10,2)number(10,2)double(10,2)速度(单位米每秒,m/s)
speed_kmhdouble(10,2)number(10,2)double(10,2)速度(单位千米每小时,km/h)
altitudedouble(10,2)number(10,2)double(10,2)高度(单位米,m)
altitude_mdouble(10,2)number(10,2)double(10,2)高度(单位米,m)
altitude_kmdouble(10,3)number(10,3)double(10,3)高度(单位千米,km)
angledouble(3,2)number(3,2)double(3,2)度数
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值