实验四 数据库的完整性

合集下载

数据库完整性

数据库完整性
数据库原理与应用
实验报告
实验项目名称:数据库完整性
实验概述
1.实验目的
熟悉数据库的保护措施-完整性控制;选择若干典型的数据库管理系统产品,了解他们所提供的数据库完整性控制的多种方式与方法。
2.实验要求
实践实验示例中陈述的例题,在掌握命令操作的同时,也能掌握界面操作的方法,即在SQL Server集成管理器中实践各种完整性的创建与完整性的约束。
sp_unbindefaultphone,'teachers.telphone'
DROP DEFAULT phone
、利用T—SQL创建规则rule_name,使得教工姓名tname的长度必须大于等于4
CREATERULErule_nameAS@id>=4
、把规则rule_name绑定到教工表的教工姓名tname上
2.实验内容与关键SQL语句、实验结果等
(1)、实体完整性
、PRIMARY KEY约束
、UNIQUE约束
、IDENTITY属性
(2)、域完整性
、创建用户定义的数据类型
、NOT NULL
语句:CREATE TABLE ***
(****数据类型NOT NULL)
、CHECK约束
语句:CHECK(Ssex=‘男’OR Ssex=‘女’)
sp_bindrulerule_name,'teachers.tname'
、取消规则tule_name的绑定并删除规则
sp_unbindrulerule_name,'teachers.tname'
DROP RULE rule_name
3.疑难与未解决的问题
默认对象绑定语句无法执行

数据库实验4 索引、数据完整性与安全性

数据库实验4 索引、数据完整性与安全性

实验四索引、数据完整性与安全性一、实验目的(1) 掌握利用SQL Server Management Studio和SQL语言建立、删除索引的方法;(2) 掌握利用SQL Server Management Studio和SQL语言实现数据完整性的方法;(3) 掌握在SQL Server Management Studio中实现数据安全性管理的方法。

二、实验原理1.索引在关系型数据库中,索引是一种可以加快数据检索的数据库结构。

SQL Server系统中主要有两种类型的索引,即聚集索引、非聚集索引。

(1)聚集索引聚集索引定义了数据在表中存储的物理顺序。

一个表只能定义一个聚集索引。

(2)非聚集索引非聚集索引并不存储表数据本身。

相反,非聚集索引只存储指向表数据的指针,该指针作为索引键的一部分,因此,在一个表中同时可以存在多个非聚集索引。

(3)利用SQL命令建立索引简化语法格式:CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]INDEX index_name ON {table|view}(column|ASC|DESC][,…n])其中:UNIQUE。

可选。

该选项用于通知SQL Server索引中列出的列的值是每行唯一的。

如果试图插入重复的行,则该选项会强制SQL Server返回一个错误信息。

CLUSTERED或NONCLUSTERED。

可选。

如果这两个选项都没有被明确列出,则默认将索引创建为NONCLUSTERED(非聚集索引)。

(4)通过SQL命令删除索引语法格式:DROP INDEX ‘table.index|view.index’[,…n]2.表主键和UNIQUE约束表主键通过表数据中一个列或者多个列组合的数据来唯一标识表中的每一行数据。

即表主键就是用来约束数据表中不能存在相同的两行数据。

在SQL Server系统中,定义表的主键可以在创建表的同时定义,也可以给已有的表添加主键。

数据库的完整性

