文档库 最新最全的文档下载
当前位置:文档库 › 数据完整性约束

数据完整性约束

数据完整性约束
数据完整性约束

oracle数据完整性约束

一、建立三张表

create table xsb(

xh char(3), --学号

xm varchar2(20), --姓名

xb char(4), --性别

zy varchar2(20), --专业

xy varchar2(20)); --学院

create table kcb(

kch char(3), --课程号

kcm varchar2(20), --课程名

xf number(3)); --学分

create table cjb(

xh char(3), --学号

kch char(3), --课程号

cj number(5,2)); --成绩

二、添加一些约束条件

alter table xsb add constraint pk_xh primary key(xh);

alter table cjb add constraint ck_cj check(cj>0 and cj<=100);

alter table kcb add constraint ch_xf check(xf between 0 and 6);

alter table kcb add constraint pk_kch primary key(kch);

alter table cjb add constraint fk_xh foreign key(xh) references xsb(xh) on delete cascade;

alter table cjb add constraint fk_kch foreign key(kch) references kcb(kch);

alter table xsb add constraint ck_xb check(xb in('m','f'));

删除约束:

alter table xsb drop constraint ck_xb;

三、测试约束的设置

--xsb

insert into xsb(xh,xm,xb) values('001','zhangsan','f');

insert into xsb(xh,xm,xb) values('002','lisi','f');

--测试检查约束CK_XB

insert into xsb(xh,xm,xb) values('003','wangwu','l');

ORA-02290: check constraint (LIUHUA.CK_XB) violated

--测试主键约束

insert into xsb(xh,xm,xb) values('003','wangwu','f');

ORA-00001: unique constraint (LIUHUA.PK_XH) violated

--kcb

insert into kcb(kch,kcm,xf) values('c01','C language',5.0);

insert into kcb(kch,kcm,xf) values('c02','java language',4.5);

--测试检查约束ck_xf 0-6

insert into kcb(kch,kcm,xf) values('c03','java language',6.5);

ORA-02290: check constraint (LIUHUA.CH_XF) violated

--测试主键约束pk_kch

insert into kcb(kch,kcm,xf) values('c03','java language',5.5);

ORA-00001: unique constraint (LIUHUA.U_KCH) violated

--cjb

insert into cjb(xh,kch,cj) values ('001','c01',70);

insert into cjb(xh,kch,cj) values ('002','c01',80);

--测试检查约束CK_CJ 0-100

insert into cjb(xh,kch,cj) values ('002','c01',120);

ORA-02290: check constraint (LIUHUA.CK_CJ) violated

--测试外键约束FK_XH

insert into cjb(xh,kch,cj) values ('004','c02',80);

ORA-02291: integrity constraint (LIUHUA.FK_XH) violated - parent key not found --测试外键约束FK_KCH

insert into cjb(xh,kch,cj) values ('003','c03',80);

ORA-02291: integrity constraint (LIUHUA.FK_KCH) violated - parent key not found

四、测试删除数据及表

4.1测试删除数据(可以使用rollback 回滚)

--1 删除xsb中xh为001的学生

delete from xsb where xh=001;

1 row deleted

--由于fk_xh外键为on delete cascade,所以成功删除,且cjb中,学号为001的所有记录也被级联删除;

alter table cjb add constraint fk_xh foreign key(xh) references xsb(xh) on delete cascade;

--2 删除kcb中kch为C01的课程信息

delete from kcb where kch='c01';

ORA-02292: integrity constraint (LIUHUA.FK_KCH) violated - child record found --可以先删除cjb中选修了课程号为C01的记录

delete from cjb where kch='c01';

delete from xsb where xh=001;

--由于on delete cascade 太霸道了,要求在删除父表数据的时候,子表的相关项置为空

-- 删除之前的外键约束fk_kch,重现建立

alter table cjb drop constraint fk_kch;

--增加之前要求的外键约束操作

alter table cjb add constraint fk_kch foreign key(kch) references kcb(kch) on delete set null; --级联设置为空

--删除主表数据,查看结果

delete from kcb where kch='c01';

--查询cjb中,选修了课程号为C01的该课程记录为空

--也可以按照上面删除的操作进行

4.2 删除表(可以使用flashback 闪回)

--删除表是先删除子表,在删除父表,否则删除不成功

--删除课程表

drop table kcb;

