数据库5关系数据库完整性实验

合集下载

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

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

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

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

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

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

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

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

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

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

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

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

数据库实验_实验-5-完整性约束

数据库实验_实验-5-完整性约束

试验五数据控制(完整性)
一、实验目的
熟悉SQL语句对数据库进行完整性控制的方法。

二、实验环境
微机;
Windows xp操作系统;
安装了SQL SERVER。

三试验内容
使用SQL进行数据完整性控制:包括三类完整性、check短语、constrain子句。

1、在创建下列关系表时完成如下约束:定义实体完整性;参照完整
性(外码、在删除S中的元组时级联删除SC中相应元组、当更
新S中的Sno时同时更新SC中的Sno);用户定义完整性:学
生年龄<30、所在系取值唯一。

2、修改S中的约束条件,学号在100-1000之间。

学生关系表S :
创建课程关系表C :
创建成绩关系表SC :
3、用实验验证当操作违反了完整性约束时,系统如何处理?
问题:外键与参照主键是否一定要相同?。

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

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

实验五数据库完整性与安全性实验实验内容完整性实验与要求:1分别定义数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;该操作在实验2中已完成2向学生表插入具有相同学号的数据,验证其实体完整性约束;insertinto student values('g9940201','wangyu','1','9/1/1998','g99401','1999-9-1','背景');3向学生表中插入一条数据,班级号是学生表的外键,验证参照完整性约束;insertinto student values('g9940305','wangyu','1','9/1/1998','g99408','1999-9-1','背景');4删除教师表中的所有数据,验证参照完整性约束;deletefrom teacher5创建一个规则,将其绑定到Student表的Sex列上,保证输入的性别值是0或1Createrule value_sex1as@value in('0','1')GoExec sp_bindrule'value_sex1','student.sex'Go6为Student表增加一列,命名为dept,创建一个默认对象,将其绑定到Student表的dept列上,使其默认值为电子院。

Createdefault系默认as'电子院'GoExec sp_bindefault'系默认1','student.dept'Go安全性实验内容与要求:1定义一新的登录帐号、数据库用户,并授予其访问学生选课数据库的读权限;create login aaawith password='123',default_database=shiyancreate user wangyufor login aaawith default_schema=dbo2分别采用Windows NT/2000验证方式和Windows NT/2000及混合验证方式用不同的用户进行登录连接;3分别用sa用户和新定义的用户访问学生数据库,并对其中的学生表数据进行修改;insertinto student(student_id,entrance_date)values('g9940215','1999-9-1');4创建数据库角色,并授予访问数据库的读、写权限;sp_addrole'db_read_write1'gograntselecton student to db_read_write1gogrant update on student to db_read_write1gograntinserton student to db_read_write15将角色赋予(1)中定义的用户,建立用户和角色联系;exec sp_addrolemember'db_read_write','wangyu'6再次用此用户访问学生数据库,并对其中的学生表数据进行修改。

数据库的完整性和安全性实验报告

数据库的完整性和安全性实验报告

信息工程学院实验报告课程名称:《数据库原理》实验项目名称:数据库的完整性和安全性一、实 验 目 的:(1)掌握数据库约束的概念;(2)熟悉SQL SERVER 的完整性约束技术。

(3)了解SQL SERVER 的违反完整性处理措施。

(4)了解登录账户的管理理念与具体方法。

(5)了解数据库用户的管理的要则。

(6)了解用户权限管理的内涵与方法。

二、实 验 设 备 与 器 件 Win7 +Sql server 2008 三、实 验 内 容 与 步 骤(一)测试完整性运行附录中的SQL 语句,理解SQL 语句中包含的完整性定义。

然后执行下面的SQL 语句,看是否能正常运行,若无法执行,请说明原因。

