实验5-数据库的完整性

合集下载

5数据完整性和数据安全性实验

5数据完整性和数据安全性实验

实验5 数据完整性和数据安全性实验课时安排:2课时一、实验目的和要求使学生加深对数据安全性和完整性的理解.并掌握SQL Server中有关用户、角色及操作权限的管理方法.学会创建和使用规则、缺省和触发器。

二、实验内容1 数据库的安全性实验、在SQL Server企业管理器中,设置SQL Server的安全认证模式.实现对SQL Server的用户和角色管理,设置和管理数据操作权限.2数据库的完整性实验。

使用Transact-SQL设计规则、缺省、约束和触发器.通过SQLServer企业管理器定义它们。

三、实验方法1.设置SQL Server的安全认证模式1)在企业管理器中展开SQL服务器组。

用鼠标右键单击需要设置的SQL服务器,在弹出的菜单中选择“属性”项。

2)在弹出的SQL服务器属性对话框中,选择“安全性”选项卡。

3)在安全性选项卡中有一个安全性栏,它包括两个单选钮:单击“SQL Server和Windows(S)为选择混合安全认证模式;单击“仅Windows(W)”则为选择集成安全认证模式。

2.登录的管理(1)查看安全性文件夹的内容使用企业管理器可以创建、查看和管理登陆,登录文件夹存放在SQL服务器的安全性文件夹中。

当执行了进入企业管理器,打开指定的SQL服务器组和SQL服务器,并选择安全性文件夹的系列操作。

通过该窗口可以看出,安全性文件夹包括4个文件夹;登录文件夹。

服务器角色文件夹、链接服务器文件夹和远程服务器文件夹。

其中:登录文件夹用于存储和管理登录用户,服务器角色文件夹用于存储和管理角色:链接服务器文件夹用于存储和管理连接的服务器.远程服务器文件夹用于存储管理远程服务器信息。

(2)创建一个登录用户1)用鼠标右键单击登录文件夹,在弹出的菜单中选择“新建登录”选项后就会出现一个登录属性对话框。

在对话框中有常规选项卡、服务器角色选项卡和数据库访问选项卡。

2)选择常规选项卡输入用户的一般特征、常规选项卡界面。

数据库完整性实验报告

数据库完整性实验报告

数据库完整性实验报告数据库完整性实验报告引言数据库完整性是指数据库中数据的准确性、一致性和有效性。

在数据库中,完整性是非常重要的,它保证了数据的可靠性和可信度。

本实验报告旨在介绍数据库完整性的概念、重要性以及实验过程和结果。

一、数据库完整性的概念和重要性数据库完整性是指数据库中的数据应符合规定的约束条件,不应存在冲突、矛盾或不一致的情况。

它包括实体完整性、参照完整性和用户定义的完整性。

1. 实体完整性实体完整性是指数据库中的每个实体都必须具有唯一的标识符。

在关系型数据库中,实体完整性通常通过主键来实现。

主键是一个能唯一标识实体的属性或属性组合,它保证了每个实体的唯一性。

2. 参照完整性参照完整性是指数据库中的外键必须引用已存在的主键。

外键是一个表中的属性,它引用了另一个表的主键。

参照完整性保证了表与表之间的关联关系的正确性和一致性。

3. 用户定义的完整性用户定义的完整性是指用户自定义的约束条件必须满足。

例如,一个表中的某个属性必须满足某种条件,如非空、唯一等。

用户定义的完整性保证了特定业务需求的满足。

数据库完整性的重要性在于保护数据的可靠性和一致性。

它可以防止数据的错误、冲突和不一致,确保数据的准确性和可信度。

同时,数据库完整性也为数据库的安全性提供了基础,防止非法访问和恶意操作。

二、实验过程本实验使用MySQL数据库进行实验。

1. 创建数据库和表首先,创建一个名为"students"的数据库,并在其中创建一个名为"grades"的表。

表"grades"包含三个字段:学生ID、课程名称和成绩。

2. 添加完整性约束在表"grades"中,为学生ID字段添加主键约束,保证每个学生ID的唯一性。

同时,为课程名称字段添加非空约束,保证每个课程都有名称。

3. 添加参照完整性约束在表"grades"中,为学生ID字段添加外键约束,引用了另一个表"students"中的主键。

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

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

实验五数据库完整性与安全性实验实验内容完整性实验与要求: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再次用此用户访问学生数据库,并对其中的学生表数据进行修改。

数据库的完整性实验报告

数据库的完整性实验报告

数据库的完整性实验报告数据库的完整性实验报告引言:数据库的完整性是指数据库中存储的数据必须满足预定的一致性要求,包括实体完整性、域完整性、参照完整性和用户定义的完整性。

本实验旨在通过设计一个简单的数据库,并通过实际操作验证其完整性。

一、实验目的本实验的目的是通过设计和操作数据库,了解数据库的完整性概念,并掌握如何保证数据的完整性。

二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统上进行实验。

三、实验步骤1. 创建数据库首先,我们需要创建一个数据库来存储我们的数据。

在MySQL中,可以使用以下命令创建一个新的数据库:```CREATE DATABASE integrity;```2. 创建数据表接下来,我们需要创建一个数据表来存储我们的数据。

假设我们要创建一个学生信息表,包括学生的学号、姓名和年龄。

可以使用以下命令创建该表:```USE integrity;CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```3. 插入数据现在,我们可以向刚刚创建的数据表中插入一些数据。