ORA-02449: unique/primary keys in table referenced by foreign keys

--删除cjb

drop table cjb;

drop table kcb;

--闪回表

flashback table kcb to before drop;

flashback table cjb to before drop;

--此种情况需要清理父子关系,很麻烦,使用下面的强制删除语句

drop table kcb cascade constraint;

五、触发器(以xsb为例,其余的表类似进行即可)

5.1 dml触发器

create or replace trigger secure_dml_xsb

before delete or update or insert on xsb

for each row

begin

case

when deleting then

raise_application_error(-20001, '不能删除数据');

when updating then

raise_application_error(-20002,'不能修改数据');

when inserting then

raise_application_error(-20003,'不能插入数据');

end case;

end ;

5.2 创建一个存储用户信息的表

create table dropped_objects(

object_name varchar2(30),

object_type varchar2(20),

drop_date date);

--dml创建触发器,实时监控

create or replace trigger secure_ddl_xsb

before alter or drop on liuhua.schema

begin

insert into dropped_objects(object_name,object_type,drop_date)

values(ora_dict_obj_name,ora_dict_obj_type,sysdate);

end ;

如果觉得触发器妨碍操作,可以禁用触发器,在需要的时候在启用

--禁用触发器

alter trigger secure_ddl_xsb disable;

--启用触发器

alter trigger secure_ddl_xsb enable;

PS:

至此,实验结束,可能会有所遗漏,期望和大家一起探讨。

8实验八 数据库的完整性

实验八实现数据完整性一、实验目的 (1)实现数据完整性的概念及实施数据完整性的重要性。 (2)掌握数据完整性的分类。 (3)掌握完整性约束的添加、删除方法。 (4)掌握通用默认值的创建、实施与删除方法。 (5)掌握规则的创建、实施与删除方法。 (6)掌握级联删除、级联修改方法。 二、实验内容 1、完整性约束的添加、删除 (1)通过SQL Server Management Studio实施约束 a.为表Student的Birth字段创建检查约束,使输入的生日日期小于系统日期。 ①、选择Student表,右击→设计,打开Student表 ②、选择Birth一行,右击→CHECK约束,打开界面如下图所示 ③、单击“添加” ④、在表达式中写入:Entrance_date

b.为表Student的Sdept字段,设置默认值约束,默认值取’计算机系’。选择Sdept一行,在其列属性中修改其默认值 c.为Student表的Sname字段添加唯一性约束。 选择Sname一行,右击→索引/键 出现如下界面:

单击“添加”,在类型中选择“唯一键”,在列中选择“Sname”,名称自定义 最后单击“关闭”退出

d.将SC表的Sno,cno字段设置外键约束,约束名自已取,并允许级联删除与级联更新。(此要求在SQL Server2008R2中无法做出)若已存在外键约束,请先删除。 ①、选中Sno,右击→单击“关系”,出现如下信息,可见已存在外键约束 选中键,点击删除,完成约束删除 ②、添加约束: 选中Sno,右击,选择“关系”,出现如下信息,

数据库完整性

第五章数据库完整性 一、选择题 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的完整性控制机制应具有哪些功能?

完整性约束

完整性约束实验 实验目的:熟悉通迷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版(王珊、萨师煊)课后答案第5章 数据库完整性

第5章数据库完整性 1.什么是数据库的完整性? 答: 数据库的完整性是指数据的正确性和相容性。 2.数据库的完整性概念与数据库的安全性概念有什么区别和联系? 答: 数据的完整性和安全性是两个不同的概念,但是有一定的联系。 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garba : e In Garba : e out )所造成的无效操作和错误结果。 后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。 3.什么是数据库的完整性约束条件? 答:完整性约束条件是指数据库中的数据应该满足的语义约束条件。 一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。 常见的静态关系约束有:实体完整性约束;参照完整性约束;函数依赖约束。 4.关系DBMS 的完整性控制机制应具有哪些功能? 答: DBMS 的完整性控制机制应具有三个方面的功能: 1)定义功能,即提供定义完整性约束条件的机制; 2)检查功能,即检查用户发出的操作请求是否违背了完整性约束条件; 3)违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定 的动作来保证数据的完整性。 5.关系DBMS 在实现参照完整性时需要考虑哪些方面? 答:关系DBMS 在实现参照完整性时需要考虑以下几个方面: 1)外码是否可以接受空值。 2)被参照关系中删除元组或修改主码时,若使参照关系在被参照关系中找不到与之 相等的属性值,系统可选择的作法有三种:拒绝执行(默认策略)、 级联操作、设置为空值。 3)参照关系中插入或修改元组时,若使参照关系在被参照关系中找不到与之相等的 属性值,系统可选择的作法有三种:拒绝执行(默认策略)、级联操作(CASCADE)、 设置为空值。 6.假设有下面两个关系模式: 职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码; 部门(部门号,名称,经理名,电话),其中部门号为主码。 用sQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义: 1)定义每个模式的主码; 2)定义参照完整性; 3)定义职工年龄不得超过60 岁。 CREATE TABLE 职工 (职工号CHAR(10), 姓名CHAR(10), 年龄NUMERIC (3), CONSTRAINT C1 CHECK (年龄<=60),

第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 )违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定