数据库的完整性
3.用户定义的完整性:要求表中指定列的数据具有正确的数据类型、格式和有效的数据范围。通过默认值、CHECK、规则等约束实现。
4.创建一个部门数据库,建立如下两个表,自己设置主码外码,同时为联系电话字段设置默认值'0000000',员工年龄不得超过60岁。注意:每个约束都要命名,包括主码外码,以方便后续的操作。
);
2.创建员工表
createtableworker
(
wnochar(9)primarykey,--员工代码(主码)
wnamechar(8),--姓名
wagesmallintcheck(wage<=60),--年龄,员工年龄不得超过岁
dizhichar(8),--家庭住址
youbianchar(8),--邮政编码
二、实验内容
1.实体完整性:把表中的每行看作一个实体,要求所有行都具有唯一标识。通过建立索引、PRIMARY KEY、UNIQUE来实现。
2.参照完整性:维护被参照表与参照表之间的数据一致性,通过主键(PRIMARY KEY)和外键(FOREIGN KEY)约束实现。使用FOREIGN KEY约束需注意:FOREIGN KEY约束只参照同一个数据库中的其它表,跨数据库表的参照只能通过触发器来实现。(触发器可暂时不做,第八章之后再做。)
7.用ALTER TABLE 语句添加属性列 性别,并创建默认约束,当插入记录时,如果没有提供性别的值,那么默认值为女。输入元组检查运行情况。
三、实验要求
1.报告中由同学写明具体的操作意图(文字描述)、操作命令(SQL语句)、和执行结果(文字描述+适当截图)。
2.具体操作(如)可参照实验内容自己设定。
insertintodbo.section(sno,sname,zhuguan,phone)

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

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

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

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

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

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

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

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

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

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

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

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

数据完整性实验报告

数据完整性实验报告

实验名称:数据完整性验证实验实验日期:2023年4月10日实验地点:XX大学计算机实验室实验目的:1. 了解数据完整性的概念和重要性。

2. 掌握数据完整性验证的方法和工具。

3. 提高对数据质量控制和数据管理的认识。

实验原理:数据完整性是指数据的准确、一致和可靠。

在数据管理过程中,数据完整性是保证数据质量的基础。

数据完整性验证是指通过各种方法对数据进行检查,确保数据的准确性和一致性。

实验器材:1. 实验计算机:一台配置较高的计算机,用于运行数据完整性验证工具。

2. 数据库管理系统:如MySQL、Oracle等,用于存储实验数据。

3. 数据完整性验证工具:如SQL Profiler、DataGrip等,用于检测数据完整性问题。

实验步骤:1. 数据准备(1)创建一个数据库,并在数据库中创建一个表,用于存储实验数据。

(2)向表中插入一些数据,包括正常数据和异常数据。

2. 数据完整性验证(1)使用SQL Profiler工具对数据库进行数据完整性验证。

(2)在SQL Profiler中配置监控参数,如监控类型、监控对象等。

(3)启动SQL Profiler,运行数据库操作,如插入、更新、删除等。

(4)观察SQL Profiler的输出结果,检查数据是否发生异常。

3. 结果分析(1)分析SQL Profiler的输出结果,找出数据完整性问题。

(2)根据问题类型,提出解决方案。

实验结果:1. 数据完整性问题(1)在插入异常数据时,发现部分数据未满足数据类型约束。

(2)在更新数据时,发现部分数据未满足唯一性约束。

2. 解决方案(1)针对数据类型约束问题,修改数据类型,确保数据满足约束条件。

(2)针对唯一性约束问题,修改数据,确保数据满足唯一性条件。

实验结论:1. 数据完整性验证对于保证数据质量至关重要。

2. 使用SQL Profiler等工具可以有效检测数据完整性问题。

3. 通过数据完整性验证,可以及时发现并解决数据质量问题,提高数据管理水平。

实验四、数据库的完整性

实验四、数据库的完整性

实验四:数据库的完整性一、实验目的1.熟悉主键约束、外键约束、空值、惟一约束的使用方法;2.掌握默认值约束和默认对象的使用方法;3.掌握check约束及规则的使用方法;4.掌握触发器的概念、创建、修改和删除方法;5.了解inserted和deleted的作用及数据的引用;6.掌握各种触发器的工作过程。

二、实验环境SQL Server 企业版三、实验学时2学时四、实验内容及步骤(一)创建学生课程数据库和表Create database stu_triGouse stu_trigocreate table s(sno char(5)not null,sname char(10),ssex char(2),sage int,sdept char(10),ssum_credit tinyint)gocreate table c(cno char(5)not null,cname char(10),ccredit tinyint)gocreate table sc(sno char(5)not null,cno char(5)not null,grade tinyint)g o(二)主键约束--1.学生表--(1)主键的定义alter table s add constraint s_pk primary key(sno) go--(2)主键约束的违约检查和处理insert into s values('95001','李莹','女',21,'计科',0) insert into s values('95001','章张','男',22,'计科',0)--修改学号为,再次插入数据insert into s values('95002','章张','男',22,'计科',0)--(3)依次输入多个学生的记录insert into svalues('95003','陈华','女',22,'计科',0),('95004','吴华义','男',23,'计科',0),('95005','刘冠章','男',22,'计科',0),('95006','蒋婷','女',22,'网络',0),('95007','邱蔚六','男',21,'网络',0),('95008','王德柱','男',22,'网络',0),('95009','秦频','女',21,'网络',0),('95010','程少根','男',21,'网络',0)--2.课程表c--(1)主键的定义alter table c add constraint c_pk primary key(cno) --(2)主键的检查和处理(省)--(3)录入数据insert into cvalues('00001','计算机导论',2),('00002','高级语言',2),('00003','离算数学',3),('00004','数据结构',3),('00005','c#',2),('00006','面向对象',2),('00007','数据库原理',3),('00008','操作系统',3)--3.学生选课表--(1)主键的定义alter table sc add constraint sc_pk primary key(sno,cno)go--(2)主键约束的检查及处理insert into sc values('95001','00001',90)goinsert into sc values('95001','00001',86)go--(3)录入数据insert into scvalues('95001','00002',86),('95001','00003',92),('95001','00004',76),('95001','00005',86),('95002','00001',86),('95002','00002',80),('95002','00003',81),('95003','00001',88),('95003','00002',68),('95004','00001',96),('95005','00001',69)(三)参照完整性--1.定义学生选课表的学号为外键alter table sc add constraint sc_fk foreign key(sno)references s(sno) goalter table sc add constraint sc_fk_1foreign key(cno)references c(cno) go--2.参照完整性约束的检查--(1)向学生选课表中插入数据—学号外键的检查insert into sc values('95100','00001',90) go--(2)向学生选课表中插入数据—课程号外键的检查insert into sc values('95006','10000',90) go--(3)被参照表数据变化:删除学生表的某一个学生--1)删除学生选课表中的外键sc_fkalter table sc drop sc_fkgo--2)重新定义学生表的外键sc_fk及违约处理机制alter table sc add constraint sc_fk_sno foreign key(sno)references s(sno)on delete cascadeon update cascadego--3)查询学生选课表select*from sc--4) 删除学生表学号为95003的学生delete from s where sno='95003'go--5) 再次查询学生选课表select*from scgo--更新学生表中学号为的学生学号为-级联更新update s set sno=95105 where sno like'95005'go--查询学生选课表查看学生的学号是否改为select*from sc--(四) 用户定义完整性(省略非空约束)--1. 唯一性约束(学生姓名惟一)(1)约束的定义alter table s add constraint s_sname_unique unique(sname)(2)约束的检查和处理insert into s values('96001','李莹','女',26,'信管',0)go2. 检查约束(1)约束的定义alter table s add constraint s_c1check(sage>=12 and sage<=35)(2)约束的检查及处理insert into s values('96001','金林','男',9,'信管',0)go3. 默认约束--(1)约束的定义alter table s add constraint s_def1default'女'for ssex(2)约束的检查及处理insert into s(sno,sname,sdept,ssum_credit)values('96002','胡华林','信管',0)这时没有给性别赋值,但该学生的性别取了默认值“女”(五)触发器--1.insert触发器--(1)触发器的定义:--当向sc表中插入一个学生的成绩时,将s表中该学生的总学分加上添加的课程的学分。

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

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

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表添加外键。

