当前位置:文档之家› 实验2.3用户自定义完整性

实验2.3用户自定义完整性

实验2.3用户自定义完整性
实验2.3用户自定义完整性

数据库概论试题-数据库完整性

第10章数据库完整性 1.数据库的完整性是指数据的__正确性、相容性__。 2.什么是数据库的完整性? 答:数据库的完整性是指数据的正确性和相容性。 3.SQL标准使用了一系列概念来描述完整性,包括关系模型的____实体完整性、参照完整性、用户定义___完整性。 4.数据库的完整性概念与数据库的安全性概念有什么区别和联系? 答:数据的完整性和安全性是两个不同的概念,但是有一定的联系。 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(GarbageInGarbageOut)所造成的无效操作和错误结果。后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。 5.数据库完整性的定义一般由SQL的__DDL数据字典__语句来实现。它们作为数据库模式的一部分存入中。 6.什么是数据库的完整性约束条件?可分为哪几类? 7.关系模型的实体完整性在__CREATETABLE__中用__PRIMARYKEY___定义。 8.DBMS的完整性控制机制应具有哪些功能? 答:DBMS的完整性控制机制应具有三个方面的功能: 1.定义功能,即提供定义完整性约束条件的机制。 2.检查功能,即检查用户发出的操作请求是否违背了完整性约束条件。 3.违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。 9.为了避免对基本表进行全表扫描,RDBMS核心一般都对__主码__自动建立一个__索引__。 10.RDBMS在实现参照完整性时需要考虑哪些方面? 11.关系模型的参照完整性在__CREATETABLE__中用___FOREIGNKEY__短语定义哪些列为外码列,用__REFERENCES__短语指明这些外码参照哪些表的主码。 12.假设有下面两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;部门(部门号,名称,经理名,电话),其中部门号为主码;用SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:定义每个模式的主码;定义参照完整性;定义职工年龄不得超过60岁。 CREATETABLEDEPT(DeptnoNUMBER(2),DeptnameV ARCHAR(10),ManagerV ARCHAR(10), PhoneNumberChar(12)CONSTRAINTPK_SCPRIMARYKEY(Deptno));CREATETABLEEMP(E mpnoNUMBER(4),EnameV ARCHAR(10),AgeNUMBER(2),CONSTRAINTC1CHECK(Aage<= 60),JobV ARCHAR(9),SalNUMBER(7,2),DeptnoNUMBER(2),CONSTRAINTFK_DEPTNOFOR EIGNKEY(Deptno)REFERENCESDEPT(Deptno)); 13.关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处理的? 答:对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。具体的处理可以参见上面第5题或《概论》10.2中相应部分。

完整性约束

完整性约束实验 实验目的:熟悉通迷Q射数据库进行操作完整性控制,包括三类完涮制短语、constrain 子句° 1. 实体完整性 定义表的主码 关系模型的实体完整性reate table中用primary keyt义。定义主码的方法为定义歹U级约束条件和定义为表级约束条件两种。 ⑴定义Student并将其中的noli性定义为主码。 Create table student( Sno char(7) primary key, Sname char(8) not null, Ssex char(2), Sage smallint, Sdept char(20)); 或者: Create table student( Sno char(7), Sname char(8) not null, Ssex char(2), Sage smallint, Sdept char(20), Primary key(sno)); ⑵定义bourse并将其中的no届性定义为主码。 Create table course( cno char(7) primary key, cname char(8) not null); 2. 参照完整性 关系模型的参照完整性^rfeate table中用foreign key语句来定义的,并references 来指明外码参照的是哪些表的主码。 定义衣c,其床nc#照studen饮的主5%nq cn叠照course勺主S^nQ Create table sc( Sno char(7) not null, Cno char(7) not null, Grade smallint, Primary key(sno,cno), Foreign key(sno) references student(sno), Foreign key(cno) references course(cno)) 3. 用户自定义完整性 用户定义的届性上的约束条件。 ⑴ 列值非空。在定S表时,sno cn节日graded性都不允许取空值。

(完整版)5数据完整性课后习题