数据库完整性

大连海事大学 数据库原理课程实验大纲 实验名称:实验七完整性实验学时: 2 适用专业: 实验环境: 执笔者:编写日期: 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),并设计相应的更新语句检查该约束是否起作用? (14)定义一个UNIQUE约束,并设计相应的更新语句检查该约束是否起作用? (15)定义一个DEFAULT约束,设计一个INSERT语句检查该约束是否起作用。 3实验要求 (1)深入复习教材第五章数据库完整性约束内容。 (2)根据书上的例子,针对TPCH数据库模式设计各种完整性约束,每种类型完整性约束至少要设计一个,描述清楚完整性约束要求,设计和运行触发完整性约束检查的数据更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附1所列示例做实验。(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。 (4)思考题:完整性约束的违约处理有哪几种方式? 4实验步骤 4.1 掌握实体完整性约束的创建和使用方法 (1)创建表时定义由一个属性组成的主键(给约束命名)。 创建零件表part时定义主键。/ CREATE TABLE PART (PARTKEY INTEGER, MFGR CHAR(100), TYPE CHAR(25), SIZE INTEGER, NAME CHAR(55), CONTAINER CHAR(10), BRAND CHAR(10), RETAILPRICE REAL, COMMENT VARCHAR(23), CONSTRAINT PARTY PRIMARY KEY(PARTKEY))

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

第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中相应部分。

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

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

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

大连海事大学 数据库原理课程实验大纲 实验名称:实验七完整性实验学时: 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.wendangku.net/doc/b85264342.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、域完整性

数据库完整性-习题解答

第十章数据库完整性 习题解答和解析 1.什么是数据库的完整性 答:数据库的完整性是指数据的正确性和相容性。 2.数据库的完整性概念与数据库的安全性概念有什么区别和联系 答:数据的完整性和安全性是两个不同的概念,但是有一定的联系。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garbage In Garbage Out)所造成的无效操作和错误结果。后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。 3.什么是数据库的完整性约束条件可分为哪几类 答:完整性约束条件是指数据库中的数据应该满足的语义约束条件。一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。 静态列级约束是对一个列的取值域的说明,包括以下几个方面: (1)对数据类型的约束,包括数据的类型、长度、单位可精度等; (2)对数据格式的约束; (3)对取值范围或取值集合的约束; (4)对空值的约束; (5)其他约束。 静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。 静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。常见的静态关系约束有: (1)实体完整性约束; (2)参照完整性约束; (3)函数依赖约束。 动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:(1)修改列定义时的约束; (2)修改列值时的约束。 动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。

关系模型的完整性约束

关系模型的完整性约束 关系模型的完整性约束是对关系中数据的约束,其目的是保证在对关系中的数据进行操作时保持数据的有效性和一致性。关系模型中包括了3类完整性约束,即实体完整性、参照完整性和用户定义的完整性。 1.实体完整性 实体完整性(Entity Integrity Constraint)规则:若属性A是关系R的主属性,则属性A的值不能为空值。 实体完整性规则具体说明如下: (1)使用“Null”表示空值,表示的不是空格值,而是表示“不知道”、“不存在”或“无意义”的值。 (2)实体完整性规则是针对基本关系的。一个基本表通常对应现实世界的一个实体集。 (3)实体完整性规则可以保证实体是可区分的。如果主属性取空值Null,就表明实体集中存在不可标识的实体,即存在不可区分的实体,这显然违背了现实世界。 (4)实体完整性规则可以保证实体的唯一性。关系中使用主码作为唯一性标识,因此,不允许主码中的属性出现重复值。 例如,学生档案表中的学号是主属性,学号属性不允许为空值,而其他属性,如“性别”为空,则仅仅表明该学生的这些特征值还不清楚,但不影响该元组所表达的意义和它所具有的唯一性。 2.参照完整性 参照完整性(Referential Integrity Constraint)规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K s相对应(基本关系R和S可以是不同的关系),则对于关系R中每个元组在F上的值必须取空值(F的每个属性值均为空值)或者等于关系S