1.对dept 表进行数据增删改,并检查完整性规则 Dept 已存在的完整性规则如下: dno CHAR(2)PRIMARY KEYdnameV ARCHAR(20) NOT NULL,UNIQUE(1)增加数据INSERT INTO dept V ALUES('D1','计科系');----正常插入INSERT INTO dept V ALUES('D2','电信系');----正常插入INSERT INTO dept V ALUES(NULL,'机械系'); ----违反dno 主键(NOT NULL )规则INSERT INTO dept V ALUES('D2','机械系'); ----违反dno 主键(UNIQUE )INSERT INTO dept V ALUES('D3',NULL); ----违反dname 的NOT NULL 规则INSERT INTO dept V ALUES('D3','计科系'); ----违反dname 的UNIQUE 规则INSERT INTO dept V ALUES('D3','机械系');----正常插入(2)删除数据DELETE FROM dept WHERE dno='D3';----正常删除(3)修改数据UPDA TE dept SET dname='计算机科学系' WHERE dno='D1';----正常修改UPDA TE dept SET dname='电信系' WHERE dno='D1'; ----违反dname的UNIQUE规则UPDA TE dept SET dname=NULL WHERE dno='D1'; 违反dname的UNIQUE规则2.对student表进行数据增删改,并检查完整性规则Student已存在完整性规则如下:sno CHAR(2) PRIMARY KEYsname V ARCHAR(20) NOT NULL,ssex CHAR(2) NOT NULL, CHECK(ssex in('男','女'))sage INT NOT NULL,dno CHAR(2) NOT NULL, FOREIGN KEY REFERENCES dept(dno)ON DELETE CASCADE ON UPDATE CASCADE(1)增加数据INSERT INTO student V ALUES('S1','张刚','男',20,'D1');----正常插入INSERT INTO student V ALUES('S2','李梅','女',21,'D2');----正常插入INSERT INTO student V ALUES('S2','吴敏','男',20,'D1'); ----正常插入INSERT INTO student V ALUES(NULL,'吴敏','男',20,'D1'); ----违反sno 的主键(NOT NULL)规则INSERT INTO student V ALUES('S3','吴敏','男',NULL,'D1'); 违反sage 的主键(NOT NULL)规则INSERT INTO student V ALUES('S3','吴敏','M',20,'D1'); 违反ssex 的CHECK规则INSERT INTO student V ALUES('S3','吴敏','男',20,'D3'); ----正常插入INSERT INTO student V ALUES('S3','吴敏','男',20,'D1');----正常插入(2)删除数据DELETE FROM student WHERE sno='S3'; ----正常删除(3)修改数据UPDA TE student SET sname='赵强',dno='D2' WHERE sno='S1'-----正常修改UPDA TE student SET ssex='F' WHERE sno='S1'; -----违反ssex的CHECK 规则UPDA TE student SET sno='S2' WHERE sno='S1'; -----违反sno的主键(UNIQUE)规则UPDA TE student SET dno='D3' WHERE sno='S1'; 违反dno 的外键规则UPDA TE dept SET dno='D3' WHERE dno='D1';----检查dno的外键ON UPDATE规则,观察运行后效果DELETE FROM dept WHERE dno='D2';----检查dno的外键ON DELETE规则,观察运行后效果(二)使用规则实现数据完整性(1)在查询分析器中,利用命令(CREATE RULE),创建一个关于年龄(sage)约束的规则,将“sage”列的值约束在0~200之间;然后将所创建的规则绑定到“sage”列(提示:用命令Sp_bindrule)。

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

数据库实验报告 数据完整性
数据库技术与应用实验
一、实验目的
法。
实验 6 数据完整性
1.掌握 Transact-SQL 语句(CREATE RULE、DROP RULE)创建和删除规则的方
2.掌握系统存储过程 sp_bindrule、sp_unbindrule 绑定和解除绑定规则的
操作方法,以及 sp_help、sp_helptext 查询规则信息、sp_rename 更名规则的
CREATE rule phone_rule AS @电话号码 LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
检验: 电话号码为 8 位时无法插入!
电话号码为 7 位ห้องสมุดไป่ตู้可以插入!
南京师范大学中北学院
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线生高0不产中仅工资2艺料22高试2可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料2荷试2,下卷而高总且中体可资配保料置障试时2卷,32调需3各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看工且25作尽52下可22都能护可地1关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编试求5写、卷技重电保术要气护交设设装底备备置。4高调、动管中试电作线资高气,敷料中课并设3试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

实验五:数据完整性实验

实验五:数据完整性实验

实验五:数据完整性实验一、实验目的:掌握使用SQL中的PRIMARY KEY、CHECK、FOREIGN KEY……REFERENCES、NOT NULL、UNIQUE等关键字是现实体完整性、参照完整性及用户定义完整性约束定义。

二、实验步骤:(一)验证分析部分1、利用SQL查询分析器用PRIMARY KEY子句保证实体完整性。

在查询分析器窗体下键入如下命令:CREATE TABLE Student(sno CHAR(5) NOT NULL UNIQUE,sname CHAR(8),ssex CHAR(1),sage INT,sdept CHAR(20),CONSTRAINT PK_Student PRIMARY KEY(sno));UPDATE Student SET sno=’ ‘ WHERE sdept=’CS’;UPDATE Student SET sno=’200215121 ‘WHERE sname=’王敏’;运行并观察结果。

2、利用SQL查询分析器用FOREIGN KEY……REFERENCES子句保证实体完整性。

在查询分析器窗体下键入如下命令:(1)先删除原来SC表中关于Sno 的外键,再将SC的Sno外键修改为:alter TABLE SC add CONSTRAINT FK_Sno FOREIGN KEY (sno)REFERENCES Student(sno)ON update CASCADE;然后执行以下语句Update Student SET sno=’200215128 ‘ WHERE sno=’200215121’;(2) 先删除原来SC表中关于Sno 的外键,再将SC的Sno外键修改为:alter TABLE SC add CONSTRAINT FK_Sno FOREIGN KEY (sno)REFERENCES Student(sno)ON delete CASCADE;然后执行以下语句delete from student WHERE sno=’200215122’;运行并观察结果。

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

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

实验五数据库完整性与安全性实验1、实验目的1.通过对完整性规则的定义实现,熟悉了解kingbase中完整性保证的规则和实现方法,加深对数据完整性的理解。

2.通过对安全性相关内容的定义,熟悉了解kingbase中安全性的内容和实现方法,加深对数据库安全性的理解2、实验环境操作系统:Microsoft Windows 7旗舰版(32位)。

数据库版本:MySQL 6.23、实验内容3.1完整性实验:(1)分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;在create table 时已经定义了各个基表的主键。

因此,首先对每个基表删除主键,再添加主键。

实现实体完整性约束。

如下图。

删除主键:添加主键:sc表中的cno和sno分别是course表和student表的外关键字。

下图为给sc表添加student和course的外键,实现参照完整性约束。

alter table sc add constraint fk_student foreign key(sno) references student(sno);alter table sc add constraint fk_course foreign key(cno) references course(cno);主键和外键均添加成功,输入show create table 命令来查看各基表信息。