习题 一、选择题 1.一个表上可以建立多个名称不同、类型各异的触发器,每个触发器可以由三个动作来引发,但是每个触发器最多只能作用于()个表上。 A.一 B.二 C.三 D.四 2.激活触发器的数据修改语句,有效选项是()。 A.INSERT B.UPDATE C.DELETE D.SELECT 3.创建触发器不需要指定的选项有()。 A.触发器的名称 B.在其上定义触发器的表 C.触发器将何时触发 D.执行触发操作的编程语句 4.当希望执行对Book表的操作时,如果该操作不执行,而是执行对PRICE 表的更新操作,则应该创建什么类型的DML 触发器()。 A.FOR B.BEFORE C.AFTER D.INSTEAD OF 5.在DML触发器工作中,有可能生成的两个内存表是()。 A.INSERTED, DELETED B.UPDATED, INSERTED C.DELETED,ADDED D.ADDED, DELETED 6.关于触发器叙述正确的是()。 A.触发器是自动执行的,可以在一定条件下触发 B.触发器不可以同步数据库的相关表进行级联更改 C.SQL Server 2008不支持DDL触发器 D.触发器不属于存储过程 7.关于约束叙述正确的是()。 A.每个约束只能作用与一个列上 B.每个约束可以作用多个列,但是必须在一个表里 C.每个约束可以作用到多个表的多个列 D.以上都不对 8.用户定义的约束,是属于()完整性。 A.用户自定义 B.实体

C.参照 D.都不是 9.下述SQL命令的短语中,定义属性上约束条件的是()。 A.NOT NULL短语 B.UNIQUE短语 C.CHECK短语 D.HA VING短语 10.下列()是对触发器的描述 A.定义了一个有相关列和行的集合 B.当用户修改数据时,一种特殊形式的存储过程被自动执行 C.SQL语句的预编译集合 D.它根据一或多列的值,提供对数据库表的行的快速访问 二、填空题 1.数据库的实体完整性要求表中所有行唯一,可通过建主码、唯一约束、唯一索引、IDENTITY标识等约束来实现。 2.数据库域完整性可保证表中指定字段中数据的正确性。要求表中指定列的数据具有正确的数据类型、格式和有效取植范围。 3.关系完整性包括实体完整性、值域完整性、参照完整性_和用户自定义完整性。4.当指定基本表中某一列或若干列为主码时,则系统将在这些列上自动建立一个非空_______、_唯一__约束和___聚集__的索引。 5. SQL Server 2008中的触发器可以分为_DML_触发器和__DDL__触发器两种。 6.在SQL Server中,通过执行 CRETAE RULE 语句创建约束,使用 SP_bindrule 存储过程绑定约束,使用 SP_unbindrule 解除绑定,使用 DROP RULE 删除规则。 7.数据库的完整性是指数据的___正确性_____ 和___相容性_____。 8.数据库完整性的定义一般由SQL的___ DDL _____语句来实现。它们作为数据库模式的一部分存入数据字典中。 9.触发器按激活的方式分为After 和Instead Of 两种触发方式。后触发器在记录已经改变完之后被激活。替代触发器在记录变更之前被激活。 10.创建触发器使用 CRETAE TRIGGER 语句。在表或视图上执行INSERT 、UPDATE 和DELETE 语句可以激活触发器。 11.SQL Server为每一个触发器创建了两个inserted 和deleted 临时表。在触发器触发时时候创建,在触发器的工作完成之后时候删除。 三、问答题 1.试述关系模型的完整性规则。在参照完整性中,为什么外码属性的值也可以为空?什么情况下才可以为空? 解答: 关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。1) 实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。2)参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:等于S中某个元组的主码值或者取空值(F的每个属性值均为空值);3)用户定义的完整性是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。在

数据库完整性

第五章数据库完整性 一、选择题 1.有一个关系:学生(学号,姓名,系别),规定学号的值域是8个数字组成的字符串,这一规则属于__________。 A 实体完整性约束 B 参照完整性约束 C 用户自定义完整性约束 D 关键字完整性约束 【解答】C 2.完整性约束有两大类型,其中一种是静态约束,下面( c )不属于静态约束。 A.固有约束B.隐含约束C.语义约束D.显示约束 【解答】C 3.数据库的破坏一般来自四个方面,其中__________是属于完整性约束问题。 A.系统故障B.并发所引起的数据不一致C.人为的破坏 D.输入或更新数据库的数据有误,更新事务未遵守保持数据库一致性的原则 【解答】D 4. ________子句能够实现关系参照性规则。 A. PRIMARY KEY B. NOT NULL C. FOREIGN KEY D. 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的完整性控制机制应具有哪些功能?

实验十 用户自定义完整性

