FS平台数据库设计规范说明书v1.00
传送门: 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 表命名规范
- 具备统一前缀,对相关功能的表应当使用相同前缀,其中前缀通常为这个表的模块或依赖主实体对象的名字,通常来讲表名为:业务动作类型,或是业务_类型;
- 我们要求统一为大写或小写的名称,如果有多个单词则使用下划线隔开;
- 数据表必须有主键,所有的表都必须有备注,写明白这个表中存放的数据内容;
- 预估表数据量,如果数据量较大(超过500w)则需要考虑分表策略;
说明:在本系统中采用功能模块简称的小写字母+“_”+业务意义小写单词
sys_user 用户表
2.4 字段命名规范
更小的通常更好,应该尽量使用可以正确存储数据的最小数据类型。
简单就好,简单数据类型的操作通常需要更少的CPU周期。
尽量避免NULL,如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引、索引统计和值比较都更复杂。
字段应当有注释,描述该字段的用途及可能存储的内容,如枚举值则建议将该字段中使用的内容都定义出来;
说明:在本系统中所有表中的主键统一命名为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相关推荐
- 概要设计阶段--数据库设计说明书
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> [项目名称] 数据库设计 ...
- mysql 数据库设计规范_MySQL 数据库设计初步规范V1.0
数据库设计规范: 1,表设计规范 1.1关于表设计 a) 表名.列名必须有注释. b) 命名应使用富有意义的英文词汇或者缩写,多个单词组成的,全部大写,以"_ ...
- 美利财务平台数据库架构进阶
2019独角兽企业重金招聘Python工程师标准>>> 说在前面 本文转自"天河聊技术"微信公众号 分布式是一个老生常谈的话题了,大家都在做服务拆分.微服务化,那 ...
- 图数据库ONgDB Release v-1.0.0
图数据库ONgDB Release v-1.0.0 图数据库ONgDB Release v-1.0.0 一.ONgDB 二.Geequel 三.APOC 四.ONgDB Browser 五.Geequ ...
- 点菜系统数据库设计说明书
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逻辑结 ...
- 人力资源管理平台数据库
第一部分:招标邀请 人力资源管理平台数据库项目公开进行招标,先邀请有意参加本次招标活动的投标人参与本项目. 1. 项目名称:人力资源管理平台数据库 2. 投标须知:详见第二部分 3. 项目时间:二个星 ...
- Easy Code v1.00.0.0041 汉化版.by.JYculture..KuNgBiM
Easy Code v1.00.0.0041 汉化版 ================================================================ 软件主页:htt ...
- Oracle数据库设计规范
Oracle数据库设计规范 一.命名规范 二.建表规范 三.索引规范 四.SQL开发规范 参考网上一些其他的数据库设计规范,结合Oracle官网设计文档做出的设计规范. 一.命名规范 [强制]不允许使 ...
- 开发文档之 概要设计说明书 详细设计说明书 数据库设计说明书
软件工程是一门技术含量高设计极其复杂的学科.为了控制好软件产品质量和规范,就必须用大量的文档约束软件工程的进度和状态.浩大的软件工程对于缺少工作和项目经验的人来说,必然是摸不着头脑不知从何开始.[ ...
最新文章
- 【体验】感谢朋友雪中送炭寄来的便携示波器,便携示波器开箱体验
- oracle快速备份全库,做了两次rman 全库备份,如何快速删除第一次的备份?
- 经典逻辑编程题(本文用python实现)
- Spring Cloud Zuul中使用Swagger汇总API接口文档 1
- java sleep 循环_while循环中的Thread.sleep()
- asp.net mvc4 mysql_ASP.NET MVC4 with MySQL: Configuration Error (MySql.Web.v20)
- Hadoop报错:could only be replicated to 0 nodes, instead of 1
- ug装配绕轴旋转_UG绘制小吊扇模型,建模装配还能运动起来
- python将列表转换成集合_python 将DataFrame转换为List
- 安装matlab 2016a win10 64bit系统
- 单片机原理及应用程序c语言版题库,单片机原理及应用期末复习题库(含答案)...
- android ev3 蓝牙连接,分享一下自己研究EV3蓝牙通信原理的成果 (完结)
- 目标检测概述-VOC COCO数据集 IOU AP NMS
- 互联网变迁-真实化信息的转移
- 空气净化器什么牌子好,家用空气净化器哪个牌子好推荐
- 基于Java毕业设计在线答题系统源码+系统+mysql+lw文档+部署软件
- springmvc考研交流平台 java ssm mysql
- 计算机等级考试一级在线模拟,全国计算机等级考试一级模拟试题1
- 【2020年天梯赛—校内选拔赛】7-4手机话费
- Java Callable接口应用举例