数据库完整性

合集下载

10数据库完整性约束数据库原理

10数据库完整性约束数据库原理
3) 取值范围或取值集合的约束 例:规定成绩的取值范围为0-100;年龄的取值范围为14-29 性别的取值集合为[男,女]
4) 对空值的约束(空值:未定义或未知的值,与零值和空格不同) 有的列允许空值,有的则不允许,如成绩可为空值
5) 其他约束 例:关于列的排序说明,组合列等
2. 静态元组约束
规定元组的各个列之间的约束关系 例:订货关系中发货量<=订货量 教师关系中教授的工资>=700元
例2:在“教授工资不得低于1000元”的约束中 D 约束作用的对象为工资Sal属性 O 插入或修改职工元组时 A Sal不能小于1000 C 职称=′教授′ (A仅作用于职称=‘教授’的记录) P 拒绝执行该操作
关系系统三类完整性的实现
关系数据库系统都提供了定义和检查实体完整性、参 照完整性和用户定义的完整性的功能
2. 完整性检查机制
检查用户发出的操作请求是否违背了完整性约束条件
3. 违约反应
如果发现用户的操作请求使数据违背了完整性约束条件, 则采取一定的动作来保证数据的完整性。
10.1 计算机安全性概论
完整性约束条件作用的对象
列:对属性的取值类型、范围、精度等的约束条件 元组:对元组中各个属性列间的联系的约束 关系:对若干元组间、关系集合上及关系之间的联系的约束
受限删除(RESTRICTED)
当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主 码值相对应时,系统才执行删除操作,否则拒绝此删除操作。
置空值删除(NULLIFIES)
删除被参照关系的元组,并将参照关系中与被参照关系中被删除元组主 码值相等的外码值置为空值。
例:要删除Student关系中Sno=950001的元组, 而SC关系中有4个元组的Sno都等于950001。 级联删除:将SC关系中所有4个Sno=950001的元组一 起删除。如果参照关系同时又是另一个关系的被参照关 系,则这种删除操作会继续级联下去 受限删除:系统将拒绝执行此删除操作。 置空值删除:将SC关系中所有Sno=950001的元组的 Sno值置为空值。 在学生选课数据库中,显然第一种方法和第二种方法都 是对的。第三种方法不符合应用环境语义。

名词解释数据库的完整性

名词解释数据库的完整性

名词解释数据库的完整性数据库的完整性是指数据库中的数据符合事先定义的规则和约束,没有数据的不一致性和错误。

它通常包括实体完整性、域完整性、参照完整性和用户自定义完整性等方面。

一、实体完整性实体完整性是指数据库表中的每一行数据都必须能被识别并与其他表中的数据进行关联。

在关系型数据库中,每个表都必须有一个主键,用于唯一标识其中的每一条记录。

通过定义主键,可以确保每个记录都具有唯一性,避免了数据的重复和混乱。

二、域完整性域完整性是指数据库中每个属性的取值都必须满足其定义的约束条件。

例如,字段的数据类型、长度、格式等都需要满足设定的规则,以保证数据的有效性和一致性。

常见的约束条件包括非空约束、唯一约束、范围约束、正则表达式约束等。

三、参照完整性参照完整性是指数据库中的外键约束能够维护表与表之间的关系,保证数据的一致性和完整性。

外键是指一个表的字段引用另一个表中的主键,用于建立两个表之间的联系。

外键约束可以限制只能插入或更新具有对应主键值的数据,避免了数据的破坏和不一致。

四、用户自定义完整性用户自定义完整性是指用户根据具体业务需求对数据库增加的约束条件,以满足特定的数据要求。

这些约束条件通常是通过触发器、存储过程等方式定义的,可以对数据进行进一步的验证和筛选,确保数据的正确性和有效性。

用户自定义完整性适用于特定的业务场景,能够帮助用户更好地管理和控制数据。

