数据库系统复习.doc

上传人:s****u 文档编号:13152825 上传时间:2020-06-05 格式:DOC 页数:33 大小:479.51KB
返回 下载 相关 举报
数据库系统复习.doc_第1页
第1页 / 共33页
数据库系统复习.doc_第2页
第2页 / 共33页
数据库系统复习.doc_第3页
第3页 / 共33页
点击查看更多>>
资源描述
数据库系统基本概念数据库(Database,简称DB)数据库是长期存储在计算机内有组织的大量可共享的数据集合数据库管理系统(Database Management System,简称DBMS)数据库管理系统是位于用户与操作系统之间的一层数据管理软件数据库系统(Database System,简称DBS)数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成 DBMS的主要功能是什么?1、数据定义功能2、数据组织、存储和管理3、数据操纵功能4、数据库的事务管理和运行管理5、数据库的建立和维护功能数据管理经历的发展经历了哪几个阶段?1.人工管理阶段2.文件系统阶段3.数据库阶段数据库系统有什么特点?1. 数据结构化2. 数据共享性高、冗余度低、易扩充3. 数据独立性高4. 数据由DBMS统一管理和控制数据的独立性包括哪些?什么是逻辑独立性?什么是物理独立性?n 数据的独立性是指逻辑独立性和物理独立性。n 数据的逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。数据的物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的,也就是说,数据在磁盘上的数据库中怎样存储是有DBMS管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。数据库管理系统提供了哪几方面的数据控制功能?(1)数据的安全性(security)控制(2)数据的完整性(integrity)控制(3)并发(concurrency)控制(4)数据恢复(recovery)数据模型的三大要素是什么?数据模型通常由数据结构,数据操作,数据的约束条件三个要素组成两个实体型之间的联系有哪几种类型?(1)一对一联系(1:1)n 如:班级与班主任,观众与座位,病人与床位。(2)一对多联系(1:n)如:班级与学生、公司与职员、省与市。(3)多对多(m:n)如:教师与学生,学生与课程,工厂与产品。E-R图的表示方法 用E-R图来描述现实世界的概念模型。 E-R图提供了表示实体型、属性和联系的方法: n 实体型:用矩形表示,矩形框内写明实体名。 n 属性:用椭圆形表示,并用直线将其与相应的实体连接起来。 联系 联系本身:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n) 联系的属性:联系本身也是一种实体型,也可以有属性。如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来例子:为仓库管理设计一个E-R模型,该仓库主要管理零件的入库、出库和采购等事项。仓库根据需要向外面厂家订购零件,而许多工程项目需要仓库供应零件。实体有:n 仓库:属性有仓库号、仓库面积、电话号码。n 零件:属性有零件号、名称、规格、单价、描述。n 供应商:属性有供应商号、姓名、地址、电话号、帐号。n 项目:属性有项目号、预算、开工日期。n 职工:属性有职工号、姓名、年龄、职称。实体之间的联系如下:n 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。某种零件在某个仓库中的数量用库存量描述。n 一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作。n 职工之间具有领导被领导的关系,即仓库主任领导若干保管员。 n 一个供应商可以供给若干项目多种零件,每个项目可以使用不同供应商供给的零件,每种零件可以由不同的供应商供给。 画出实体及其属性图零件名称规格零件号单价描述仓库仓库号面积电话号码项目项目号预算开工日期供应商姓名地址供应商号电话号码账号职工职工号姓名年龄职称 画出实体及其联系图供应量供应商项目供应mnp仓库零件仓库nm职工工作1n领导1n库存量 画出实体联系图供应量供应仓库工作mnpnm1n领导1n库存量供应商姓名地址供应商号电话号码账号仓库仓库号面积电话号码职工职工号姓名年龄职称项目项目号预算开工日期零件名称规格零件号单价描述关系模型n 在用户的观点下,关系模型中,数据的逻辑结构就是一张二维表。它以行和列组成。关系模式 对关系的描述,一般表示为:关系名(属性1,属性2,属性n) 如:学生(学号,姓名,性别,年龄,系别关系模型的数据操纵n 数据操纵主要包括查询、插入、删除和修改数据关系模型的完整性约束n 即实体完整性、参照完整性和用户定义的完整性数据库系统的三级模式结构模式(也称逻辑模式) 数据库中全体数据的逻辑结构和特征的描述 所有用户的公共数据视图,综合了所有用户的需求 一个数据库只有一个模式 模式的地位:是数据库系统模式结构的中间层 与数据的物理存储细节和硬件环境无关 与具体的应用程序、开发工具及高级程序设计语言无关外模式(也称子模式或用户模式) 数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示 外模式的地位:介于模式与应用之间 模式与外模式的关系:一对多 外模式通常是模式的子集 一个数据库可以有多个外模式。内模式(也称存储模式) 是数据物理结构和存储方式的描述 是数据在数据库内部的表示方式 记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储) 索引的组织方式 数据是否压缩存储 数据是否加密 数据存储记录结构的规定 一个数据库只有一个内模式二级映象功能 1外模式模式映象 2模式内模式映象外模式模式映象 外模式模式映象的用途:保证数据的逻辑独立性 当模式改变时,数据库管理员修改有关的外模式模式映象,使外模式保持不变模式内模式映象 模式内模式映象的用途:保证数据的物理独立性 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式内模式映象,使模式保持不变关系关系是一个二维表,表的每行对应一个元组,表的每列对应一个域。 候选码 若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)。 全码 在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)。 主码 若一个关系有多个候选码,则选定其中一个为 主码(Primary key)。关系模型中三类完整性约束: 实体完整性 参照完整性 用户定义的完整性实体完整性规则(Entity Integrity) 若属性A是基本关系R的主属性,则属性A不能取空值。例SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)POSTGRADUATE属性为主码(假设研究生不会重名),则其不能取空值。外码 设F是基本关系R的一个或一组属性, 但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreign Key)学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名)找出下面关系中的主码和外码。参照完整性规则 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值) 或者等于S中某个元组的主码值。用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。用户定义的完整性(续)例 课程(课程号,课程名,学分) “课程名”属性必须取唯一值 非主属性“课程名”也不能取空值 “学分”属性只能取值1,2,3,4传统的集合运算 对两个关系的集合运算作并,交,差时,对关系有什么要求呢?两个关系都具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域。专门的关系运算 选择 投影 连接 除选择(续) 选择运算是从行的角度进行的运算 举例设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC。查询年龄小于20岁的学生 Sage 20(Student) 或 4 20(Student)根据关系代数表达式写出结果: SnoSnameSsexSageSdept95002刘晨女19IS95003王敏女18MA95004张立男19IS投影(Projection) 投影操作主要是从列的角度进行运算但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影 Sname,Sdept(Student)或 2,5(Student)连接(续)1. 等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。2. 等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。例查询没有任何一门课程成绩不及格的所有学生的学号、姓名和系别 Sno,Sname,Sdept(Grade60(Student SC)关系代数表达式一定要掌握。书上的例题,课后作业.练习 查询2号课程的选课情况 查询学习课程号为2的学生的学号和姓名 查询学习课程名为数学的学生的学号和姓名 查询学习课程号为2或3的学生的学号 查询不学习课程号为2的学生的姓名和年龄 查询学习全部课程的学生姓名n 查询所学课程包含学生S3所学课程的学生学号Student(Sno , Sname , Ssex , Sage , Sdept)Course(Cno , Cname , Cpno , Credit)SC(Sno,Cno,Grade)SQL语言Structured Query Langue具有数据定义、数据操纵、数据查询、数据控制功能SQL的特点 综合统一 2. 高度非过程化 3. 面向集合的操作方式 4. 同一种语法结构提供两种使用方式 5. 语言简捷,易学易用SQL的数据定义功能: 模式定义、表定义、视图和索引的定义 定义基本表(1) 定义基本表的语句格式: CREATE TABLE ( 列级完整性约束条件 , 列级完整性约束条件.) ,;约束类型:在定义完整性约束时必须指定完整性约束的类型。 五种类型的完整性约束:(1)NULL/NOT NULL(2)UNIQUE约束(3)PRIMARY KEY约束(4)FOREIGN KEY约束(5)CHECK约束例 建立包含完整性定义的学生表CREATE TABLE S(SNO CHAR(6) PRIMARY KEY,SN CHAR(8) NOT NULL,AGE NUMERIC(2) NOT NULL,CHECK (AGE BETWEEN 15 AND 50),SEX CHAR(2), DEPT CHAR(10) foreign key references D(DNO));索引的分类聚集索引:按照索引的字段排列记录,并且依照排好的顺序将记录存储在表中。唯一索引:表示表中每一个索引值只对应唯一的数据记录。1.唯一性索引常用于PRIMARY KEY的字段上,以区别每一笔记录。2.而当表中有PRIMARY KEY的字段时,SQL SERVER会在PRIMARY KEY字段建立一个唯一索引。复合索引:是将两个字段或多个字段组合起来建立的索引,而单独的字段允许有重复的值。建立索引建立索引的语句是CREATE INDEX,其语法格式为:CREATE UNIQUE CLUSTER INDEX ON ( 次序 , 次序)例为表SC在SNO上建立唯一索引。CREATE UNIQUE INDEX SCI ON SC(SNO)例 为教师表T在TN上建立聚集索引。CREATE CLUSTER INDEX TI ON T(TN)例 为学生-课程数据库中的Student、Couse、SC三个表建立索引。其中Student表按学号升序建唯一索引,Couse表按课程号升序建唯一索引,Sno、Cno表按学号升序和课程号降序建唯一索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Couse(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 数据库的数据操纵功能: 数据的查询; 数据的插入; 数据的删除; 数据的修改.查 询 单表查询 连接查询 嵌套查询 集合查询 语句格式SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ; SELECT子句:指定要显示的属性列 FROM子句:指定查询对象(基本表或视图) WHERE子句:指定查询条件 GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作聚集函数 HAVING短语:筛选出满足指定条件的组 ORDER BY子句:对查询结果表按指定列值的升序或降序排序 WHERE子句常用的查询条件查询计算机科学系全体学生的名单。 SELECT Sname FROM Student WHERE Sdept=CS; /Sname (Sdept=CS(Student))多重条件查询查询计算机系年龄在20岁以下的学生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage20;ORDER BY子句 例24 查询选修了3号课程学生的学号及其成绩,查询结果按分数升序排列。 SELECT Sno,Grade FROM SC WHERE Cno= 3 ORDER BY Grade ASC;例25 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。 SELECT * FROM Student ORDER BY Sdept,Sage DESC; 聚集函数 - 计数COUNT(DISTINCT|ALL *)COUNT(DISTINCT|ALL ) 计算总和SUM(DISTINCT|ALL ) 计算平均值AVG(DISTINCT|ALL ) 最大最小值 MAX(DISTINCT|ALL ) MIN(DISTINCT|ALL )例26 查询学生总人数。 SELECT COUNT(*) FROM Student; 例27 查询选修了课程的学生人数。 SELECT COUNT( DISTINCT Sno) FROM SC; GROUP BY子句分组: 细化聚集函数的作用对象 未对查询结果分组,聚集函数将作用于整个查询结果 对查询结果分组后,聚集函数将分别作用于每个组 作用对象是查询的中间结果表 按指定的一列或多列值分组,值相等的为一组例31 求各个课程号及相应的选课人数。SELECT Cno,count(Sno) FROM SC GROUP BY Cno;例32 查询选修了2门以上课程的学生学号。 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) 2; 如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足制定条件的组,则可以使用HAVING短语制定筛选条件连接查询前面的查询都是针对一个表进行的,当查询同时涉及两个以上的表时,称为连接查询表的连接方法:表之间满足一定的条件的行进行连接,FROM子句中指明进行连接的表名,WHERE子句指明连接的列名及其连接条件查询每个学生及其选修课程的情况。SELECT Student.*,SC.*FROM Student,SCWHERE Student.Sno = SC.Sno;复合条件连接:WHERE子句中含多个连接条件例37 查询选修2号课程且成绩在90分以上的所有学生的学号和姓名SELECT Student.Sno, SnameFROM Student, SCWHERE Student.Sno = SC.Sno AND /* 连接谓词* SC.Cno= 2 AND SC.Grade 90; /其他限定条件 */查询与“刘晨”在同一个系学习的学生。 SELECT Sno,Sname,Sdept FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname= 刘晨 );1. EXISTS谓词n 存在量词$ n 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false” 若内层查询结果非空,则外层查询的WHERE子句返回真值 若内层查询结果为空,则外层查询的WHERE子句返回假值n 由EXISTS引出的子查询,其目标列表达式通常都用* ,因为带EXISTS的子查询只返回真值或假值,给出列名无实际意义2. NOT EXISTS谓词 若内层查询结果非空,则外层查询的WHERE子句返回假值 若内层查询结果为空,则外层查询WHERE子句返回真值 用嵌套查询(EXISTS) 查询选修了1号课程的学生姓名。 SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE Sno=Student.Sno AND Cno= 1 );集合查询查询计算机科学系的学生及年龄不大于19岁的学生信息。 SELECT * FROM Student WHERE Sdept= CS UNION SELECT * FROM Student WHERE Sage=19;插入单个元组语句格式 INSERT INTO (,) VALUES ( ,)功能 将新元组插入指定表中。将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。 INSERT INTO Student VALUES (95020,陈冬,男,IS,18); 修改数据 语句格式 UPDATE SET =,= WHERE ;功能修改指定表中满足WHERE子句条件的元组将学生95001的年龄改为22岁。 UPDATE Student SET Sage=22 WHERE Sno= 95001 ; 修改多个元组的值例6 将所有学生的年龄增加1岁 UPDATE Student SET Sage= Sage+1;例 将信息系所有学生的年龄增加1岁。 UPDATE Student SET Sage= Sage+1 WHERE Sdept= IS ;带子查询的修改语句例7 将计算机科学系全体学生的成绩置零。 UPDATE SC SET Grade=0 WHERE CS = (SELETE Sdept FROM Student WHERE Student.Sno = SC.Sno);将计算机科学系全体学生的成绩置零。另解: UPDATE SC SET Grade=0 WHERE Sno IN (SELECT Sno FROM Student WHERE Sdept=计算机)删除数据l 语句格式 DELETE FROM WHERE ; 功能w 删除指定表中满足WHERE子句条件的元组 WHERE子句w 指定要删除的元组w 缺省表示要修改表中的所有元组删除2号课程的所有选课记录。 DELETE FROM SC; WHERE Cno=2;删除所有的学生选课记录。 DELETE FROM SC;删除计算机科学系所有学生的选课记录。 DELETE FROM SC WHERE CS= (SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno);删除计算机科学系所有学生的选课记录。另解: DELETE FROM SC WHERE Sno IN (SELECT Sno FROM Student WHERE Sdept=计算机)视图的特点是什么? 虚表,是从一个或几个基本表(或视图)导出的表 只存放视图的定义,不会出现数据冗余 基表中的数据发生变化,从视图中查询出的数据也随之改变建立视图 语句格式 CREATE VIEW ( ,) AS WITH CHECK OPTION;建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS;建立信息系选修了1号课程的学生视图。 CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept= IS AND Student.Sno=SC.Sno AND SC.Cno= 1;数据库安全性 什么是数据库的安全性 数据库的安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。计算机系统的三类安全性问题是什么?技术安全类管理安全类政策法律类计算机系统中,安全措施是一级一级层层设置计算机系统的安全模型 数据库安全性控制的常用方法有哪些?用户标识和鉴别存取控制视图机制审计数据加密 常用存取控制方法有哪些?自主存取控制(DAC)强制存取控制(MAC)自主存取控制方法 通过 SQL 的 GRANT 语句和 REVOKE 语句实现 用户权限组成n 数据对象n 操作类型 定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作 定义存取权限称为授权 强制存取控制方法 主体是系统中的活动实体 DBMS所管理的实际用户 代表用户的各进程 客体是系统中的被动实体,是受主体操纵的 文件 基表 索引 视图 敏感度标记(Label) 绝密(Top Secret) 机密(Secret) 可信(Confidential) 公开(Public) 主体的敏感度标记称为许可证级别(Clearance Level) 客体的敏感度标记称为密级(Classification Level) MAC机制就是通过对比主体的Label和客体的Label,最终确定主体是否能够存取客体授 权 GRANT语句的一般格式: GRANT ,. ON TO ,. WITH GRANT OPTION; 谁定义?DBA和表的建立者(即表的属主) GRANT功能:将对指定操作对象的指定操作权限授予指定的用户。WITH GRANT OPTION子句 指定了WITH GRANT OPTION子句: 获得某种权限的用户还可以把这种权限再授予别的用户。 没有指定WITH GRANT OPTION子句: 获得某种权限的用户只能使用该权限,不能传播该权限。例1 把查询Student表权限授给用户U1 GRANT SELECT ON TABLE Student TO U1;把对Student表和Course表的全部权限授予用户U2和U3 GRANT ALL PRIVILIGES ON TABLE Student, Course TO U2, U3;例3 把对表SC的查询权限授予所有用户 GRANT SELECT ON TABLE SC TO PUBLIC;例4 把查询Student表和修改学生学号的权限授给用户U4 GRANT UPDATE(Sno), SELECT ON TABLE Student TO U4;SQL收回权限的功能 REVOKE语句的一般格式为: REVOKE ,. ON FROM ,.; 功能:从指定用户那里收回对指定对象的指定权限例7 把用户U4修改学生学号的权限收回REVOKE UPDATE(Sno)ON TABLE Student FROM U4;什么是数据库角色? 数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。什么是数据库的完整性? 数据的正确性和相容性例: 学生的年龄必须是整数,取值范围为14-29; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系;DBMS的完整性控制机制应具有哪些功能? (1)定义功能,即提供定义完整性约束条件的机制; (2)提供完整性检查的方法,即检查用户发出的操作请求是否违背了完整性约束条件; (3)违约处理:如果发现用户的操作违背了完整性约束条件,就采取一定的动作来保证数据的完整性。 1实体完整性CREATE TABLE语句中提供了PRIMARY KEY子句,供用户在建表时指定关系的主码列2定义参照完整性 FOREIGN KEY子句:定义外码列 REFERENCES子句:外码相应于哪个表的主码例:建立SC表 CREATE TABLE SC ( SNO CHAR(9) NOT NULL, CNO CHAR(4) NOT NULL, GRADE SMALLINT, PRIMARY KEY (SNO,CNO), FOREIGN KEY (SNO) REFERENCES STUDENT(SNO), FOREIGN KEY (CNO) REFERENCES COURSE(CNO);3用户定义的完整(续)1. 用CREATE TABLE语句在建表时定义用户完整性约束可定义三类完整性约束 列值非空(NOT NULL短语) 列值唯一(UNIQUE短语) 检查列值是否满足一个布尔表达式(CHECK短语)例 建立包含完整性定义的学生表CREATE TABLE STUDENT(SNO CHAR(6) PRIMARY KEY,SN CHAR(8) UNIQUE,AGE NUMERIC(2)CHECK (AGE BETWEEN 15 AND 50),SEX CHAR(2) CHECK( SEX IN(男,女), DEPT CHAR(10) );4完整性约束命名子句CONSTRAINT PRIMARY KEY短语 |FOREIGN KEY短语 |CHECK短语例10 建立学生登记表Student,要求学号在9000099999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。 CREATE TABLE Student (Sno NUMERIC(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999), Sname CHAR(20) CONSTRAINT C2 NOT NULL, Sage NUMERIC(3) CONSTRAINT C3 CHECK (Sage 30), Ssex CHAR(2) CONSTRAINT C4 CHECK (Ssex IN ( 男,女), CONSTRAINT StudentKey PRIMARY KEY(Sno) ); 在Student表上建立了5个约束条件,包括主码约束(命名为StudentKey)以及C1、C2、C3、C4四个列级约束触发器 触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程 由服务器自动激活一旦定义了触发器,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制 可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力定义触发器 CREATE TRIGGER语法格式 CREATE TRIGGER BEFORE | AFTER ON FOR EACH ROW | STATEMENT WHEN 一个好的关系模式应该具备什么条件?1. 尽可能少的数据冗余。2. 没有插入异常。3. 没有删除异常。4. 没有更新异常。 什么叫函数依赖?1函数依赖的定义定义设关系模式R(U,F),U是属性全集,F是U上的函数依赖集,X和Y是U的子集,如果对于R(U)的任意一个可能的关系r,对于X的每一个具体值,Y都有唯一的具体值与之对应,则称X函数确定Y,或Y函数依赖于X,记作XY。我们称X为决定因素,Y为依赖因素。1平凡的函数依赖与非平凡的函数依赖。 如果X Y,并且Y不是X的子集,则称X Y是非平凡的函数依赖; 如果Y是X的子集,则称XY是平凡的函数依赖; 例如:(S#,SN) SN 是平凡的函数依赖 若不特别声明,我们讨论的都是非平凡的函数依赖。2 完全函数依赖与部分函数依赖定义 设关系模式R(U),U是属性全集,X和Y是U的子集,如果XY,并且对于X的任何一个真子集X,都有X Y,则称Y对X完全函数依赖(Full Functional Dependency), 记作 X Y。如果对X的某个真子集X,有X Y,则称Y部分函数依赖于X,记作 X Y。例如,在关系模式SCD中,因为SNO SCORE,且CNO SCORE,所以有: (SNO,CNO) SCORE 。 而SNOAGE,所以(SNO,CNO) AGE。注意:只有当决定因素是组合属性时,讨论部分函数依赖才有意义,当决定因素是单属性时,只能是完全函数依赖。例如,在关系模式S(SNO,SN,AGE,DEPT),决定因素为单属性SNO,有SNO(SN,AGE,DEPT),不存在部分函数依赖。 3 传递函数依赖定义 设有关系模式R(U),U是属性全集,X,Y,Z是U的子集, 若XY,但Y X,而YZ(Y X,Z Y),则称Z对X传递函数依赖(Transitive Functional Dependency)。 加上条件Y X,是因为:如果YX,则X Y,这时称Z对X直接函数依赖,而不是传递函数依赖。主属性:包含在任何一个候选码中的属性,称作主属性,不包含在任何码中的属性称为非主属性。范式 至此在关系数据库规范中建立了一个范式系列:1NF,2NF,3NF,BCNF,4NF,5NF,一级比一级有更严格的要求。 各个范式之间的联系可以表示为: 5NF 4NF BCNF 3NF 2NF 1NF1 第一范式如果关系模式R,其所有的属性均为简单属性,即每个属性都城是不可再分的,则称R属于第一范式,简称1NF,记作R1NF。2 第二范式如果关系模式R1NF,且每个非主属性都完全函数依赖于R的码,则称R属于第二范式(Second Normal Form),简称2NF,记作R2NF。3 第三范式定义 如果关系模式R2NF,且每个非主属性都不传递依赖于R的码,则称R属于第三范式(Third Normal Form),简称3NF,记作R3NF。第三范式具有如下性质:1如果R3NF,则R也是2NF。2如果R2NF,则R不一定是3NF。4 BCNF范式定义 如果关系模式R1NF,且所有的函数依赖XY(Y X),决定因素X必包含了码,则称R属于BCNF范式(Boyce-Codd Normal Form),记作RBCNF。闭包的计算R, U = (A, B, C, D, E), F = ABC, BD, CE, CEB, ACB,计算所用依赖 ABCABC BDABCD CEABCDE= ABCDE已知关系R, U=(A,B,C,D,E) F=(ABC,BD,CE,ECB,ACB) 求R的候选码? 解:L属性是:A, 而 (A) = A , LR属性是:B,C,E R属性是:D (AB) = ABCDE (AC) = ACEBD 所以码是:AB,AC最小函数依赖集合算法求解函数依赖集F的最小函数依赖集合Fmin右边单属性化:逐个检查F中各函数依赖FDi :XY,若Y=A1 A2 Ak ,k2,则用诸XAi 代替Y。无冗余化:逐个检查F中各函数依赖XA,令G = F-XA,若A ,则从F中去掉该函数依赖。左边简化:逐个检查F中各函数依赖XA,设X = B1Bm,逐个考查Bi,若A ,则以(X - Bi)取代X。练习:求F = ABC,EC,DAEF,ABFBD的最小函数依赖集合。解:1、右边化为单属性FMINAB, AC,EC,DA,DE,DF, ABFB, ABFD2、去掉冗余ABFB(因为AB)3、左边简化:因为(AF)+=ABFD,所以AF可以决定D,因此ABFD化简为AFD最后结果: FMINAB, AC,EC,DA,DE,DF, AFD补充 求关系的最高范式这类题目,求解步骤: 第一步:求出给定关系的候选码(可能不止一个) 例如:已经关系模式R(U,F),判断属性(属性组)X是否为关系r的候选码,需要求出属性(属性组)X关于函数依赖F的闭包XF+,如果XF+=U,则X是为关系r的候选码 第二步:根据码,写出主属性和非主属性 第三步:判断是否满足第一范式(看属性的值域是否可以分解) 第四步:判断是否满足第二范式(非主属性对码的部分函数依赖) 第五步:判断是否满足第三范式(非主属性对码的传递函数依赖) 第六步:判断是否满足BCNF范式(主属性对码的部分函数依赖和传递函数依赖)习题已知关系r(A,B,C,D,E)和F=ABCE,E AB,CD,该关系的最高范式是什么?解:1、关系r的候选码为:AB和E。 因为:(AB)+=ABCED (E)+=EABCD AB可以决定关系的所有属性,E可以决定关系的所有属性,所以AB 和E是关系的候选键。2、主属性为:A、B、E非主属性为:C、D3、判断是否满足各个范式的要求:因为r的所有的属性值域都是不可再分,所以r已经在1NF中了。该关系在2NF中,因为C、D不存在对任何码的部分依赖。该关系不在3NF中,因为存在非主属性对码的传递依赖CD。所以该关系满足2NF 1设有关系模型R(U,F),其中U=ABCDEG,F=BGC,BDE,DGC,DAGCB,AGB,BD (1)求出关系模式的候选码。 (2)此关系模式最高属于哪级范式。 (3)求此关系的最小函数依赖集 。 答案:(1)AG AG=AGBDCE (2)2NF
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!