学点数据库设计

数据库设计那些事儿

序言:做工程过程中,总感觉数据库设计太草率了,每个表想的仅仅是如何将数据存起来,但有时候我觉得也应该想一下“有效存储”和“高效读取”。


数据库为什么要设计?
对数据进行有效地存储,高效地访问。
步骤:
需求分析——逻辑设计——物理设计——维护优化

一、需求分析

寻找实体
实体包含属性、唯一标识属性、存储特点
分析实体之间的关系

二、逻辑设计

ER图:实体——正方形、属性——圆形、菱形——关系
例如:


可能出现问题:操作操作异常(插入异常、更新异常、删除异常)和数据冗余

所以有了设计范式NF:第一范式、第二范式、第三范式和BC范式
- 第一范式:属性不可再分,也就是数据库的表都是二维表。
不能出现这样的:
- 第二范式
对于单关键字的表都是符合第二范式的。
对于好几个属性组成关键字的表中,不能存在非关键字段对任意候选关键字段的部分函数依赖
解决办法:拆分关系表,每一个关键字带出相应属性组成新表
- 第三范式:不能存在非关键字段对任意候选关键字段的传递函数依赖
解决办法:拆分关系表
- BC范式:如果表是复合关键字,则复合关键字之间也不能存在函数依赖关系
解决办法:拆分关系表

三、物理设计

需要考虑的问题:
1.选择合适的数据库
2.定义数据库、表及字段的命名规则
3.根据所选的DBMS系统选择合适的字段类型
优先选择数字类型,其次是日期或二进制类型,最后是字符类型。相同级别优先选择占用空间小的数据类型。
4.反范式化设计:减少表的关联数量、提高读取效率

四、维护优化

1.维护数据字典

2.维护索引

3.维护表结构

4.在适当的时候对表进行水平拆分或垂直拆分


数据库设计绝没有那么简单,这里就先记录一下大概的东西。


参考慕课网:http://www.imooc.com/learn/117

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值