您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 关系数据库规范化理论
第2章关系数据库规范化理论与SQL语言2.2关系模式的规范化2.3关系数据库标准语言——SQL简介2.1关系规范化的作用能力目标掌握关系规范化的理论;掌握关系模式的规范化方法;掌握关系语言SQL基本语言结构与用法。态度目标团队精神;态度积极;任务按时完成;出勤。重点难点重点:掌握关系模式的规范化方法;掌握关系语言SQL基本语言结构与用法。难点:掌握关系模式的规范化方法;掌握关系语言SQL基本语言结构与用法。2.1关系规范化的作用1.关系规范化一个数据库模式是一个关系模式的集合。数据库设计实际上是从多种可能的组合中选取一个合适的性能好的关系模式集合作为数据库模式的问题。规范化,就是用形式更为简洁,结构更加规范的关系模式取代原有关系模式的过程。2.属性间关系一对一关系(1:1)一对多关系(1:n)多对多关系(m:n)2.1关系规范化的作用3.函数依赖函数依赖(FunctionalDependency,FD),是属性之间的一种联系。在关系R中,X、Y为R的两个属性或属性组,如果对于R的所有关系r都存在:对于X的每一个具体值,Y都只有一个具体值与之对应,则称属性Y函数依赖于属性X。或者说,属性X函数决定属性Y,记作X→Y。其中X称为决定因素,Y称为被决定因素。见【案例2.1】。2.1关系规范化的作用【案例2.1】现有一个学生关系模式:学生(学号,姓名,课程编号,成绩,课程名称,任课教师姓名,教师年龄),写出函数依赖形式。学号→学生姓名(每个学号只能对应一个学生姓名)课程编号→课程名称(每门课程只能对应一门课程名称)教师编号→教师年龄(每个教师只能一个年龄)(学号,课程编号)→成绩(每个学生学习一门课程对应一个成绩)若Y函数不依赖于X,记作:X→Y。若X→Y,Y→X,记作:XY2.1关系规范化的作用4.完全函数依赖在关系模式R中,X、Y为R的两个属性或属性组,若Y函数依赖X(X→Y)但Y函数不依赖X的任一真子集X′,则称Y对X完全(Full)函数依赖,记为:Xf→Y。若X′→Y,称Y部分(Partial)函数依赖于X,记为:Xp→Y。见【案例2.2】。5.传递函数依赖在关系R中,X、Y、Z是R的三个不同的属性或属性组,如果X→Y,Y→Z,但Y→X,且Y不是X的子集,则称Z传递函数依赖于X。见【案例2.3】。2.1关系规范化的作用【案例2.2】(学号,课程名称)→学生姓名,由于学号、课程名称相同必定学生姓名相同,同时,学号→学生姓名,由于学号相同必定姓名相同,则称学生姓名不完全函数依赖(学号,课程名称)。由于学号是(学号,课程名称)的一个真子集,学生姓名函数依赖于学号,则学生姓名对(学号,课程名称)不完全函数依赖,称为部分函数依赖。但(学号,课程名称)→成绩为完全函数依赖,因为成绩不函数依赖于(学号,课程名称)的任一真子集。【案例2.3】学号→院系名称,院系名称→院系长,则属性院系长函数传递依赖属性学号。2.1关系规范化的作用6.码的定义在关系R中,X、Y、Z是R的三个不同的属性或属性组,如果X→Y,Y→Z,但Y→X,且Y不是X的子集,则称Z传递函数依赖于X。设K是关系模式R(U,F)中的属性或属性组,K′是K的任一子集。若K→U,而不存在K′→U,则K为R的候选码(CandidateKey)若候选码多于一个,则选其中的一个为主码(PrimaryKey);包含在任一候选码中的属性,叫做主属性(PrimaryAttribute);不包含在任何码中的属性称非主属性(NonprimeAttribute)或非码属性(NonkeyAttribute)。相关概念关系模式中,最简单的情况是单个属性是码,称为单码(SingleKey);最极端的情况是整个属性组是码,称为全码(AllKey)。外码:设有两个关系R和S,X是R的属性或属性组,并且X不是R的码,但X是S的码(或与S的码意义相同),则称X是R的外部码(ForeignKey),简称外码或外键。相关概念2.2关系模式的规范化1.非规范化的关系当一个关系表中存在还可以再分的数据项时,这个关系表就是非规范化的表。2.第一范式(1NF)如果关系模式R中不包含多值属性,则R满足第一范式(FirstNormalForm),记作:R∈1NF。3.第二范式(2NF)如果一个关系R∈1NF,且它的所有非主属性都完全函数依赖于R的任一候选码,则R属于第二范式,记作:R∈2NF。2.2关系模式的规范化4.第三范式(3NF)如果关系模式R∈2NF,且它的每一个非主属性都不传递依赖于任何候选码,则称R是第三范式,记作:R∈3NF5.关系模式的规范化方法步骤1:对1NF关系进行分解,消除原关系中非主属性对码的部分函数依赖,将1NF关系转换为多个2NF。步骤2:对2NF关系进行分解,消除原关系中非主属性对码的传递函数依赖,产生一组3NF。2.3关系数据库标准语言——SQL简介1.SQL的语言分类——数据定义语言(DateDefinitionLanguage,DDL)用于定义(CREATE)、修改(ALTER)、删除(DROP)数据库中表结构、视图、索引等。SQL语言中定义表的语法结构如下:CREATETABLE表名(列名数据类型[列级完整性约束][,列名数据类型[列级完整性约束]][…][,表级完整性约束])2.3关系数据库标准语言——SQL简介【案例2.4】使用SQL语言CREATE语句创建学生信息数据表StudentsInfoCREATETABLEstudentsInfo(SnoCHAR(8),SnameVARCHAR(8),SsexCHAR(2)DEFAULT’男’,SbirthdayDatetime,CollegeVARCHAR(20),ClassVARCHAR(12))2.3关系数据库标准语言——SQL简介【案例2.2】使用SQL语言ALTER语句修改学生信息数据表StudentsInfo,增加2个字段,住址字段(Address,数据类型为字符类型,长度不超过15个字节),邮箱字段(Email,数据类型为字符类型,长度不超过25个字节)。ALTERTABLEstudentsInfoADDAddressVARCHAR(15),EmailVARCHAR(25)SQL语言中修改表的语法结构如下:ALTERTABLE表名[ADD新列名数据类型[列级完整性约束][,新列名数据类型[列级完整性约束]][…]2.3关系数据库标准语言——SQL简介2.SQL的语言分类——数据操纵语言(DateManagementLanguage,DML):用于对数据库中的数据进行查询(SELECT)、插入(INSERT)、删除(DELETE)和更新(UPDATE)操作。SQL语言中插入数据记录到数据表中的语法结构如下:INSERTINTO表名[列名1[,列名2]…]VALUES(常量1[,常量2]…)2.3关系数据库标准语言——SQL简介【案例2.5】使用SQL语言INSERT语句将学生信息(王丽,女,1981年10月1日出生,计算机科学系网络2班,学号为net-0608,)插入到数据表StudentsInfo中。INSERTINTOStudentsInfo(Sno,Sname,Ssex,Sbirthday,College,Class)VALUES(’net-0608’,’王丽’,’女’,’1981-10-1’,’计算机科学系’,’网络2班’)【案例2.6】使用SQL语言SELECT语句查询学号为“net-0608”的学生基本信息。SELECT*FROMStudentsInfoWHERESno=’net-0608’2.3关系数据库标准语言——SQL简介【案例2.7】使用SQL语言UPDATE语句将学号为“net-0608”的学生的所在院系更改为“管理学院”。UPDATEStudentsInfoSETCollege=’管理学院’WHERESno=’net-0608’SQL语言中修改数据记录字段的语法结构如下:UPDATE表名SET列名1=表达式1[,列名2=表达式2][…][WHERE条件表达式]2.3关系数据库标准语言——SQL简介【案例2.8】使用SQL语言DELETE语句将学号为“net-0608”的学生基本信息从数据库表StudentsInfo中删除。DELETEFROMStudentsInfoWhereSno=’net-0608’SQL语言中删除数据表中记录的语法结构如下:DELETEFROM表名[WHERE条件表达式]2.3关系数据库标准语言——SQL简介3.SQL的语言分类——数据控制语言(DateControlLanguage,DCL):用于对数据库用户的各种操作权限进行授权(GRANT)或收回权限(REVOKE)等操作。给数据库用户授予某些权限,语法结构如下:GRANT权限1[,权限2][…][ON对象类型对象名]TO用户1[,用户2][…]【案例2.9】为用户wangfm授予CREATETABLE权限。GRANTCREATETABLETOwangfm2.3关系数据库标准语言——SQL简介【案例2.10】收回用户wangfm所拥有的CREATEVIEW权限。GRANTCREATEVIEWTOwangfm从数据库用户收回某些权限,语法结构如下:REVOKE权限1[,权限2][…][ON对象类型对象名]FROM用户1[,用户2][…]本章小结数据库规范化理论是进行数据库设计的理论基础,只有在数据库设计过程中按照规范化理论方法才能够设计出科学合理的数据库逻辑结构和物理结构,避免数据冗余、删除冲突和数据不一致性等问题。关系数据库标准操作语言即SQL语言,通过案例介绍了SQL语言中常用的语言类型和实用方法。掌握理解标准SQL语言结构,是今后学习SQLServerTransact-SQL语言的基础。
本文标题:关系数据库规范化理论
链接地址:https://www.777doc.com/doc-3868301 .html