实验4 数据库完整性控制

实验4 数据库完整性控制

注意:为了节约大家的宝贵时间,因此给出题目时,会在一定程度上给出相关的语句,大家只需要补充完善相关的SQL语句即可。

实验四数据库完整性控制一、实验目的1.掌握使用T-SQL定义实体完整性的方法。

2. 了解SQL Server违反实体完整性处理措施。

3. 理解参照完整性的含义。

4. 熟练掌握建立外键的方法。

5. 掌握利用FOREIGN KEY…REFERENCES子句以及各种约束保证参照完整性。

6.掌握利用短语NOT NULL、UNIQUE、CHECK保证域完整性。

7. 熟练掌握约束、规则实施用户自定义完整性8.掌握创建触发器的方法,掌握利用触发器规范插入、更新、删除操作的方法。

二、实验内容1、新建数据库School并创建学生表Student,包含以下属性:Sno (CHAR(5))、Sname (CHAR(8))、Ssex (CHAR(1))、Sage (INT)、Sdept (CHAR(20)),并插入数据:( '10000','王敏','F',23,'CS'),('10000','王浩','M',25,'EE'),创建数据库、表以及插入数据的相关语句为:CREATE DATABASE School ;USE SchoolCREATE TABLE Student(Sno CHAR(5),Sname CHAR(8),Ssex CHAR(1),Sage INT,Sdept CHAR(20));INSERT INTO Student values ( '10000','王敏','F',23,'CS');INSERT INTO Student values ('10000','王浩','M',25,'EE');执行完上述语句后查看数据库中student表中的数据。