总结起来,数据库的完整性对于数据的有效性和一致性非常重要。

它通过实体完整性、域完整性、参照完整性和用户自定义完整性等方面的规则和约束,确保了数据库中的数据正确、满足要求,并能够与其他数据表之间建立正确的关联。

只有保持数据库的完整性,才能为用户提供可信赖的数据支持,帮助他们做出准确的决策和分析。

数据库完整性实验总结(必备6篇)

数据库完整性实验总结(必备6篇)

数据库完整性实验总结第1篇时间流水,短短的两周就流逝了,回想在这两周的实训生活,我从单一,片面的学习进入了全面,系统的学习,学好它更是一项大任务。

而对于如何学好它,光靠理论知识是远远不够的,_同志曾经就说过“实践是检验真理的唯一标准”!正如大师傅炒菜,知道炒菜的程序,主料、调料一清二楚,不真正掌勺,永远也成不了“大厨”。

而学校给我们提供了这样一个机会,让我们自己_掌勺_,使我们从实践中,加深了对数据库的理解。

经过这次的实训,我们对数据库有了更深的了解,从书面的明白到实践的理解,接触到了自己以前没有接触到的东西,并让我加深了数据库知识的学习和理解,也使我进一步了解数据库,这次实训可以为我们以后真正的实际数据库系统设计提供很好的借鉴。

更使我明白遇到什么挫折,不气馁,不放弃,勇于探索,才会让自己离成功越来越近!俗话说:知之为知之,不知为不知!不要不懂装懂,有什么不懂的要敢于向_知之者_请教!知识是慢慢积累而成的,我们学习不仅要学习理论知识,而实践也是非常重要的,只有当两者结合,才会获得收获!我们这次实习对我们的认识起到了很大的启发作用,使我们以后在接触数据库的过程中少走点弯路。

也使我们对人生和社会有了更清楚的认识,任何的成功都有艰辛和汗水铺出来的,没有那么多的意外收获。

我们要学的还有很多,要接触的还不知道有多少,以后的路还很漫长,我相信我会更加努力的,把握现在,为自己的未来而奋斗,展开双翅飞向美好的未来!在这里很感谢xxx老师给我们传授了这么多的知识和经验,让我们在毕业之际更好的填补自己的不足。

数据库完整性实验总结第2篇在学习《数据库原理及应用》这门课之前,就和课本上提到的一个观点一样,认为它只是存放数据的仓库而已,但是现在我深深体会到这个观点是多么的片面。

数据库是长期存储在计算机内,有组织、可共享的大量的数据集合,前者只能表达它的一方面而已。

数据库技术发展到今天已经是一门非常成熟的技术,它的技术水平、应用水平多比初始时都有了很大的改变,但是它的最基本的特征却没有变,概括起来有以下几个方面:第一点:数据库是相互关联的的数据集合;即在数据库中不仅要能够表示数据本身,还要能够表示数据与数据之间的关系。

第5章 数据库完整性

第5章 数据库完整性

第5章数据库安全性(2课时)数据库的数据保护主要包括数据的安全性和数据的完整性。

数据的安全性是为了保护数据库防止恶意的破坏和非法访问,防范对象是非法用户和非法操作。

数据库的完整性是指数据的正确性和相容性,是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据,防范对象是不合语义的、不正确的数据。

举例说明数据的完整性(三种完整性各一例)。

为维护数据库的完整性,DBMS必须具备三个功能:1 提供定义完整性约束条件的机制完整性约束条件也称为完整性约束规则,是数据库必须满足的语义约束条件。

SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性。

这些完整性一般由SQL的DDL语句来实现。

它们作为数据库模式的一部分存入数据字典中。

2 提供完整性检查的方法DBMS中检查数据是否满足完整性约束条件的机制称为完整性检查。

一般在INSERT、UPDA TE、DELETE语句执行后开始检查,也可以在事务提交时检查。