实验十用户自定义完整性 1、实验目的 学习用户自定义约束,并实践用户自定义完整性,利用SQL语言用短语NOT NULL、UNIQUE、CHECK保证用户定义完整性。 2、实验内容(建议将表改成Teachers,相应属性以T开始命名,如Tname)建 立Teacher表。 建立表Teacher,注意跟前面所建立的Teacher区分开来, (1)创建Worker,Teacher表,并自定义2个约束U1以及U2,其中U1规定 Wname Tname字段唯一,U2规定Wage, Tage (级别)字段的上限是28。 (2)在Worker, Teacher表中插入一条合法记录。 (3)演示插入违反U2约束的例子,U2规定元组的Wage,Tage属性的值必须 <=28。 (4)去除U2约束。 (5)重新插入(3)中想要插入的数据,由于去除了U2约束,所以插入成功。 (6)创建规则Rule_sex,规定插入或更新的值只能是M或F,并绑定到Worker Teacher的Wsex Tsex字段。 (7)演示违反规则Rule_sex的插入操作。 3、实验步骤 以系统管理员或sa帐号登录到SSMS,在新建查询窗口下输入如下命令,运行并观察结果。 (1) 在新建查询窗口中输入如下SQL语句: USE University_Mis CREATE TABLE Teacher( Tno CHAR(5), Tname CHAR(8) CONSTRAINT U1 UNIQUE, Tsex CHAR(1), Tage INT CONSTRAINT U2 CHECK (Tage<=28), Tdept CHAR(20), CONSTRAINT PK_Teacher PRIMARY KEY(Tno))

第6章 实现数据完整性约束复习题

第6章实现数据完整性约束 一、填空题 1.SQL Server使用声明完整性和两种方式实现数据完整性。 答案:过程完整性 2.完整性,它要求表中所有的元组都应该有一个惟一标识,即主关键字。可以使用约束实现实体完整性,也可以将约束和约束一起使用来实现实体完整性。 答案:实体PRIMARY KEY UNQIUE NOT NULL 3.完整性维护从表中的外码与主表中主码的相容关系。 答案:参照 4.为了保护数据库的实体完整性,当用户程序对主码进行更新使主码值不惟一时,DBMS 就。 答案:拒绝更新 三.简答题 1.什么是数据的完整性? 答: 数据的完整性是指数据的正确性和相容性。 2 .数据库的完整性概念与数据库的安全性概念有什么区别和联系? 答: 数据库的完整性和安全性是两个不同的概念,但是有一定的联系。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出( Garbage In Garbage Out )所造成的无效操作和错误结果。后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。 3 .什么是数据库的完整性约束条件?可分为哪几类? 答:完整性约束条件是指数据库中的数据应该满足的语义约束条件。一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。静态列级约束是对一个列的取值域的说明,包括以下几个方面: ( l )对数据类型的约束,包括数据的类型、长度、单位、精度等; ( 2 )对数据格式的约束; ( 3 )对取值范围或取值集合的约束; ( 4 )对空值的约束; ( 5 )其他约束。静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。 常见的静态关系约束有: ( l )实体完整性约束; ( 2 )参照完整性约束; ( 3 )函数依赖约束。 动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面: ( l )修改列定义时的约束; ( 2 )修改列值时的约束。动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。 4 . DBMS 的完整性控制机制应具有哪些功能? 答:DBMS 的完整性控制机制应具有三个方面的功能: ( l )定义功能,即提供定义完整性约束条件的机制; ( 2 )检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;( 3 )违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定

1完整性约束条件作用的对象有

习题四 一、填空题 1.完整性约束条件作用的对象有,和。 2.静态关系约束包括,,和。 3.有时要删除被参照关系的某个元组,而参照关系有若干元组的外码值与被删除的被参照关系的主码值相同,则系统采取的策略可能有,和。 4.并发操作可能带来的数据不一致性包括:, 和 5.基本的封锁类型包括:和。 6.预防死锁可采用的方法有:和。 7.DBMS系统中可能出现的故障主要分为三种:, 和。 8.数据库转储的方式有和。 二、选择题 1.对于员工信息表,限制其字段“部门”的取值集合是[人事部、销售部、生产部、后勤部],该约束属于。 A.静态列级约束 B.静态元组约束 C.静态关系约束 D.动态元组约束 2.可用于定义两个表之间的关系的约束为。 A.实体完整性约束 B.参照完整性约束 C.函数依赖约束 D.统计约束 3.下列不是事务的特性。 A.原子性 B.一致性 C.隔离性 D.封装性 4.采取技术可以解决事务并发操作中可能带来的数据不一致的问题。 A.封锁 B.完整性控制 C.死锁 D.加密 5.可用使用方法避免活锁。 A.先来后服务 B.先来先服务 C.顺序封锁法 D.超时法 6.由于停电而造成数据库停止运行,属于故障。 A.事务内部故障 B.故障检测

