传送门: 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. mysql中的float_mysql里float是什么东西
  2. GPT-3和AlphaFold 2震撼2020,2021年AI最大看点在哪儿?
  3. python统计字符串个数_python字符串中字符出现次数(python获取字符串个数)
  4. 错误:readline/readline.h:没有那个文件或目录解决方法
  5. 【转载】dotnet 线程同步
  6. 与Win8之磁盘活动时间100%斗争心得
  7. 机器学习笔记(一):机器的学习定义、导数和最小二乘 | 凌云时刻
  8. php正弦函数图像,Go语言输出正弦函数(Sin)图像
  9. 系统集成考前冲刺口诀
  10. 问卷星投票如何刷投票?【请勿非法使用】
  11. 我爱你——再高级一点
  12. 高德上线“查岗功能”,你会监视另一半吗?精确到米的那种
  13. 常见的hash算法及其原理
  14. JAVA正反合——原码、补码与反码学习笔记’
  15. android版本升级5.0,安卓系统升级到Android 5.0教程【详解】
  16. UVa514 Rails(铁轨)
  17. Arduino与无源蜂鸣器
  18. MySQL数据库--01--一头扎进大沙漠-数据库概述
  19. 机电系统计算机设计试题,机电一体化系统设计
  20. 百度网盘BaiduYunCacheFileV0.db数据库研究

热门文章

  1. [附源码]java毕业设计学习资源共享与在线学习系统
  2. 神经网络模型的基本原理,如何建立神经网络模型
  3. html怎么搞一个微信图标,微信的图标怎么弄
  4. 用bat执行ps1脚本
  5. vue-admin-实现登出功能
  6. 串口触摸屏的使用(与单片机通信,电阻屏)
  7. unity 设置图片九宫格_Unity UGUI篇 Image图片
  8. Mysql :Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
  9. 【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
  10. 第四部分、JEECG-BOOT 微服部署文档