检查这些操作执行后数据库中的数据库是否违背了完整性约束条件。

3 违约处理DBMS若发现用户的操作违背了完整性约束条件,就采取一定的动作,如拒绝(NOACTION)执行该操作,或级联(CASCADE)执行其他操作,进行违约处理以保证数据的完整性。

目前商用的DBMS产品都支持完整性控制,即完整性定义、检查控制和违约处理都是由DBMS来实现,不必由应用程序来完成,从而减轻了应用程序员的负担。

5.1 实体完整性是关系的两个不变性之一,关系的主属性的取值不能相同,主属性不能取空值,保证在一个关系中不存在两个完全相同的元组。

5.1.1 实体完整性定义关系模型的实体完整性在CREATE TABLE中用PRIMARY KEY定义。

对单属性构成的码有两种说明方法:一种是定义为列级约束条件;一种是定义为表级约束条件。

对多个属性构成的码只有一种说明方法:定义为表级约束条件。

数据库完整性(好)资料重点

数据库完整性(好)资料重点
▪ 参照完整性保证被参照表和参照表之间数据的一致性; ▪ 可以防止数据丢失或者无意义的数据; ▪ 可以禁止在从表中插入被参照表中不存在的关键字的记录。
❖ 参照完整性的常见实现机制包括:
▪ 外键(Foreign Key)、检查(Check)、触发器(Trigger);存 储过程(Stored Procedure)
❖ 常见的实现机制包括:
▪ 规则(Rule)、创建数据表时的所有约束(Constraint)、触发 器(Trigger)、存储过程(Stored Produre);
二、在SQL Server 2005中实现数据完整性
❖ SQL Server 2005提供了完善的数据完整性机制,主 要包括规则、默认值和约束3类;
第六章 数据库完整性
授课教师:刘跃娟 2013-12-6
数据库完整性
❖ 数据是数据库的核心,数据的正确和完整与否将直接影响数据 库的使用。
❖ 数据的完整性和安全性是两个不同概念;
▪ 数据的安全性
➢ 保护数据库防止恶意的破坏和非法的存取 ➢ 防范对象:非法用户和非法操作
▪ 数据的完整性
➢ 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正 确的数据
❖ 实体完整性:在现实世界中,任何一个实体都有区别于其他实 体的特征,即在数据库中,所有的记录都应该有惟一的标识, 这就是实体完整性的含义(规则2.1:实体完整性规则)。
❖ 常见的实体完整性机制包括:
▪ 主键(Primary Key);惟一码(Unique);
2)参照完整性
❖ 参照完整性是指在两个表的主键和外键之间数据的完整性,其 含义包括:
➢ 防范对象:不合语义的、不正确的数据
本次课内容
一. 数据完整性概述 二. 在SQL Server 2005中实现数据完整性

数据库的完整性

数据库的完整性