数据库实验报告 数据控制(完整性部分) 实验四

数据库实验报告  数据控制(完整性部分)  实验四

题目:实验4 数据控制(完整性部分)姓名:* * * 日期:2012年4月26日一、实验目的熟悉通过SQL对数据进行完整性控制。

完成作业的上机练习。

二、实验平台在实验1中安装的RDBMS及其交互工具。

三、实验内容和要求使用SQL对数据进行完整性控制(三类完整性、check短语、constraint字句、触发器)。

用实验证实,当操作违反了完整性约束条件时,系统是如何处理的。

根据以下要求认真填写实验报告,记录所有的实验用例。

四、实验报告1、三类完整性,check短语。

关系模型的实体完整性在create table 中用primary key 定义。

定义主码的方法分为定义为列级约束条件和定义为表级约束条件两种。

对多个属性构成的码只能用表级约束条件。

习题5的第6题,要求定义实体完整性(主码)、参照完整性(外码)、check语句,用户定义的完整性(not null)。

代码如下:create table 职工( Dno numeric(4) primary key,Dname char(20) unique,Dbossname char(20),Dnum numeric(4));create table职工( Eplno smallint primary key,Eplname char(20) not null,Eplage smallint check (Eplage<=60),job char(9),Sal numeric(7,2),Dno numeric(4),foreign key(Dno)references部门(Dno) );2、constraint 字句完整性约束命名字句:create table student(SNO NUMERIC(5)CONSTRAINT C1 CHECK (SNO BETWEEN 90000 AND 99999), SNAME V ARCHAR(20)CONSTRAINT C2 NOT NULL,SAGE NUMERIC(3)CONSTRAINT C3 CHECK (SAGE < 30),SSEX V ARCHAR(2)CONSTRAINT C4 CHECK (SSEX IN ('男','女')), CONSTRAINT StudentKey PRIMARY KEY(SNO));1、触发器(1)创建触发器:(after 行级触发器)create trigger insert_or_update_Sal on 职工after insert as update 职工set Sal=12000 where (job='软件工程师')and (Sal<12000)激活触发器:insertinto职工values('24','小露','21','软件工程师','10000','8')(2)插入触发器:create trigger insert_0table on 职工for insertasdeclare @Eplno smallintselect @Eplno=Eplno from insertedupdate 职工set job='软件工程师' where Eplno=@Eplno激活触发器如下图所示:(3)创建触发器:(instead 表级触发器)create trigger J_updateon Jinstead of updateasbeginraiserror('J表的数据不能被修改!',16,10)end激活触发器:update Jset Jname='大众'where Jno='J1'执行顺序为:执行SQL“update”语句—>执行触发器删除触发器:代码:drop trigger J_update;执行结果如下:3、违反完整性约束条件时,系统处理如下:4、实验小结:(1) 遇到的问题:创建before行级触发器时出现问题create trigger insert_or_update_Salbefore insert or update on 职工for each rowas beginif(new.job='软件工程师')and (new.Sal<12000) then new.Sal:= 12000;end if;end;解决方案:待解决??。

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

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

实验四数据库完整性与安全性一.实验目的:理解并掌握利用SQL Server 2000进行完整性和安全性控制的基本操作和命令。

并熟悉触发器的使用。

二.实验属性:设计性。

三.实验仪器设备及器材:装有SQL Server 2000的电脑。

四.实验要求1. 预习SQL Server 2000中触发器的概念和使用方法,以及利用create trigger语句定义触发器的方法。

2. 预习SQL Server 2000中安全性架构,以及创建安全性账户和数据库角色等的方法。

2. 实验前仔细阅读实验指导书,理解实验要求。

3. 实验中要求完成如下工作(其中涉及的表是实验一中建立的表):五.实验内容1.触发器的使用1.1创建一个insert触发器,当在Student表中插入一条新记录时,给出‘你已经插入了一条新记录!!!’的提示信息。

1.2 创建一个insert触发器,当在SC表中插入一条新记录时,Sno和Cno必须是student和Course中存在的学号和课程号,且Grade应该在0----100之间。