C.事务处理 D.完整性控制 三、问答题 1.什么叫数据库保护?它有哪些内容? 2.什么叫数据库的安全性? 3.什么叫数据库的完整性?目前有哪些完整性保护措施? 4 .数据库安全性和计算机系统的安全性有什么关系? 5.试述可信计算机系统评测标准的情况,试述TDI / TCSEC 标准的基本内容。 6 .试述TcsEC ( TDI )将系统安全级别划分为4 组 7 个等级的基本内容。 7.试述实现数据库安全性控制的常用方法和技术。 8 .什么是数据库中的自主存取控制方法和强制存取控制方法? 9 .SQL 语言中提供了哪些数据控制(自主存取控制)的语句?请试举几 例说明它们的使用方法。 10.请用SQL的GRANT 和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能: ( a )用户王明对两个表有SELECT 权力。 ( b )用户李勇对两个表有INSERT 和DELETE 权力。 ( c ) 每个职工只对自己的记录有SELECT 权力。 ( d )用户刘星对职工表有SELECT 权力,对工资字段具有更新权力。 ( e )用户张新具有修改这两个表的结构的权力。 ( f )用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力。 ( g )用户杨兰具有从每个部门职工中SELECT 最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。 11 .把习题8 中(1)---(7)的每一种情况,撤销各用户所授予的权力 12. 为什么强制存取控制提供了更高级别的数据库安全性? 13.理解并解释MAC 机制中主体、客体、敏感度标记的含义。 14 .什么是数据库的审计功能,为什么要提供审计功能? 15 .统计数据库中存在何种特殊的安全性问题? 16.数据库的完整性概念与数据库的安全性概念有什么区别和联系? 17.什么是数据库的完整性约束条件?可分为哪几类? 18 . DBMS 的完整性控制机制应具有哪些功能?

数据完整性约束-主键约束

数据完整性约束(一) —— SQL Server 2016数据库及应用

由于数据库中的数据是从外界输入的,然而数据的输入由于种种原因,会发生输入无效或错误信息,数据的完整性正是为了保证输入的数据符合规定而提出的。 数据完整性分为四类: 实体完整性、域完整性、参照完整性和用户自定义完整性。

1. 实体完整性: 实体完整性要求如果属性A是关系R的主属性,则属性A不能取空值。实体完整性用于保证关系数据库表中的每条记录都是唯一的,建立主键的目的就是为了实现实体完整性。 2. 域完整性: 用来保证数据的有效性,它可以限制录入的数据与数据类型是否一致,规定字段的默认值,设置字段是否可以为空,域完整性可以确保不会输入无效的数据。

3. 参照完整性:参照完整性是基于外键的,如果表中存在外键,则外键的值必须与主表中的某条记录的被参照列的值相同,参照完整性用于确保相关联表之间的数据保持一致。当添加、删除或修改数据表中记录时,可以借助于参照完整性来保证相关表之间数据的一致性。 ClassNo ClassName Specialty EnterYear Dno 0111801 网络3181 计算机网络技 术 2018 D01 0121901 软件3191 软件技术 2019 D01 主键 Class Sno Sname Sex Birth ClassNo s011180106 陈骏 男 2000/7/5 0111801 s012190118 陈天明 男 2000/7/18 0121901 主键 外键 Student

4. 用户自定义完整性: 用户自定义完整性约束就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。 如何实现数据完整性,可以通过为表的字段设置约束来保证表中数据完整性。

SQL—SERVER—2005数据参照完整性设计

