为什么需要规范的数据库设计?
如果设计不当,会存在数据操作异常,修改复杂,数据冗余等问题,程序性能会受到影响。
通过进行规范化的数据库设计,可以消除不必要的数据冗余,获得合理的数据库设计,提高项目的应用性能。
数据库设计的好处:效率高,便于扩展,可以使应用程序开发变得更容易
什么是数据库设计?
数据库的设计就是将数据库中的数据实体及这些数据之间的关系,进行规划和结构化的过程。
项目开发需要经过:需求分析,概要设计,详细设计,代码编写,运行测试和部署上线等过程。
设计数据库的步骤
(1) 收集信息
创建数据库之前,必须充分理解数据库需要完成的任务和功能,简单说就是数据库需要存储那些信息(数据),实现哪些功能。
(2) 标识实体(Entity)
在手机需求信息后,必须标识数据库要管理关键对象或实体
实体一般是名词,一个实体只描述一件事情,不能重复出现含义相同的实体。
(3) 标识每个实体需要存储的信息
将数据库中的主要实体标识为表的候选实体以后,就要标识每个实体存储的详细信息,也称为实体的属相,这些属性将组成表中的列。
(4) 标识实体之间的关系(Relationship)
关系型数据库有一项非常强大的功能,即它能够关联数据库中各个项目的相关信息。不同类型的数据信息可以单独存储,但是如果需要,数据库引擎还可以根据需要将数据组合起来。在设计过程中,要表示实体之间的关系,首先需要分析数据库表,确定这些表在逻辑是如何相关的,然后添加关系列建立起表之间的关系。
概要设计———绘制E-R图
E-R(Entity-Relationship)图也称为实体-关系图,包含一些特定的图形符号
实体-关系模型
-
实体
所谓实体就是指现实世界中具有区分其他事物的特征或属性并与其他事物有联系的事物。 -
属性
属性可以理解为实体的特征 -
联系
联系是两个或多个实体之间的关联关系。
实体用矩形表示,一般是名词。
属性用椭圆表示,一般是名词。
联系用菱形表示,一般是动词。 -
映射基数
映射基数表示通过联系与该实体关联的其他实体个数。
一对一:X中的每一个实体最多与Y中的一个实体关联,并且Y中一个实体最多与X中的一个实体关联。
一对多:X中的每一个实体可以与Y中任意数量的实体关联,Y中一个实体最多与X中的一个实体关联。
多对一:X中的每一个实体最多与Y中的一个实体关联,Y中一个实体可以与X中的任意实体关联。
多对多:X中的每一个实体可以与Y中的任意实体关联,Y中一个实体最多与X中的任意实体关联。 -
实体关系图
矩形表示实体集
椭圆形表示属性
菱形表示联系集
直线用来连接属性和实体集,也用来联系实体集合联系集
在E_R图中,直线可以使是有方向的(末端有一个箭头),用来表示联系集的映射基数
关系数据库模式
用二维表的形式表示实体和实体间联系的数据模型即关系模式。关系数据库模式是对关系数据库的描述,或者是对关系数据库框架的描述。
E-R图转换为关系模式的步骤
- 把每个实体都转化为关系模式R(U)形式
- 建立实体间联系的转换
数据规范化
第一范式:(Normal Formate 1NF)的确保每列的原子性。如果每列(或者每个属性值)都是不可再的最小数据单元(也称为最小的原子单元) 满足第一范式。
第二范式:(2NF)在第一范式的基础上更进一层, 其目标是确保表中每列都和主键有关。如果一个关系满足第一范式(1NF),并且除了外键的其它列都全部依赖该主键满足第二日范式。
第三范式:(3NF)在第二基础上更进一层, 第三范式的目标是确保每列和主键列直接相关,而不是间接相关。 如果一个关系满足第二范式(2NF)并且除了主键以外的其他列都能依赖于主键列,列和列之间不存在相互依赖的关系,满足第三范式