例如,我们可以插入几个学生的信息:```INSERT INTO students (id, name, age) VALUES (1, '张三', 20);INSERT INTO students (id, name, age) VALUES (2, '李四', 22);INSERT INTO students (id, name, age) VALUES (3, '王五', 21);```4. 实体完整性实体完整性是指每个实体都必须具有一个唯一的标识符。

在我们的学生信息表中,学生的学号是唯一的标识符。

为了保证实体完整性,我们可以在创建表时使用PRIMARY KEY约束来定义学号为主键:```CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT);```这样,如果有重复的学号插入到表中,系统会报错并拒绝插入。

实验五:数据完整性实验

实验五:数据完整性实验

实验五:数据完整性实验一、实验目的:掌握使用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);实验结果通过以上步骤,我们已经成功设计并实现了实体完整性约束、参照完整性约束和用户自定义完整性约束。

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

实验实现数据完整性
一、实验目的
(1)实现数据完整性的概念及实施数据完整性的重要性。

(2)掌握数据完整性的分类。

(3)掌握完整性约束的添加、删除方法。

(4)掌握通用默认值的创建、实施与删除方法。

(5)掌握规则的创建、实施与删除方法。

(6)掌握级联删除、级联修改方法。

二、实验内容
1、完整性约束的添加、删除
(1)通过SQL Server Management Studio实施约束
a.为表Student的Birth字段创建检查约束,使输入的生日日期小于系统日期。

①、选择Student表,右击→设计,打开Student表
②、选择Birth一行,右击→CHECK约束,打开界面如下图所示
③、单击“添加”
④、在表达式中写入:Entrance_date<getdate()
⑤、单击“关闭”退出
b.为表Student的Sdept字段,设置默认值约束,默认值取’计算机系’。

选择Sdept一行,在其列属性中修改其默认值
c.为Student表的Sname字段添加唯一性约束。

选择Sname一行,右击→索引/键
出现如下界面:
单击“添加”,在类型中选择“唯一键”,在列中选择“Sname”,名称自定义
最后单击“关闭”退出
d.将SC表的Sno,cno字段设置外键约束,约束名自已取,并允许级联删除与级联更新。

(此要求在SQL Server2008R2中无法做出)若已存在外键约束,请先删除。

①、选中Sno,右击→单击“关系”,出现如下信息,可见已存在外键约束
选中键,点击删除,完成约束删除
②、添加约束:
选中Sno,右击,选择“关系”,出现如下信息,
③、点击添加,并修改
④、修改成自己想要的规范和名称
⑤、确定,完成
⑥、设置Cno的外键同上理
(2)使用Transact-SQL语句实施约束
a.为Student表的Sno字段添加一个check约束,使学号满足如下条件:学号前四位为2011,学号后四位为数字字符。

alter table Student
add constraint sno_num
check(sno like'[2][0][1][1][0-9][0-9][0-9][0-9]')
b.为Student表中的Birth字段添加一个约束,规定生日应小于入学时间。

alter table Student
add constraint birth_date
check(Entrance_date>Birth)
c.禁用(a)中实施的Check约束
alter table Student
NOCHECK CONSTRAINT sno_num
d.重新启用Check约束
alter table Student
CHECK CONSTRAINT sno_num
e.删除(a)所设置check约束
alter table Student
drop CONSTRAINT sno_num
f.将Student表中的classno字段设置为允许空。

alter table Student
alter column classno char(3)null
g.为SC表中的Sno,Cno添加外键约束,约束名自取;并允许级联删除与级联更新。

若已存在外键约束,请先删除。

①、首先查看SC表中Sno和Cno有无外键约束
sp_helpconstraint SC
②、由上图已知,SC中Sno存在外键约束,则删除
alter table SC
drop constraint FK_SC_Student
3、添加Sno和Cno的外键约束
alter table SC
add constraint FK_SC_Student foreign key (Sno) references Student(Sno)
on update cascade
on delete cascade
alter table SC
add constraint FK_SC_Course foreign key (Cno)
references Course(Cno)
on update cascade
on delete cascade
h.为Course表中的Cname字段添加唯一性约束。

alter table Course
add constraint AK_Cname unique(Cname)
2、默认值的实施
(1)通过SQL Server Management Studio实现
a.为数据库Student_info创建一个默认的邮政编码,名称自取,值为:200093。

b.将该默认值绑定到Student表中的Postcode列。

用企业管理器无法做出
c.将Postcode列上的绑定解除,并删除该默认值。

用企业管理器无法做出
(2)用Transact-SQL语句重做(1)中的(a)、(b)、(c)。

(a)、
create default postcode
as'200093'
(b)、sp_bindefault'postcode','Student.Postcode'
(c)、sp_unbindefault'Student.Postcode'
drop default postcode
3、规则的实施
(1)通过SQL Server Management Studio实现
a.为数据库Student_info创建一个关于性别的取值规则,规则名自取,要求字段的取值仅能为’男’或’女’。

用企业管理器无法做出
b.将该规则绑定到Student表的Sex字段上。

用企业管理器无法做出
c.解除Student表的Sex列上的绑定,并删除该规则。

用企业管理器无法做出
(2)使用Transact-SQL重做(1)中的(a)、(b)、(c)。

(a)、
alter table Student
with nocheck
add constraint sex_check check(sex in('男','女'))
create rule Sex_rule
as@sex='男'or@sex='女'
(b)、sp_bindrule'Sex_rule','Student.Sex'
3、sp_unbindrule'Student.Sex'
drop rule sex_rule。

相关文档
最新文档