数据库完整性约束条件 为维护数据库的完整性, 为维护数据库的完整性 , DBMS必须提供 必须提供 一种机制来检查数据库中的数据, 一种机制来检查数据库中的数据,看其是否满 足语义规定的条件。 足语义规定的条件。这些加在数据库数据之上 的语义约束条件称为数据库完整性约束条件。 它们作为模式的一部分存入数据库中。 它们作为模式的一部分存入数据库中。 完整性检查 而DBMS中检查数据是否满足完整性条件 中检查数据是否满足完整性条件 的机制称为完整性检查 。
1.静态列级约束 静态列级约束 是对一个列取值域的说明, 是对一个列取值域的说明,这是最 常用也最容易实现的一类完整性约束。 常用也最容易实现的一类完整性约束。 规定学号的前两位表示入学年份, 如:规定学号的前两位表示入学年份, 中间两位表示系的编号,后三位 为顺序 中间两位表示系的编号, 编号。出生日期的格式为YY MM.DD。 YY. 编号。出生日期的格式为YY.MM.DD。
8.2 完整性控制机制
DBMS的完整性控制机制应具有三方面的功能; DBMS的完整性控制机制应具有三方面的功能; 的完整性控制机制应具有三方面的功能 定义功能: ( 1 ) 定义功能 : 提供定义完整性约束条件 的机制。 的机制。 检查功能: ( 2 ) 检查功能 : 检查用户发出的操作请求 是否违背了完整性约束条件。 是否违背了完整性约束条件。 ( 3 ) 如果发现用户的操作请求使数据违背 了完整性约束条件,则采取一定的操作, 了完整性约束条件,则采取一定的操作,以保 证数据的完整性。 证数据的完整性。
第8章 数据库的完整性
数据库的完整性是指数据的正确性 和相容性。 和相容性。 例如, 学生的学号必须唯一; 例如 , 学生的学号必须唯一 ; 性别只能是 男或女; 男或女;等。 数据库是否具备完整性关系到数据库系 统能否真实地反映现实世界, 统能否真实地反映现实世界 , 因此维护 数据库的完整性是非常重要的。 数据库的完整性是非常重要的。

数据库的完整性

数据库的完整性
第7章 数据库的安全保护
4
7.2.2 完整性约束的类型
2.由数据库应用确定的完整性约束 数据库上的大部分语义完整性约束是由数据库应用确 定的。这类完整性约束分为状态约束和变迁约束两类, 定的。这类完整性约束分为状态约束和变迁约束两类,在 数据库管理系统中这两类约束都被视为显式约束。 数据库管理系统中这两类约束都被视为显式约束。 (1)状态约束。在某一时刻数据库中的所有数据实例 状态约束。 构成了数据库的一个状态。 构成了数据库的一个状态。数据库的状态约束也称静态约 是所有数据库状态必须满足的约束。 束,是所有数据库状态必须满足的约束。每当数据库被修 改时,数据库管理系统都要进行状态约束的检查, 改时,数据库管理系统都要进行状态约束的检查,以保证 状态约束始终被满足。 状态约束始终被满足。
8
第7章 数据库的安全保护
7.2.3 完整性约束的定义方法
使用过程化定义方法, 使用过程化定义方法,完整性约束的验证程序可以由 通用程序设计语言编制。 通用程序设计语言编制。这种方法既为程序员编制高效率 的完整性验证程序提供了有利条件, 的完整性验证程序提供了有利条件,同时也给程序员带来 了很大负担。 了很大负担。程序员必须清楚他所编码的事务所涉及的所 有完整性约束,并为每一个约束编制一个验证过程, 有完整性约束,并为每一个约束编制一个验证过程,程序 员的任何误解、疏忽和遗漏都将导致数据库的不正确。 员的任何误解、疏忽和遗漏都将导致数据库的不正确。目 过程化定义方法已经被许多数据库管理系统广泛采用。 前,过程化定义方法已经被许多数据库管理系统广泛采用。 数据库的完整性约束经常是随实际应用的变化而变 化的。显式约束的过程化定义方法有一个严重缺点: 化的。显式约束的过程化定义方法有一个严重缺点:一旦 完整性约束发生变化, 完整性约束发生变化,相应事务的完整性验证程序就必须 被修改。 被修改。

数据库完整性

数据库完整性

数据库完整性本节要点:实体完整性参照完整性⽤户定义的完整性完整性约束命名⼦句触发器数据库的完整性是指数据的正确性和相容性。

例如,学⽣的学号必须唯⼀;性别只能是男或⼥;本科学⽣年龄的取值范围为14~50的整数;学⽣选的课程必须是学校开设的课程;学⽣所在的院系必须是学校已经成⽴的院系等。

数据的完整性和安全性是两个不同概念。

为维护数据库的完整性,DBMS必须:提供定义完整性约束条件的机制提供完整性检查的⽅法违约处理1 实体完整性1.1 实体完整性定义关系模型的实体完整性在CREATE TABLE中⽤PRIMARY KEY定义。

