资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第2章 关系数据库基本原理,1,2.1 关系模型的基本概念,2.2,关系数据库设计理论概述,2.3,数据库设计,方法简介,2,2.1 关系,模型的基本概念,关系数据库RDBMS(Related Data Base Manage System)是一组相关数据的集合。,关系模型是简化数据库结构的一种尝试。它将数据库中的全部数据表示为数据值的简单的行-列式表。,3,RDBMS 是一个数据库管理系统,在这一系统中,用户看得见的全部数据均严格组织为数据值表,并且可对这些表进行所有的数据库操作。,流行的RDBMS有:,(1)Microsoft SQL Server,(2)Oracle Server,(3)Sybase SQL Server,(4)Informix Server,4,2.1.1 关系数据库的特征:,1.关系模型的术语,表(关系)、行(记录、元组)、列(属性)、度,元 组,课程编号,课程名称,学时,学期,平均成绩,J001,数据库基础,36,1,78,J003,C语言,60,1,81,Z004,操作系统,44,2,67,X001,编译原理,40,2,66,属性,行(记录),列,度,5,2.1.1 关系数据库的特征:,2.,关系数据库的特征,(1)通过基于一个称为表的结构创建数据关系,,以 便于对数据的访问和操作。,(2)表包含属于一个实体集的一组相关实体。,(3)术语实体集和表经常交替使用。,(4)表也称为关系,行称为元组,列称为属性。,(5)具有由行和列组成的二维结构。,(6)每一元组表示实体集中的单个实体。,6,(7)每一列具有不同的名称。,(8)行/列的每一相交点表示单个数据值。,(9)每张表必须具有称为主键的键,用来唯一标,识每一行。,(10)一列中的所有值必须符合相同的数据格式。,(11)每一列均具有特定范围的值,称为属性域。,(12)每一行包括描述实体情况的信息。,(13)在 RDBMS 中,行和列的顺序并不重要。,7,2.1.2 关键字,关系数据模型涉及五种关键字,1.候选关键字(超键),可以唯一确定一行的属性唯一标识某一关系中的每一元组的任一属性集,2.主关键字(主键),被你选作唯一确定行的候选关键字,3.替代关键字,没有选作主关键字的候选关键字,候选关键字=主关键字+替代关键字,8,2.1.2 关键字,姓名,课程,成绩,趋势,张明,化学,89,升,王东,物理,76,降,张明,历史,80,降,赵彬,物理,67,降,学号,001,002,003,004,唯一的学号进行实体标识,不能进行区分,主键,9,4.组合关键字,当关键字由多个属性组成时,这些属性称为组合关键字。,班级,姓名,成绩,趋势,S183,张明,89,升,S183,王东,76,降,S183,赵彬,80,降,S183,张明,67,降,组合键(主键),10,5.外关键字,当一个表的主关键字在另一个表中也作为一个属性存在时,它就被称为是外关键字。,姓名,学号,张明,1,王东,2,李健,3,赵彬,4,钱雯,5,孙胜,6,周盈,7,学号,成绩,2,65,4,90,6,87,7,89,外键,主键,11,2.1.3 关系数据库的数据完整性,一般来说,可以从下面四个方面来实施数据的完整性。,1.实体完整性,实体完整性确保了每一行都可以被一个叫主关键字的属性唯一标识。,2.域完整性,域完整性确保了只有在某一合法范围内的值才能存储到一列中。,3.引用完整性,引用完整性确保所有外关键字中的值和主关键字中的值匹配。,4.自定义的完整性,用户自定义的完整性是指一系列的业务规则,它们是由用户指,定的,不属于实体、域和引用完整性的范畴。,12,学号,姓名,1,张明,2,王东,3,李健,4,赵彬,学号,成绩,姓名,1,89,张明,2,76,王东,3,80,李健,4,67,赵彬,存在数据冗余,注意,尽量不要产生数据冗余。,2.1.3 关系数据库的数据完整性,13,2.1.3 关系数据库的数据完整性,姓名,学号,张明,1,王东,2,李健,3,赵彬,4,钱雯,5,孙胜,6,周盈,7,学号,成绩,2,65,4,90,9,87,7,89,外键,主键,失去引用完整性,14,姓名,性别,身份证号码,张明,男,432940198404,ASD,刘鹃,女,411561198303038892,李亮,男,104320198502349956,域(字段),类型约束:姓名必须是字符型数据;,范围约束:性别必须是“男”或者“女”;,格式约束:身份证号码必须是,18,位数字。,失去了域完整性,2.1.3 关系数据库的数据完整性,15,2.2,关系数据库设计理论概述,2.2.1 规范化与非规范化数据,规范化(Normalization)是使用某些规则将复杂表结构分解成简单表结构的科学方法。它是使用关系数据库必备的分析数据表创建的方法,每一个关系数据表都必须符合规范化的定义,否则关联的数据库将会混乱。,16,2.2.1 规范化与非规范化数据,而冗余可能会导致下面两个问题:,数据不一致,当同一事实被存放多份时容易发生错误。,更新异常,插入、修改和删除数据可以导致不一致。,17,为了完成一个良好的数据库设计,必须要遵循下面这些最基本的规则:,(1)每个表都有标识符。,(2)每个表将为实体的单个类型存储数据。,(3)在表中应避免NULL值列。,(4)在表中应避免值或列的重复。,2.2.1 规范化与非规范化数据,18,2.2.2 范式,一、第一范式(First normal form,1NF),当表中的每一个单元含且仅含一个值时,这个表称为第一范式。,二、第二范式(Second normal form,2NF),当一个表是1 NF 且一行中的每个属性都依赖于整个关键字(不仅仅是关键字的一部分)时,该表就可以称作第二范式。,(没有部分依赖),三、第三范式(Third normal form,3NF),当一个关系是2 NF,且其中的每个非关键字属性仅函数依赖于主关键字时,这样的关系称为3 NF。,(没有传递依赖),19,2.2.2 范式,将表转换成 2NF 的指导:,(1)找出并移去函数依赖于部分关键字而不是整个关键字的属性。将它们放到另一张表中。,(2)将剩余的属性组成表。,将一个表转换成 3 NF 的指导:,(1)找出并移去函数依赖于非主关键字属性的非关键字属性。将它们放入另一个表中。,(2)将其余的属性组成表。,20,2.2.2 范式,例4-1:有一个销售系统的数据库正要创建关系数据库实例,其订货记录如图:,21,2.2.2 范式,符合1NF的数据表:,22,假设,我们有两条相同的订购数据(或许一次订购两本),则就会出现重复的现象,因此加入“订单序号”便可以排除这个困扰,同时也正确地符合2NF的要求:,查看2NF的数据表发现,“订购产品项目”与“产品名称”字段是相依关系,我们只要保留“订购产品项目”字段即可,因为我们可以在“产品数据表”中查出产品名称。,23,2.2.2 范式,当我们分离出“产品数据表”时,就可以使彼此的数据表字段关系单纯化,同时符合分工效率,而且更达到3NF的境界。,24,2.2.2 范式,例4-2:假设某建筑公司要设计一个数据库。公司的业务规则概括说明如下:,1)公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等;,2)公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等;,3)公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与工程师不同)。,4)公司定期制定一个工资报表,如图所示。,25,2.2.2 范式,26,2.2.2 范式,(1)数据冗余的表,27,2.2.2 范式,(2)属性间的函数,依赖,关系,注意,,图上方的箭头表示关键属性决定非关键属性,图下方的箭头表示属性之间的函数依赖性。,28,例4-3:设有订购关系如下,包括:客户编号CNO;客户,姓名CNAME;商品编号PNO;商品名称PNAME。,其中主键为(CNO,PNO),存在部分依赖,(CNO,PNO)CNAME和(CNO,PNO)PNAME,CNO,CNAME,PNO,PNAME,5001,吴丹,200002,计算机安全,5002,张艳,200001,数据库原理,5003,刘杰,200002,计算机安全,5004,王伟,200003,算法分析,5005,李强,200002,计算机安全,5001,吴丹,200004,计算机网络,29,分解成三个表,可以消去部分依赖。,C(CNO,CNAME),P(PNO,PNAME),CP(CNO,PNO),这三个表也属于第三范式(无传递依赖),30,2.3,数据库设计,方法简介,数据库设计步骤,数据库设计分为六个阶段:,需求分析,概念结构设计,逻辑结构设计,数据库物理设计,数据库实施,数据库运行和维护,31,数据库设计步骤,1、需求分析,了解用户对数据的要求和业务流程,形成需求规格说明。需求分析是整个设计过程的基础,是最耗时间的一步。,32,数据库设计步骤,2、概念结构设计,由于数据库逻辑结构依赖于具体的DBMS,直接设计数据库的逻辑结构会增加设计人员对不同数据库管理系统的数据库模式的理解负担,因此在将现实世界需求转化为机器世界的模型之前,我们先以一种,独立于具体数据库管理系统,的逻辑描述方法来描述数据库的逻辑结构,即设计数据库的概念结构。,概念结构设计是整个数据库设计的关键。对于关系数据库系统,一般使用,ER图,进行描述。可以使用的辅助设计工具有,ERWin,PowerDesigner,33,数据库设计步骤,3、逻辑结构设计,逻辑结构设计是将抽象的概念结构转换为所选用的DBMS支持的数据模型,并对其进行规范化处理及优化。,4、物理设计,根据DBMS的特点和处理的需要,进行物理存储的安排,建立索引,形成数据库的内模式,34,数据库设计步骤,5、数据库的实施,建立实际的数据库结构,装入数据、完成编码和进行测试。最终投入使用。,6、数据库的运行和维护,根据系统运行中产生的问题及用户的新需求不断完善系统功能。,35,2.3.2 实体关系模型(E-R模型),作为数据库的设计者,往往是用实体关系模型(E-R模型)来完成对数据库,概念结构设计,E-R模型就是利用E-R图描述数据库的,概念结构,然后通过设计好的,E-R模型转换为数据库的,逻辑,结构,即完成,逻辑,结构的,设计。,36,2.3.2 实体关系模型(E-R模型),1.E-R模型,E-R模型(Entity-Relationship Model)是,直接从现实世界中抽象出实体类型及实体间联,系,然后用实体联系图表示数据模型。,37,2.3.2 实体关系模型(E-R模型),实体名,属性名,关系名,ER图的,三要素:,1.确定系统中的实体。,2.确定每个实体的属性。,3.确定实体间的关系。,38,2.3.2 实体关系模型(E-R模型),ER图示例,Name,StudentName,TeacherID,StudentID,Teacher,Student,TEACH,39,2.3.2 实体关系模型(E-R模型),举例,某单位有一个零件仓库,又许多工程项目需要零件仓库供应零件,零件仓库根据需要向外面厂家订购零件。现在要建立E-R模型。,40,2.3.2 实体关系模型(E-R模型),其模型建立过程如下:,(1)首先确定实体类型。这个实际问题有三个实体类型:工程项目,PROJECT,,零件,PART,,供应零件的厂家,SUPPLIER,。,(2)确定联系类型。PROJECT和PART之间是,M:N,联系,PART和SUPPLIER之间也是,M:N,联系,这,两个联系类型分别命名为P-P和P-S。,(3)根据实体类型和联系类型画出E-R图。,(4)确定实体类型和联系类型的属性。,41,2.3.2 实体
展开阅读全文