摘要:本文围绕参照完整性内容展开,提到了与参照完整性相关的主键及外键的概念,详细描述了参照完整性的含义及功能,最后介绍了在sql_server_2005中通过外键约束和更新删除规则来实现参照完整性的过程。 关键词:参照完整性;外键约束;更新及删除规则 中图分类号:tp311.52 文献标识码:a 文章编号:1007-9599 (2012)17-0000-02 1 引言 存放在数据库中的数据是从外界输入的,用户在手工输入数据时由于种种原因和疏忽,会产生输入错误或输入信息无效。当数据的准确性得不到保障时,运行在数据库上的应用程序也会产生不可预料的错误和损失,数据完整性也因此而提出。通过数据完整性约束,避免了存在不符合语义规定的数据和因错误信息的输入而造成无效操作等情况发生。 数据完整性包括实体完整性、域完整性、参照完整性和用户自定义完整性四大类。其中参照完整性是较重要和较难理解的,同时也是很容易被用户忽略的,以下主要围绕参照完整性来介绍。 2 与参照完整性相关的概念 2.1 主键 在关系型数据库中,为了标识每一个实体,创建表时一般都要定义一个主键。构成主键的列要能唯一确定表中每一行记录,如学生实体的学号、姓名、性别、出生日期等属性中,学号属性可以作为主键,因为每个学生的学号是唯一的,学号确定了,每个学生也就确定了。而学生姓名在这里是不适合作为主键的,因为要考虑学生同名的情况发生;而性别、出生日期更也就更不能作为主键来处理。 某一列定义为主键时,则必须满足以下两个点:该列上不能取null值,并且不能有重复的值,这两点缺一不可。在输入数据时如违反了主键的规定(取null值和有重复的值),系统将拒绝用户输入,从而保证了现实中的实体完整性和唯一性。 2.2 外键 现实中存在的对象是相互联系的,在关系型数据库中实体间的联系体现在表间的联系上。要将彼此孤立的表联结起来,就要求在表中存在一些列,这些列可以让表间进行关联,那么外键就是可以让表间相互关联的列。对外键的定义如下:某个键同时出现在a和b两个表中,若在表a中它被定义为主键,则在表b中称为外键。如学生表表中有(学号、姓名、性别、出生日期)字段,其中学号为主键;在成绩表中有(成绩编号,学号,课程号,成绩)字段,则成绩表中的学号字段为外键。外键与主键总是不可分的,其中主键所在的表称为主表;外键所在的表称为从表。 3 参照完整性的理解 参照完整性是对相关联的两个表间的一种约束,是用于确保表间数据的保持一致,避免因一个表数据的修改,导致另一个表相关数据失效。它通过对主键和外键在取值上进行检查,要求所有外键的值必须是主键的有效值,即外键的值要么全部来自于主键,要么取空值。 例如,如果在学生表和成绩表之间用学号建立了关联,学生表是主表,成绩表是从表,那么,在向从表中输入一条新记录时,系统要检查新输入的学号值是否是主表中已存在的学生学号,如果存在,则允许执行输入操作,否则拒绝输入。如果没有参照完整性,则可在从表中可以输入任何主表中不存在的学生成绩,试想在现实生活中,这个学生根本就不存在,而却记录了该学生的成绩,这是不符合常理的。 参照完整性还体现在删除和更新操作。当更新、删除一个表中的数据时,通过参照引用相互关联的另一个表中的数据,来检查数据是否正确。例如通过“限制”的原则不允许在主表中修改或删除外表中已有相应值的记录;再如通过“级联”的原则,要求修改或删除主表

数据完整性概述

数据完整性概述 数据完整性是指数据的精确性和可靠性。它是为防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。数据完整性主要分为4类:域完整性、实体完整性、引用完整性和用户定义完整性。 1.域完整性 域完整性是指数据库表中额列必须满足某种特定的数据类型或约束,其中约束又包括取值范围精度等规定。表中的CHECK、FOREING KRY约束和DEFAULT、NOT NULL定义都属于域完整性的范畴。 2.实体完整性 实体完整性规定表的每一行在表中是唯一的。实体表中定义的UNIQUE、PRIMARY KEY和IDENTITY约束就是实体完整性的体现。 3.引用完整性 引用完整性是指两个表的主关键字和外关键字的数据应对应一致。它确保了有主关键字的表中对应其它表的外关键字的行存在,即保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。引用完整性是创建在外关键字和主关键字之间或外关键字和唯一性关键字之间的关系上的。在Oracle中,引用完整性作用表现在如下几个方面: ●禁止在从表中插入包含主表中不存在的关键字的数据行; ●禁止会导致从表中的相应值孤立的主表中的外关键字值改变; ●禁止删除在从表中有对应记录的主表记录。 除此之外,Oracle还提供了一些工具来帮助用户实现数据完整性,其中最主要的是触发器(Trigger)。 4.用户定义完整性 用户定义完整性指的是由用户指定的一组规则,它不属于实体完整性、域完整性或引用完整性。约束(Constraint)作为实现数据库完整性的一种重要方法,可以完成域完整性、实体完整性和引用完整性的要求。约束一般定义在表的一个列上,实现了约束的列将具有制定的完整性约束。Oracle红的约束主要包括非空约束、检查约束、唯一约束、主键约束和外键约束。

用户自定义完整性