中某个元组的主码值。 例如,有学生档案、专业两个关系,其关系模型表示如下: 学生档案(学号,姓名,性别,年级,专业编号) 专业(专业号,专业名称,所属学院) (1)外码和参照关系 设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码K s相对应,则称F是基本关系R的外码(Foreign Key),并称基本关系R为参照关系(Referencing Relation),基本关系S为被参照关系(Referenced Relation)。需要说明的是,R的外码F与S的主码K s必须来自于同一个域。 例如,专业关系的专业号与学生档案的专业编号相对应,因此专业编号是学生档案关系的外码。同时,学生档案关系是参照关系,而专业关系是被参照关系。 (2)参照完整性规则 上例中,专业编号是学生档案关系的外码,它的值将参照专业关系的主码(专业号)属性。它的取值只能是: ●空值:表示该学生至今还未分配专业; ●非空值:该值只能来自于专业关系的专业编号属性中的某一个值。 3.用户定义的完整性 用户定义的完整性(User-Defined Integrity Constraint)是针对某一具体关系数据库的约束条件,它反映的是某一具体应用所涉及的数据必须满足的语义要求。数据库管理系统(DBMS)都应该提供定义和检验这类完整性机制,以便统一检验和处理这种约束,而不再由应用程序来提供这个功能。 例如,人员的“性别”属性的取值只能是“男”或“女”,“成绩”属性的取值范围在0~100之间。因此,当用户向关系表中输入数据时,如果某个属性定义了约束,数据库管理系统(DBMS)会自动检测输入值是否符合约束条件,若不符合,数据库管理系统(DBMS)会拒绝该值的输入,从而保证了数据输入的合理性。

数据库技术与应用第5章 习题答案

第5章数据库完整性与安全性 1. 什么是数据库的完整性什么是数据库的安全性两者之间有什么区别和联系 解: 数据库的完整性是指数据库中数据的正确性、有效性和相容性,其目的是防止不符合语义、不正确的数据进入数据库,从而来保证数据库系统能够真实的反映客观现实世界。 数据库安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。 数据的完整性和安全性是两个不同的概念,但是有一定的联系: 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。 2. 什么是数据库的完整性约束条件完整性约束条件可以分为哪几类 解: 完整性约束条件是指数据库中的数据应该满足的语义约束条件。一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。静态列级约束是对一个列的取值域的说明,包括以下几个方面:①数据类型的约束,包括数据的类型、长度、单位、精度等;②对数据格式的约束;③对取值范围或取值集合的约束; ④对空值的约束;⑤其他约束。静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。常见的静态关系约束有:①实体完整性约束;②参照完整性约束;③函数依赖约束。动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:①修改列定义时的约束;②修改列值时的约束。动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。 3. 试述DBMS如何实现完整性控制。 解: 为了维护数据库的完整性,DBMS提供了以下三种机制: ①完整性约束条件定义完整性约束条件也称为完整性规则,是数据库中的数据必须满足的语义约束条件。SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性。这些完整性一般由SQL的DDL语义来实现。它们作为数据库模式的一部分存入数据字典中。 ②完整性检查方法检查数据是否满足已定义的完整性约束条件称为完整性检查。一般在INSERT、UPDATE、DELETE语句执行后开始检查,也可以在事务提交时检查。检查这些操作执行后数据库中的数据是否违背了完整性约束条件。 ③违约处理若发现用户操作违背了完整性约束条件,应采取一定的措施,如拒绝(NOACTION)执行该操作,或级连(CASCADE)执行其它操作,进行违约处理以保证数据的完整性。 4. 现有以下四个关系模式: 供应商(供应商编号,姓名,电话,地点),其中供应商编号为主码;

数据库完整性与安全性实验

