第3.13课 上课 MySQL数据库进阶, 数据库设计
3_13

MySQL数据库进阶
数据库设计
良好的数据库设计:
1)节省数据的存储空间;
2)能够保证数据的完整性;
3)方便进行数据库应用系统的开发;
设计数据库的步骤
收集信息

与该系统的相关人员进行交流、座谈,充分理解数据库需要完成的任务。
标识对象

标识数据库要管理的关键对象或实体。
标识每个实体的属性

标识对象之间的关系

数据库设计的三个范式
目前,主要有六种范式:
第一范式、第二范式、第三范式、巴斯-科德范式(BC范式)、第四范式和第五范式。
满足最低要求的叫第一范式,简称1NF。
在第一范式基础上进一步满足一些要求的为第二范式,简称2NF。
其余依此类推
事物往往具有多面性,设计范式也会带来一定的麻烦:操作困难,因为需要联系多个表才能得到所需要数据,而且范式越高性能就会越差。所以使用多高的范式需要权衡利弊,一般在项目中,使用到第三范式也就足够了,性能好而且方便管理数据。
第一范式(1NF)
第一范式(1NF)
在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。
在第一范式(1NF)中表的每一行只包含一个实例的信息。
例如,对于e_user用户表,不能将用户信息都放在一列中显示,也不能将其中的两列或多列在一列中显示;
用户表的每一行只表示一个用户的信息,一个用户的信息在表中只出现一次。
简而言之,第一范式就是无重复的列。
例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码) 规范成为1NF有三种方法:
一是重复存储职工号和姓名。这样,关键字只能是电话号码。
二是职工号为关键字,电话号码分为单位电话和住宅电话两个属性
三是职工号为关键字,但强制每条记录只能有一个电话号码。
以上三个方法,第一种方法最不可取,按实际情况选取后两种情况。
第二范式(2NF)
第二范式(2NF)
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。
第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。
为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。
例如:用户表中加上了用户编号(id)列,因为每个员工的员工编号是唯一的,因此每个员工可以被唯一区分。
这个唯一属性列被称为主关键字或主键、主码。
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。
简而言之,第二范式就是非主属性非部分依赖于主关键字。
第三范式(3NF)
第三范式(3NF)
满足第三范式(3NF)必须先满足第二范式(2NF)。
简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。
那么在员工表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。
简而言之,第三范式就是属性不依赖于其它非主属性。
E-R图介绍
绘制E-R图
构成E-R图的基本要素:实体、属性、关系。
实体(Entity):具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体。在E-R图中用矩形表示,矩形框内写明实体名。
例如:学生是一个实体。

属性(Attribute):实体所具有的某一特性,一个实体可由若干个属性来刻画。
在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来。

关系(Relationship):关系也称联系,信息世界中反映实体内部或实体之间的关系。
实体之间的关系通常是指不同实体集之间的关系。
在E-R图中用菱形表示,菱形框内写明关系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上关系的类型(1 : 1,1 : n或m : n)。
关系可分为以下3种类型:
1)一对一关系(1∶1):
例如,一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的关系是一对一的。
2)一对多关系(1∶N):
例如,某校教师与课程之间存在一对多的关系,即每位教师可以教多门课程,但是每门课程只能由一位教师来教。
3)多对多关系(M∶N)
例如,学生与课程之间是多对多的关系,即一个学生可以学多门课程,而每门课程可以有多个学生来学。
关系也可能有属性。
例如,学生“ 学” 某门课程所取得的成绩,既不是学生的属性也不是课程的属性。
由于“ 成绩” 既依赖于某名特定的学生又依赖于某门特定的课程,所以它是学生与课程之间的关系“ 学”的属性。

确定所有实体的集合
选择实体集应包含的属性
确定实体之间的联系
确定实体集的关键字,用下划线在属性上表明关键字的属性组合
确定联系的类型,用线将表示联系的菱形框联系到实体集时,在线旁注明是1或n(多)来表示联系的类型
将E-R图转换成表
将各个实体转换成对应的表(类 -- 表)

将各个属性转换为表对应的列(属性 -- 列)

标识每个表的主键列(id属性 -- 主键 )

在表之间建立主外键,体现实体之间的映射关系(关联关系)

浙公网安备 33010602011771号