实验9. 用户自定义完整性 9.1实验目的 学习用户自定义约束,并实践用户自定义完整性,利用SQL语言用短语NOT NULL、UNIQUE、CHECK保证用户定义完整性。 9.2实验内容(建议将表改成Teachers,相应属性以T开始命名,如Tname)建立Teacher表。 建立表Teacher,注意跟前面所建立的Teacher区分开来, (1)创建Worker,Teacher表,并自定义2个约束U1以及U2,其中U1规定Wname Tname字段 唯一,U2规定Wage, Tage (级别)字段的上限是28。 (2)在Worker, Teacher表中插入一条合法记录。 (3)演示插入违反U2约束的例子,U2规定元组的Wage,Tage属性的值必须<=28。 (4)去除U2约束。 (5)重新插入(3)中想要插入的数据,由于去除了U2约束,所以插入成功。 (6)创建规则Rule_sex,规定插入或更新的值只能是M或F,并绑定到Worker Teacher的Wsex Tsex字段。 (7)演示违反规则Rule_sex的插入操作。 9.3实验步骤 以系统管理员或sa帐号登录到SSMS,在新建查询窗口下输入如下命令,运行并观察结果。 (1) 在新建查询窗口中输入如下SQL语句: USE University_Mis CREATE TABLE Teacher( Tno CHAR(5), Tname CHAR(8) CONSTRAINT U1 UNIQUE, Tsex CHAR(1), Tage INT CONSTRAINT U2 CHECK (Tage<=28), Tdept CHAR(20), CONSTRAINT PK_Teacher PRIMARY KEY(Tno)) (2) 在新建查询窗口中输入如下SQL语句 USE University_Mis INSERT INTO Teacher (Tno, Tname,Tsex, Tage,Tdept) VALUES(‘T01’,’李用’,’M’,14,’后勤部’) SELECT * FROM Teacher

数据库实验报告完整性约束

数据库实验报告完整性约束

大连海事大学 数据库原理课程实验大纲 实验名称:实验七完整性实验学时: 2 适用专业:智能科学与技术 实验环境: Microsoft SQL server 2014 1实验目的 (1)掌握实体完整性、参照完整性和用户自定义完整性约束的创建方法。 (2)掌握完整性约束的运行检查机制。 (3)掌握参照完整性的级联删除和修改方法。(4)掌握正确设计关系模式完整性约束的方法。 2实验内容 2.1 掌握实体完整性约束的创建和使用方法 (1)创建表时定义由一个属性组成的主键(给约束命名)。 (2)创建表时定义由两个或两个以上属性组成的主键(给约束命名)。 (3)删除以上两个主键约束。 (4)利用ALTER TABLE语句定义上述两个主键。

2.2 掌握参照完整性约束的创建和使用方法 (5)创建表时定义一个列级参照完整性约束(给约束命名)。 (6)创建表时定义一个表级的由两个属性组成的参照完整性约束(给约束命名)。 (7)设计数据更新语句检查参照完整性约束是否起作用。 (8)删除上述完整性约束。 (9)利用ALTER TABLE 建立上述参照完整性约束,并且规定UPDATE/DELETE时的动作。(10)设计数据更新语句检查参照完整性约束及其相应的动作是否起作用。 2.3 掌握用户自定完整性约束的创建和使用方法 (11)定义一个检查约束,检查其值在某个取值范围内,并设计相应的更新语句检查该约束是否起作用? (12)定义一个检查其值符合某个匹配模式的检查约束(使用LIKE),并设计相应的更新语句检查该约束是否起作用? (13)定义一个检查其值符合某个正则表达式的检查约束(使用SIMILAR TO),并设计相应的更新语句检查该约束是否起作用?

SQL SERVER数据完整性及约束

龙源期刊网 https://www.doczj.com/doc/2916088606.html, SQL SERVER数据完整性及约束 作者:李浩周媛媛 来源:《科技与企业》2013年第15期 【摘要】所谓数据完整性,实际上是衡量数据库中数据质量好坏的一种标志,是确保数据库中数据一致,正确以及符合企业规则的一种思想,本文以详细的文字来介绍了什么是数据完整性及约束,以及如何在数据库建设中应用和使用这些约束。 【关键词】SQL Server;约束;数据完整性;一致性 在数据库管理系统中,保证数据库中的数据完整性是非常重要的。所谓数据完整性,就是指存储在数据库的表中数据的一致性和正确性。约束定义关于列中允许值的规则,是强制完整性的标准机制,对输入数据的取值范围和格式的限制称为约束。约束是用来保证数据完整性的。在SQL Server中有6种常设约束:空置约束(NULL)、唯一性约束(unique constraint)、主键约束(primary key constraint)、外键约束(foreign key constraint)、检查约束(check constraint)、缺省约束(default constraint)。 一、SQL Server的数据完整性 存储在数据库中的所有数据值均属正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。 强制数据完整性可确保数据库中的数据质量。例如,如果有一“教学管理数据库”,学生表中学号一项输入了值为20110101的学生,那么该数据库不应允许其他学生使用同一学号值。如果计划将选修表中成绩的值范围设定为0到100,则数据库不应接受121。如果学生表有一列为班级编码,该列存储的班级编码为数据库中允许的有效班级编码。 二、数据完整性分类 在SQL Server中,根据数据完整性所作用的数据库对象和范围不同,可以将数据完整性 分为实体完整性、域完整性、引用完整性、用户定义完整性四种。 1、实体完整性 实体完整性,简单来说,就是将表中的每一行看作一个实体。实体完整性要求表的标示符列或主键的完整性(主键不能为空)。可以通过建立唯一索引、PRIMARY KEY约束、UNIQUE约束来实施实体完整性。 2、域完整性