对单属性构成的码有两种说明⽅法,⼀种是定义为列级约束条件,另⼀种是定义为表级约束条件。

对多个属性构成的码只有⼀种说明⽅法,即定义为表级约束条件。

⽰例:将Student表中的Sno属性定义为码(单属性构成的码)(1)在列级定义主码CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) NOT NULL,Ssex CHAR(2) ,Sage SMALLINT,Sdept CHAR(20));(2)在表级定义主码CREATE TABLE Student(Sno CHAR(9),Sname CHAR(20) NOT NULL,Ssex CHAR(2) ,Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY (Sno));⽰例:将SC表中的Sno,Cno属性组定义为码(多属性构成的码)CREATE TABLE SC(Sno CHAR(9) ,Cno CHAR(4) ,Grade SMALLINT,PRIMARY KEY (Sno,Cno) /*只能在表级定义主码*/);1.2 实体完整性检查和违约处理插⼊或对主码列进⾏更新操作时,RDBMS⾃动进⾏检查:1. 检查主码值是否唯⼀,如果不唯⼀则拒绝插⼊或修改2. 检查主码的各个属性是否为空,只要有⼀个为空就拒绝插⼊或修改2 参照完整性2.1 参照完整性定义关系模型的参照完整性在CREATE TABLE中⽤FOREIGN KEY短语定义哪些列为外码,⽤REFERENCES短语指明这些外码参照哪些表的主码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第五章数据库完整性一、选择题1.有一个关系:学生(学号,姓名,系别),规定学号的值域是8个数字组成的字符串,这一规则属于__________。

A 实体完整性约束B 参照完整性约束C 用户自定义完整性约束D 关键字完整性约束【解答】C2.完整性约束有两大类型,其中一种是静态约束,下面( c )不属于静态约束。

A.固有约束B.隐含约束C.语义约束D.显示约束【解答】C3.数据库的破坏一般来自四个方面,其中__________是属于完整性约束问题。

A.系统故障B.并发所引起的数据不一致C.人为的破坏D.输入或更新数据库的数据有误,更新事务未遵守保持数据库一致性的原则【解答】D4. ________子句能够实现关系参照性规则。

A. PRIMARY KEYB. NOT NULLC. FOREIGN KEYD. FOREIGN KEY...REFERENCES... 【解答】D二、填空题1. 数据库的是指数据的正确性和相容性【解答】完整性2.完整性约束是指和。

【解答】实体完整性,参照完整性3.实体完整性是指在基本表中,。

【解答】主属性不能取空值4.参照完整性是指在基本表中,。

【解答】外码可以是空值或者另一个关系主码的有效值5.SQL标准使用了一系列概念来描述完整性,包括关系模型的________ 、________和________完整性。

【解答】实体完整性参照完整性用户定义6.数据库完整性的定义一般由SQL的________ 语句来实现。

它们作为数据库模式的一部分存入________中。

【解答】DDL 数据字典7.关系模型的实体完整性在________ 中用________定义。

【解答】CREATE TABLE 、PRIMARY KEY二、问答题1.什么是数据库的完整性? DBMS的完整性子系统的功能是什么?【解答】数据库完整性是指数据库中数据的正确性、有效性和相容性。

DBMS 的完整性控制机制至少包括完整性约束的定义机制和完整性约束的检查机制。

DBMS完整性子系统的功能是:(1)监督事务的执行,并测试是否违反完整性规则;(2)如有违反,则采取恰当的操作,如拒绝、报告违反情况,改正错误等方法进行处理。

2.完整性规则由哪几个部分组成?关系数据库的完整性规则有哪几类?【解答】完整性规则由三部分组成:触发条件:即什么时候使用规则进行检查;约束条件:即要检查什么样的错误;ELSE子句:即查出错误后该如何处理。