(2)分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束;向课程表中插入课程号为C01的课程。

向学生表中插入学号为30201的学生。

由上面两个实验来看,分别对student和course表插入具有相同学号和相同课程号的学生信息和课程信息,都显示sql语句错误信息为:Duplicate entry *** for key ‘PRIMARY’。

验证了实体完整性约束。

(3)向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;插入成绩信息是学号为31428(student中存在),课程号为C07(course中不存在)的学生成绩信息。

数据库实验——数据库的完整性

数据库实验——数据库的完整性

数据库原理与应用实验报告题目:数据库的完整性学号:________________姓名:________________ 教师:________________实验题目数据库的完整性1、实验内容理解以下几张表的内容,根据实际情况设计属性名、数据类型、及各种完整性约束(primary key、foreign key、not null、unique、check),用数据定义语言实现,然后设计实验数据验证约束的效果,当操作违反了完整性约束条件时,数据库管理系统是如何处理的。

1、创建数据库S_T。

2、新建一张学生信息表,该表至少包含学号,姓名,性别,出生日期,专业,要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),唯一约束(unique),为性别设置检查约束(check)使该属性只能取“男”或“女”。

3、新建一张专业信息表,该表至少包含专业号,专业名称,专业负责人,专业要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),唯一约束(unique)。

4、新建一张课程信息表,该表至少包含课程号,课程名称,学分,开课学期等要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),为学分设置约束使该属性取值范围为1到10之间的整数。

5、新建一张选课信息表,该表至少包含学号,课程号,成绩,基点等属性,根据以下选课信息为每个属性选择合适的数据类型。

《数据库原理与应用》课程实验要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),为成绩设置约束使该属性取值范围为0到100之间的整数。

为基点设置约束使该属性取值为0或者大于等于1的值。

6、修改学生信息表,选择该表中合适的属性设置外码约束(foreign key),实现表间数据的参考完整性。

7、修改选课信息表,选择该表中合适的属性设置外码约束(foreign key),要求允许级联更新,但不允许级联删除。

数据库完整性实验报告

数据库完整性实验报告

数据库完整性实验报告引言数据库完整性是数据库管理系统中的一个重要概念,用于确保数据库中数据的准确性、有效性和一致性。

本实验旨在通过设计和实现一系列完整性约束,来验证数据库完整性的实际应用。

实验目标本实验的目标是设计并实现以下几种完整性约束:1.实体完整性约束2.参照完整性约束3.用户自定义完整性约束实验环境本实验使用了以下工具和环境:•数据库管理系统:MySQL•编程语言:Python•集成开发环境:Jupyter Notebook实验步骤步骤一:数据库设计首先,我们需要设计一个符合实验需求的数据库。

我们选择一个简单的学生管理系统作为示例,包含以下两个实体:1.学生(Student):包含学生的学号、姓名和年龄。

2.课程(Course):包含课程的课程号、课程名和学分。

步骤二:实体完整性约束实体完整性约束用于保证每个实体在数据库中都有唯一的标识。

在本实验中,我们将为学生实体添加一个主键约束,保证每个学生的学号是唯一的。

CREATE TABLE Student (id INT PRIMARY KEY,name VARCHAR(50),age INT);步骤三:参照完整性约束参照完整性约束用于保证关系数据库中的引用一致性。

在本实验中,我们将为课程实体添加一个外键约束,引用学生实体的主键。

CREATE TABLE Course (id INT PRIMARY KEY,name VARCHAR(50),credits INT,student_id INT,FOREIGN KEY (student_id) REFERENCES Student(id));步骤四:用户自定义完整性约束用户自定义完整性约束是根据具体业务需求自定义的约束条件。

在本实验中,我们将为课程实体添加一个自定义约束,保证学分必须大于等于0。

ALTER TABLE CourseADD CONSTRAINT chk_credits CHECK (credits >=0);实验结果通过以上步骤,我们已经成功设计并实现了实体完整性约束、参照完整性约束和用户自定义完整性约束。

数据库的完整性和安全性上机实验报告

数据库的完整性和安全性上机实验报告



(2)删除student表的关于sage 20到50的约束,调试过程如下图:




(3)用户王明对Student表和Course表有SELECT权力,在创建用户时遇到了点问题,最后在老师的指导下解决了,调试过程如下图:
(4)用户李勇对Student表和Course表有INSERT和DELETE权力,调试过程如下图:
(5)用户刘星对Student表有SELECT权力,对Student表的sage字段有更新权力,调试过程如下图:
(6)用户张新具有创建表的权力,调试过程如下图:
(7)用户周平具有对Student表和Course表所有权力,并具有给其他用户授权的权力,在赋予周平给其他用户授权的权利时“ALL PRIVILEGES只授予用户 SQL Server 2000 中可授予的权限,而SQL Server 2005却不被授予,最后改用CONTROL实现了该命令,调试过程如下图:
(8)回收李勇、张新的权限,调试过程如下图:。

数据库实验——数据库的完整性

数据库实验——数据库的完整性

数据库原理与应用实验报告题目:数据库的完整性学号:________________姓名:________________ 教师:________________实验题目数据库的完整性1、实验内容理解以下几张表的内容,根据实际情况设计属性名、数据类型、及各种完整性约束(primary key、foreign key、not null、unique、check),用数据定义语言实现,然后设计实验数据验证约束的效果,当操作违反了完整性约束条件时,数据库管理系统是如何处理的。

1、创建数据库S_T。

2、新建一张学生信息表,该表至少包含学号,姓名,性别,出生日期,专业,要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),唯一约束(unique),为性别设置检查约束(check)使该属性只能取“男”或“女”。

3、新建一张专业信息表,该表至少包含专业号,专业名称,专业负责人,专业要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),唯一约束(unique)。

4、新建一张课程信息表,该表至少包含课程号,课程名称,学分,开课学期等要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),为学分设置约束使该属性取值范围为1到10之间的整数。

5、新建一张选课信息表,该表至少包含学号,课程号,成绩,基点等属性,根据以下选课信息为每个属性选择合适的数据类型。

要求:在建表的过程设置约束,根据实际情况选择属性设置主码(primary key),为成绩设置约束使该属性取值范围为0到100之间的整数。

为基点设置约束使该属性取值为0或者大于等于1的值。

6、修改学生信息表,选择该表中合适的属性设置外码约束(foreign key),实现表间数据的参考完整性。

7、修改选课信息表,选择该表中合适的属性设置外码约束(foreign key),要求允许级联更新,但不允许级联删除。

数据库实验 数据完整性管理

数据库实验   数据完整性管理

实验五数据完整性管理一、实验目的(1)掌握域完整性的实现方法。

(2)掌握实体完整性的实现方法。

(3)掌握参照完整性的方法。

二、实验内容数据库的完整性设置。

三、实验步骤(一)Sc表:Student表:Course表:可视化界面的操作方法:实体完整性1.将student 表的“sno”字段设为主键:在表设计界面中,单击左边的行选定块,选定“sno”字段,单击工具按钮设置主键。

如图所示:2.将“sc”表的“sno”和“cno”设置为主键:在表设计界面中,单击并按住Ctrl 键拖动左边的行选定块,选定sno 和cno 字段,单击工具按钮设置主键。

如图所示:域完整性3. 将“ssex”字段设置为只能取“男”,“女”两值:在表设计界面,点击鼠标右键——CHECK约束,——添加约束,添加CK_student_sex 名称,然后在约束表达式框中输入“ ssex in ('男','女') ”。

如图所示。

参照完整性4. 将“student”表和“sc”表中的“sno”字段设为参照: 打开“sc”表的设计界面, 点击工具栏按钮, 在弹出的属性(properties)对话框中点击“新建”按钮,在“主键表(Primary keytable)”下拉框中选择“student”表,在其下的字段选择框中选择“sno”,在“外键表(Foreignkey table)”下拉框中选择“sc”表,在其下的字段选择框中选择“sno”,单击关闭即可。

命令方式操作方法:实体完整性1.将“student”表的“sno”字段设为主键:当“student”表已存在则执行:alter table student add constraint pk_sno primary key (sno)当“student”表不存在则执行:Create table student(sno CHAR(5) primary key ,sname CHAR(10) NOT NULL,ssex CHAR(2),sage int,sdept CHAR(4))注:可用命令“drop table student”删除“student”表2. 添加一身份证号字段,设置其惟一性.(注: 操作前应删除表中的所有记录) Alter table student add id char(18) unique (id)3. 将“sc”表的“sno”和“cno”设置为主键:当“sc”表已存在则执行:alter table sc add constraint PK_SnoCno primary key (sno,cno)当“sc”表不存在则执行:Create table sc(sno CHAR(5),cno CHAR(2),grade INT NULL,constraint PK_SnoCno primary key (sno,cno))域完整性4. 将“ssex”字段设置为只能取“男”,“女”两值:当“student”表已存在则执行:alter table student add constraint CK_Sex check (ssex in ('男' ,'女')) 当“student”表不存在则执行:Create table student(sno CHAR(5) primary key ,sname CHAR(10),ssex CHAR(2) check (ssex in ('男' ,'女')) ,sage int, sdept CHAR(4))5. 设置学号字段只能输入数字:alter table student add constraint CK_Sno_Format check (sno like'[0-9][0-9][0-9][0-9][0-9]')6. 设置身份证号的输入格式:alter table student addconstraintCK_ID_Formatcheck((idlike'[0-9][0-9][0-9][0-9][0-9][0-9][1-2][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]_')OR(idlike'[0-9 ][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9][0-9][0-9][0-9]'))7. 设置18 位身份证号的第7 位到第10 位为合法的年份(1900-2050)alter table student add constraint CK_ID_Format2 check (len(id)=18 and ( (convert(smallint,substring(id,7,4) )>=1900)and(convert(smallint,substring(id,7,4) )<=2050)) )6. 设置男生的年龄必须大于22, 女生的年龄必须大于20.Alter table student add constraint CK_age check (ssex='男' and sage>=22 or ssex='女' and sage>=20 )参照完整性9. 将“student”表和“sc”表中的“sno”字段设为参照:当“sc”表已存在则执行:alter table sc add constraint FP_sno foreign key (sno) references student(sno )当“sc”表不存在则执行:Create table sc(sno CHAR(5) constraint FP_snoforeign key references student(sno),cno CHAR(2),grade INT NULL,constraint PK_SnoCno primary key (sno,cno) )完整性验证1.实体完整性:在“student”表数据浏览可视化界面中输入学号相同的两条记录将会出现错误如图所示:或者在命令窗口输入下面两条命令也会出现错误提示:insert into student values('95003','张三','男',24,'CS','422229************')insert into student values('95001','李四','女',21,'CS','422229************')下面的语句用来验证“sc”表中的实体完整性:insert into sc values('95002', '10',65)insert into sc values('95002', '10',90)2. 域完整性:使用下面的语句验证“ssex”字段的域完整性:insert into student values('95009','张匀','大',20,'CS',‘422229************’)3.参照完整性:使用下面的语句“验证”sc 表中的“sno”字段的域完整性(假设student 表中没有学号为“95998”的学生记录):insert into sc values('98998', '10',98) (二)实验任务1、建立课程的实体完整性, 和课程号cno 的参照完整性;课程的实体完整性:课程号cno 的参照完整性:alter table sc add constraint FK_cno foreign key(cno)r eferences course(cno)2、对HRM 数据库,练习建立三个表的主外键约束、唯一约束、取空值约束、用户自定义的约束(参考HRM 数据库表定义图中说明);主键约束:Departments:alter table departments add constraint FK_DepartmentID primary key(DepartmentiID)Employee:alter table Employee add constraint FK_EmployeeID primary key (EmployeeID)外键约束:Salary:alter table salary add constraint FK_EmployeeID foreign ke y(EmployeeID)references Employee(EmployeeID)Employee:alter table employeeadd constraint FK_EMPLOYEE_DEPARTMENTforeign key(DepartmentID)references Departments(DepartmentID)唯一约束:Departments:alter table Departmentsadd constraint UNIQUE_DepartmentUNIQUE(DepartmentID)Employee:alter table Employee add constraint UNIQUE_Employee UNIQUE (DepartmentID)Salary:alter table Salary add constraint UNIQUE_Salary UNIQUE(Employ eeID)非空约束:表Employee:alter table Employee alter column EmployeeID char(6)not nullalter table Employee alter column Name char(10)not nullalter table Employee alter column Birthday Datetime not nullalter table Employee alter column Sex Bit not nullalter table Employee alter column DepartmentID char(3)not null表Departments:alter table Departments alter column DepartmentID char(3)no t null表Salary:alter table Salary alter column EmployeeID char(6)not null alter table Salary alter column Income Float(8)not null alter table Salary alter column OutCome Float(8)not null用户自定义约束:alter table Employee add constraint CK_Sex check(sex in('男' ,'女'))3、建立salary 表的Income 字段限定在0-9999 之间。

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

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

实验五数据库完整性与安全性一、实验目的1.充分理解关系数据库中关于数据库完整性的理解。

2.掌握实体完整性的定义方法。

3.掌握参照完整性定义的方法。

4.掌握用户自定义完整性的方法。

二、实验内容和要求创建orderdb数据库,建立以下5张基本表。

(一)实体完整性约束1.创建一个客户表(客户号、姓名、电话、地址、邮编),并为该表建立主键约束。

CREATE TABLE Customer(customerNo char(9) ,CONSTRAINST customerpk PRIMARY KER(customerNo)customerName varchar(40) ,telephone varchar(20) ,address char(40) ,zip char(6))2创建一订单明细表(订单编号,商品编号,数量,单价),为该表创建主键约束。

CREATE TABLE OrderDetail(customerName char(12),productNo char(9),quantity int,price numeric(7,2),CONSTRAINST orderdetailpk PRIMARY KEY(orderNo,productNo))3.创建一张订单表(订单编号、客户编号、员工编号、订单金额、订货日期、发票号码),要求给该表建立主键约束。

CREATE TABLE OrderMaster(orderNo char(12) PRIMARY KEY,customerNo char(9),salerNo char(8),orderDate datetime,orderSum numeric(9,2),invoiceNo char(10))(二)参照完整性约束1.建立一张订单表(订单编号、客户编号、员工编号、订单金额、订货日期、发票号码),要求给该表建立主键约束和关于员工表和客户表的外键约束。

CREATE TABLE OrderMaster(orderNo char(12) PRIMARY KEY,customerNo char(9) ,salerNo char(8) ,orderDate datetime ,orderSum numeric(9,2) ,invoiceNo char(10) ,CONSTRAINT OrdermasterFK1 FOREIGN KEY(customerNo)REFERENCES Customer(customerNo),)2.重新创建订单明细表,给该表再增加外键约束。

数据库完整性实验报告

数据库完整性实验报告

1实验八:数据库完整性1.1实验背景“存储在数据库中的所有数据值均是正确的状态。

如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。

”这是SQL Server2000中给出数据库完整性的解释,但是我们要问两个问题:●什么是数据正确的状态?●如何确保数据是正确的?对于第一个问题,确实很难回答,因为:“世界上所有事物本无正确与错误”,但是一些不符合逻辑的、前后矛盾的、没有满足人们需求的,可以说是“不正确的”。

如:一个人的年龄是“-20岁”,这就是不符合逻辑的;在一个地方,这个人叫“张三”,但是换了个地方却记成“张山”,这就是矛盾;如果一笔订单金额没有达到1万元,却给记成打了8折,实际只能打9折,这就是不满足需求。

造成上述各种不正确的原因是什么呢?无外乎是人们输入错误、业务不熟悉、或者是捣乱分子故意为之。

那么关键问题是我们如何在数据库中预防这种不正确的情况呢?这就是要问的第二个问题。

这需要靠数据库管理系统(DBMS)提供一套完整性约束机制来预防这种情况的发生。

但是人们常说一句话“人无完人,金无足赤”,同样,要完全靠DBMS帮我们防住所有的不正确,本身就是不正确的,这不符合辩证哲学的观点。

这说明DBMS只能是尽可能的预防。

那么人们要深入研究有哪些完整性约束,DBMS应该提供哪些保障机制。

首先,完整性约束主要有以下几种:●实体完整性约束●参照完整性约束●用户定义完整性约束其次,在关系型数据库中保证上述完整性约束的方法有以下几种:表 1 数据库提供的约束我们可以看出主码、外码是我们经常接触到的数据库提供的约束方法,也是最重要的约束。

但是,外码约束并没有我们想象那样简单,即只要把外码关系建立起来就行了,还要考虑到约束强度的问题:表2参照完整性约束的类型与强度那么,用户定义的参照完整性如何实现?一般的DBMS都提供了相应的对策,如:Check约束、Null约束、索引约束、触发器、存储过程等。

SQL Server 中还提到了域约束。

新编[计算机]实验五 数据完整性与存储过程

新编[计算机]实验五  数据完整性与存储过程

实验五数据完整性与存储过程一、数据完整性1.实验目的1)掌握域完整性的实现方法。

2)掌握实体完整性的实现方法。

3)掌握参照完整性的方法。

2.实验内容1)使用界面方式创建规则对象,并绑定到列,实现域完整性。

2)为表添加一个标识列,实现实体完整性。

3)为两表建立关联,实现参照完整性。

3.实验步骤1)实现域完整性①启动SQL Server企业管理器,打开“SQL Server Enterprise Manager”窗口。

②选择要创建规则对象的数据库文件夹,并在右边的对象窗口中选择其中的“规则”对象。

选择“操作”菜单中的“新建规则”命令,打开“规则属性”对话框。

③设置形如“(区号)电话号码”的联系电话格式检查规则,单击“确定”按钮,完成规则对象的定义。

④打开“规则”对象,并选中刚才定义的规则对象RO_联系电话格式。

选择“操作”菜单中的“属性”命令,打开“规则属性”对话框。

⑤单击“绑定列”按钮,打开“将规则绑定到列”对话框,完成到列的绑定,关闭“规则属性”对话框。

⑥在对象窗口中选择并打开其中的“表”对象,选中XSQK表并打开。

⑦在表中分别插入两行新记录,其中一行的联系电话格式为指定的格式,另一行的联系电话格式为非法格式。

当插入第一行时,系统成功地插入了新数据行,但无信息返回;而在插入第二行时系统提示错误信息,拒绝接受非法格式的联系电话,从而保证了域完整性。

⑧单击“确定”按钮,取消插入,并关闭表的数据记录窗口。

2)实现实体完整性①在对象窗口中选择并打开其中的“表”对象,选中KC表。

②选择“操作”菜单中的“设计表”命令,打开表编辑器窗口。

③添加一个标识列,种子值为1,递增量也为1。

④点击快捷工具拦上的快捷按钮,完成标识列的添加,然后关闭编辑窗口。

⑤选中KC表并打开表的数据记录窗口。

可以看到,系统自动为每行的标识列填充了值,并从1开始,依次递增,这样,表中的每一数据行都可以由标识列唯一标识,实现了实体完整性。

⑥关闭表的数据记录窗口。

实验4数据库的安全性、完整性(一)2024

实验4数据库的安全性、完整性(一)2024

实验4数据库的安全性、完整性(一)引言:数据库的安全性和完整性是数据库管理系统中非常重要的两个方面。

安全性指的是确保数据库的数据不会被非授权的人员访问和篡改,而完整性则指的是数据库中的数据应该保持一致性和准确性。

本文将从数据库的访问控制、身份验证、加密、备份与恢复以及错误处理等五个方面详细介绍数据库的安全性和完整性。

正文:1. 数据库的访问控制- 实施用户和角色管理,限制不同用户对数据库资源的访问权限- 设置访问控制策略,对数据库中的敏感数据进行权限限制- 防止恶意用户通过攻击手段绕过访问控制机制2. 身份验证- 强制用户使用强密码,并定期更换密码以提高安全性- 使用双因素身份验证,如组合使用密码和指纹- 实施账号锁定机制,限制用户连续登录失败的次数3. 数据库的加密- 对敏感数据进行加密,并存储加密后的数据,以防止数据泄露- 使用传输层安全协议(TLS/SSL)来加密数据库与应用程序之间的通信- 使用列级加密技术来进一步保护数据库中的敏感数据4. 数据库的备份与恢复- 定期备份数据库,以防止数据丢失- 将备份数据存储在安全的地方,防止被未经授权的人员访问- 定期测试备份数据的恢复能力,确保备份数据的完整性和可用性5. 数据库的错误处理- 实施日志记录机制,记录数据库操作的详细信息,以便追踪和审计- 对异常情况进行及时响应和处理,防止安全漏洞的扩大- 与安全专家进行合作,定期进行安全漏洞扫描和修复工作总结:数据库的安全性和完整性是保障数据库管理系统正常运行和数据安全的重要方面。

通过实施访问控制、身份验证、加密、备份与恢复以及错误处理等措施,可以有效地保护数据库的安全性和完整性,防止非授权的访问和数据篡改,保障数据的一致性和准确性。

因此,合理的数据库安全措施是保障数据库运行的重要保证。

数据库安全性及完整性实验报告

数据库安全性及完整性实验报告

数据库安全性及完整性实验报告
一、实验简介
一般来说,数据库的安全性及完整性是指数据库实际上实施的安全性、有效性、正确性和可靠性的控制。