1.实验五数据库完整性与安全性实验 1.1 实验目的 1.通过对完整性规则的定义实现,熟悉了解Mysql中完整性保证的规则和实现方法,加深对 数据完整性的理解。 2.通过对安全性相关内容的定义,熟悉了解Mysql中安全性的内容和实现方法,加深对数据 库安全性的理解 1.2 实验内容 1.2.1 完整性实验 (1)分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;(2)分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束; (3)向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;(4)删除学生表中的所有数据,验证参照完整性约束; (5)定义存储过程,完成查询某个学生的选课情况,并执行。 (6)定义触发器,当向学生表插入新的一条记录时,将所有学生出生日期加1;并对其进行测试。 (7)用sql完成以上操作。 1.2.2 安全性实验 (1)定义一新的登陆帐号、数据库用户,并授予其访问学生数据库的读权限; (2)分别用sa用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改;(3)再次用此用户访问学生数据库,并对其中的学生表数据进行修改。 (4)用SQL语句分别完成以上内容。 1.3 实验环境 Window8操作系统 Mysql 8.0版本数据库 Mysql workbench 8.0可视化工具 Mysql命令行编辑器

1.4 实验步骤及结果分析 1.4.1 完整性 1.4.1.1 分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束 1.首先因为在之前创建表的时候定义了主键,因此,我们需要先将所有表的主键撤销掉,然后 重新创建主键。 Mysql语句(删除主键): alter table student drop primary key; alter table course drop primary key; alter table sc drop primary key; 2.重新创建主键 Mysql语句(创建主键): alter table student add primary key(sno); alter table course add primary key(cno); alter table sc add primary key(sno,cno); 3.到此,我们已经重新添加了各表的主键,接下来我们为SC表添加外键。 Mysql语句(创建外键): alter table sc add constraint foreign key(sno) references student(sno); alter table sc add constraint foreign key(cno) references course(cno);

SQL SERVER数据完整性及约束

SQL SERVER数据完整性及约束 【摘要】所谓数据完整性,实际上是衡量数据库中数据质量好坏的一种标志,是确保数据库中数据一致,正确以及符合企业规则的一种思想,本文以详细的文字来介绍了什么是数据完整性及约束,以及如何在数据库建设中应用和使用这些约束。 【关键词】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、域完整性 域完整性是指给定列的输入有效性。要求表中指定列的数据具有正确的数据类型、格式和有效的数据范围。强制域有效性的方法有:限制类型(通过数据类

6实验六-数据库完整性

实验报告书 课程名《数据库原理与应用A 》题目:数据库完整性 班级: 学号: 姓名:

1、实验内容或题目 数据库完整性 2、实验目的与要求 (1)掌握sql server 2005 数据库完整性的机理,理解并掌握约束。 (2)进行实验操作。 3、实验步骤与源程序 ⑴实验步骤 掌握Sql server 2005基本语句的使用,主要是PRIMARY KEY约束、FOREIGN KEY约束、UNIQUE 约束、CHECK约束、NOT NULL。 练习Sql server 2005基本语句的使用。 完成实验报告。 ⑵编写源代码 SQLQuery1(例13.1,在test数据库中创建department表,其中指定dno为主键): use test go create table department ( dno int primary key, dname char(20), ) go SQLQuery2(例13.2,使用FOREIGN KEY子句进行相关操作): use test go create table worker (no int primary key, name char(8), sex char(2), dno int foreign key references department(dno) on delete no action, address char(30) )

go SQLQuery3(例13.3,在test数据库中创建table5表,其中指定c1列不能包含重复的值): use test go create table table5 ( c1 int unique, c2 int ) go insert table5 values(1,100) go /*插入下一行,则会出现错误消息*/ insert table5 values(1,200) SQLQuery4(例13.4,在test数据库中创建table6表,其中使用CHECK约束限定f2列为0-100分): use test go create table table6 ( f1 int, f2 int not null check(f2>=0 and f2<=100) ) go /*插入下一行,则会出现错误消息*/ insert table6 values(1,120) SQLQuery5(例13.5,在test数据库中创建table7表,其主键为c1和c2,将其中插入两个记录,输出这些记录): use test go create table table7 ( c1 int, c2 int, c3 char(5), c4 char(10), constraint c1 primary key(c1,c2) ) go use test insert table7 values(1,2,'ABC1','XYZ1') insert table7 values(1,2,'ABC2','XYZ2') go select*from table7 go

相关文档