8实验八 数据库的完整性

合集下载

实验八实现数据完整性

实验八实现数据完整性

实验八实现数据完整性学号:20101020232 姓名:侯金强 专业:信息管理与信息系统 实验时间:2011年10月30日 实验地点:宿舍和公管实验室 1.实验目的1)掌握域完整性的实现方法。

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

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

2.实验内容1)为表中列添加约束规则,实现域完整性。

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

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

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

②选择要创建规则对象的数据库文件夹XSCJ数据库,查看表。

③要求设置规则:学生情况表XSQK中的性别字段只能输入1和0;(截图)课程表KC中的开课学期字段只能是1-6,学分字段为0-8。

(截图)成绩表XS_KC中的成绩字段只能是0-100。

(截图)完成规则后,打开表的数据记录窗口插入记录。

每个表分别插入2条记录,当插入第一条时,按规则来输入,这时系统成功地插入新数据行,但无信息返回;而在插入第二条时,不按规则输入,则系统提示错误信息(截图),拒绝接受非法格式,从而保证了域完整性。

验证输入后关闭表的数据记录窗口。

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

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

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

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

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

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

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

3)实现参照完整性①在对象窗口中选择打开其中的“表”对象,选中XS_KC表。

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

③点击快捷工具拦上的快捷按钮,打开“属性”对话框的“关系”选项卡。

数据库完整性实验报告

数据库完整性实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

实验8 数据完整性实验

实验8 数据完整性实验

实验8 数据完整性实验(4学时)1.实验目的本实验的目的是通过实验使学生加深对数据完整性的理解,学会创建和使用触发器。

2.实验内容本实验的内容为:使用SQL设计触发器,通过SQL Server企业管理器定义它们。

1.具体完成下面例题:利用触发器来保证学生选课库中选课表的参照完整性,以维护其外码与参照表中的主码一致。

CREATE TRIGGER SC_inserted ON 选课FOR INSERTAS IF(SELECT COUNT(*)FROM 学生,inserted,课程WHERE 学生.学号= inserted.学号AND inserted.课程号= 课程.课程号)=0 ROLLBACK TRANSACTION代码:截图:2.把课件第5章中卷烟数据库及其触发器的例子在Sql server中完成。

建立卷烟库存表代码:建立卷烟库存表截图:建立卷烟销售表代码:建立卷烟销售表截图:创建触发器[T_INSERT_卷烟库存表]代码:创建触发器[T_INSERT_卷烟库存表]截图:针对[卷烟库存表],插入测试数据:创建触发器[T_INSERT_卷烟销售表]代码:输入数据3.创建一个规则,使成绩大于等于零。

并将其绑定到成绩列上。

规则代码:规则截图:绑定代码:绑定截图:4.创建一个默认值,并绑定到学分列上,使学分默认为4个学分。

默认值代码:默认值截图:绑定代码:绑定截图:5.建立一个update触发器,当更新sc表中的score列时,触发器检查成绩是否提高10%。

如果成绩超过了10%,将以ROLLBACK语句复原触发器和调用触发器语句,并打印“成绩升幅太大,更新失败!”,否则,打印“成绩更新成功!”。

代码:截图:检验:3.实验步骤1、在企业管理器中创建触发器1)在企业管理器中,由服务器开始逐步扩展到触发器所属表的数据库(本例为学生选课数据库),打开表文件夹,在表窗口中用鼠标右击触发器所属的表(本例为选课表)。

数据库的完整性实验报告

数据库的完整性实验报告

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

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

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