数据库系统2-3:参照完整性约束

数据库系统2-3:参照完整性约束 在关系模型中,实体与实体之间的关联同样采用关系模式来描述。通过引用对应实体的关系模式的主码来表示对应实体之间的关联。 定义:设F是基本关系R的一个或一组属性,但不是R的主码,若F与基本关系S的主码K相对应,则称F是基本关系R的外码。 其中R为参照关系,S为被参照关系(也称目标关系),而且F和K必须定义在同一个域上。 例如,关系模式:部门(部门编码,部门名称,电话,办公地址) 职工(职工编码,姓名,性别,年龄,籍贯,所属部门编码) 其中职工关系模式中的“所属部门编码”与部门关系模式中的主码“部门编码”相对应,所以“所属部门编码”是职工关系模式中的外码。职工关系模式通过外码来描述与部门关系模式的关联。职工关系中的每个元组(每个元组描述一个职工实体)通过外码表示该职工所属的部门。当然,被参照关系的主码和参照关系的外码可以同名,也可以不同名。被参照关系与参照关系可以是不同关系,也可以是同一关系。 例如,职工(职工编码,姓名,性别,年龄,籍贯,所属部门编码,班组长编码) 其中“班组长编码”与本身的主码“职工编码”相对应,属性“班组长编码”是外码,职工关系模式既是参照关系也是被参照关系。 参照完整性规则:若属性F是基本关系R的外码,且F与基本关系S的主码K相对应,则对于R中每个元组在F上的值必须为: (1)或者取空值 (2)或者等于S中某个元组的主码值。 在职工关系中,某一个职工“所属部门编码”要么取空值,表示该职工未被分配到指定部门。要么等于部门关系中某个元组的“部门编码”,表示该职工隶属于指定部门。若既不为空值,又不等于被参照关系——部门中某个元组的“部门编码”分量,表示该职工被分配到一个不存在的部门,则违背参照完整性规则。所以,参照完整性规则就是定义外码与主码之间的引用规则,也是关系模式之间关联的规则。 【

数据控制(完整性部分)

数据控制(完整性部分) 杨凌霄 20110801230 计科2班 一、实验内容和要求 使用SQL对数据进行完整性控制(3类完整性、CHECK短语、CONSTRAIN 子句、触发器)。用实验证实,当操作违反了完整性约束条件时,系统是如何处理的。根据以下要求认真填写实验报告,记录所有的实验用例。 二、实验结果 1.三类完整性、CHECK短语 用户自定义完整性:在CREATE TABLE中定义属性的同时可以根据应用要求,定义属性上的约束条件,即属性值限制,包括:列值非空(NOT NULL 短语),列值唯一(UNIQUE短语),检查列值是否满足一个布尔表达式(CHECK短语)。 代码如下: 2. CONSTRAIN子句、 CONSTRANT完整性约束命名子句:SQL在CREATE TABLE语句中提供了完整性约束命名子句CONSTRANT,用来对完整性约束条件命名,从而可以灵活地增加,删除一个完整性约束条件。 完整性约束命名字句:

3.触发器 触发器:触发器是由用户定义在关系表上的一类由事件驱动的特殊过程。触发器类似于约束,但是比约束更加灵活,可以实施比FOREIGN KEY约束,CHECK约束更为复杂的检查和操作,具有更精细和更强大的数据控制能力。 触发器分为三类:更新触发器,插入触发器,删除触发器。 能够定义触发器的用户有:表的所有者,系统管理员,拥有创建触发器的权限且拥有对操作对象的相应的操作权限的用户。 (1)创建触发器:(after 行级触发器) 激活触发器:

(2)插入触发器: 激活触发器如下图所示:

(3)创建触发器:(instead 表级触发器) 激活触发器:

实验一 数据定义和完整性(带答案)

