第二章数据库的完整性控制数据完整性(DataIntegrity)是指数据的精确
- 格式:doc
- 大小:70.50 KB
- 文档页数:8
数据库完整性本节要点:实体完整性参照完整性⽤户定义的完整性完整性约束命名⼦句触发器数据库的完整性是指数据的正确性和相容性。
例如,学⽣的学号必须唯⼀;性别只能是男或⼥;本科学⽣年龄的取值范围为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短语指明这些外码参照哪些表的主码。
数据库中的数据完整性与约束数据库是现代信息系统中的重要组成部分,用于存储、管理和操作大量结构化数据。
在数据库中,数据的完整性和约束是确保数据准确性和一致性的关键要素。
数据库中的数据完整性指的是数据的有效性和准确性,而约束是指对数据的限制和验证规则。
本文将探讨数据库中的数据完整性与约束的概念、常见的完整性和约束类型以及它们在数据库设计和管理中的重要性。
数据库中的数据完整性指的是保持数据的有效性和准确性。
数据的完整性可以通过主要的完整性约束和外键约束来实现。
主键的唯一性和非空性要求确保每个表在其主键列中有唯一且非空的值。
外键约束用于确保表之间的关系的一致性。
当我们在一个表中创建外键时,它将引用在另一个表中定义的主键。
这将确保在修改主表中的记录时,外键表中的相应记录也会被更新或删除。
另一种常见的数据完整性是实体完整性,它确保每个表中的记录都有一个唯一的标识符。
这可以通过定义主键或唯一索引来实现。
唯一索引要求表中的每个值都是唯一的,且不能为空。
除了主键和外键约束,数据库还支持其他约束类型,以对数据进行进一步的限制和验证。
例如,域完整性约束用于限制数据的取值范围。
比如,在一个年龄列中,我们可以定义域完整性约束来确保年龄只能在0到150之间。
检查约束可以定义基于列中存储的特定条件的约束。
例如,我们可以定义一个检查约束,确保价格列中的值大于零。
另一个常见的完整性和约束类型是引用完整性约束,它用于确保表之间的引用关系的一致性。
在引用完整性约束中,如果一个表中的记录引用另一个表中不存在的记录,或者如果尝试删除被其他表引用的记录,那么将会发生冲突。
引用完整性约束包括主表和从表之间的关系。
数据库中的数据完整性和约束对于正确的数据库设计和管理至关重要。
它们确保了存储在数据库中的数据的准确性和一致性。
通过定义适当的主键和外键约束,可以建立表之间的关系,并提供数据的完整性。
数据完整性还确保了查询和分析所得到的结果是准确的和可靠的。
数据完整性考试答案1. 什么是数据完整性?数据完整性是指数据的准确性、一致性和完备性。
准确性指数据的正确性,数据应该准确地反映现实世界的事实。
一致性指数据在不同的地方和时间保持一致,不应该出现冲突或矛盾的情况。
完备性指数据应该包含所有必要的信息,没有遗漏或缺失。
2. 为什么数据完整性很重要?数据完整性对于任何组织和企业来说都是至关重要的。
以下是几个重要原因:a. 决策支持:准确、一致和完备的数据可以提供可靠的信息用于决策制定和执行。
b. 业务流程:数据完整性确保业务流程的顺利进行,避免错误和延误。
c. 合规性:许多行业和法规要求数据的完整性,以确保合规性和数据安全。
d. 客户信任:数据完整性是客户信任的基础,客户期望从组织获得准确和可靠的信息。
e. 数据分析:准确和完整的数据对于数据分析和洞察非常重要,确保分析结果的准确性和可信度。
3. 如何确保数据完整性?确保数据完整性需要采取一系列措施和实施最佳实践。
以下是一些常见的方法:a. 数据验证:使用验证规则和算法来验证数据的准确性和完整性。
例如,检查数据的范围、格式、长度等。
b. 数据规范:定义数据的规范和标准,确保数据按照规范进行输入和存储。
c. 访问控制:限制对数据的访问权限,只有授权人员才能修改和更新数据,避免非授权人员对数据进行篡改。
d. 数据备份和恢复:定期备份数据,并确保备份数据的完整性和可恢复性,以防止数据丢失或损坏。
e. 数据审计:定期进行数据审计,检查数据的完整性和一致性,发现并纠正数据错误或异常。
f. 培训和教育:对员工进行数据完整性的培训和教育,提高他们对数据完整性的意识和重要性。
g. 数据监控:使用数据监控工具和技术来实时监控数据的完整性,及时发现和解决数据问题。
4. 数据完整性的挑战和解决方案数据完整性可能面临一些挑战,但可以通过以下解决方案来克服:a. 人为错误:人为错误可能导致数据的不完整或不准确。
通过培训和教育,提高员工对数据完整性的认识和重要性,减少人为错误的发生。
第五章数据库完整性一、选择题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 的完整性控制机制至少包括完整性约束的定义机制和完整性约束的检查机制。
数据完整性考试答案数据完整性是指数据的准确性、完备性和一致性。
在信息系统中,保持数据的完整性是至关重要的,因为它直接影响到数据的可靠性和可用性。
为了确保数据的完整性,各种控制措施和技术被广泛应用。
本文将详细介绍数据完整性的概念、重要性以及保障数据完整性的方法和技术。
一、数据完整性的概念和重要性数据完整性是指数据的准确性、完备性和一致性。
准确性是指数据的正确性和真实性,完备性是指数据的完整程度和涵盖范围,一致性是指数据之间的逻辑关系和相互匹配的程度。
数据完整性是信息系统中的一个基本要求,它对于保证数据的可靠性和可用性至关重要。
保持数据的完整性具有以下重要性:1. 提高决策的准确性:准确的数据能够提供正确的信息,帮助管理者做出准确的决策。
如果数据不完整或存在错误,决策可能会受到干扰或误导。
2. 增强数据的可靠性:完整的数据能够提供可靠的信息,帮助用户进行分析和判断。
如果数据不完整或存在错误,用户可能会对数据的可靠性产生怀疑,从而影响对数据的使用和信任。
3. 提高工作效率:完整的数据能够提供全面的信息,帮助用户快速定位所需数据,提高工作效率。
如果数据不完整或存在错误,用户可能需要花费更多的时间和精力来查找和验证数据。
4. 保护数据的安全性:完整的数据可以帮助系统管理员及时发现和修复数据的安全漏洞,保护数据的安全性。
如果数据不完整或存在错误,可能会给黑客或恶意用户提供攻击的机会。
二、保障数据完整性的方法和技术为了保障数据的完整性,可以采取以下方法和技术:1. 数据验证和校验:通过数据验证和校验的方式,检查数据是否符合预定的规则和约束。
常见的数据验证和校验方法包括数据类型检查、范围检查、格式检查、唯一性检查等。
例如,在用户注册时,可以对用户输入的邮箱地址进行格式检查,确保其符合邮箱地址的规范。
2. 数据备份和恢复:定期进行数据备份,并建立完善的数据恢复机制,以防止数据丢失或损坏。
数据备份可以通过物理备份、逻辑备份或在线备份等方式进行。
第2章关系数据库1 .试述关系模型的三个组成部分。
答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
2 .试述关系数据语言的特点和分类。
答:关系数据语言可以分为三类:关系代数语言。
关系演算语言:元组关系演算语言和域关系演算语言。
SQL:具有关系代数和关系演算双重特点的语言。
这些关系数据语言的共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。
4 .试述关系模型的完整性规则。
在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?答:实体完整性规则是指若属性A是基本关系R的主属性,则属性A不能取空值。
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。
即属性F本身不是主属性,则可以取空值,否则不能取空值。
5.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:1)求供应工程J1零件的供应商号码SNO:πSno(σSno=‘J1’(SPJ))2)求供应工程J1零件P1的供应商号码SNO:πSno(σSno=‘J1’∧Pno=‘P1‘(SPJ))3)求供应工程J1零件为红色的供应商号码SNO:πSno(σPno=‘P1‘(σCOLOR=’红‘(P)∞SPJ))4)求没有使用天津供应商生产的红色零件的工程号JNO:πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘红‘(S∞SPJ∞P)5)求至少用了供应商S1所供应的全部零件的工程号JNO:πJno,Pno(SPJ)÷πPno(σSno=‘S1‘(SPJ))6.试述等值连接与自然连接的区别和联系。
答:连接运算符是“=”的连接运算称为等值连接。
它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
数据库技术中的数据一致性与数据完整性引言:数据库是现代信息系统中不可或缺的一部分,它存储了大量的数据。
而对于数据库来说,数据一致性和数据完整性是至关重要的两个概念。
在本文中,我们将重点讨论数据库技术中的数据一致性与数据完整性的概念、重要性以及一些常见的保障措施。
数据一致性:在数据库技术中,数据一致性指的是数据库中的数据在任何时间点上都应该保持一致。
也就是说,当对数据库进行修改、增加或删除时,数据库中的数据应该始终满足事先定义好的一些规则和约束。
数据一致性的重要性体现在以下几个方面:1. 避免数据冲突:在多用户环境下,并发操作是不可避免的。
如果数据库没有良好的数据一致性保障措施,不同用户的并发操作可能会导致数据冲突,造成数据不一致的情况。
2. 提高数据可信度:数据库中的数据在被用户或程序使用之前,应该经过一系列的验证和校验。
只有确保数据的一致性,用户才能够放心地使用这些数据,提高其可信度。
3. 确保数据的正确性:数据库中的数据往往用于支持企业的决策和运营管理。
如果数据不一致,那么相应的决策就可能会产生错误,从而影响企业的正常运营。
为了保证数据一致性,数据库技术提供了一些常见的机制,如事务(transaction)、锁(lock)、隔离级别(isolation level)等。
其中,事务是最常见和最重要的一种保障数据一致性的机制。
数据完整性:数据完整性是指数据库中的数据满足事先定义好的一些规则和约束,这些规则和约束可以保证数据库中的数据的正确性和一致性。
数据完整性的重要性在于:1. 确保数据的有效性:数据完整性保证了数据库中的数据是正确和有效的。
这不仅对于用户的查询操作非常重要,也对于日常的数据处理和维护工作至关重要。
2. 防止数据异常:数据完整性可以阻止非法操作或异常数据的插入,通常通过定义字段的类型、长度以及基本约束条件等来实现。
为了保证数据完整性,数据库技术提供了一些机制和手段,如主键(primary key)、外键(foreign key)、触发器(trigger)等。
数据库的安全性与完整性在当今数字化的时代,数据已经成为了企业和组织最为重要的资产之一。
数据库作为存储和管理数据的核心系统,其安全性与完整性至关重要。
如果数据库出现安全漏洞或数据不完整的情况,可能会给企业带来巨大的损失,甚至影响到其生存和发展。
首先,我们来谈谈数据库的安全性。
数据库安全性指的是保护数据库,防止不合法的使用所造成的数据泄露、更改或破坏。
想象一下,一家银行的数据库被黑客入侵,客户的账户信息被窃取,这将引发多么严重的后果!为了保障数据库的安全性,我们需要采取一系列的措施。
访问控制是其中的关键环节。
这就好比给房子装上门锁,只有拥有正确钥匙(即授权)的人才能进入。
通过设置不同级别的用户权限,如管理员、普通用户等,可以限制用户对数据库的操作范围,防止未经授权的访问和修改。
身份验证也是必不可少的。
就像我们进入一个重要场所需要出示身份证一样,用户在访问数据库时也需要进行身份验证。
常见的身份验证方式包括用户名和密码、指纹识别、面部识别等。
而且,密码的设置不能过于简单,要定期更换,以增加破解的难度。
加密技术则为数据库提供了另一层重要的保护。
对敏感数据进行加密,即使数据被窃取,没有解密的密钥,窃取者也无法获取其中的有用信息。
这就好比把重要的文件锁在一个加密的保险箱里,只有知道密码的人才能打开。
此外,网络安全也是数据库安全的重要组成部分。
防止网络攻击,如 DDoS 攻击、SQL 注入攻击等,需要设置防火墙、入侵检测系统等防护措施。
定期对数据库进行安全审计,及时发现和解决潜在的安全隐患,也是保障数据库安全的重要手段。
接下来,我们再聊聊数据库的完整性。
数据库的完整性是指数据的准确性、一致性和有效性。
简单来说,就是数据库中的数据要符合预期的规则和逻辑。
比如,在一个学生成绩管理数据库中,学生的成绩应该在 0 到 100之间,如果出现了 120 这样的成绩,那就违反了数据的完整性。
为了确保数据库的完整性,我们需要定义各种完整性约束。
第二章 数据库的完整性控制 数据完整性(Data Integrity)是指数据的精确性(accuracy)和可靠性(reliability),它是防止数据库中存在不符合语义规定的数据和防止因错误的信息的输入造成无效操作或错误信息而提出的,保证在一个应用程序更新数据的过程中数据的语义正确性。 数据完整性主要分为三类:实体完整性(Entity Integrity),参照完整性(Referential Integrity)以及用户定义的完整性(User-defined Integrity),其中用户定义的完整性主要包括域完整性(Domain Integrity)和其他自定义完整性。 为维护数据库德完整性,数据库管理系统(DBMS)必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。这些加在数据库数据上的语义约束条件称为数据库完整性规则,它们作为模式的一部分存入数据库中。 完整性控制是指对数据库进行更新操作,要遵守完整性规则,才能保证数据的语义正确性,防止数据库中存在不符合语义的数据。目的是在合法用户访问数据库的过程中,保证数据的正确性和准确性。完整性检查机制是指在DBMS中检查数据是否满足完整性条件的机制。由DBMS在执行更新动作时,检查是否满足预定的完整性约束条件,来进行控制。广义的完整性控制包括故障恢复、并发控制。而一般所指的完整性控制是指基于数据库的完整性约束规则,如:实体完整性、引用完整性等。SQL中两种主要的数据完整性控制机制是指完整性约束规则的定义和检查以及触发器(Trigger)机制。 完整性控制机制应具有三个功能: (1) 定义功能,即提供定义完整性约束条件的机制; (2) 检查功能,即检查用户发出的操作请求书否违反了约束条件; (3) 如果发现用户操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。 完整性控制机制的工作原理基本上分为两类,一种是定义完整性时就立刻进行检查的,例如实体完整性的定义;另外一种是定义完整性之后进行检查的,例如参照完整性的定义。 SQL Server提供了一些工具来帮助用户实现数据完整性,其中最主要的是:规则(Rule),默认值(Default),约束(Constraint)和触发器(Trigger)
实验报告2.1 实体完整性 实验目的: 学习实体完整性的建立,以及实践违反实体完整性的结果。 实验原理: 1、实体完整性(Entity Integrity)定义 实体完整性规定表的每一行在表中是唯一的实体。SQL语法中,表中的UNIQUE、PRIMARY KEY和IDENTITY约束就是实体完整性的体现。 实体完整性规则:每个关系中主码的任何属性不能取空值。 注意:空值为NULL,不是0,也不是空格,而是一个“不知道”或“不确定”的数据值。 2、实施完整性检查的时机 实施完整性规则检查的时机分为立即检查和延迟检查(Immediate or deferred Checking),只有选择正确的检查时机才能保证语义的正确性,即保证数据的完整性。 实体完整性规则检查的时机是立即检查的,而参照完整性和触发器一般都是延迟检查。 3、事务处理 事务是一组数据库操作的集合,这些操作要么一起成功,要么一起失败。操作的提交或回退是一同生效的。事务处理的概念对维护数据的完整性和一致性是十分重要的。 数据库操作(如INSERT、UPDATE和DELETE)如果是一个事务中的操作,那么它们要在事务控制之下完成。数据库对象的begin Transaction、commit Transaction和rollback Transaction方法分别用来启动、提交和回退事务。 实验内容: (1) 在数据库School中建立表Stu_Union,进行主键约束,在没有违反实体完整性的前提下插入并更新一条记录。 (2) 演示违反实体完整性的插入操作。 (3) 演示违反实体完整性的更新操作。 (4) 演示事务的处理,包括事务的建立、处理以及出错时的事务回滚。 (5) 通过建立Scholarship表,插入数据,演示当与现有的数据环境不等时,无法建立实体完整性以及参照完整性。 实验步骤: 代码实现参见数据库实验习题2.1.sql文档 心得体会: 1、 学习了实体完整性的相关内容,加深了对于这部分知识点的认识; (实验课本第59页—— 思考:为什么sno置为‘’没有违反非空的约束? 答:SQL系统默认这里定义的‘’为一个值;如果执行sno=NULL,则将被系统拒绝)
实验2.2 参照完整性 实验目的: 学习建立外键,以及利用FOREIGN KEY---REFERENCES子句以及各种约束保证参照完整性。 实验原理: 1) 参照完整性(Referential Integrity) 参照完整性是指两个表的主关键字和外关键字的数据对应一致。它确保了有主关键字的表中对应其他表的外关键字的行存在,即保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。参照完整性是建立在外关键字和主关键之间或外关键字和唯一性关键字之间的关系上的。 参照完整性规则:关系R的外来码取值必须是关系S中某个元组的主码值,或者可以是一个“空值”。 定义外键时定义参照完整性、约束参照表A和被参照表B。对于违反参照完整性的操作有时候并不是简单拒绝执行,而是接受该操作,同时执行必要的附加操作。DBMS提供机制来定义是否必须制定外键的具体值而非空值。主键列和外键列可以有不同的名字,空值的要求也可以不一致,默认值也可以不同,但数据类型必须相同。 2) SL Server中完整性的体现 在SQL Server中参照完整性作用表现在如下几个方面: ·禁止在从表中插入包括主要中不存在的外关键字的数据行。 ·禁止会导致从表中的相应值孤立的主表中的外关键字值改变。 ·禁止删除在从表中的有对应记录的主表记录。 3) SQL语句中删除和插入基本关系元组 (1) 在被参照关系中删除元组的三种控制方式: ·级联删除(CASCADES):将参照关系中与被参照关系中要删除的元组主键值相同的元组一起删除。 ·受限删除(RESTRICTED):只有参照关系中没有元组与被参照关系中要删除的元组主键值相同时才执行删除操作,否则拒绝。 ·置空值删除(SET NULL):删除被参照关系中的元组,同时将参照关系中相应元组的外键值置空。 (2) 在参照关系中插入元组。 ·受限插入:只是被参照关系中有元组与参照关系中要插入元组外键值相同时,才执行插入操作,否则拒绝。 ·递归插入:插入元组外键值在被参照关系中没有相同元组,则首先向被参照关系插入元组,其主键值等于参照关系插入元组的外键值,然后再向参照关系插入元组。 4) DBMS对参照完整性进行检查的四种情况 (1) 在四种情况下DBMS要进行检查,分别是对参照表进行插入和修改以及对被参照表进行删除和修改。 (2) SQL Server四种情况违反参照完整性的处理方法如表所示: 相关操作 INSERT DELETE UPDATE 被参照表 不需要检查 ON DELETE„(用户显示定义的方式,提供两种:cascade 和no action)OR default(系统默认的方式no action) ON UPDATE„(用户显示方式,提供两种:cascade 和no action)OR default(系统默认的方式no action) 参照表 拒绝执行 不需要检查 拒绝执行
5) 参照完整性的特殊问题 (1) 表的自参考问题。 问题1:无法定义。 处理方法:先用create table创建主键约束,再用alter table创建外键约束。 问题2:容易造成无法启动的情况。(系统通过事务完毕后再检查) (2) 两张表互相参照的问题。 问题1:无法定义。 处理方法:同表的自参照问题的解决方法相同。 问题2:容易造成无法启动的情况。(系统通过事务完毕后再检查) (3) 既是外键又是主键中的属性。 处理方法:既要遵从实体完整性也要遵从参照完整性。 实验内容: (1) 为演示参照完整性,建立表Course,令cno为主键,并在Stu_Union中插入数据。为下面的实验步骤做预先准备。 (2) 建立表SC,令sno和cno分别为参照Stu_Union表以及Course表的外键,设定为级联删除,并令(sno,cno)为其主键。在不违反参照完整性的前提下,插入数据。 (3) 演示违反参照完整性的插入数据。 (4) 在Stu_Union中删除数据,演示级联删除。 (5) 在Course中删除数据,演示级联删除。 (6) 为了演示多重级联删除,建立Stu_Union表,令stu_id为参照Stu_Union表的外键,令card_id为其主键,并插入数据。 (7) 为了演示多重级联删除,建立ICBC_Card表,令stu_card_id为参照Stu_Card表的外键,令bank_id为其主键,并插入数据。 (8) 通过删除students表中的一条记录,演示三个表的多重级联删除。 (9) 演示事务中进行多重级联删除失败的处理。修改ICBC_Card表的外键属性,使其变为On delete No action,演示事务中通过删除students表中的一条记录,多重级联删除失败,整个事务回滚到事务的初始状态。 (10) 演示互参照问题以及其解决方法。要建立教师授课和课程指定教师停课关系的两张表,规定一个教师可以授多门课,但是每个课程只能指定一个教师去听课,所以要为两张表建立相互之间的参照关系。 实验步骤: 代码实现参见数据库实验习题2.2.sql文档 心得体会: 1、学习了参照完整性的相关内容,加深了对于这部分知识点的认识; (习题: (1)用alter table语句将SC表中的on delete cascade 改为on delete restrict。重新插入SC的数据。重复本实验的实验步骤中(4)(5),观察结果,分析原因。 (2)用alter table语句将SC表中的on delete cascade 改为on delete set NULL。重新插入SC的数据。重复本实验的实验步骤中(4)(5),观察结果,分析原因。
解答:SQL不提供on delete restrict/on delete set NULL,用on delete no action;结果:数据库不允许删除STU_UNION表以及NEW_COUSE表中对应的元组;原因:(1)由于on delete restrict的约束,数据库不允许任何引用关系存在对应元组的删除操作(2)约束on delete set NULL是将要删除的对应元组的外键置空值,如果sno和cno不是SC表的主键,删除操作是可以完成的,但是由于主键不可以取空值,所以删除操作不能进行。 )