传送门: SpringBoot+SpringCloud搭建一款企业级开源基础平台

FS平台数据库设计规范说明书v1.00

  • 1 前言
    • 1.1 目的
    • 1.2 预期读者
    • 1.3 背景
    • 1.4 参考资料
    • 1.5 约束
  • 2 基本规范
    • 2.1 可用字符
    • 2.2 数据库命名规范
    • 2.3 表命名规范
    • 2.4 字段命名规范
  • 3 MYSQL基本数据类型详解
    • 3.1 整型
    • 3.2 整型浮点型
    • 3.3 定点数
    • 3.4 字符串
      • 3.4.1 char和varchar
      • 3.4.2 varchar和text
    • 3.5 二进制数据
  • 最后的最后

1 前言

1.1 目的

设计规范更多的是为了确保数据库设计的合理性、为了项目最终的协调稳定性,而命名规范则更多的是为了确保设计的正式和统一。

1.2 预期读者

本方案的预期读者:

  • 系统设计师。

  • 系统开发工程师。

1.3 背景

数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,但因为牵涉的内容较多,所以将其单独列出。设计规范更多的是为了合理,命名规范更多的是为了统一,团队协作中,统一在某种程度上比局部设计开发的好坏更重要。违反了约定,局部设计开发的再好,反而可能影响到项目整体的稳定协调。

1.4 参考资料

《高性能MySQL》

1.5 约束

本文档仅适用于MYSQL5.0及以上版本。

2 基本规范

2.1 可用字符

数据库、表、字段等所有名称的可用字符范围为:A-Z,a-z, 0-9 和_下划线,除此外不允许使用其它字符作为名称。数据库及表名均不允许出现数字,字段名除非特殊情况不允许出现数字。

MYSQL数据库的最长数据库名,表名,字段名都是64个字符。

2.2 数据库命名规范

尽量简洁明义,使用名词作为数据库名称,尽量控制在3-7个字母以内。如果有多个单词,则使用下划线隔开,不建义驼峰命名;字符集统一UTF-8。

2.3 表命名规范

  1. 具备统一前缀,对相关功能的表应当使用相同前缀,其中前缀通常为这个表的模块或依赖主实体对象的名字,通常来讲表名为:业务动作类型,或是业务_类型;
  2. 我们要求统一为大写或小写的名称,如果有多个单词则使用下划线隔开;
  3. 数据表必须有主键,所有的表都必须有备注,写明白这个表中存放的数据内容;
  4. 预估表数据量,如果数据量较大(超过500w)则需要考虑分表策略;

说明:在本系统中采用功能模块简称的小写字母+“_”+业务意义小写单词

sys_user 用户表

2.4 字段命名规范

  1. 更小的通常更好,应该尽量使用可以正确存储数据的最小数据类型。

  2. 简单就好,简单数据类型的操作通常需要更少的CPU周期。

  3. 尽量避免NULL,如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引、索引统计和值比较都更复杂。

  4. 字段应当有注释,描述该字段的用途及可能存储的内容,如枚举值则建议将该字段中使用的内容都定义出来;

说明:在本系统中所有表中的主键统一命名为id,字段类型优先考虑整型类型,其次考虑用UUID varchar(50);不建议使用复合主键,即便是在多对多关系的中间表中,个人还是建议用单独的字段做主键,复合字段加惟一约束。

3 MYSQL基本数据类型详解

3.1 整型

类型 存储字节 最小值 最大值
tinyint 1 -128 127
0 255
smallint 2 -32768 32767
0 65535
mediumint 3 -8388608 8388607
0 16777215
int 4 -2147483648 2147483647
0 4294967295
bigint 8 -9223372036854775808 9223372036854775807
0 18446744073709551615

说明:取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。

int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围。

(MySQL可以为整型类型指定宽度,例如Int(11),对绝大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了MySQL的一些交互工具(例如MySQL命令行客户端)用来显示字符的个数。对于存储和计算来说,Int(1)和Int(20)是相同的。)

3.2 整型浮点型

类型 存储字节 备注
float(m,d) 单精度浮点型 8位精度(4字节) m是十进制数字的总个数,d是小数点后面的数字个数
double(m,d) 双精度浮点型 16位精度(8字节)

类型 存储字节 备注

说明:float(7,4)的可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001

参数m存储数字的总长度,d却不同,影响到精度,小数点后的位数。

比如设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是99.999, 因为整数位和小数位超过限制长度5 根据小数位取最大值补齐

如果输入1.45678,数据库存储为1.457  小数点后面的数别四舍五入截成457了。

注意:一定要注意数字的长度,决定存储的最大值 m 和d精度值

3.3 定点数

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。

MySQL5.0和更高版本将数字打包保存到一个二进制字符串中(每4个直接存9个数字)。例如,decimal(18,9)小数点两边将各存储9个数字,一共使用9个字节:小数点前的数字用4个字节,小数点后的数字用4个字节,小数点本身占1个字节。

浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。float使用4个字节存储。double占用8个字节。

因为需要额外的空间和计算开销,所以应该尽量只在对小数进行精确计算时才使用decimal——例如存储财务数据。但在数据量比较大的时候,可以考虑使用bigint代替decimal。

3.4 字符串

类型 存储字节
char(n) 固定长度,最多255个字符
varchar(n) 可变长度,最多65535个字符
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 长度,最多2的24次方-1个字符
longtext 固定长度

3.4.1 char和varchar

1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。

2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n< n>255),所以varchar(4),存入3个字符将占用4个字节。

