数据库结构的设计步骤,具体实例

数据库结构设计的步骤
1.需求分析,全面了解产品设计的存储需求,要存储什么数据,这些数据有什么特点,数据处理的响应时间,是否是批量处理,数据的完整性确定要存储的真正数据,因为要和非开发的人员进行沟通
2.逻辑设计阶段,在这个阶段不用考虑数据库使用的存储引擎什么数据库,逻辑设计阶段要弄清楚数据实体之间的逻辑关系,这个阶段是解决数据冗余和数据维护异常(插入增加删除问题)的阶段,这个阶段的工作直接影响了之后的数据处理和数据存储方式,要解决数据冗余和数据维护异常,按照数据库的设计范式可以最大限度的进行解决
3.物理设计阶段,根据所使用的数据库的特点进行表结构的设计,选择合适的存储引擎和表中的列使用什么样子的数据类型
4.优化和维护:根据实际的情况对索引,存储结构等进行优化

实例

数据库结构的设计步骤,具体实例
1.进行需求分析:
首先用户必须

什么是反范式化设计,反范式化是为了性能和查询效率进行违反数据库设计范式的行为 ,允许适当的数据冗余,反范式化是使用空间来换取时间,比如订单总量等等
2.物理设计
根据选择的关系型数据库的特点对逻辑模型继续存储结构设计
物理设计所设计的内容:
首先定义数据库,表,字段的命名规范,在对数据库,表和字段进行命名的时候要遵守可读性原则,尽量便于理解不使用简写,之后选择合适的存储引擎,最后为表中的字段选择合适的数据类型,浪费更多的内存和磁盘io,一个列可以选择多个数据类型的时候,应该优先考虑数字类型,其次是日期或者是二进制类型,最后是字符类型,相同级别的数据类型,应该优先选择占用空间小的数据类型,
整数类型:
数据库结构的设计步骤,具体实例
n是存储空间的位数,2^(n-1),tinyint的n就是8,所以tinyint的范围就是-128~127,可以存储这之间的数字,不允许在无符号的整数之中赋值,无符号整数值存储的值增加了一倍
实数类型
实数类型可以存储数值中的小数部分,但是并不是只为小数部分而使用的,
可以使用decimal存储更大的整数,mysql中有三种实数类型
double和float是非精确的数据类型,这种数据类型中两个数值相加可能会出现不精确的情况,decimial是保证精度的,但是存储空间
Decimial(18,9)表示需要9个字节来存储数字
数据库结构的设计步骤,具体实例
如果财务类型就是decimal
varchar的存储特点,1.varchar用于 存储变长字符串,可能很长也可能很短,只会占用必要的存储空间,存储了10个字符就是占用10个宽度,varchar和char中的单位是以字符为单位的,而不是字节 2 .varchar列的最大宽度小于255的时候,则只占用一个额外字节用于记录字符串的长度,如果列的最大宽度大于255,则要占用两个额外的字节用于记录字符串长度。
如何对varchar和char进行选择
varchar类型的长度选择问题:使用最小的符合需求的长度,了解业务,中国人和外国人的姓名,但是也不能做得最小,因为要进行该表。
varchar的适用场景:
字符串的最大列长度,比平均长度大很多的,2字符串列很少更新的,

char类型
char类型是定常的,字符串存储在char类型的列会删除末尾中的空格,cahr类型的最大宽度是255,char类型的场景,适合存储定常的,或者是长度近似的值,存储短字符串,存储经常被更新的字符串

datatime类型
datatime类型是与时区无关的,占用8个字节的存储空间
timestamp类型,存储的时间是时间戳
date类型,只需要存储一部分内容的时候,主要是日期部分
time类型,主要存储的是时间类型
存储日期数据的注意事项
尽量不要使用字符串类型来存储日期时间数据,日期时间类型通常比字符串占用的内存小,日期时间类型在进行查找的时候来进行对比,对时间进行对比,日期类型还有很多日期函数,可以方便进行日期计算,
不要使用int类型存储时间,因为如果要存储时间戳的话,可以使用Timestamp类型

mysql物理设计的额时候,主要是选择存储空间 存储引擎,数据类型,如果没有特殊需求,使用innodb进行选择,为表中的每个列选择合适的类型,为innodb选择合适的主键,主键应当尽可能小,主键应该是顺序增长的(增加数据的插入效率),innodb的主键和业务主键可以是不同的。