2022年数据库系统复习可用 .pdf
数据库系统基本概念数据库(Database,简称 DB)数据库是长期存储在计算机内有组织的大量可共享的数据集合数据库管理系统(Database Management System,简称 DBMS)数据库管理系统是位于用户与操作系统之间的一层数据管理软件数据库系统(Database System,简称 DBS)数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成DBMS 的主要功能是什么?1、数据定义功能2、数据组织、存储和管理3、数据操纵功能4、数据库的事务管理和运行管理5、数据库的建立和维护功能数据管理经历的发展经历了哪几个阶段?1.人工管理阶段2.文件系统阶段3.数据库阶段名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 33 页 -数据库系统有什么特点?1.数据结构化2.数据共享性高、冗余度低、易扩充3.数据独立性高4.数据由 DBMS 统一管理和控制数据的独立性包括哪些?什么是逻辑独立性?什么是物理独立性?数据的独立性是指逻辑独立性和物理独立性。数据的逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,也就是说,数据的逻辑结构改变了,用户程序也可以不变。数据的物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的,也就是说,数据在磁盘上的数据库中怎样存储是有 DBMS 管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。数据库管理系统提供了哪几方面的数据控制功能?(1)数据的安全性(security)控制名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 33 页 -(2)数据的完整性(integrity)控制(3)并发(concurrency)控制(4)数据恢复(recovery)数据模型的三大要素是什么?数据模型通常由数据结构,数据操作,数据的约束条件三个要素组成两个实体型之间的联系有哪几种类型?(1)一对一联系(1:1)如:班级与班主任,观众与座位,病人与床位。(2)一对多联系(1:n)如:班级与学生、公司与职员、省与市。(3)多对多(m:n)如:教师与学生,学生与课程,工厂与产品。E-R 图的表示方法?用 E-R 图来描述现实世界的概念模型。?E-R 图提供了表示实体型、属性和联系的方法:名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 33 页 -实体型:用矩形表示,矩形框内写明实体名。属性:用椭圆形表示,并用直线将其与相应的实体连接起来。?联系?联系本身:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n 或 m:n)?联系的属性:联系本身也是一种实体型,也可以有属性。如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来例子:为仓库管理设计一个E-R 模型,该仓库主要管理零件的入库、出库和采购等事项。仓库根据需要向外面厂家订购零件,而许多工程项目需要仓库供应零件。实体有:仓库:属性有仓库号、仓库面积、电话号码。零件:属性有零件号、名称、规格、单价、描述。供应商:属性有供应商号、姓名、地址、电话号、帐号。项目:属性有项目号、预算、开工日期。职工:属性有职工号、姓名、年龄、职称。实体之间的联系如下:一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。某种零件在某个仓库中的数量用库存量描述。一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作。职工之间具有领导被领导的关系,即仓库主任领导若干保管员。一个供应商可以供给若干项目多种零件,每个项目可以使用不同供应商供给的零件,每种零件可以由不同的供应商供给。?画出实体及其属性图仓库仓面电话项目项预开工零件名规零单描名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 33 页 -?画出实体及其联系图?画出实体联系图供应姓名地址供应商号电话号码账号职工职工姓名年龄职称供应量供应商项目供m n p 仓库零件仓库n m 职工工作1 n 领导1 n 库存量名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 33 页 -关系模型在用户的观点下,关系模型中,数据的逻辑结构就是一张二维表。它以行和列组成。关系模式对关系的描述,一般表示为:关系名(属性1,属性 2,属性 n)如:学生(学号,姓名,性别,年龄,系别关系模型的数据操纵数据操纵主要包括查询、插入、删除和修改数据供应供应仓库工m n p n m 1 n 领导1 n 库存供应商姓地供应电话账仓库仓面电话职工职工号姓名年龄职称项目项目号预算开工日期零件名称规格零件单价描述名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 33 页 -关系模型的完整性约束即实体完整性、参照完整性和用户定义的完整性数据库系统的三级模式结构模式(也称逻辑模式)数据库中全体数据的逻辑结构和特征的描述 所有用户的公共数据视图,综合了所有用户的需求?一个数据库只有一个模式?模式的地位:是数据库系统模式结构的中间层 与数据的物理存储细节和硬件环境无关 与具体的应用程序、开发工具及高级程序设计语言无关外模式(也称子模式或用户模式)数据库用户(包括应用程序员和最终用户)使用的局部应用 A 应用 B 应用 C 应用 D 应用 E 外模式 1 外模式 2 外模式 3 外模式/模式映象模式模式/内模式映象内模式数据库名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 33 页 -数据的逻辑结构和特征的描述 数据库用户的数据视图,是与某一应用有关的数据的逻辑表示?外模式的地位:介于模式与应用之间 模式与外模式的关系:一对多?外模式通常是模式的子集?一个数据库可以有多个外模式。内模式(也称存储模式)是数据物理结构和存储方式的描述 是数据在数据库内部的表示方式?记录的存储方式(顺序存储,按照B 树结构存储,按 hash方法存储)?索引的组织方式?数据是否压缩存储?数据是否加密?数据存储记录结构的规定?一个数据库只有一个内模式二级映象功能?1外模式模式映象名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 33 页 -?2模式内模式映象外模式模式映象?外模式模式映象的用途:保证数据的逻辑独立性 当模式改变时,数据库管理员修改有关的外模式模式映象,使外模式保持不变模式内模式映象?模式内模式映象的用途:保证数据的物理独立性 当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式内模式映象,使模式保持不变关系关系是一个二维表,表的每行对应一个元组,表的每列对应一个域。候选码?若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)。全码?在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)。主码?若 一 个 关 系 有 多 个 候 选 码,则选 定其 中一 个 为主 码(Primary key)。关系模型中三类完整性约束:实体完整性 参照完整性 用户定义的完整性名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 33 页 -实体完整性规则(Entity Integrity)若属性 A 是基本关系 R 的主属性,则属性A 不能取空值。例SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)POSTGRADUATE 属性为主码(假设研究生不会重名),则其不能取空值。外码 设 F 是基本关系 R 的一个或一组属性,但不是关系 R 的码。如果F 与基本关系 S 的主码 Ks 相对应,则称F 是基本关系 R 的外码(Foreign Key)学号姓名性别专业号年龄801 张三女01 19 802 李四男01 20 803 王五男01 20 804 赵六女02 20 805 钱七男02 19 专业号专业名01 信息02 数学03 计算机学生(学号,姓名,性别,专业号,年龄)找出下面关系中的主码和外码。名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 33 页 -参照完整性规则 若属性(或属性组)F 是基本关系 R 的外码,它与基本关系S 的主码Ks 相对应(基本关系 R 和 S不一定是不同的关系),则对于 R 中每个元组在 F 上的值必须为:或者取空值(F 的每个属性值均为空值)或者等于 S中某个元组的主码值。用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。用户定义的完整性(续)例课程(课程号,课程名,学分)“课程名”属性必须取唯一值 非主属性“课程名”也不能取空值“学分”属性只能取值 1,2,3,4 传统的集合运算对两个关系的集合运算作并,交,差时,对关系有什么要求呢?两个关系都具有相同的目n(即两个关系都有n 个属性),且相应的属性取自同一个域。专门的关系运算?选择?投影?连接?除名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 33 页 -选择(续)?选择运算是从行的角度进行的运算?举例设有一个学生-课程数据库,包括学生关系Student、课程关系Course 和选修关系SC。查询年龄小于20 岁的学生Sage 20(Student)或4 20(Student)根据关系代数表达式写出结果:投影(Projection)?投影操作主要是从列的角度进行运算但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)查询学生的姓名和所在系即求 Student 关系上学生姓名和所在系两个属性上的投影Sname,Sdept(Student)或2,5(Student)SnoSnameSsexSageSdept95002刘晨女19IS95003王敏女18MA95004张立男19IS名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 33 页 -连接(续)1.等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。2.等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。例查询没有任何一门课程成绩不及格的所有学生的学号、姓名和系别Sno,Sname,Sdept(Grade,60?(Student SC)关系代数表达式一定要掌握。书上的例题,课后作业.练习?查询 2 号课程的选课情况?查询学习课程号为2 的学生的学号和姓名?查询学习课程名为,数学?的学生的学号和姓名?查询学习课程号为2 或 3 的学生的学号?查询不学习课程号为2 的学生的姓名和年龄?查询学习全部课程的学生姓名查询所学课程包含学生S3 所学课程的学生学号Student(Sno,Sname,Ssex,Sage,Sdept)Course(Cno,Cname,Cpno,Credit)SC(Sno,Cno,Grade)SQL 语言 Structured Query Langue 具有数据定义、数据操纵、数据查询、数据控制功能SQL 的特点?综合统一?2.高度非过程化名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 33 页 -?3.面向集合的操作方式?4.同一种语法结构提供两种使用方式?5.语言简捷,易学易用SQL 的数据定义功能:模式定义、表定义、视图和索引的定义定义基本表(1)定义基本表的语句格式:CREATE TABLE (列级完整性约束条件,列级完整性约束条件.),;约束类型:在定义完整性约束时必须指定完整性约束的类型。?五种类型的完整性约束:(1)NULL/NOT NULL(2)UNIQUE约束(3)PRIMARY KEY约束(4)FOREIGN KEY约束(5)CHECK约束表 3.2 SQL 的数据定义语句操作方式操 作 对 象创建删除修改模式CREATE SCHEMA DROP SCHEMA 表CREATE TABLE DROP TABLE ALTER TABLE 视图CREATE VIEW DROP VIEW 索引CREATE INDEX DROP INDEX 名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 33 页 -例建立包含完整性定义的学生表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 表按学号升序和课程号降序建唯一索引。名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 33 页 -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子句常用的查询条件名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 33 页 -查询计算机科学系全体学生的名单。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;名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 33 页 -?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,SC WHERE Student.Sno=SC.Sno;复合条件连接:WHERE 子句中含多个连接条件例 37 查询选修 2 号课程且成绩在 90 分以上的所有学生的学号和姓名SELECT Student.Sno,Sname FROM Student,SC 名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 33 页 -WHERE 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 谓词存在量词带有 EXISTS 谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”若内层查询结果非空,则外层查询的WHERE 子句返回真值若内层查询结果为空,则外层查询的WHERE 子句返回假值由 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 页,共 33 页 -查询计算机科学系的学生及年龄不大于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 ;名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 33 页 -修改多个元组的值例 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=计算机)删除数据语句格式DELETE FROM WHERE;功能删除指定表中满足WHERE 子句条件的元组WHERE 子句指定要删除的元组缺省表示要修改表中的所有元组删除 2 号课程的所有选课记录。DELETE FROM SC;WHERE Cno=2;名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 33 页 -删除所有的学生选课记录。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;名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 33 页 -建立信息系选修了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;数据库安全性?什么是数据库的安全性数据库的安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。计算机系统的三类安全性问题是什么?技术安全类管理安全类政策法律类计算机系统中,安全措施是一级一级层层设置?数据库安全性控制的常用方法有哪些?用户标识和鉴别存取控制视图机制审计数据加密计算机系统的安全模型名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 33 页 -?常用存取控制方法有哪些?自主存取控制(DAC)强制存取控制(MAC)自主存取控制方法?通过 SQL 的 GRANT 语句和 REVOKE 语句实现?用户权限组成数据对象操作类型?定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作?定义存取权限称为授权强制存取控制方法?主体是系统中的活动实体DBMS 所管理的实际用户代表用户的各进程?客体是系统中的被动实体,是受主体操纵的文件基表索引视图?敏感度标记(Label)绝密(Top Secret)机密(Secret)可信(Confidential)公开(Public)?主体的敏感度标记称为许可证级别(Clearance Level)?客体的敏感度标记称为密级(Classification Level)MAC 机制就是通过对比主体的Label 和客体的Label,最终确定主体是否能够存取客体名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 33 页 -授 权?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;名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 33 页 -SQL 收回权限的功能?REVOKE语句的一般格式为:REVOKE,.ON FROM,.;?功能:从指定用户那里收回对指定对象的指定权限例 7 把用户 U4 修改学生学号的权限收回REVOKE UPDATE(Sno)ON TABLE Student FROM U4;什么是数据库角色??数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。什么是数据库的完整性?数据的正确性和相容性例:学生的年龄必须是整数,取值范围为14-29;学生的性别只能是男或女;学生的学号一定是唯一的;学生所在的系必须是学校开设的系;DBMS 的完整性控制机制应具有哪些功能?(1)定义功能,即提供定义完整性约束条件的机制;(2)提供完整性检查的方法,即检查用户发出的操作请求是否违背了完整性约束条件;(3)违约处理:如果发现用户的操作违背了完整性约束条件,就采取一定的动作来保证数据的完整性。名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 33 页 -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 短语名师资料总结-精品资料欢迎下载-名师精心整理-第 27 页,共 33 页 -例 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.没有更新异常。名师资料总结-精品资料欢迎下载-名师精心整理-第 28 页,共 33 页 -什么叫函数依赖?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,都有 XY,则称 Y 对 X完全函数依赖(Full Functional Dependency),记作X Y。如果对 X 的某个真子集 X,有 XY,则称 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 直接函数依赖,而不是传递函数依赖。名师资料总结-精品资料欢迎下载-名师精心整理-第 29 页,共 33 页 -主属性:包含在任何一个候选码中的属性,称作主属性,不包含在任何码中的属性称为非主属性。范式?至 此 在 关 系 数 据 库 规 范 中 建 立 了 一 个 范 式 系 列:1NF,2NF,3NF,BCNF,4NF,5NF,一级比一级有更严格的要求。?各个范式之间的联系可以表示为:5NF 4NF BCNF 3NF 2NF 1NF 1 第一范式如果关系模式 R,其所有的属性均为简单属性,即每个属性都城是不可再分的,则称 R 属于第一范式,简称1NF,记作 R1NF。2 第二范式如果关系模式R1NF,且每个非主属性都完全函数依赖于R 的码,则称 R 属于第二范式(Second Normal Form),简称 2NF,记作 R 2NF。3 第三范式定义如果关系模式R 2NF,且每个非主属性都不传递依赖于R 的码,则称 R 属于第三范式(Third Normal Form),简称 3NF,记作 R 3NF。第三范式具有如下性质:1如果 R 3NF,则 R 也是 2NF。2如果 R 2NF,则 R 不一定是 3NF。名师资料总结-精品资料欢迎下载-名师精心整理-第 30 页,共 33 页 -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,计算所用依赖ABC ABC BD ABCD CE ABCDE=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=FXA,若 A,则从 F 中去掉该函数依赖。左边简化:逐个检查F 中各函数依赖 XA,设 X=B1Bm,逐个考查 Bi,若 A,则以(X Bi)取代 X。FAB)(FAB)(名师资料总结-精品资料欢迎下载-名师精心整理-第 31 页,共 33 页 -练习:求 F=ABC,EC,DAEF,ABFBD 的最小函数依赖集合。解:1、右边化为单属性FMINAB,AC,EC,DA,DE,DF,ABFB,ABFD 2、去掉冗余 ABFB(因为 AB)3、左边简化:因为(AF)+=ABFD,所以 AF 可以决定 D,因此 ABFD化简为 AFD 最后结果:FMIN AB,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,该关系的最高范式是什么?解: