数据库表的完整性
A. 关系数据库的三个完整性约束是什么各是什么含义
可分为三种类型:与表有关的约束、域(Domain)约束、断言(Assertion)。
1、与表有关的约束:是表中定义的一种约束。可在列定义时定义该约束,此时称为列约束,也可以在表定义时定义约束,此时称为表约束。包括列约束(表约束+NOTNULL)和表约束(PRIMARYKEY、foreignkey、check、UNIQUE)。
2、域(Domain)约束:在域定义中被定义的一种约束,它与在特定域中定义的任何列都有关系。
3、断言(Assertion):在断言定义时定义的一种约束,它可以与一个或多个表进行关联。不必与特定的列绑定,可以理解为能应用于多个表的check约束,因此必须在表定义之外独立创建断言。
(1)数据库表的完整性扩展阅读:
完整性约束中包含四个完整性,即域完整性,实体完整性、参照完整性和用户定义完整性。
1、域完整性为保证数据库字段取值的合理性。属性值应是域中的值,这是关系模式规定了的。除此之外,一个属性能否为NULL,这是由语义决定的,也是域完整性约束的主要内容。
2、实体完整性,指关系的主关键字不能重复也不能取“空值"。一个关系对应现实世界中一个实体集。现实世界中的实体是可以相互区分、识别的,也即它们应具有某种惟一性标识。
3、参照完整性,定义建立关系之间联系的主关键字与外部关键字引用的约束条件。关系数据库中通常都包含多个存在相互联系的关系,关系与关系之间的联系是通过公共属性来实现的。
4、用户定义完整性,则是根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。
B. 什么是数据库的完整性它与完整性有什么区别
数据库的完整性的全名叫做:关系数据库的参照完整性(Referential
Integrity),一般是用在表示多个表之间关系时用的,而且经常使用。比如说,现在有两个表:
Student(StudentNumber,
StudentName)
和
Teacher(TeacherNumber,
TeacherName,
StudentNumber)
其中Teacher表中的studentNumber是外键,并且Student表中的StudentNumber是主键,因此肯定会有如下的参照完整性:Teacher表中的studentNumber的值必须在Student表中的StudentNumber已经存在。
这就是所谓的参照完整性,它是一个很普遍的概念。
C. VF中。数据库完整性包括哪三个完整性
有四个完整性,包括实体完整性、域完整性、参照完整性和用户定义的完整性。
1、实体完整性:表中行的完整性。主要用于保证操作的数据非空、唯一且不重复。即实体完整性要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为“空”或重复。
2、域完整性:数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。CHECK、FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。
3、参照完整性:属于表间规则,是对于更新、插入或删除表间数据的完整性。通常,在客观现实中的实体之间存在一定联系,在关系模型中实体及实体间的联系都是以关系进行描述,因此,操作时就可能存在着关系与关系间的关联和引用。
4、用户定义完整性:是对数据表中字段属性的约束,包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束,是由确定关系结构时所定义的字段的属性决定的。
(3)数据库表的完整性扩展阅读:
数据库完整性设计原则
1、要根据业务规则对数据库完整性进行细致的测试,以尽早排除隐含的完整性约束间的冲突和对性能的影响。
2、要有专职的数据库设计小组,自始至终负责数据库的分析、设计、测试、实施及早期维护。数据库设计人员不仅负责基于DBMS的数据库完整性约束的设计实现,还要负责对应用软件实现的数据库完整性约束进行审核。
3、应采用合适的CASE工具来降低数据库设计各阶段的工作量。好的CASE工具能够支持整个数据库的生命周期,这将使数据库设计人员的工作效率得到很大提高,同时也容易与用户沟通。
D. 从三个方面阐述在数据库系统中如何保证数据的完整性
数据完整性一般包括域完整性、实体完整性、参照完整性三部分。
域完整性就是字段的取值范围是合法的,在指定的取值范围内,用check来定义;
实体完整性就是每个关系表都要有主键,且不能是空的,不能有重复记回录;
参照完整性就是指外键要和另外一个表对应的主键值相同,且两者必须同时在各自的表中出现;
我只能说这么多了,具体的话看书本的例子,答有实例能使你更加明白,在这里说再多也没用,呵呵!
E. 数据库的完整性包含哪些完整性约束
数据完整性约束指的是为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。
数据库的完整性约束包含以下类型:
1) 与表有关的约束:是表中定义的一种约束。可在列定义时定义该约束,此时称为列约束,也可以在表定义时定义约束,此时称为表约束。
2) 域(Domain)约束:在域定义中被定义的一种约束,它与在特定域中定义的任何列都有关系。
3) 断言(Assertion):在断言定义时定义的一种约束,它可以与一个或多个表进行关联。
(5)数据库表的完整性扩展阅读:
数据的完整性
分为以下四类:
1) 实体完整性:规定表的每一行在表中是惟一的实体。
2) 域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。
3) 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。
4) 用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。
F. 关系数据库完整性有哪几类 分别可以使用那些技术实现
关系数据库完整性有域(列)、实体(行)、参照(引用)整性类。
1、域(列)完整性的技术实现:通常指数据的有效性,它包括字段的值域、字段的类型及字段的有效规则等约束,它是由确定关系结构时所定义的字段的属性决定的。
2、实体(行)完整性的技术实现:关系中的主属性值不能为Null且不能有相同值。
3、参照(引用)完整性的技术实现:对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就是对外键的约束。
数据完整性分析
数据库采用多种方法来保证数据完整性,包括外键、约束、规则和触发器。系统很好地处理了这四者的关系,并针对不同的具体情况用不同的方法进行,相互交叉使用,相补缺点。
从外界输入的,而数据的输入由于种种原因,会发生输入无效或错误信息。保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。
G. 数据库中 什么是数据完整性
数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或错误信息。保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。数据完整性因此而提出。本章将讲述数据完整性的概念及其在SQL Server 中的实现方法。
数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability)。它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
数据库采用多种方法来保证数据完整性,包括外键、约束、规则和触发器。系统很好地处理了这四者的关系,并针对不同的具体情况用不同的方法进行,相互交叉使用,相补缺点。
(7)数据库表的完整性扩展阅读:
数据完整性分为以下3类:
1、域完整性:
是指一个列的输入有效性,是否允许为空值。强制域完整性的方法有:限制类型(通过设定列的数据类型)、格式(通过CHECK约束和规则)或可能值的范围(通过FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOT NULL定义和规则)。
2、实体完整性:
是指保证表中所有的行唯一。实体完整性要求表中的所有行都有一个唯一标识符。这个唯一标识符可能是一列,也可能是几列的组合,称为主键。
3、参照完整性:
是指保证主关键字(被引用表)和外部关键字(引用表)之间的参照关系。它涉及两个或两个以上表数据的一致性维护。外键值将引用表中包含此外键的记录和被引用表中主键与外键相匹配的记录关联起来。
H. 如何实现数据库表的数据完整性
(1)为每个表的必要字段设置相应约束。
(2)建表间关系,即外键关联。
I. 问题:什么是数据库的完整性
答:数据库的完整性是指数据的正确性和相容性。 问题:数据库的完整性概念与数据库的安全性概念有什么区别和联系?答: 数据库的完整性是指数据的正确性和相容性、数据库的安全性是指保护数据库.以防止不合法的使用造成的数据泄密、更改或破坏。其相同点是两者都是对数据库中的数据进行控制.各自所实现的功能目标不同。问题:什么是数据库的完整性约束条件?可分为哪几类?答: 数据完整性约束是为了保证进入数据库中的数据的有效性而定义的数据规则、它可以分为以下两类. ①针对不同的对象可以分为表级约束、元塑级约束和属性级约束(也称列约束);表级约束是若干元组间、关系中及关系之间的约束:元组级约束则是元组中的字段组和字段间联系的约束;属性级约束主要是针对列的类型、取值范围、精度、排序等而制定的约束条件。②针对数据对象的状态可以分为静态约束和动态约束:静态约束是指数据库每一确定状态时的数据对象所应满足的约束条件.它是反映数据库状态稳定时的约束.动态约束是指数据库从一种状态转变为另一种状态时.新、旧值之间所应满足的约束条件.它是反映数据库状态变迁的约束。 问题: DBMS的完整性控制应具有哪些功能? 答;①定义和存储完整性功能.②检查完整性功能;③控制完整性功能。 问题:RDBMS在实现参照完整性时需要考虑哪些方面?答: ①外码能够接受空值的问题. ②在被参照关系中删除元组时.采用级联删除、受限删除或置生值删除的方法处理参照关系; ③在参照关系中插入元组时.可以使用受限插入、递归插入两种方法处理参照关系. ④修改关系的主码时 可以采用不允许修改主码、或允许修改关系主码.但必须保证主码的惟一性和非空性方法处理参照关系; ⑤修改被参照关系时,可以采用级联修改、拒绝修改和置空值修改方法处理参照关系。问题:假设有下面两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码; 部门(部门号,名称,经理名,电话),其中部门号为主码.用SQL语言定义这两个关系模式.要求在模式中完成以下完整性约束条件的定义: 1)定义每个模式的主码。 2)定义参照完整性。3)定义职工年龄不得超过60岁。 答: CREATE TABLE职工(职工号 CHAR(5)PRIMARY KEY, 姓名CHAR(8)NOT NULL, 年龄SMALLINT. 职务CHAR(10), 工资DECIMAL(7,2), 部门号CHAR(5)。 CONSTRAINT CI CHECK(年龄 <60). CONSTRAIN C2 FOREIGN KEY(部门号) REFEENCES部门(部门号)); CREAT TABLE部门(部门号CHAR(5)PRIMARY KEY. 名称CHAR(l). 经理名 CHAR(8). 电话 CHAR(8). CONSTRAINT C3 FOREIGN KEY(经理名) REFERECES职工(姓名));问题:在数据库中为什么要并发控制?答; 数据库的井发控制就是为了控制数据库,防止多用户并发使用数据库时造成数据错误和程序运行错误,保证数据的完整性。问题:并发操作可能会产生哪几类数据不一致?用什么方法能避免这些不一致的情况?答. 井发操作可能会产生丢失修改、不可重复读和读“脏”数据的数据不一致问题。用封锁的方法能避免这些不一致的情况。问题:什么是封锁?答. 封锁是使事务对它要操作的数据有一定的控制能力。封锁具有三个环节.第一个环节是申请加锁.第二个环节是获得锁;第三个环节是释放锁。问题:基本的封锁类型有几种?试述它们的含义。 答. 基本的封锁类型有两种:排它锁(简称X锁)和共享锁(简称S锁)。 排它锁也称为独占或写锁、一旦事务T对数据对象A加上排它锁.则只允许T读取和修改A.其他任何事务既不能读取和修改A,也不能再对A加任何类型的锁 直到T释放A上的锁为止。 共享锁又称读锁、如果事务T对数据对象A加上共享锁,其他事务只能再对A加S锁,不能加X锁,知道事务T释放A上的S锁为止。问题:如何用封锁机制保证数据的一致性?答: 封锁机制作为井发控制的重要手段.利用封锁的特性和封锁协议,它在井发操作保证事务的隔离性.用正确的方式调度并发操作.是一个用户事务的执行不受其他事务的干扰.从而避免造成数据的不一致性。问题:什么是封锁协议?不同级别的封锁协议的主要区别是什么? 答. 在对数据对象加锁时,还需要约定一些规则 这些规则称为封锁协议。 一级封锁协议:是事务T在修改数据之前必须先对其加X锁.直到事务结束才释放。一级封锁协议可有效地防止丢失修改并能够保证事务T的可恢复性、一级封锁由于没有对数据进行加锁,所以不能保证可重复读和不读“赃”数据。 二级封锁协议;是事务T对要修改的数据必须先加X锁.直到事务结束才释放X锁;要读取的数据必须先加S锁.读完后即可释放S锁。M级封锁协议不但能够防止丢失修改,还可进一步防止读“脏”数据。 三级封锁协议:是事务T在读取数据之前必须先对其加S锁.在要修改数据之前必须先对其加X锁.直到事务结束后才释放所有锁、由于三级封锁协议强调即使事务读完数据A之后也不释放S锁 从而使得别的事务无法更改数据A、三级封锁协议不但防止了丢失修改和不读“脏”数据,而且防止了不可重复的队问题:不同封锁协议与系统一致性级别的关系是什么?答: 一级封锁协议可有效地防止丢失修改,并能够保证事务T的可恢复性。一级封锁由于没有对数据进行加锁,所以不能保证可重复读和不读“脏’数据。 二级封锁协议不但能够防止丢失修改.还可进一步防u读“脏”数据。 由于三级封锁协议强调即使事务读完数据A之后也不释放S锁,从而使别的事务无法更改数据A。三级封锁协议不但防止了丢失修改和不读“胜数据.而且防u了不可重复读。问题:什么是活锁?什么是死锁?答; 在多个事务请求对同一数据封锁时,总是使某一用户等待的情况称为活锁;多事务交错等待的僵持局面称为死锁。问题:试述活锁的产生原因和解决方法。答; 活锁是封锁的无序造成的、解决方法是采用先来先服务的方法,即对要求封锁数据的事务排队.使前面的事务先获得数据的封锁权。问题:请给出预防死锁的若干方法。 答: 预防死锁通常有以下两种方法; ①一次封锁法.就是要求每个事务必须一次将所有要使用的数据全部加锁.否则该事务不能继续执行. ②顺序封锁法.是预先对数据对象规定一个封锁顺序.所有事务都按这个顺序实行封锁。问题:请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?答: 检测死锁发生的一种方法是选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有锁.使其他事务得以继续运行下去。 解除死锁问题有两类方法:一类方法是采用一定措施来预防死锁的发生.另一类方法是允许发生死锁.然后采用一定手段定期诊断系统中有无死锁.若有则解除之。问题:什么样的并发调度是正确的调度?答. 如果一个事务运行过程中没有其他事务同时运行,即没有受到其他事务的干扰,那么就可以认为该事务的运行结果是正常的,可串行性是井发事务正确性的准则 为了保证并发操作的正确性.DBMS的并发控制机制必须提供一定的手段来保证调度是可串行化的。问题:试述两段锁协议的概念。 答: 所谓两段锁协议是指所有事务必须分两个阶段对数据项进行加锁和解锁. ①在对任何数据进行读、写操作之前.首先要申请并获得对该数据的封锁. ②在释放一个封锁之后,事务不再申请并获得对该数据的封锁。 即每个事务分成两个阶段,第一阶段是申请和获得封锁,也称为扩展阶段。在这阶段.事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。第二阶段是释放到锁.也称为收缩阶段。在这阶段,事务可以释放任何数据项上的任何类型的锁。但是不能再申请任何锁。问题:为什么要引进意向锁?意向锁的含义是什么?答: 事务 T要对关系 RI加 X锁时,系统只需检查根结点数据库和关系 RI是否已加了不相容的锁.而不再需要搜索和检查RI中的每一个元组是否加了X锁.对任一元组加锁.必须先对它所在的关系加意向锁。 意向锁的含义是.如果对一个结点加意向锁。则说明该给点的下层结点正在被加销:对任何一结加锁时.必须先对它的上层结点加意向锁。问题:理解并解释下列术语的含义:封锁、活锁、死锁、排它锁、共享锁、并发事务的调度、可串行化的调度、两段锁协议。答: ①封锁.封锁是使事务对它要操作的数据有一定的控制能力。 ③活锁:这种在多个事务请求对同一数据封锁时.总是使某一用户等待的情况称为活锁。 ③死锁.这种多事务交错等待的僵持局面称为死锁。 ④排它锁.排名锁也称为独占或写锁、一旦事务T对数据对象A加上排它锁,则只允许T读取和修改A.其他任何事务既不能读取和修改A.也不能再对A加任何类型的锁.直到T释放A上的锁为止。 ⑤共享锁:共享锁又称读锁、如果事务T对数据对象A加上共享锁.其他事务只能再对A加S锁.不能加X锁.知道事务T释放A上的S锁为上。 ③井发事务的调度.多个事务并发执行调度策略称为并发事务的调度。 ①可串行化的调度:如果多个事务并发执行的结果与按串行执行的结果相同 这种调度策略称为可串行化的调度。③两段锁协议.所谓两段锁协议是指所有事务必须分两个阶段对数据项进行加锁和解锁。 问题:什么是数据库的安全性?答.数据库的安全性是指保护数据库.以防止不合法的使用数据泄密、更改或破坏。 问题:数据库安全性和计算机系统的安全性有什么关系? 答: 数据库安全性是计算机系统的安全性的一个部分.数据库系统不仅要利用计算机系统的安全性保证自己系统的安全性.同时还会提供专门的手段和方法,使安全性能更好。例如在用户要求进入计算机系统时.系统首先根据用户输入的用户标识进行身份鉴定,只有合法的用户才准许进入计算机系统:对已进入的用户 ***S还要进行存取控制,只允许用户执行合法操作:操作系统也会提供相应的保护措施;数据最后还可以以密码形式存储到数据库中。 问题:试述实现数据库安全性控制的常用方法和技术。答. ①用户标识与鉴别:②存取控制:③自主存取控制方法.④强制存取控制方法:⑤视图机制;③审计.o数据加密。 问题:SQL 语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。答. ①GRANT(授权)语句 例:GRANT SELECTINSRRT ON学生 TO张勇 WITH GRANT OPTION; ②REVOKE(收回)语句 例:REVOKE INSERT ON学生 FROM张勇; 问题:今有两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号); 部门(部门号,名称,经理名,地址,电话)。 请田SQL 的GRANT和REVOKE语句(加上视图机制),完成以下授权定义或存取控制功能。 1)用户王明对两个表有SELECT权力。 2)用户李勇对两个表有INSERT和DELETE权力。 3)用户刘星对职工表有SELECT权利,对工资字段具有更新权力。 4)用户张新具有修改这两个表的结构的权力。 5)用户周平具有对两个表的所有权力(读、插、改、删数据),并具有给其他用户授权的权利。
J. 数据库的完整性是什么啊!
数据库的完整性的全名叫做:关系数据库的参照完整性(Referential Integrity),一般是用在表示多个表之间关系时用的,而且经常使用。比如说,现在有两个表:
Student(StudentNumber, StudentName) 和 Teacher(TeacherNumber, TeacherName, StudentNumber)
其中Teacher表中的studentNumber是外键,并且Student表中的StudentNumber是主键,因此肯定会有如下的参照完整性:Teacher表中的studentNumber的值必须在Student表中的StudentNumber已经存在。
这就是所谓的参照完整性,它是一个很普遍的概念。1什么是数据库的完整性? DBMS的完整性子系统的功能是什么?数据库的完整性是指数据的正确性和相容性。DBMS完整性子系统的功能是:(1)监督事务的执行,并测试是否违反完整性规则;(2)如有违反,则采取恰当的操作,如拒绝、报告违反情况,改正错误等方法进行处理。2完整性规则由哪几个部分组成?关系数据库的完整性规则有哪几类?完整性规则由三部分组成:触发条件:即什么时候使用规则进行检查;约束条件:即要检查什么样的错误;ELSE子句:即查出错误后该如何处理。 完整性规则有以下三类:域完整性规则,用于定义属性的取值范围;域联系的规则,定义一个或多个关系中,属性值间的联系、影响和约束。关系完整性规则,定义更新操作对数据库中值的影响和限制。3试详述SQL中的完整性约束机制?SQL中的完整性约束规则有主键约束、外键约束、属性值约束和全局约束等多种形式。△主键约束。它是数据中最重要的一种约束。在关系中主键值不允许空,也不允许出现重复,体现了关系要满足实体完整性规则。主键可用主键子句或主键短语进行定义。△外键约束。根据参照完整性规则,依赖关系中外键或者为空值,或者是基本关系(参照关系)中的该键的某个值。外键用外键关系子句定义,并考虑删除基本关系元组或修改基本关系的主键值的影响,依赖关系可按需要采用RESTRICT、SET NULL、CASCADE方式。△属性值约束。当要求某个属性的值不允许空值时,那么可以在属性定义后加上关键字: NOT NULL ,这是非空值约束。还可以用CHECK子句对一个属性值加以限制以及使用域约束子句CREATDOMAIN定义新域并加以属性值检查。△全局约束。在关系定义时,可以说明一些比较复杂的完整性约束,这些约束涉及到多个属性间的联系或不同关系间的联系,称为全局约束。主要有基于元组的检查子句和断言。前者是对单个关系的元组值加以约束,后者则可对多个关系或聚合操作有关的完整性约束进行定义。4参照完整性规则在SQL可以用哪几种方式实现?删除基本关系的元组时,依赖关系可以采取的做法有哪三种?修改基本关系的主键值时,依赖关系可以采取的做法有哪三种?参照完整性规则要求"不引用不存在的实体",参照完整性规则在SQL可用以下几种方式实现:(1)在SQL中采用外键子句定义外键,并考虑删除基本关系元组或修改基本关系的主键值,对依赖关系产生的影响;(2)在属性值上进行约束如基于属性的检查;(3)全局约束中的基于元组的检查子句等。删除基本关系元组或修改基本关系的主键值时,依赖关系可以采用的做法有:△RESTRICT方式:只有当依赖关系中没有一个外键值与基本关系中要删除/修改的主键值相对应时,系统才能执行删除/修改操作,否则拒绝删除或修改。△SET NULL方式:删除基本元组时,将依赖关系中所有与基本关系中被删除主键值相对应的外键值置为空值。修改基本关系的主键值时,将依赖关系中所有与基本关系中被修改主键值相对应的外键值置为空值。△CASCADE方式:若删除则将依赖关系中所有外键值与基本关系中要删除的主键值相对应的元组一并删除,若修改则将依赖关系中所有与基本关系中要修改的主键值相对应的外键值一并修改为新值。5试对SQL2中的基于属性的检查约束、基于元组的检查约束和断言三种完整性约束进行比较:各说明什么对象?何时激活?能保证数据库的一致性吗?约束形式说明对象激活条件是否保证一致性基于属性的检查只对一个属性值加以约束插入或修改属性值时不一定基于元组的检查对单个关系的元组值加以约束在插入或修改元组时不一定断言多个关系或聚合操作任何变动保证6设教学数据库的模式如下: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#))6.20在教学数据库的关系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);