1.3 创建一个after触发器,在Student表中删除某学生的记录时,删除其相应的选课记录。

1.4 创建一个instead of 触发器,当在Course表中删除记录时,不允许删除Course 表中的数据。

2. 数据库安全性2.1 在企业管理器中创建数据库用户U1、U2、U3和数据库角色R1、R2、R3,并对其操作权限进行设置。

2.2 使用SQL语言对数据库用户和角色的权限的授予。

(1)把查询Student表的权限授给用户U1:(2)把对Student表和Course表的全部操作权限授予用户U2和U3(3)把对Student表的Insert操作权限授予用户U2,并允许将此权限再授予其它用户。

2.3 使用SQL语言进行数据库对用户和角色权限的收回。

2.3.1把用户U2对Student表的Insert的权限收回。

2.3.2 收回所有用户对表student的查询权限2.3.3 通过角色来实现将一组权限授予一个用户。

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

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

数据库原理与应用实验报告题目:数据库的完整性学号:________________姓名:________________ 教师:________________实验题目数据库的完整性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. 熟悉通过SQL对数据进行完整性控制;2. 针对具体应用要求,设计相应的完整性约束。

二实验工具SQL Server 2005利用SQL Server 2005 SSMS及其SQL查询编辑器。

三实验内容和要求使用SQL对数据进行完整性控制(3类完整性、CHECK短语、CONSTRAIN 子句、触发器)。

用实验证实,当操作违反了完整性约束条件时,系统是如何处理的。

根据以下要求认真填写实验报告,记录所有的实验用例。

具体操作内容:创建以下两个关系模式,并分别插入相应的数据。

职工(职工号,姓名,年龄,职务,工资,部门号)其中职工号为主码;部门(部门号,名称,经理名,地址,电话号码),其中部门号为主码;(1)使用SQL语言定义这两个关系模式,并完成以下完整性约束条件的定义;(a)定义每个模式的主码;(b)定义参照完整性;(c)定义职工的年龄不能小于18岁,并且不能超过60岁;(d)职工的姓名不能为空;(e)职工的工资不能为空,且不能小于800;(f)部门名称不能为空且不能重复,定义约束名为UK_dName;(2)使用SQL语言分别向两个表中插入7行记录,验证上面的各种约束条件;(3)将职工的年龄改为不能小于16岁,并且不能大于65岁;(4)定义一个表tbl_Emp_Log(eNO, eSalary, Username,ModiDate);在职工表上定义修改和插入数据的触发器,将插入的职工号和工资数据填入到Emp_log表中,并记录操作的用户和插入时间;如果修改了职工的工资,也把职工号和修改后的工资数据填入到Emp_log表中,并记录操作的用户和插入时间。

使用SQL语句向职工表中插入数据和修改工资,验证触发器的效果。

四实验报告4.1 实验环境:Windows XPMicrosoft SQL server Management Studio 20054.2 实验内容与完成情况:--新建数据库create database workgouse work--创建以下两个关系模式,并分别插入相应的数据。

数据库完整性实验报告

数据库完整性实验报告

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

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

实验目标本实验的目标是设计并实现以下几种完整性约束: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);实验结果通过以上步骤,我们已经成功设计并实现了实体完整性约束、参照完整性约束和用户自定义完整性约束。

数据库完整性实验报告

数据库完整性实验报告

数据库完整性实验报告第一篇:数据库完整性实验报告实验报告一、实验题目数据库完整性二、实验要求1)建立一个被参照关系test_main,其中id为主键。

.CREATE TABLE test_main(idINT, valueVARCHAR(10), PRIMARY KEY(id));2)建立一个参照关系test_sub,其中id为主键。

CREATE TABLE test_sub(idINT, main_id INT, valueVARCHAR(10), PRIMARY KEY(id));3)使用如下SQL语句插入数据--插入测试主表数据.INSERT INTO test_main(id, value)VALUES(1, 'ONE');INSERT INTO test_main(id, value)VALUES(2, 'TWO');--插入测试子表数据.INSERT INTO test_sub(id, main_id, value)VALUES(1, 1, 'ONEONE');INSERT INTO test_sub(id, main_id, value)VALUES(2, 2, 'TWOTWO');4)使用add constraint语句建立test_ sub表main_id到test_main表id的外键约束 5)删除test_main表中id=1的记录 6)测试完毕后,删除外键约束重新建立外键约束,要求删除主表的记录时候,同时删除子表中相应引用它的记录7)重新尝试第5步中的操作,之后检索test_sub 表,会出现什么结果?测试完毕后,删除外键约束8)重新建立外键约束,要求更新主表的主键时候,同时更新子表外键9)测试更新主表数据,将id=1的记录的id值设为5。