当下的关注点是能够确保数据的有效性、正确性与可靠性,以及确保数据的安全性与完整性。

除此之外,还必须尽
量减少数据被篡改及窃取的可能性,使得数据向客户端分发及共享时不会
受到攻击。

本文旨在测试数据库的安全性及完整性,以及评估对于数据库
的安全性及完整性的影响。

二、实验目的
实验的目的是测试数据库的安全性及完整性,以及评估对于数据库的
安全性及完整性的影响。

三、实验内容
1、建立测试环境
为了测试数据库的安全性及完整性,首先我们需要建立一个测试环境,该测试环境包括:安装和配置数据库服务器,建立数据库,建立表、字段,插入一些测试数据,建立客户端访问数据库的程序。

2、测试数据库的安全性
在测试阶段,我们需要测试数据库的安全性,这个测试有两个方面:(1)授权:测试用户是否可以正确访问指定的数据库和表,而不受
限制。

(2)身份认证:测试数据库服务器的安全性,检查服务器是否能够正确实施身份认证,保证只有授权用户可以访问数据库。

3、测试数据库的完整性。

实验五 数据库完整性一、实验目的掌握SQL Server2000中有关约.

实验五 数据库完整性一、实验目的掌握SQL Server2000中有关约.

图2
用T_SQL语句实施约束
例:为Student表的 “Sex”字段创建一个缺省约束,缺省值为¹男¹
Alter table student Add constraint default_sex Default '男' for Ssex
为了观察添加了缺省约束的效果,你可以用以下方法: 插入一条数据,不指定Ssex的值,如 INSERT INTO Student(Sno,Sname,Sdept,Sage) VALUES ('200215140','Jim','CS',22) 接着用 select * from student where sno='200215140' 查看刚才插入的记录的Ssex字段的值是什么
⑴利用企业管理器进行规则操作 ①创建规则:为Student表中的Sage字段创建一个规则Rule1,使其值大于0且小于
120。
在企业管理器中,展开Student数据库,右击¹规则¹,在弹出的快捷菜单中单击选 择¹新建规则¹,弹出 ¹规则属性¹窗口;在¹名称¹输入框中输入规则名称Rule1,在¹
文本¹输入框中输入规则的文本:@Sage>0 and @Sage<120。
例:为Student表的“Sname”字段增加一个唯一性约束 Alter table Student Add constraint IX_constraint unique nonclustered (Sname)
例:为SC表建立外键,依赖于Student表的fk_S_c约束。
Alter table SC Add constraint fk_S_c Foreign key(Sno) Student(Sno) 例:禁用Student表的“Sdept”的CHECK约束ck_student。 Alter table Student 2规则: 规则是数据库对象之一。它指定向表中某列插入或更新数据时,限制输入新值的 取值范围。规则可以是值的清单、值的范围或值必须满足的条件。 Nocheck constraint ck_student References

数据库安全性及完整性 实验报告

数据库安全性及完整性 实验报告
2.首先在数据库中建立用户U1,U2,U3,U4,U5,U6,U7,选择全部为CONNECT角色,具体操作见课本141页;进行例4.1-4.13各操作。
3.在SYSTEM用户与7个CONNECT用户之间进行授权(例题1-12)。注意在完成授权或权利回收之后,以相应的用户登录数据库,检查是否获得相应的权利。
SELECT* FROM"S-C"."SC"
例4.4把查询student表和修改学生学号的权限授给用户u4。
以system的身份进入查询分析器,对student表插入一条新的学号
INSERT INTO "S-C".STUDENT(SNO,SNAME,SSEX,SDEPT,SAGE)
以U4的身份进入查询分析器,修改插入的学号
SELECT *FROM "S-C".STUDENT
;
CREATE ROLE R1;
CREATE ROLE 王平;
CREATE ROLE 张明;
CREATE ROLE 赵玲;
GRANT SELECT,UPDATE,INSERT
ON TABLE "S-C"."STUDENT"
TO R1;
GRANT R1
REVOKE UPDATE
ON TABLE "S-C"."STUDENT"
FROM U4;
以U4的身份进入查询分析器,对学生学号进行修改。
UPDATE "S-C".STUDENT
例4.9收回所有用户对表SC的查询权限。
以system的身份进入查询分析器,收回所有用户对表SC的查询权限。
REVOKE SELECT

数据库5-数据库完整性

数据库5-数据库完整性