完整性规则有以下三类:域完整性规则,用于定义属性的取值范围;域联系的规则,定义一个或多个关系中,属性值间的联系、影响和约束。

关系完整性规则,定义更新操作对数据库中值的影响和限制。

3.试详述SQL中的完整性约束机制?【解答】SQL中的完整性约束规则有主键约束、外键约束、属性值约束和全局约束等多种形式。

△主键约束。

它是数据中最重要的一种约束。

在关系中主键值不允许空,也不允许出现重复,体现了关系要满足实体完整性规则。

主键可用主键子句或主键短语进行定义。

△外键约束。

根据参照完整性规则,依赖关系中外键或者为空值,或者是基本关系(参照关系)中的该键的某个值。

外键用外键关系子句定义,并考虑删除基本关系元组或修改基本关系的主键值的影响,依赖关系可按需要采用RESTRICT、SET NULL、CASCADE方式。

△属性值约束。

当要求某个属性的值不允许空值时,那么可以在属性定义后加上关键字:NOT NULL ,这是非空值约束。

还可以用CHECK子句对一个属性值加以限制以及使用域约束子句CREAT DOMAIN 定义新域并加以属性值检查。

△全局约束。

在关系定义时,可以说明一些比较复杂的完整性约束,这些约束涉及到多个属性间的联系或不同关系间的联系,称为全局约束。

主要有基于元组的检查子句和断言。

前者是对单个关系的元组值加以约束,后者则可对多个关系或聚合操作有关的完整性约束进行定义。

4. DBMS的完整性控制机制应具有哪些功能?【解答】DBMS的完整性控制机制应具有三个方面的功能:1)定义功能,即提供定义完整性约束条件的机制;2)检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;3)违约反应,即如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。

5.RDBMS在实现参照完整性时需要考虑哪些方面?【解答】RDBMS在实现参照完整性时需要考虑以下几个方面:(1)外码是否可以接受空值。

(2)删除被参照关系的元组时的考虑,这时系统可能采取的作法有三种:1)级联删除(CASCADES);2)受限删除(RESTRICTED);3)置空值删除(NULLIFIES)。

(3)在参照关系中插入元组时的问题,这时系统可能采取的作法有:1)受限插人;2)递归插入。

(4)修改关系中主码的问题。

一般是不能用UPDATE语句修改关系主码。

如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。

如果允许修改主码,首先要保证主码的惟一性和非空,否则拒绝修改。

然后要区分是参照关系还是被参照关系。

6.DBMS的完整性控制机制应具有哪些功能?【解答】DBMS的完整性控制机制应具有三个方面的功能:(1)定义功能,即提供定义完整性约束条件的机制;(2)检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;(3)违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。

7. 职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;部门(部门号,名称,经理名,电话),其中部门号为主码。

用SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:(1)定义每个模式的主码;(2)定义参照完整性;(3)定义职工年龄不得超过60岁。

【解答】定义部门:CREATE TABLE DEPT(Deptno NUMBER(2),Deptname V ARCHAR(10),Manager V ARCHAR(10),PhoneNumber Char(12)CONSTRAINTPK_SC PRIMARY KEY(Depmo));定义职工:CREATE TABLE EMP(Empno NUMBER(4),Ename V ARCHAR(10),Age NUMBER(2),CONSTRAINT C1 CHECK(Aage<=60),Job V ARCHAR(9),Sal NUMBER(7,2),Deptno NUMBER(2),CONSTRAINT FK_DEPTNOFOREIGN KEY(Deptno)REFERENCES DEPT(Depmo));8.参照完整性规则在SQL可以用哪几种方式实现?删除基本关系的元组时,依赖关系可以采取的做法有哪三种?修改基本关系的主键值时,依赖关系可以采取的做法有哪三【解答】参照完整性规则要求"不引用不存在的实体",参照完整性规则在SQL可用以下几种方式实现:(1)在SQL中采用外键子句定义外键,并考虑删除基本关系元组或修改基本关系的主键值,对依赖关系产生的影响;(2)在属性值上进行约束如基于属性的检查;(3)全局约束中的基于元组的检查子句等。