二、实验环境本实验使用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);```这样,如果有重复的学号插入到表中,系统会报错并拒绝插入。

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

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

数据库原理与应用实验报告题目:数据库的完整性学号:________________姓名:________________ 教师:________________实验题目数据库的完整性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)建立一个被参照关系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、掌握使用触发器实现数据完整性的方法;二、实验内容和要求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表的级联删除。

数据库完整性实验报告

数据库完整性实验报告

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

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

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

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

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

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

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

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

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

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

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

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

SQL Server 中还提到了域约束。

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

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

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

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

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

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

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

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

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

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

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

实验八 使用规则实现数据完整性

实验八  使用规则实现数据完整性

实验八使用规则实现数据完整性【实验目的】1)掌握规则的创建、绑定、解除绑定和删除。

2)掌握使用规则实现数据完整性的方法。

【实验环境】Sql server 2005【实验重点及难点】1)启动SQL Server 2005查询编辑器。

2)创建一个关于开课学期的规则,并绑定到列,实现数据的完整性。

3)创建一个关于性别的规则,并绑定到列,实现数据的完整性。

4)创建一个关于学分的规则,并绑定到列,实现数据的完整性。

5)删除规则。

【实验内容】(1)创建一个关于开课学期的规则1)打开“SQL Server Management Studio”窗口。

2)单击“”标准工具栏上的“新建查询”按钮,打开“查询编辑器”窗口。

3)在窗口内直接输入以下语句,创建规则,将“开课学期”列的值约束在1~8之间。

USE XSCJCREATE RULE kkxq_ruleAS @开课学期>=1 AND @开课学期<=8GO4)单击“SQL编辑器”工具栏上的“分析”按钮,检查输入的T-SQL语句是否有语法错误。

如果有语法错误,则进行修改。

5)确保无语法错误后,单击“SQL编辑器”工具栏上的“执行”按钮。

6)在“查询分析器”窗口内输入以下语句,将所创建的规则绑定到“开课学期”列。

EXEC Sp_bindrule ‘kkxq_rule’,’KC.开课学期’GO7)单击“SQL编辑器”工具栏上的“执行”按钮。

8)在“对象资源管理器”中,展开目标数据库中的“表”节点,鼠标右键单击目标表“KC”,在弹出的快捷菜单中选择“打开表”命令,输入一行新记录,检验“开课学期”列值的约束情况。

如果输入的数据不符合规则,则会出现如图7-7所示的对话框。

(2)创建一个关于性别的规则1)在“查询分析器”窗口内直接输入以下语句,为XSQK表的“性别”列创建规则,约束其值只能是“男”或“女”。

USE XSCJCREATE RULE sex_ruleAS @性别in(’男‘,‘女’)GO2)单击“SQL编辑器”工具栏上的“执行”按钮、3)在“查询编辑器”窗口内输入以下语句,将所创建的规则绑定到“性别”列。

数据库的完整性

数据库的完整性

数据库的完整性在当今数字化的时代,数据库如同一个巨大的信息宝库,存储着各种各样重要的数据。

而确保这些数据的准确、完整和一致,对于依赖这些数据进行决策、运营和服务的组织来说至关重要。

这就引出了我们今天要探讨的主题——数据库的完整性。

数据库的完整性可以简单理解为数据的正确性和可靠性。

它意味着数据库中的数据符合预定的规则和约束,没有错误、缺失或冗余的信息。

首先,让我们来看看实体完整性。

这就好比每个人都有一个独一无二的身份证号码,在数据库中,每个表的主键都必须是唯一的且不能为空。

例如,在一个学生信息表中,学号就是主键,它必须唯一地标识每个学生,不能有两个学生拥有相同的学号,也不能存在学号为空的情况。

如果违反了实体完整性,就会导致数据的混淆和错误,就像在一个班级里有两个同学被分配了相同的学号,老师和学校在管理和统计时肯定会乱套。

接着是域完整性。

它规定了表中某个列的数据类型、取值范围和格式等。

比如说,年龄列的数据类型应该是整数,而且取值范围通常在 0 到 150 之间。

再比如,手机号码列的数据格式应该符合特定的规则,不能随意输入。

如果在输入数据时违反了域完整性,比如在年龄列中输入了负数或者在手机号码列中输入了不符合格式的字符串,那么后续对这些数据的处理和分析就会出现问题。

参照完整性也是数据库完整性的重要组成部分。

当两个表之间存在关联时,参照完整性确保了这种关联的准确性和一致性。

例如,在一个订单表和一个客户表中,如果订单表中的客户 ID 与客户表中的客户ID 相关联,那么订单表中的客户 ID 必须存在于客户表中。

如果不存在,那就像是一个订单找不到对应的客户,这显然是不合理的。

为了确保数据库的完整性,数据库管理系统通常提供了一系列的约束机制。

比如主键约束、唯一约束、非空约束、检查约束和外键约束等。

主键约束保证了主键的唯一性和非空性;唯一约束确保某一列的值是唯一的;非空约束要求指定的列不能为空;检查约束可以自定义更复杂的条件来限制数据的取值;外键约束则用于维护表之间的参照完整性。

实验八 数据完整性 实验指导

实验八 数据完整性 实验指导

实验八数据完整性实验指导一、完整性的概念数据完整性是指存储在数据库中的数据正确无误,并且相关数据具有一致性。

数据库中的数据是否完整,关系到数据库系统能否真实的反映现实世界。

立足在“学生”表中学生的学号要具有唯一性,学生性别只能是男或女,其所在的系部、专业、班级必须是存在的,否则,就会出现数据库中的数据与现实不符的现象。

如果数据库中总存在不完整的数据,那么它就没有存在的必要了,因此,实现数据的完整性在数据库管理系统中十分重要。

根据数据完整性机制所作用的数据库对象和范围不同,数据完整性可分为实体完整性、域完整性、参照完整性和用户定义完整性4种类型。

1. 实体完整性实体是表中的记录,表中的一条记录就是一个实体。

实体完整性要求在表中不能存在完全相同的记录,而且每条记录都要具有一个非空且不重复的主键值。

这样,就可以保证数据所代表的任何事物都不重复、可以区分。

例如,学生表中的学号必须唯一,并且不能为空,这样就可以保证学生记录的唯一性。

实现实体完整性的方法主要有主键约束、唯一索引、唯一约束和制定IDENTITIY属性。

2. 域完整性域完整性是指特定列的项的有效性。

域完整性要求向表中指定列输入的数据必须具有正确数据类型、格式及有效的数据范围。

例如,假设现实中学生的成绩为百分制,则在“课程注册”表中,向成绩列输入的数据,不能出现字符,也不能是小于0或大于100的数值。

实现域完整性的方法主要有CHECK约束、外键约束、默认约束、非空约束、规则及在建表时设置的数据类型。

3. 参照完整性参照完整性是指在有关联的两个或两个以上的表中,通过使用主键和外键或唯一键和外键之间的关系,使表中的键值在相关表中保持一致。

引用完整性要求不能引用不存在的值。

如果一个键值发生更改,则在整个数据库中,对该键值和所有引用要进行一致性的更改。

例如,在学生表中的“班级代码”列的值必须是在班级表中“班级代码”列中存在的值,防止在录入学生记录时将学生分配到一个不存在的班级中。

实验八:数据库的完整性约束.doc

实验八:数据库的完整性约束.doc

实验八:数据库的完整性约束.doc数据库的完整性约束是数据库管理系统的重要特性之一,它是指对数据库中数据的一些限制性约束条件。

这些限制条件可作用于数据库中的表、字段、关键字等,目的是为了保证数据库中的数据的完整性、一致性和准确性。

下面将详细介绍数据库的完整性约束。

一、完整性约束的种类数据库的完整性约束主要有以下几种:1.实体完整性:是指表中每条记录都必须存在一个唯一的主键值,也就是主键不能为空,同时要求表中不能存在两条相同的记录。

2.参照完整性:是指在关系型数据库中,如果一个表中的某个字段与另一张表的主键或唯一索引关联,那么这个表中的记录必须在关联表中有相应的记录。

3.域完整性:是指每个字段必须有一个有效的数据类型,同时对于每个字段还可以指定一些合法的取值范围。

4.用户定义的完整性:是指用户可以自定义一些限制条件,以便对数据库中的数据进行更复杂的限制。

1.确保数据的唯一性:通过实体完整性和参照完整性可以避免数据库中出现重复的记录和没有对应关系的记录。

2.限制数据的正确性:通过域完整性可以限制每个字段的取值范围,从而保证数据的正确性。

3.提高数据库性能:通过完整性约束可以避免不必要的查询操作,提高数据库的性能。

4.保护数据的安全性:通过完整性约束可以保护数据的安全性,防止数据被恶意篡改或删除。

1.在表定义时指定完整性约束:在创建表时可以指定表的主键、外键、检查约束等完整性约束。

2.使用触发器实现完整性约束:使用触发器可以实现更多复杂的完整性约束,例如在插入或修改记录时触发器会对数据进行验证,如不符合约束条件则拒绝操作。

3.使用存储过程实现完整性约束:存储过程也可以实现完整性约束,例如在存储过程中进行数据的验证和处理。

完整性约束通常用于以下几个场景:1.数据库的设计:在数据库设计中,应该考虑到数据库的完整性问题,因此在创建表时应该根据实际需求来定义合适的完整性约束条件。

2.数据的输入和修改:在数据进行输入和修改时,系统应该对输入的数据进行验证,如果不符合完整性约束条件,则需要提示用户进行修改。

实验8 数据库完整性

实验8 数据库完整性

实验8 数据库完整性实验8数据库完整性实验8数据库完整性二、背景科学知识(1)数据库完整性概念:数据库完整性就是必须避免数据库中存有不合乎语义的数据,避免数据库中存有不恰当的数据。

为了确保数据库的完整性,dbms提供更多了定义、检查和掌控数据完整性的机制,时能把用户定义的数据库完整性约束条件做为模式的一部分取走数据库中。

它采用约束、预设、规则和触发器4种方法定义和实行数据库完整性功能。

(1)数据完整性约束的分类:数据完整性约束可以分为3类:●表级约束:若干元组间以及关系之间联系的数据约束。

比如:选修表,每个人最多这样一来10门课;学生表,学生的学号必须唯一;选修表的学号和课程号必须在学生表和课程表中存有。

●元组级约束:同一个元组字段之间必须满足的约束条件。

如学生表中年龄字段的值应该等于当前日期减去出生日期。

学生学号的第5位表示的是学院代号,如果其代号为1,则学院编号只能为0001;如果其代号为2,则学院编号只能为0002等。

●属性级约束:针对列的类型、取值范围、精度、排序等而制定的约束条件。

例如:性别只能是‘男’或‘女’;课程成绩必须在0-100分之间。

(3)约束的种类及其含义:约束类型完整性功能描述指定主码,确保主码值不重复,并不允primarykey许主码内的任何列中输入null,一个表只能有一个primarykey约束主要用于在不同的表之间建立约束,以foreignkey实现不同表之间的参照完整性。

foreignkey约束的列或者为null,或者为被参照列的值。

unique唯一性约束,对表中的列集进行约束,其值或者为空,或者在整个表中是唯一的指定某个列或列组可以接受值的范围,check或指定数据应满足的条件,来强制实现用户要求的域完整性。

可以为每列设置多个checkkey约束notnulldefault非空约束,指定某个列不能为null插入数据时,如果没有明确提供列值,则用缺省值作为该列的值(4)sqlserver提供了2种方法,实现数据库完整性控制。

数据库 实验八 数据完整性

数据库 实验八 数据完整性
二,实验总结:
1,实体完整性检查和违约处理
(1).检查主码值是否唯一,如果不唯一则拒绝插入或修改。
(2).检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。
2,可能破坏参照完整性的情况及违约处理
被参照表(例如Student)
参照表(例如SC)
违约处理
可能破坏参照完整性
插入ቤተ መጻሕፍቲ ባይዱ组
拒绝
可能破坏参照完整性
图二
(2)UNIQUE(唯一)约束
为tCourse中的Cno列创建唯一约束,则插入相同的Cno的时候,系统会提示错误,如图三所示
图三m
(3)NOT NULL(非空)约束
对于tStudent表,存在一个学号(Sno),就必须存在其相应的姓名,这时,就应该设置姓名字段不能空。
图四
(4)CHECK(检查)约束
图七
(6)FOREIGN KEY(外键)约束
通过外键约束可以为相关联的两个表建立联系,实现数据的参照完整性,维护两个表之间数据的一致性关系
图八
由于两个表的Cno不具有一致性,所以系统提示错误,如图九所示
图九
不能创建关系'FK_tSC_tCourse'。
ODBC错误:[Microsoft][ODBC SQL Server Driver][SQL Server]ALTER TABLE语句与COLUMN FOREIGN KEY约束'FK_tSC_tCourse'冲突。该冲突发生于数据库'XK007STD11',表'tCourse', column 'Cno'。
对于学生成绩的取值应该限制在0到100之间,这时就应该为成绩列创建检查约束,使其取值在正常范围内。设置过程如图五所示。

数据库完整性

数据库完整性
数据库原理与应用
实验报告
实验项目名称:数据库完整性
实验概述
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.疑难与未解决的问题
默认对象绑定语句无法执行
  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。

相关文档
最新文档