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官网设计文档做出的设计规范. 一.命名规范 [强制]不允许使 ...
- 开发文档之 概要设计说明书 详细设计说明书 数据库设计说明书
软件工程是一门技术含量高设计极其复杂的学科.为了控制好软件产品质量和规范,就必须用大量的文档约束软件工程的进度和状态.浩大的软件工程对于缺少工作和项目经验的人来说,必然是摸不着头脑不知从何开始.[ ...
最新文章
- mysql中的float_mysql里float是什么东西
- GPT-3和AlphaFold 2震撼2020,2021年AI最大看点在哪儿?
- python统计字符串个数_python字符串中字符出现次数(python获取字符串个数)
- 错误:readline/readline.h:没有那个文件或目录解决方法
- 【转载】dotnet 线程同步
- 与Win8之磁盘活动时间100%斗争心得
- 机器学习笔记(一):机器的学习定义、导数和最小二乘 | 凌云时刻
- php正弦函数图像,Go语言输出正弦函数(Sin)图像
- 系统集成考前冲刺口诀
- 问卷星投票如何刷投票?【请勿非法使用】
- 我爱你——再高级一点
- 高德上线“查岗功能”,你会监视另一半吗?精确到米的那种
- 常见的hash算法及其原理
- JAVA正反合——原码、补码与反码学习笔记’
- android版本升级5.0,安卓系统升级到Android 5.0教程【详解】
- UVa514 Rails(铁轨)
- Arduino与无源蜂鸣器
- MySQL数据库--01--一头扎进大沙漠-数据库概述
- 机电系统计算机设计试题,机电一体化系统设计
- 百度网盘BaiduYunCacheFileV0.db数据库研究
热门文章
- [附源码]java毕业设计学习资源共享与在线学习系统
- 神经网络模型的基本原理,如何建立神经网络模型
- html怎么搞一个微信图标,微信的图标怎么弄
- 用bat执行ps1脚本
- vue-admin-实现登出功能
- 串口触摸屏的使用(与单片机通信,电阻屏)
- unity 设置图片九宫格_Unity UGUI篇 Image图片
- Mysql :Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
- 【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)
- 第四部分、JEECG-BOOT 微服部署文档