检查test_sub表中的数据是否被同步更新,测试完毕后,删除外键约束10)再次创建外键约束,要求删除主表的时候,同时将子表的main_id 设置为 NULL 11)测试删除主表test_main中id=2的数据,测试检索子表test_sub 测试完毕后,删除外键约束三、实验内容1)CREATE TABLE test_main(idINT, valueVARCHAR(10), PRIMARY KEY(id));2)CREATE TABLE test_sub(idINT, main_id INT, valueVARCHAR(10), PRIMARY KEY(id));3)INSERT INTO test_main(id, value)VALUES(1, 'ONE');INSERT INTO test_main(id, value)VALUES(2, 'TWO');INSERT INTO test_sub(id, main_id, value)VALUES(1, 1, 'ONEONE');INSERT INTO test_sub(id, main_id, value)VALUES(2, 2, 'TWOTWO');4)ALTER TABLE test_subADD CONSTRAINT main_id_cons FOREIGN KEY(main_id)REFERENCES test_main(id);5)delete from test_main where id='1' 无法执行6)alter table test_subdrop constraint main_id_consALTER TABLE test_subADD CONSTRAINT main_id_cons FOREIGN KEY(main_id)REFERENCES test_main(id)on delete cascade;7)delete from test_main where id='1';结果是test_main,和test_sub中的id=1的都被删除了altertable test_subdrop constraintmain_id_cons;8)首先我把上面操作所删除的加上了INSERT INTO test_main(id, value)VALUES(1, 'ONE');INSERT INTO test_sub(id, main_id, value)VALUES(1, 1, 'ONEONE');ALTER TABLE test_subADD CONSTRAINT main_id_cons FOREIGN KEY(main_id)REFERENCES test_main(id)on update cascade;9)update test_main set id='5' where id='1' 结果是main_id也变为了5。

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

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

信息工程学院实验报告课程名称:《数据库原理》实验项目名称:数据库的完整性和安全性一、实 验 目 的:(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)。

数据库原理实验报告-数据库的完整性

数据库原理实验报告-数据库的完整性

实验题目四、数据库的完整性一、实验目的1、掌握使用约束实现数据完整性的方法;2、掌握使用触发器实现数据完整性的方法;二、实验内容和要求1、设置主键约束、外键约束、唯一约束、非空约束、CHECK约束等;2、使用图形用户界面创建触发器、使用SQL语言创建触发器,实现完整性控制;三、实验主要仪器设备和材料1.计算机及操作系统:PC机,Windows 2000/XP或更高版本;2.数据库管理系统:SQL Server 2005或更高版本;四、实验方法、步骤及结果测试(一)、根据实验一中的基本表,使用约束创建数据完整性。

要求:1、删除teaching中的基本表。

按实验一中的各表的定义,重新创建student表、course1)创建各基本表的先后顺序有什么影响?2)在创建各表过程中,遇到了什么问题,是如何解决的?3、通过“ALERT TABLE”语句,完成下列操作:1)为student表的sname列添加唯一约束,并命名。

2)删除course表的非空约束。

3)为sc表的score列添加约束,取值范围为[0,100]。

4)定义域title_domain,取值为{助教,讲师,副教授,教师},检查SQL Server是否3、检查student表sname列的唯一约束插入新的数据记录对新建的唯一约束进行检查,写出相应的SQL语句,并将检查的执4、检查sc表score列的CHECK约束插入不在定义范围的数据记录检查约束。

写出相应的SQL语句,并将检查执行结果截(二)、通过图形用户界面的方式创建各类约束,定义数据的完整性1、删除sc表的外键约束。

在表设计器中,单击工具栏中的“表和索引属性”按钮,打开2、删除speciality的spname字段唯一约束。

