11第2章关系数据库基本原理222.1关系模型的基本概念2.2关系数据库设计理论概述2.3数据库设计方法简介32.1关系模型的基本概念关系数据库RDBMS(RelatedDataBaseManageSystem)是一组相关数据的集合。关系模型是简化数据库结构的一种尝试。它将数据库中的全部数据表示为数据值的简单的行-列式表。4RDBMS是一个数据库管理系统,在这一系统中,用户看得见的全部数据均严格组织为数据值表,并且可对这些表进行所有的数据库操作。流行的RDBMS有:(1)MicrosoftSQLServer(2)OracleServer(3)SybaseSQLServer(4)InformixServer52.1.1关系数据库的特征:1.关系模型的术语表(关系)、行(记录、元组)、列(属性)、度元组课程编号课程名称学时学期平均成绩J001数据库基础36178J003C语言60181Z004操作系统44267X001编译原理40266属性行(记录)列度62.1.1关系数据库的特征:2.关系数据库的特征(1)通过基于一个称为表的结构创建数据关系,以便于对数据的访问和操作。(2)表包含属于一个实体集的一组相关实体。(3)术语实体集和表经常交替使用。(4)表也称为关系,行称为元组,列称为属性。(5)具有由行和列组成的二维结构。(6)每一元组表示实体集中的单个实体。7(7)每一列具有不同的名称。(8)行/列的每一相交点表示单个数据值。(9)每张表必须具有称为主键的键,用来唯一标识每一行。(10)一列中的所有值必须符合相同的数据格式。(11)每一列均具有特定范围的值,称为属性域。(12)每一行包括描述实体情况的信息。(13)在RDBMS中,行和列的顺序并不重要。82.1.2关键字关系数据模型涉及五种关键字1.候选关键字(超键)可以唯一确定一行的属性唯一标识某一关系中的每一元组的任一属性集2.主关键字(主键)被你选作唯一确定行的候选关键字3.替代关键字没有选作主关键字的候选关键字候选关键字=主关键字+替代关键字92.1.2关键字姓名课程成绩趋势张明化学89升王东物理76降张明历史80降赵彬物理67降学号001002003004唯一的学号进行实体标识不能进行区分主键104.组合关键字当关键字由多个属性组成时,这些属性称为组合关键字。班级姓名成绩趋势S183张明89升S183王东76降S183赵彬80降S183张明67降组合键(主键)115.外关键字当一个表的主关键字在另一个表中也作为一个属性存在时,它就被称为是外关键字。姓名学号张明1王东2李健3赵彬4钱雯5孙胜6周盈7学号成绩265490687789外键主键122.1.3关系数据库的数据完整性一般来说,可以从下面四个方面来实施数据的完整性。1.实体完整性实体完整性确保了每一行都可以被一个叫主关键字的属性唯一标识。2.域完整性域完整性确保了只有在某一合法范围内的值才能存储到一列中。3.引用完整性引用完整性确保所有外关键字中的值和主关键字中的值匹配。4.自定义的完整性用户自定义的完整性是指一系列的业务规则,它们是由用户指定的,不属于实体、域和引用完整性的范畴。13学号姓名1张明2王东3李健4赵彬学号成绩姓名189张明276王东380李健467赵彬存在数据冗余注意,尽量不要产生数据冗余。2.1.3关系数据库的数据完整性142.1.3关系数据库的数据完整性姓名学号张明1王东2李健3赵彬4钱雯5孙胜6周盈7学号成绩265490987789外键主键失去引用完整性15姓名性别身份证号码张明男432940198404ASD刘鹃女411561198303038892李亮男104320198502349956域(字段)•类型约束:姓名必须是字符型数据;•范围约束:性别必须是“男”或者“女”;•格式约束:身份证号码必须是18位数字。失去了域完整性2.1.3关系数据库的数据完整性162.2关系数据库设计理论概述2.2.1规范化与非规范化数据规范化(Normalization)是使用某些规则将复杂表结构分解成简单表结构的科学方法。它是使用关系数据库必备的分析数据表创建的方法,每一个关系数据表都必须符合规范化的定义,否则关联的数据库将会混乱。172.2.1规范化与非规范化数据而冗余可能会导致下面两个问题:数据不一致当同一事实被存放多份时容易发生错误。更新异常插入、修改和删除数据可以导致不一致。18为了完成一个良好的数据库设计,必须要遵循下面这些最基本的规则:(1)每个表都有标识符。(2)每个表将为实体的单个类型存储数据。(3)在表中应避免NULL值列。(4)在表中应避免值或列的重复。2.2.1规范化与非规范化数据192.2.2范式一、第一范式(Firstnormalform,1NF)当表中的每一个单元含且仅含一个值时,这个表称为第一范式。二、第二范式(Secondnormalform,2NF)当一个表是1NF且一行中的每个属性都依赖于整个关键字(不仅仅是关键字的一部分)时,该表就可以称作第二范式。(没有部分依赖)三、第三范式(Thirdnormalform,3NF)当一个关系是2NF,且其中的每个非关键字属性仅函数依赖于主关键字时,这样的关系称为3NF。(没有传递依赖)202.2.2范式将表转换成2NF的指导:(1)找出并移去函数依赖于部分关键字而不是整个关键字的属性。将它们放到另一张表中。(2)将剩余的属性组成表。将一个表转换成3NF的指导:(1)找出并移去函数依赖于非主关键字属性的非关键字属性。将它们放入另一个表中。(2)将其余的属性组成表。212.2.2范式例4-1:有一个销售系统的数据库正要创建关系数据库实例,其订货记录如图:222.2.2范式符合1NF的数据表:23假设,我们有两条相同的订购数据(或许一次订购两本),则就会出现重复的现象,因此加入“订单序号”便可以排除这个困扰,同时也正确地符合2NF的要求:查看2NF的数据表发现,“订购产品项目”与“产品名称”字段是相依关系,我们只要保留“订购产品项目”字段即可,因为我们可以在“产品数据表”中查出产品名称。242.2.2范式当我们分离出“产品数据表”时,就可以使彼此的数据表字段关系单纯化,同时符合分工效率,而且更达到3NF的境界。252.2.2范式例4-2:假设某建筑公司要设计一个数据库。公司的业务规则概括说明如下:1)公司承担多个工程项目,每一项工程有:工程号、工程名称、施工人员等;2)公司有多名职工,每一名职工有:职工号、姓名、性别、职务(工程师、技术员)等;3)公司按照工时和小时工资率支付工资,小时工资率由职工的职务决定(例如,技术员的小时工资率与工程师不同)。4)公司定期制定一个工资报表,如图所示。262.2.2范式272.2.2范式(1)数据冗余的表282.2.2范式(2)属性间的函数依赖关系注意,图上方的箭头表示关键属性决定非关键属性,图下方的箭头表示属性之间的函数依赖性。29例4-3:设有订购关系如下,包括:客户编号CNO;客户姓名CNAME;商品编号PNO;商品名称PNAME。其中主键为(CNO,PNO),存在部分依赖(CNO,PNO)→CNAME和(CNO,PNO)→PNAMECNOCNAMEPNOPNAME5001吴丹200002计算机安全5002张艳200001数据库原理5003刘杰200002计算机安全5004王伟200003算法分析5005李强200002计算机安全5001吴丹200004计算机网络30分解成三个表,可以消去部分依赖。C(CNO,CNAME)P(PNO,PNAME)CP(CNO,PNO)这三个表也属于第三范式(无传递依赖)312.3数据库设计方法简介2.3.1数据库设计步骤数据库设计分为六个阶段:需求分析概念结构设计逻辑结构设计数据库物理设计数据库实施数据库运行和维护322.3.1数据库设计步骤1、需求分析了解用户对数据的要求和业务流程,形成需求规格说明。需求分析是整个设计过程的基础,是最耗时间的一步。332.3.1数据库设计步骤2、概念结构设计由于数据库逻辑结构依赖于具体的DBMS,直接设计数据库的逻辑结构会增加设计人员对不同数据库管理系统的数据库模式的理解负担,因此在将现实世界需求转化为机器世界的模型之前,我们先以一种独立于具体数据库管理系统的逻辑描述方法来描述数据库的逻辑结构,即设计数据库的概念结构。概念结构设计是整个数据库设计的关键。对于关系数据库系统,一般使用ER图进行描述。可以使用的辅助设计工具有ERWin,PowerDesigner342.3.1数据库设计步骤3、逻辑结构设计逻辑结构设计是将抽象的概念结构转换为所选用的DBMS支持的数据模型,并对其进行规范化处理及优化。4、物理设计根据DBMS的特点和处理的需要,进行物理存储的安排,建立索引,形成数据库的内模式352.3.1数据库设计步骤5、数据库的实施建立实际的数据库结构,装入数据、完成编码和进行测试。最终投入使用。6、数据库的运行和维护根据系统运行中产生的问题及用户的新需求不断完善系统功能。362.3.2实体关系模型(E-R模型)作为数据库的设计者,往往是用实体关系模型(E-R模型)来完成对数据库概念结构设计,E-R模型就是利用E-R图描述数据库的概念结构,然后通过设计好的E-R模型转换为数据库的逻辑结构,即完成逻辑结构的设计。372.3.2实体关系模型(E-R模型)1.E-R模型E-R模型(Entity-RelationshipModel)是直接从现实世界中抽象出实体类型及实体间联系,然后用实体联系图表示数据模型。382.3.2实体关系模型(E-R模型)实体名属性名关系名ER图的三要素:1.确定系统中的实体。2.确定每个实体的属性。3.确定实体间的关系。392.3.2实体关系模型(E-R模型)ER图示例NameStudentNameTeacherIDStudentIDTeacherStudentTEACH402.3.2实体关系模型(E-R模型)举例某单位有一个零件仓库,又许多工程项目需要零件仓库供应零件,零件仓库根据需要向外面厂家订购零件。现在要建立E-R模型。412.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)确定实体类型和联系类型的属性。422.3.2实体关系模型(E-R模型)E-R图举例关系的联系类型有:1-对-1(1:1)学生——项目1-对-多(1:n)部门——员工多-对-多(n:n)顾客——产品432.3.2实体关系模型(E-R模型)2.E-R模型转换为逻辑模型转换规则:一个实体类型转换为一个关系模式。一对一联系的转换将联系转换为一个独立的关系模式。关系模式名为联系名,与该联系相连的实体的关键字及联系本身的属性为关系模式的属性。每个实体的关键字均为关系模式的候选键。与任意一端的关系模式合并。在一个关系的属性中加入另一个关系的主关键字。442.3.2实体关系模型(E-R模型)一对多联系的转换将联系转换为一个独立的关系模式。联系名为关系模式名。与该联系相连的各实体的关键字及联系本身的属性为关系模式的属性。关系模式的关键字为n端实体的关键字。将1:n联系与n端关系合并。1端的关键字及联系的属性并入n端的关系模式。多对多联系的转换将联系转换为一个独立的关系模式。关系模式名为联系名,与该联系相连的各实体的关键字及联系本身的属性为关系模式的属性,关系模式的关键字为联系中各实体关键字的并集。452.3.2实体关系模型(E-R模型)同一实体集内部联系的转换将该实体集拆分为相互联系的两个子集,然后根据它们相互间不同的联系方式按上述规则处理。三个或三个以上实体间的多元关系的转换将联系转换为一个独立的