数据库设计

需求分析,概念设计,逻辑设计,物理设计,数据库实施,数据库运行和维护
数据库设计过程(六阶段)
1 需求分析
分析用户的需求,包括数据,功能和性能需求,这个是整个设计过程的基础,也是最困难,最耗时间的一环。
2概念结构设计
主要采用E-R 模型进行设计,包括画功能模块图,ER图,数据字典等,通过对需求组分析的进行整理归纳和抽象,形成独立 DBMS的概念模型,是数据库设计的关键一步;
3逻辑结构设计;
通过将E-R图转换成表,实现从E-R模型到关系模型的转换,就是将概念模型转化为具体DBMS所支持的数据模型;(SMD工具)
4数据库物理设计
主要是为所设计的数据库选择合适的存储结构,存储路径
5数据库的实施
根据逻辑设计和物理设计结果,创建数据库,系统编程,测试和运行
6数据库运行与维护
系统的运行与数据库的日常维护,对不合理的设计要进行调整和修改
数据库设计规范
三大范式
1 每一列属性都不可再分的属性值,确保每一列的原子性
2 两列的属性相近或者相似或者一样,尽量合并属性一样的列,确保不产生冗余数据
第二范式
1 每一行的数据只能与其中一列相关,即一行数据只能做一件事,只要数据列中出现数据重复,就要把表拆分开
第三范式
1 数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。像:a->b->c属性之间含有这样的关系,是不符合第三范式的
四 分区分库分表
分区:就是把一张表的数据分成N个区块,负载均衡,在逻辑上看最终只是一张表,但底层是有N个物理去快组成
分库:将数据按照一定规则分别存储在不同的数据中,垂直分库和水平分库
分表:就是把一张表按照一定的规律分解成N个具有独立存储空间的都实体表,系统读写是需要根据定义好的规则得到对应的表,垂直分表和水平分表
什么时候考虑使用分区分库
一张表的查询速度已经慢到影响使用
sql经过优化
数据量大
表中的数据是分段的
对数据的操作往往只涉及一部分数据,而不是所有的数据
分区能解决的问题:
主要可以提升查询效率
什么时候考虑使用分表?
一张表的查询速度已经慢到影响使用
sql经过优化
数据量大
当频繁插入或者联合查询是,速度变慢
分表能解决的问题
单表的并发能力提高了,写操作效率提高了,查询一次的时间锻炼,数据分布在不同的文件,磁盘I/O性能提高,读写锁影响的数据量变小,插入数据库需要重新建立索引的数据减少
垂直分库
在这里插入图片描述
概念:以表为依据,按照业务果树不同,将不同的表拆分道不同的库中
结果:
每个库的结构都不一样
每个库的数据也不一样,没有交集
所有库的并集是全量数据
水平分库
在这里插入图片描述
概念:一字段为依据,按照一定的策略,将一个库中的数据拆分到多个库中
结果:
每个库的结构都一样
每个库的数据都不一样,没有交集
所有库的并集是全量数据
垂直分表
在这里插入图片描述
场景:系统绝对的并发量并没有上来,表的记录并不多,但是字段多,并且热点数据和非热点数据在一起,单行数据所需的存储及空间交大,以至于数据库缓存的数据行减少,查询是会去读取磁盘数据产生大量的随机读IO,产生IO瓶颈
分析:可以用用户表和用户扩展表来帮助理解,垂直分表的拆分原理是讲热点数据放在一起作为主表,非热点数据方咋子一起做为扩展表(设计逻辑外键),这样更多的热点数据就能被缓存下来,进而减少了随机读取IO,拆了之后,要想会的全部数据就需要关联两个包来读取数据,但是全完别用join,因为join不仅会增加CPU负担并且会将两个表耦合在一起(必须在一个数据库实力上),观澜数据,应该在业务service曾做处理,分别获取主表和阔宅表的数据然后用关联子端关联得到全部数据。
水平分表
在这里插入图片描述
概念:以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中
结果:每个表数据结构都一样,
每个表的数据都不一样,没有交集
所有表的并集是全量数据
场景:系统绝对并发量并没有上来,只是单表的数据量太多,影响sql效率,加重了CPU负担,以至于成为瓶颈
分析:表的数据量少了,单词sql执行效率高,自然减轻了CPU 的负担。
分区和分表的区别与联系
分区和分表的目的都是减少数据库的负担,提高表的增删改查效率
分区只是一张表中的数据的都存储位置发生改变,分表是讲一张表分成多张表
党风文亮打,且表数据比较大是,两种方式可以互相配合使用
当访问量不大,但表的数据比较多时,可以只进行分区
常见分区分表的规则策略
Range(范围)
Hash(哈希)
按照时间拆分
Hash之后按照分表个数取模

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值