数据库设计的必要性
为什么要对数据库进行设计?
当我们要存储的数据比较少的是后当然不需要对数据库进行设计,但是当我们对数据的需求量越来越大时对数据库的设计就很有必要性了!如果数据库的设计不当会造成数据冗余、修改复杂、操作数据异常等问题而好的数据库设计则可以减少不必要的数据冗余,通过合理的数据规划提高系统的性能!
什么是数据库设计?
数据库设计就是将实体与实体之间的关系进行规划和结构化的过程
设计数据库的步骤
1.现实世界业务需求-------》绘制E-R图---------》绘制数据库模型图-----------》搭建数据库
2无论数据库的大小和复杂程度如何,在进行数据库的系统分析时,都可以参考下列基本步骤
(1)收集信息
(2)表示实体
(3)标示每个实体需要 存储的详细信息
(4)标示实体之间的关系
映射基数
映射基数表示通过联系与该实体关联的其他实体的个数。对于实体集X和Y之间的二元关系
映射基数必须为下列基数之一:
一对一:X中的一个实体最多与Y中的一个实体关联并且Y中的一个实体最多与X中的一个实体关联
一对多:X中的一个实体可以与Y中的任意数量的实体关联,而Y中的一个实体最多与X中的一个实体关联
多对多:X中的一个实体可以与Y中的任意数量的实体关联,反之依然。
实体关系图(E-R图)
E-R图一图形的方式将数据库的整个逻辑结构标示出来,方便和客户及小组内成员沟通。E-R图的组成包括以下几部分。
矩形标示实体集
椭圆形标示属性
菱形表示联系集
直线用来连接属性和实体集,也用来连接实体集和联系集
数据规范化
在分析需求是每个人都从不同的的角度去标示实体,10个人个能设计出10个E-R图那我们怎么去选出最优的设计方案呢?我们下一步的工作就是规范化E-R图!接下来给打家介绍一下非常著名的三大范式
第一范式:确保没一列的最小原子性(也就是每列都能在拆分)
第二范式:在第一范式的基础上确保每一列都和主键相关
第三范式:在第二范式的基础上确保每一列都和主键直接相关,而不是间接相关