实验一数据定义和数据库的完整性(4学时) 实验目的: 1、掌握SQL的数据定义功能 2、掌握SQL语言对数据库完整性的支持。 实验内容: 1、建立一个数据库XSCJ,自行规定数据文件和日志文件各项参数。 2、参照课本79页建立Course表,并录入数据库表中相应元组。 3、修改Course表增加一列,开课学期,数据类型自行定义。 4、为Course表的Cname列建立一个唯一索引,索引名Cname_idx。 5、删除唯一索引Cname_idx。 6、删除基本表Student。 7、删除数据库XSCJ 8、创建创建一个名为BSXT的数据库,其初始大小为5MB,最大大小10MB,允许数据库自动增长,增长方式是按10%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。 AR9、将以上BSXT据库的主数据文件的最大大小改为不限制。 10、。在BSXT系统中建立表1至表3共张表,要求采用T-SQL提供的六种约束创建三张表的实体完整性、参照完整性和用户定义的完整性定义 表1 学生表(student)

表2 教师表(Teacher) 表3 毕业设计题目信息表

/* --建立一个数据库XSCJ,自行规定数据文件和日志文件各项参数 --参照课本79页建立Course表,并录入数据库表中相应元组 CREATE TABLE Course (Cno CHAR(1) PRIMARY KEY, Cname CHAR(10), Cpno CHAR(1), Ccredit CHAR(1), FOREIGN KEY(Cpno) REFERENCES Course(Cno) ) */ /* --修改Course表增加一列,开课学期,数据类型自行定义 AlTER TABLE Course ADD Csemester CHAR(10) */ /* --为Course表的Cname列建立一个唯一索引,索引名Cname_idx CREATE UNIQUE INDEX Cname_idx ON Course(Cname) */ /* --删除唯一索引Cname_idx DROP INDEX https://www.doczj.com/doc/2916088606.html,ame_idx */ /* --删除基本表Course DROP TABLE Course */ --删除数据库XSCJ /* --创建创建一个名为BSXT的数据库,其初始大小为5MB,最大大小10MB,允许数据库自动增长,增长方式是按10%比例增长; --日志文件初始为2MB,最大可增长到5MB,按1MB增长 --将以上BSXT据库的主数据文件的最大大小改为不限制 --在BSXT系统中建立表1至表3共张表 --要求采用T-SQL提供的六种约束创建三张表的实体完整性、参照完整性和用户定

建立表和定义完整性约束

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称数据库系统及应用 项目名称建立表和定义完整性约束 班级 学号 姓名 实验日期 2015/10/27

一、实验目的与要求:熟练掌握表的建立和数据完整性约束的定义方法,实践DBMS提供的数据完整性功能,加深对数据完整性的理解。 实验要求:(1)用CREATE DATABASE命令建立数据库(自己命名数据库的名称)。 (2)用CREATE SCHEMA命令建立架构(自己命名架构的名称)。 (3)在定义的架构下参考课本138页图5-1所示的样本数据库和表5-8具体要求使用TABLE命令建立表并定义完整性约束。 (4)使用ALTER TABLE命令按如下要求修改表结构: ①为学生表增加一个“平均成绩”字段,类型为短整形,默认是空值; ②为课程表的“学时”字段重新定义约束:取值为8的倍数,不允许为空值; ③将院系表的名称字段的类型修改为varchar(30)。 ④为教师表增加一个工资字段,类型为5位整数、2位小数的数值型。 二、实验方法:(代码) --create database create database 学生管理系统 create table yuanxi ( 编号 smallint primary key, 名称 char(20) unique not null, 负责人 char(10), 办公地点 char(20) ) --drop table yuanxi create table xuesheng (

学号 char(8) primary key, 院系 smallint foreign key references yuanxi(编号), 姓名 char(10) not null, 性别 char(2) check (性别 = '男' or 性别 = '女'), 生源 char(6), 状态 char(4) check (状态 = '正常' or 状态 = '留级' or 状态 = '休学' or 状态 = '退学') ) create table jiaoshi ( 教师编号 char(8) primary key, 院系 smallint foreign key references yuanxi(编号), 姓名 char(10) not null, 性别 char(2) check (性别 = '男' or 性别 = '女'), 职称 char(6) check (职称 = '教授' or 职称 = '副教授' or 职称 = '讲师' or 职称 = '助教'), 专业 char(10) ) create table kecheng ( 课程编号 char(8) primary key, 课程名称 char(20) not null, 负责讲师 char(8) foreign key references jiaoshi(教师编号), 学时 smallint not null, 课程性质 char(10) check(课程性质 = '公共基础' or 课程性质 = '专业基础' or 课程性质 = '专业选修' or 课程性质 = '任意选修') ) create table xuanke ( 学号 char(8) foreign key references xuesheng(学号), 课程编号 char(8) foreign key references kecheng(课程编号),

相关主题
文本预览
相关文档 最新文档