删除基本关系元组或修改基本关系的主键值时,依赖关系可以采用的做法有:△RESTRICT方式:只有当依赖关系中没有一个外键值与基本关系中要删除/修改的主键值相对应时,系统才能执行删除/修改操作,否则拒绝删除或修改。

△SET NULL方式:删除基本元组时,将依赖关系中所有与基本关系中被删除主键值相对应的外键值置为空值。

修改基本关系的主键值时,将依赖关系中所有与基本关系中被修改主键值相对应的外键值置为空值。

△CASCADE方式:若删除则将依赖关系中所有外键值与基本关系中要删除的主键值相对应的元组一并删除,若修改则将依赖关系中所有与基本关系中要修改的主键值相对应的外键值一并修改为新值。

9.设教学数据库的模式如下:S(S#,SNAME,AGE,SEX)SC(S#,C#,GRADE)C(C#,CNAME,TEACHER)试用多种方式定义下列完整性约束:(1)在关系S中插入学生年龄值应在16~25岁之间(2)在关系SC中插入元组时,其S#值和C#值必须分别在S和C中出现。

(3)在关系SC中修改GRADE值时,必须仍在0~100之间。

(4)在删除关系C中一个元组时,首先要把关系SC中具有同样C#的元组全部删去。

(5)在关系S中把某个S#值修改为新值时,必须同时把关系SC中那些同样的S#值也修改为新值。

【解答】(1)定义S时采用检查子句:CREAT TABLE S(S# CHAR(4),SNAME char (10) NOT NULL ,AGE SMALLINT ,PRIMARY key(S#),CHECK (AGE>=16 and AGE<=25) )(2)采用外键子句约束CREAT TABLE SC(S# CHAR(4),C# CHAR(4),GRADE SMALLINT,FOREIGN key(S#) REFERENCE S(S#),FOREIGN key(C#) REFERENCE C(C#) )(3)采用元组检查CREAT TABLE SC(S# CHAR(4),C# CHAR(4),GRADE SMALLINT,FOREIGN key(S#) REFERENCE S(S#),FOREIGN key(C#) REFERENCE C(C#),CHECK (GRADE>=0 and AGE<=100) )(4)采用外键约束CREAT TABLE SC(S# CHAR(4),C# CHAR(4),GRADE SMALLINT,FOREIGN key(S#) REFERENCE S(S#),FOREIGN key(C#) REFERENCE C(C#) )若改为:在删除关系C中一个元组时,同时把关系SC中具有同样C#的元组全部删去,则为:FOREIGN key(C#) REFERENCE C(C#) ON DELETE CASCADE(5)采用外键约束CREAT TABLE SC(S# CHAR(4),C# CHAR(4),GRADE SMALLINT,FOREIGN key(S#) REFERENCE S(S#) ON UPDATE CASCADE ,FOREIGN key(C#) REFERENCE C(C#) )10.在教学数据库的关系S、SC、C中,试用SQL2的断言机制定义下列两个完整性约束:(1)学生必须在选修Maths课后,才能选修其他课程。

(2)每个男学生最多选修20门课程【解答】(1) CREAT ASSERTION ASSE1 CHECK( NOT EXISTS( SELECT S FROM SCWHERE C# IN(SELECT C#FROM CWHERE CNAME<>'MATHS')AND S# NOT IN(SELECT S# FROM SCWHERE C# IN(SELECT C#FROM CWHERE CNAME='MATHS')));(2) CREAT ASSERTION ASSE2 CHECK( ALL(SELECT COUNT (SC.C#)FROM S,SCWHERE S.S#=SC.S AND SEX='M'GROUP BY S#)<=20);。

相关文档
最新文档