然后在表设计器中,单击工具栏中的“表和3、在表设计器中,单击工具栏中的“表和索引属性”按钮,打开“属性”对话框,在“CHECK 约束”选项中,为teacher表中的title列设置检查约束,定义取值范围为{助教、讲师、副(三)、使用触发器实现数据的完整性1、在student表中创建触发器,实现student和sc表的级联删除。

数据库数据库的完整性控制实验报告

数据库数据库的完整性控制实验报告

实验报告课程名称:数据库原理与应用上机实验名称:数据库的完整性控制专业班级:计算机科学与技术1103 指导教师:卫凡学生姓名:贾梦洁学期:2013-2014学年第一学期实验报告课程名称数据库原理与应用实验名称数据库的完整性控制姓名贾梦洁学号 201107010330专业班级计1103实验日期2013年12月19日成绩指导教师卫凡一、实验目的1. 加深对数据库完整性控制作用的认识和各种完整性约束概念的理解。

2. 熟练掌握数据库完整性约束方法。

二、实验环境硬件环境:PC机软件环境:操作系统为Microsoft Windows 2000或以上版本。

数据库管理系统为Microsoft SQL Server 2000标准版或企业版。

三、实验容1. 熟悉利用企业管理器为列创建DEFAULT约束、为列创建CHECK约束、为列创建UNIQUE 约束、为列创建不允许为空约束、创建PRIMARY KEY约束、创建FOREIGN KEY约束。

2. 熟悉利用企业管理器将各种完整性约束删除。

3. 熟悉利用SQL为列创建DEFAULT约束、为列创建CHECK约束、为列创建UNIQUE约束、为列创建是否为空、创建PRIMARY KEY约束、创建FOREIGN KEY约束。

4. 熟悉利用SQL将各种完整性约束删除。

四、实验步骤1.在实验1中已经对学生_课程数据库中建立了学生、课程和选课3个表,其表结构为:学生S(学号,,性别,年龄,所在专业名称)课程C(课程号,课程名,任课教师名,开设的学期)选课SC(学号,课程号,成绩)利用企业管理器增加如下的完整性约束:(1)限定学生“性别”列的值只能是“男”或“女”的CHECK约束;(2)为“性别”列上创建一个默认约束,默认值为“男”;(3)为“”列上创建一个惟一性约束(即UNIQUE约束);(4)将“年龄”列设置为允许为空字段。

2.利用企业管理器建立学生、课程和选课3个表的表级约束(包括主键约束和外键约束)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四:数据库的完整性一、实验目的1.熟悉主键约束、外键约束、空值、惟一约束的使用方法;2.掌握默认值约束和默认对象的使用方法;3.掌握check约束及规则的使用方法;4.掌握触发器的概念、创建、修改和删除方法;5.了解inserted和deleted的作用及数据的引用;6.掌握各种触发器的工作过程。

二、实验环境SQL Server 企业版三、实验学时2学时四、实验内容及步骤(一)创建学生课程数据库和表Create database stu_triGouse stu_trigocreate table s(sno char(5)not null,sname char(10),ssex char(2),sage int,sdept char(10),ssum_credit tinyint)gocreate table c(cno char(5)not null,cname char(10),ccredit tinyint)gocreate table sc(sno char(5)not null,cno char(5)not null,grade tinyint)g o(二)主键约束--1.学生表--(1)主键的定义alter table s add constraint s_pk primary key(sno) go--(2)主键约束的违约检查和处理insert into s values('95001','李莹','女',21,'计科',0) insert into s values('95001','章张','男',22,'计科',0)--修改学号为,再次插入数据insert into s values('95002','章张','男',22,'计科',0)--(3)依次输入多个学生的记录insert into svalues('95003','陈华','女',22,'计科',0),('95004','吴华义','男',23,'计科',0), ('95005','刘冠章','男',22,'计科',0), ('95006','蒋婷','女',22,'网络',0),('95007','邱蔚六','男',21,'网络',0), ('95008','王德柱','男',22,'网络',0), ('95009','秦频','女',21,'网络',0),('95010','程少根','男',21,'网络',0)--2.课程表c--(1)主键的定义alter table c add constraint c_pk primary key(cno)--(2)主键的检查和处理(省)--(3)录入数据insert into cvalues('00001','计算机导论',2),('00002','高级语言',2),('00003','离算数学',3),('00004','数据结构',3),('00005','c#',2),('00006','面向对象',2),('00007','数据库原理',3),('00008','操作系统',3)--3.学生选课表--(1)主键的定义alter table sc add constraint sc_pk primary key(sno,cno) go--(2)主键约束的检查及处理insert into sc values('95001','00001',90)goinsert into sc values('95001','00001',86)Go--(3)录入数据insert into scvalues('95001','00002',86),('95001','00003',92),('95001','00004',76),('95001','00005',86),('95002','00001',86),('95002','00002',80),('95002','00003',81),('95003','00001',88),('95003','00002',68),('95004','00001',96),('95005','00001',69)(三)参照完整性--1.定义学生选课表的学号为外键alter table sc add constraint sc_fk foreign key(sno)references s(sno) goalter table sc add constraint sc_fk_1foreign key(cno)references c(cno) go--2.参照完整性约束的检查--(1)向学生选课表中插入数据—学号外键的检查insert into sc values('95100','00001',90)go--(2)向学生选课表中插入数据—课程号外键的检查insert into sc values('95006','10000',90) go--(3)被参照表数据变化:删除学生表的某一个学生--1)删除学生选课表中的外键sc_fkalter table sc drop sc_fkgo--2)重新定义学生表的外键sc_fk及违约处理机制alter table sc add constraint sc_fk_sno foreign key(sno)references s(sno) on delete cascadeon update cascadego--3)查询学生选课表select*fromsc--4) 删除学生表学号为95003的学生delete from s where sno='95003'go--5) 再次查询学生选课表select*from scgo--更新学生表中学号为的学生学号为-级联更新update s set sno=95105 where sno like'95005' go--查询学生选课表查看学生的学号是否改为select*fromsc--(四) 用户定义完整性(省略非空约束)--1. 唯一性约束(学生姓名惟一)(1)约束的定义alter table s add constraint s_sname_unique unique(sname)(2)约束的检查和处理insert into s values('96001','李莹','女',26,'信管',0)go2. 检查约束(1)约束的定义alter table s add constraint s_c1check(sage>=12 and sage<=35)(2)约束的检查及处理insert into s values('96001','金林','男',9,'信管',0)go3. 默认约束--(1)约束的定义alter table s add constraint s_def1default'女'for ssex(2)约束的检查及处理insert into s(sno,sname,sdept,ssum_credit)values('96002','胡华林','信管',0)(五)触发器--1.insert触发器--(1)触发器的定义:--当向sc表中插入一个学生的成绩时,将s表中该学生的总学分加上添加的课程的学分。