(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Ssex IN (‘男’,‘女’) ) ,
/*性别属性Ssex只允许取'男'或'女' */
Sage SMALLINT, Sdept CHAR(20)
);
An Introduction to Database System
数据库系统概论
An Introduction to Database System
第五章 数据库完整性
An Introduction to Database System
数据库完整性
数据库的完整性
数据的正确性和相容性
数据的完整性和安全性是两个不同概念
数据的完整性
防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据
An Introduction to Database System
完整性约束命名子句(续)
[例13] 修改表Student中的约束条件,要求学号改为在 900000~999999之间,年龄由小于30改为小于40 可以先删除原来的约束条件,再增加新的约束条件
);
/*只能在表级定义主码*/
An Introduction to Database System
实体完整性检查和违约处理
插入或对主码列进行更新操作时,RDBMS按照实体完整
性规则自动进行检查。包括:
1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改
2. 检查主码的各个属性是否为空,只要有一个为to Database System
元组上的约束条件的定义(续)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库系统原理实验报告实验名称:关系数据库完整性实验任课教师:***学号:*********姓名:***完成日期:2012.11.28一、实验目的通过ORACLE的完整性,理解关系数据库的完整性二、实验内容与步骤ORACLE环境中通过触发器可以定义为更复杂的完整性约束例1:通过触发器产生主键值create sequence ql minvalue 010341416;create table student(sno number(9) primary key ,sname varchar2(20));create or replace trigger add_studentbefore insert on studentfor each rowbeginselect ql.nextval into :new.sno from dual;end;验证触发器:SQL>insert into student (sname)values(‘刘辉’);SQL>insert into student (sname)values(‘刘俊波’);例2:创建一个行级触发器,记录下给个用户对数据库的表进行数据操纵的次数create or replace trigger audit_studentafter delete or insert or update on studentfor each rowbeginif deleting thenupdate audit_student set del =del+1where user_name=user and table_name='student';end if;if inserting thenupdate audit_student set ins=ins+1where user_name=user and table_name='student';end if;if updating thenupdate audit_student set upd=upd+1;where user_name =user and table_name='student';end if ;end;要求:1)定义基本表:Audit_student(user_name,table_name,del,ins,upt)2)输入元组,例“SCOTT”,“student”,0,0,03)以SCOTT身份登录,对student表进行增加删除和修改操作,之后查看audit_student表的内容变化。

例3、为教师表Teacher定义完整性规则:“职称(pos)为教授时其工资(sal)不得低于1000元,如果低于1000元,自动改为1000元”。

create or replace trigger update_salbefore insert or update of sal,pos on teacherfor each rowwhen(new.pos='教授')beginif :new.sal<1000 then:new.sal :=1000;end if;end;要求1)建立教师表Teacher。

提示:必须包含pos,sal等属性;2)输入必要的数据;3 )定义上述触发器4)更新职称为教授的元组的工资,按照大于1000和小于1000分别进行操作。

5)插入职称为教授的数据行,按照大于1000和小于1000分别进行操作。

6)理解并解释触发器定义的完整性约束。

三、实验结果与结论例1、通过触发器产生主键值SQLWKS> create sequence ql minvalue 010341416;语句已处理。

SQLWKS> create table student(sno number(9) primary key,sname varchar2(20));语句已处理。

SQLWKS> create or replace trigger add_student2> before insert on student3> for each row4> begin5> select ql.nextval into:new.sno from dual;6> end;7>语句已处理。

SQLWKS> insert into student(sname) values('汪何媛');处理了1 行。

SQLWKS> insert into student(sname) values('刘明杭');处理了1 行。

SQLWKS> insert into student(sname) values('李昕');处理了1 行。

SQLWKS> insert into student(sname) values('刘俊');处理了1 行。

SQLWKS> insert into student(sname) values('蒋帆');处理了1 行。

验证触发器:SQLWKS> select * from student2>SNO SNAME---------- --------------------10341416 汪何媛10341417 刘明杭10341418 李昕10341419 刘俊10341420 蒋帆已选择5行。

例2、创建一个行级触发器,记录下给个用户对数据库的表进行数据操纵的次数定义基本表:SQLWKS> create table audi_student(user_name varchar2(20) primary key,table_name varchar2(20),del number(9),ins number(9),upd number(9));语句已处理。

定义触发器:SQLWKS> create or replace trigger audi_student2> after delete or insert or update on student3> for each row4> begin5> if deleting then6> update audi_student set del=del+17> where user_name=user and table_name='student';8> end if;9> if inserting then10> update audi_student set ins=ins+111> where user_name=user and table_name='student';12> end if;13> if updating then14> update audi_student set upd=upd+115> where user_name=user and table_name='student';16> end if;17> end;18>语句已处理。

验证触发器:SQLWKS> select * from audi_student2>USER_NAME TABLE_NAME DEL INS UPD-------------------- -------------------- ---------- ---------- ----------已选择0行。

输入元组:SQLWKS> insert into audi_student values('SCOTT','student',0,0,0);处理了1 行。

SQLWKS> insert into audi_student values('Scott','汪何媛',0,0,0);处理了1 行。

显示:SQLWKS> select * from audi_student2>USER_NAME TABLE_NAME DEL INS UPD-------------------- -------------------- ---------- ---------- ----------SCOTT student 0 0 0 Scott 汪何媛0 0 0 已选择2行。

添加操作:SQLWKS> insert into audi_student values('WHY','李昕',1,1,2);处理了1 行。

SQLWKS> select * from audi_student2>USER_NAME TABLE_NAME DEL INS UPD-------------------- -------------------- ---------- ---------- ----------SCOTT student 0 0 0 Scott 汪何媛0 0 0 WHY 李昕 1 1 2已选择3行。

SQLWKS> insert into student(sname) values('凯莉')2>处理了1 行。

SQLWKS> insert into student(sname) values('戴安娜')2>处理了1 行。

SQLWKS> insert into student(sname) values('维多利亚')2>处理了1 行。

SQLWKS> insert into student(sname) values('大卫')2>处理了1 行。

SQLWKS> select * from student2>SNO SNAME---------- --------------------10341416 汪何媛10341417 刘明杭10341418 李昕10341419 刘俊10341420 蒋帆10341422 戴安娜10341423 维多利亚10341424 大卫已选择9行。

删除操作:SQLWKS> delete from student where sname='大卫';处理了1 行。

相关文档
最新文档