3.char类型的字符串检索速度要比varchar类型的快。

3.4.2 varchar和text

1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n< n>255),text是实际字符数+2个字节。

2.text类型不能有默认值。

3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

3.5 二进制数据

1.BLOB和TEXT存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而BLOB是以二进制方式存储,不分大小写。

2.BLOB存储的数据只能整体读出。

3.TEXT可以指定字符集,BLOB不用指定字符集。

3.6 日期类型

类型 含义
date 日期 ‘2008-12-2’
time 时间 ‘12:25:36’
datetime 日期时间 ‘2008-12-2 22:06:44’
timestamp 自动存储记录修改时间

注意:若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

最后的最后

为初学者提供学习指南,为从业者提供参考价值。我坚信码农也具有产生洞见的能力。扫描下图二维码关注,学习和交流!

FS平台数据库设计规范说明书v1.00相关推荐

  1. 概要设计阶段--数据库设计说明书

    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> [项目名称] 数据库设计 ...

  2. mysql 数据库设计规范_MySQL 数据库设计初步规范V1.0

    数据库设计规范: 1,表设计规范 1.1关于表设计 a)         表名.列名必须有注释. b)         命名应使用富有意义的英文词汇或者缩写,多个单词组成的,全部大写,以"_ ...

  3. 美利财务平台数据库架构进阶

    2019独角兽企业重金招聘Python工程师标准>>> 说在前面 本文转自"天河聊技术"微信公众号 分布式是一个老生常谈的话题了,大家都在做服务拆分.微服务化,那 ...

  4. 图数据库ONgDB Release v-1.0.0

    图数据库ONgDB Release v-1.0.0 图数据库ONgDB Release v-1.0.0 一.ONgDB 二.Geequel 三.APOC 四.ONgDB Browser 五.Geequ ...

  5. 点菜系统数据库设计说明书

    1引言. 2 1.1编写目的. 2 1.2 定义. 2 1.3参考资料. 2 2需求分析. 3 2 .1数据字典. 3 2 .2数据流图. 3 3结构设计. 3 3.1概念结构设计. 3 3.2逻辑结 ...

  6. 人力资源管理平台数据库

    第一部分:招标邀请 人力资源管理平台数据库项目公开进行招标,先邀请有意参加本次招标活动的投标人参与本项目. 1. 项目名称:人力资源管理平台数据库 2. 投标须知:详见第二部分 3. 项目时间:二个星 ...

  7. Easy Code v1.00.0.0041 汉化版.by.JYculture..KuNgBiM

    Easy Code v1.00.0.0041 汉化版 ================================================================ 软件主页:htt ...

  8. Oracle数据库设计规范

    Oracle数据库设计规范 一.命名规范 二.建表规范 三.索引规范 四.SQL开发规范 参考网上一些其他的数据库设计规范,结合Oracle官网设计文档做出的设计规范. 一.命名规范 [强制]不允许使 ...

  9. 开发文档之 概要设计说明书 详细设计说明书 数据库设计说明书

      软件工程是一门技术含量高设计极其复杂的学科.为了控制好软件产品质量和规范,就必须用大量的文档约束软件工程的进度和状态.浩大的软件工程对于缺少工作和项目经验的人来说,必然是摸不着头脑不知从何开始.[ ...

最新文章

  1. 【体验】感谢朋友雪中送炭寄来的便携示波器,便携示波器开箱体验
  2. oracle快速备份全库,做了两次rman 全库备份,如何快速删除第一次的备份?
  3. 经典逻辑编程题(本文用python实现)
  4. Spring Cloud Zuul中使用Swagger汇总API接口文档 1
  5. java sleep 循环_while循环中的Thread.sleep()
  6. asp.net mvc4 mysql_ASP.NET MVC4 with MySQL: Configuration Error (MySql.Web.v20)
  7. Hadoop报错:could only be replicated to 0 nodes, instead of 1
  8. ug装配绕轴旋转_UG绘制小吊扇模型,建模装配还能运动起来
  9. python将列表转换成集合_python 将DataFrame转换为List
  10. 安装matlab 2016a win10 64bit系统
  11. 单片机原理及应用程序c语言版题库,单片机原理及应用期末复习题库(含答案)...
  12. android ev3 蓝牙连接,分享一下自己研究EV3蓝牙通信原理的成果 (完结)
  13. 目标检测概述-VOC COCO数据集 IOU AP NMS
  14. 互联网变迁-真实化信息的转移
  15. 空气净化器什么牌子好,家用空气净化器哪个牌子好推荐
  16. 基于Java毕业设计在线答题系统源码+系统+mysql+lw文档+部署软件
  17. springmvc考研交流平台 java ssm mysql
  18. 计算机等级考试一级在线模拟,全国计算机等级考试一级模拟试题1
  19. 【2020年天梯赛—校内选拔赛】7-4手机话费
  20. Java Callable接口应用举例

热门文章

  1. 如何从JavaScript中的数组替换元素?
  2. 49天精通Java,第13天,java字符串简介
  3. 12、可观测性--告警处理
  4. 信息的可再生性举例_举例说说信息的可处理性
  5. Android 离线人脸识别方案总结
  6. 企业微信寄件审批教程
  7. 正则表达式:检测密码由6-21字母和数字组成
  8. 英语计算机主板接口有,主板上常见英文的解释
  9. cisaw是什么证书,cisaw证书有什么用?
  10. 50 Projects 50 Days - Expanding Cards 学习记录