CREATE TRIGGER sc_tri_insON sc AFTER INSERTASBEGINDECLARE@sno char(5),@cno char(5)DECLARE@xf tinyintSELECT@sno=sno,@cno=cno from insertedSELECT@xf=ccredit FROM c WHERE cno=@cnoUPDATE s SET ssum_credit=ssum_credit+@xfWHERE sno=@snoPRINT'修改成功'ENDinsert into sc values('95006','00001',80)select*from s从图中可以看出,学生表中学生‘李莹’的学号改为“95001”3)查询学生选课表select*from sc--2. delete触发器--()触发器的定义--在删除s表中的一条学生记录时将sc表中该学生的相应记录也删除。

CREATE TRIGGER s_delete_triON s AFTER DELETEASBEGINDELETE FROM scWHERE sno IN(SELECT sno FROM deleted)END--1)查询学生表sselect*from s--2)查看“刘冠章”的选课记录,学号为95105select*from sc--3)在学生表中删除学号为“95105”的学生记录delete from s where sno like'95105'--4) 查看sc表学号为“”的选课信息select*from sc where sno like'95105'--3.update触发器--(1)触发器的定义--创建触发器,当修改s表中的学号时,同时也要将sc表中的学号修改成相应的学号--(假设s表和sc表之间没有定义外键约束)CREATE TRIGGER s_update_triON s AFTER UPDATEASBEGINDECLARE@old_num char(5),@new_num char(5)SELECT@old_num=sno FROM deletedSELECT@new_num=sno FROM insertedUPDATE sc SET sno=@new_num WHERE sno=@old_numEND--(2)触发器的验证1)UPDATE s SET sno='95100'WHERE sno='95001'2)查询学生表select*from s从图中可以看出,学生表中学生‘李莹’的学号改为“95100”3)查询学生选课表select*from sc从图中可以看出,学生选课表中学生‘李莹’的学号改为“95100”4. Instead of触发器在stu_tri数据库中创建视图stu_view,包含学生学号、专业、课程号、成绩。

相关文档
最新文档