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

数据库完整性

数据库完整性
数据库完整性

数据库完整性

数据库完整性(Database Integrity)是指数据库中数据的正确性和相容性。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计(本文主要讨论前者)。

重要性

数据库完整性对于数据库应用系统非常关键,其作用主要体现在以下几个方面:

1.数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据。

2.利用基于DBMS的完整性控制机制来实现业务规则,易于定义,容易理解,而且可以降低应用程序的复杂性,提高应用程序的运行效率。同时,基于DBMS的完整性控制机制是集中管理的,因此比应用程序更容易实现数据库的完整性。

3.合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能。比如装载大量数据时,只要在装载之前临时使基于DBMS的数据库完整性约束失效,此后再使其生效,就能保证既不影响数据装载的效率又能保证数据库的完整性。

4.在应用软件的功能测试中,完善的数据库完整性有助于尽早发现应用软件的错误。

数据库完整性约束可分为6类:列级静态约束、元组级静态约束、关系级静态约束、列级动态约束、元组级动态约束、关系级动态约束。动态约束通常由应用软件来实现。不同DBMS支持的数据库完整性基本相同,Oracle支持的基于DBMS的完整性约束如下表所示:

数据库完整性设计阶段

一个好的数据库完整性设计首先需要在需求分析阶段确定要通过数据库完整性约束实现的业务规则,然后在充分了解特定DBMS提供的完整性控制机制的基础上,依据整个系统的体系结构和性能要求,遵照数据库设计方法和应用软件设计方法,合理选择每个业务规则的实现方式;最后,认真测试,排除隐含的约束冲突和性能问题。基于DBMS的数据库完整性设计大体分为以下几个阶段:

1.需求分析阶段

经过系统分析员、数据库分析员、用户的共同努力,确定系统模型中应该包含的对象,如人事及工资管理系统中的部门、员工、经理等,以及各种业务规则。

在完成寻找业务规则的工作之后,确定要作为数据库完整性的业务规则,并对业务规则进行分类。其中作为数据库模式一部分的完整性设计按下面的过程进行。而由应用软件来实现的数据库完整性设计将按照软件工程的方法进行。

2.概念结构设计阶段

概念结构设计阶段是将依据需求分析的结果转换成一个独立于具体DBMS的概念模型,即实体关系图(ERD)。在概念结构设计阶段就要开始数据库完整性设计的实质阶段,因为此阶段的实体关系将在逻辑结构设计阶段转化为实体完整性约束和参照完整性约束,到逻辑结构设计阶段将完成设计的主要工作。

3.逻辑结构设计阶段

此阶段就是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化,包括对关系模型的规范化。此时,依据DBMS提供的完整性约束机制,对尚未加入

逻辑结构中的完整性约束列表,逐条选择合适的方式加以实现。

在逻辑结构设计阶段结束时,作为数据库模式一部分的完整性设计也就基本完成了。每种业务规则都可能有好几种实现方式,应该选择对数据库性能影响最小的一种,有时需通过实际测试来决定。

数据库完整性设计原则

在实施数据库完整性设计的时候,有一些基本的原则需要把握:

1.根据数据库完整性约束的类型确定其实现的系统层次和方式,并提前考虑对系统性能的影响。一般情况下,静态约束应尽量包含在数据库模式中,而动态约束由应用程序实现。

2.实体完整性约束、参照完整性约束是关系数据库最重要的完整性约束,在不影响系统关键性能的前提下需尽量应用。用一定的时间和空间来换取系统的易用性是值得的。

3.要慎用目前主流DBMS都支持的触发器功能,一方面由于触发器的性能开销较大,另一方面,触发器的多级触发不好控制,容易发生错误,非用不可时,最好使用Before型语句级触发器。

4.在需求分析阶段就必须制定完整性约束的命名规范,尽量使用有意义的英文单词、缩写词、表名、列名及下划线等组合,使其易于识别和记忆,如:CKC_EMP_REAL_INCOME_EMPLOYEE、PK_EMPLOYEE、CKT_EMPLOYEE。如果使用CASE工具,一般有缺省的规则,可在此基础上修改使用。

5.要根据业务规则对数据库完整性进行细致的测试,以尽早排除隐含的完整性约束间的冲突和对性能的影响。

6.要有专职的数据库设计小组,自始至终负责数据库的分析、设计、测试、实施及早期维护。数据库设计人员不仅负责基于DBMS的数据库完整性约束的设计实现,还要负责对应用软件实现的数据库完整性约束进行审核。

7.应采用合适的CASE工具来降低数据库设计各阶段的工作量。好的CASE工具能够支持整个数据库的生命周期,这将使数据库设计人员的工作效率得到很大提高,同时也容易与用户沟通。

数据库完整性

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

数据库完整性代码

4实验报告 实验内容与完成情况: 一、三类完整性的实现 对系表Dept、学生表Student、教师表Teacher、课程表Course、SC表,教师授课表TC,实现规定的完整性,并验证,当操作违反了完整性约束条件时,DBMS如何处理。 --1、Dept表 --? DEPTNO CHAR() --? E VARCHAR()DNAM --? 实体完整性:DEPTNO为主码; --? 用户定义完整性 --①DEPTNO的取值为至; --②DNAME取值非空且唯一; CREATE TABLE DEPT (DEPTNO CHAR(2)PRIMARY KEY constraint c1 check(DEPTNO between 01 and 99), DNAME VARCHAR(20) constraint c2 NOT NULL unique, ); --2、Student表 -- SNO CHAR() -- SNAME VARCHAR() -- SEX CHAR() -- DEPTNO CHAR() -- --实体完整性:SNO为主码; --参照完整性:DEPTNO为外码,并实现级联更新和级联删除操作; --用户定义完整性 --①SNO取值为级的学号取值范围,如等。 --②SNAME 取值非空;

--③SEX的取值只能为男或女; CREATE TABLE Student (SNO CHAR(10)PRIMARY KEY constraint b1 check(SNO between 2010080000 and 2010089999), Sname varCHAR(8)NOT NULL unique, Ssex CHAR(2) constraint b2 check(Ssex in('男','女')), DEPTNO CHAR(2), FOREIGN KEY(DEPTNO)REFERENCES DEPT(DEPTNO) on delete cascade on update cascade ); drop table Student --3、Teacher表 -- TNO CHAR() -- TNAME VARCHAR() -- DEPTNO CHAR() -- --实体完整性:TNO为主码; --参照完整性:DEPTNO为外码,并实现级联更新和级联删除操作; --用户定义完整性 --①TNO取值为开头的四位数字字符串; --②TNAME取值非空; CREATE TABLE Teacher (TNO CHAR(3)PRIMARY KEY constraint a1 check(TNO between 0800 and 0899), TNAME varCHAR(8)NOT NULL, DEPTNO CHAR(2), FOREIGN KEY(DEPTNO)REFERENCES DEPT(DEPTNO) on delete cascade on update cascade ); drop table Teacher --4、Course表 -- CNO CHAR() -- TNO CHAR() -- CNAME VARCHAR() -- CREDIT SNALLINT -- --实体完整性:CNO; --用户定义完整性 --①CNAME取值非空;

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,右击,选择“关系”,出现如下信息,

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

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

数据库完整性

大连海事大学 数据库原理课程实验大纲 实验名称:实验七完整性实验学时: 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))

SQL数据库图书管理系统(完整代码)

作品设计报告书题目:《图书管理系统》 班级网络2012-1班 学号 姓名 课程名称数据库应用技术 指导教师

目录

数据库课程设计报告书 一、设计目标 1.掌握计算机管理信息系统设计的一般方法,主要包括系统分析、系统设计的组织 和实施。 2.关系型数据库管理系统的编程技术,并能独立完成一般小系统的程序设计、调试 运行等工作。 3.培养把所学知识运用到具体对象,并能求出解决方案的能力。 二、数据库存储设计指导思想 在数据库存储设计的无数选择中,简单是系统架构师和DBA 的秘密武器。 简单,有时候就来自于对一个特定的表或表空间没有选择最优I/O 特性,总有这么一种可能,一个富有经验的DBA 拥有高超的存储技能并可以没有时间限制的去为一个非常重要的表或者索引配置一个存储。然而这样做的问题是,就算能达到设计的最佳性能,为了维护原始对象,这也经常造成对一个系统的管理变得更加复杂。好的数据库存储设计的要点是,在一个动态系统上,实现所有目标应该是最初的系统设计的一部分,并应该在数据库运行过程中长期进行。这篇文档简单的最佳实践描述达到了这些目标并且几乎没有性能损失。 三、任务 角色:读者、图书馆馆员、系统管理员;基础数据:读者信息、图书信息、操作员信息;业务数据:借还书记录登记、罚款登记;统计数据:书籍借阅情况统计或读者借阅情况统计。基本要求:利用数据库技术,完成基础数据和业务数据的储存和操作,数据库设计合理1.设计报告:含E-R图、数据字典、关系模式、关系实例、查询描述、关系代数、SQL 实现的查询语言及查询结果。 2.上机实现。

1.问题描述 1.1背景 随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致图书馆管理上的混乱,人力与物力过多浪费,图书馆管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效,规范和实用的图书管理系统,对图书资料进行集中统一的管理。 另一方面,IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理的革命,实现了信息的自动化处理,提高了处理的及时性和正确性。 提高图书管理工作效率,作到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。 1.2数据需求 图书馆管理信息系统需要完成功能主要有: 1. 读者基本信息的输入,包括借书证编号、读者姓名、读者性别。 2.读者基本信息的查询、修改,包括读者借书证编号、读者姓名、读者性别等。 3.书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称。 4.书籍类别信息的查询、修改,包括类别编号、类别名称。 5.书籍库存信息的输入,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、登记日期。 6.书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期登记日期等。 7.借书信息的输入,包括读者借书证编号、书籍编号、借书日期。 8.借书信息的查询、修改,包括借书证编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期等。 9.还书信息的输入,包括借书证编号、书籍编号、还书日期。 10.还书信息的查询和修改,包括还书读者借书证编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。 11.超期还书罚款输入,还书超出期限包括超出期限还书的读者借书证号,书籍编号,罚款金额。

(安全生产)数据库的安全性与完整性

数据库的安全性和完整性 一、实验目的和要求 1、理解数据库安全性和完整性的概念。 2、掌握SQL Server2000中有关用户、角色及操作权限管理等安全性技术。 3、掌握SQL Server2000中有关约束、规则、默认值的使用等完整性技术。 二、实验内容和步骤 ㈠数据库的安全性 1、SQL Server的安全模式 认证是指来确定登陆SQL SERVER的用户的登陆账号和密码是否正确,以此来验证其是否具有连接SQL SERVER的权限,但是通过认证阶段并不代表能够访问数据,用户只有在获取访问数据库的权限之后才能对服务器上的数据库进行权限许可下的各种操作。 ⑴设置SQL Server的安全认证模式:使用企业管理器来设置,步骤如下: Step1: 展开服务器组,右击需要设置的SQL服务器,在弹出菜单中选择“属性”。 Step2: 在弹出的SQL服务器属性对话框中,选择“安全性”选项卡。 Step3: 选择仅Windows选项(NT/2000验证模式) 或SQL Server和Windows选项(混合模式)。 注:设置改变后,用户必须停止并重新启动SQL Server服务,设置才生效。 如果设置成NT认证模式,则用户在登录时输入一个具体的登陆名时,SQL SERVER将忽略该登录名。 ⑵添加SQL Server账号:若用户没有Windows NT/2000账号,则只能为他建立SQL Server账号。 ①利用企业管理器 Step1: 展开服务器,选择安全性/登录。 Step2: 右击登录文件夹,出现弹出式菜单。 Step3: 在弹出式菜单中选择“新建登录”选项后,就会出现一个登录属性对话框。 step4: 在名称框中输入一个不带反斜杠的用户名,选中SQL Server身份验证单选按钮,并在密码框中输入口令(如下图所示)。

实验一创建数据库及关系表数据完整性约束

实验一创建数据库及关系表、数据完整性约束 一、实验目的 1.???掌握SQL Server数据库管理系统的使用,能够在该环境中进行日常数据库操作; 2.???掌握在SQL Server中使用图形化工具创建数据库的方法; 3.掌握建立关系表的语句,掌握定义主码约束及外码约束的语句; 4.掌握修改表结构的语句。 5.掌握数据完整性约束的功能。 二、实验内容和步骤 1.创建符合如下条件的数据库: 数据库的名字为:Students 数据文件的逻辑文件名为:Students_dat,存放在用户盘某目录下; 文件的初始大小为:5MB;增长方式为自动增长,每次增加1MB。 实验结果: 2.在已建立的Students数据库中,确定出各表中的数据类型,写出创建满足下述条件的四张表的SQL语句,并查看执行结果。 实验结果: 3.写出实现如下操作的SQL语句,并查看执行结果: (1)在选课表中添加一个新的修课类别列:列名为:选课类别,类型为char(4)。(2)将课程表中的学分列的类型改为:tinyint(微整型,取值范围在0~255)。(3)删除学生表的专业列。 (4)为教师表添加主码约束,其主码列为:教师号。

4.在Students数据库中,编写建立满足完整性要求的定义表的SQL语句,执行并观察执行结果。 (1)图书表,结构如下: 书号:统一字符编码定长类型,长度为6,主码, 书名:统一字符编码可变长类型,长度为30,非空, 第一作者:普通编码定长字符类型,长度为10,非空, 出版日期:小日期时间型,小于等于当前系统日期,(用getdate()实现)印刷数量:小整型,取值范围:1000~5000,默认为4000, 价格:定点小数,小数部分一位,整数部分3位。 实验结果: (2)书店表,结构如下: 书店编号:统一字符编码定长类型,长度为6,主码, 店名:统一字符编码可变长类型,长度为30,非空, 电话:普通编码定长字符类型,12位长,取值形式:010-8位数字 地址:普通编码可变长字符类型,40位长。前两个字符必须是:北京。 实验结果: (3)图书销售表,结构如下: 书号:统一字符编码定长类型,长度为6,非空, 书店编号:统一字符编码定长类型,长度为6,非空, 销售日期:小日期时间型,非空,默认值为系统当前日期, 销售数量:微整型,取值大于0,主码(书号,书店编号,销售日期); 书号为引用“图书表”的外码;书店编号为引用“书店表”的外码。

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

北京邮电大学 实验报告 课程名称数据库系统概念 实验名称数据库完整性与安全性实验教师______ 成绩_________ __

实验目的: 1.通过对完整性规则的定义实现,熟悉了解SQL Server数据库中实体完整性、参照完整 性、断言等完整性保证的规则和实现方法,加深对数据完整性的理解。 2.通过对安全性相关内容的定义,熟悉了解SQL Server数据库中安全性的内容和实现方 法,加深对数据库安全性的理解。 实验内容: 一) 完整性实验与要求: 一、建表阶段 1.利用SQL语句,分别定义数据库中各基本表的主键、候选键、外键,实现实体完整性 约束和参照完整性约束。 2.在数据库中选取两张或三张具有外键关联的表,利用语句foreign key-references创建 外键,实现参照完整性约束。 3.根据实际背景,对某些表中的某些特定属性,定义空值、非空约束。 4.建表时,使用check谓词,通过断言,添加如下一些约束: (1)1个MSC最多管理10个BSC。 (2)1个BSC最多管理50个小区/扇区。 (3)1个BTS可以连接至1-3个BSC。 (4)1个MS可以位于1到6个BTS的覆盖范围内。 (5)小区/扇区所使用的频点号在[1,124]之间。 二、主键/候选键约束验证 1. 选取定义了主键的关系表,向该表插入在主属性上取值为空的元组,观察系统反应;选取表中某些或某个元组,修改这些元组在主属性上的取值,或插入新元组,使这些元组与表中已有其它元组的主属性取值相同,观察系统反应; 2. 选取定义了候选键的关系表,向该表插入在候选键属性上取值为空的元组,观察系统反应;选取表中某些或某个元组,修改这些元组在候选键属性上的取值,或插入新元组,

数据库的完整性

实验七数据库的完整性 一、实验目的 1.理解关系数据库中关于数据库完整性的概念 2.掌握实体完整性的定义方法 3.掌握参照完整性的定义方法 4.掌握用户自定义完整性的方法 二、实验环境(实验的软件、硬件环境) 硬件:PC机软件:SQL2000 三、实验说明 请复习数据库完整性的相关知识点,完成如下实验内容。 四、实验内容 (1)重建orderDB数据库中的表,分别为每张表建立主键,外键。 (2)各表的用户定义的完整性如下: 员工表:员工姓名,电话属性为not null;员工编号构成:年流水号,共8位,第一位为E,如E2008001,年份取雇佣日期的年份;性别:f表示 女,m表示男。 商品表:商品编号、商品名称、商品类别、建立日期设为not null;商品编号构成:年流水号,共9位,第一位为P,如P2*******,年份取建 立日期的年份 客户表:员工编号、姓名、性别、所属部门、职称、薪水设为not null; 客户号构成:年流水号,共9位,第一位为C,如C20080001,年份取 建立日期的年份 订单主表:订单编号的构成:年月日流水号,共12位,如200708090001; 订单编号、客户编号、员工编号、发票号码设为not null;业务员必须是 员工;订货日期和出货日期的默认值设为系统当前日期;订单金额默认 值为0;发票号码建立unique约束。

订单明细表:订单编号、商品编号、数量、单价设为not null。 五、实验步骤 请完成实验内容,并写出具体的实验步骤 六、思考题: 1.什么是数据库的完整性? 2.SQLServer数据完整性的实现方式有(1)声明数据完整性,(2)过程数据完整性,请区别他们的异同和使用情况? 七、总结(实验过程的体会、心得和实验教与学之间还需改进的内容)

数据库的安全性与完整性

4 数据库的安全性与完整性 数据库在各种信息系统中得到广泛的应用,数据在信息系统中的价值越来越重要,数据库系统的安全与保护成为一个越来越值得重要关注的方面。 数据库系统中的数据由DBMS统一管理与控制,为了保证数据库中数据的安全、完整和正确有效,要求对数据库实施保护,使其免受某些因素对其中数据造成的破坏。 一般说来,对数据库的破坏来自以下4个方面: (1)非法用户 非法用户是指那些未经授权而恶意访问、修改甚至破坏数据库的用户,包括那些超越权限来访问数据库的用户。一般说来,非法用户对数据库的危害是相当严重的。 (2)非法数据 非法数据是指那些不符合规定或语义要求的数据,一般由用户的误操作引起。 (3)各种故障 各种故障指的是各种硬件故障(如磁盘介质)、系统软件与应用软件的错误、用户的失误等。 (4)多用户的并发访问 数据库是共享资源,允许多个用户并发访问(Concurrent Access),由此会出现多个用户同时存取同一个数据的情况。如果对这种并发访问不加控制,各个用户就可能存取到不正确的数据,从而破坏数据库的一致性。 针对以上4种对数据库破坏的可能情况,数据库管理系统(DBMS)核心已采取相应措施对数据库实施保护,具体如下: (1)利用权限机制,只允许有合法权限的用户存取所允许的数据,这就是本章4.1节“数据库安全性”应解决的问题。 (2)利用完整性约束,防止非法数据进入数据库,这是本章4.2节“数据库完整性”应解决的问题。 (3)提供故障恢复(Recovery)能力,以保证各种故障发生后,能将数据库中的数据从错误状态恢复到一致状态,此即本章4.3节“故障恢复技术”的内容。 (4)提供并发控制(Concurrent Control)机制,控制多个用户对同一数据的并发操作,以保证多个用户并发访问的顺利进行,此即本章4.4节“并发控制”的内容。

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

信息工程学院实验报告 课程名称:《数据库原理》 实验项目名称:数据库的完整性和安全性 一、实 验 目 的: (1)掌握数据库约束的概念; (2)熟悉SQL SERVER 的完整性约束技术。 (3)了解SQL SERVER 的违反完整性处理措施。 (4)了解登录账户的管理理念与具体方法。 (5)了解数据库用户的管理的要则。 (6)了解用户权限管理的内涵与方法。 二、实 验 设 备 与 器 件 Win7 +Sql server 2008 三、实 验 内 容 与 步 骤 (一)测试完整性 运行附录中的SQL 语句,理解SQL 语句中包含的完整性定义。然后执行下面的SQL 语句,看是否能正常运行,若无法执行,请说明原因。 1.对dept 表进行数据增删改,并检查完整性规则 Dept 已存在的完整性规则如下: dno CHAR(2) PRIMARY KEY dname VARCHAR(20) NOT NULL,UNIQUE (1)增加数据 INSERT INTO dept VALUES('D1','计科系');----正常插入 INSERT INTO dept VALUES('D2','电信系');----正常插入 INSERT INTO dept VALUES(NULL,'机械系'); ----违反dno 主键(NOT NULL )规则 INSERT INTO dept VALUES('D2','机械系'); ----违反dno 主键(UNIQUE ) INSERT INTO dept VALUES('D3',NULL); ----违反dname 的NOT NULL 规则

数据库完整性-习题解答

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

实验三 数据库完整性

实验三数据库完整性 1、实体完整性:定义表的主码。 关系模型的实体完整性在CREA TE TABLE 中用PRIMARY KEY定义。定义主码的方法分为列级约束条件和表级约束条件。 【1-1】定义表STUDENT,将其中的SNO属性定义为主码 【1-2】定义表SC,将其中的SNO、CNO定义为主码 2、参照完整性:定义表的外码 关系模型的参照完整性是在CREA TE TABLE中用FOREIGN KEY语句来定义,并用REFERENCES来指明外码参照的是哪些表的主码。 【2-1】定义表SC,其中SNO参照STUDENT的主码SNO,CNO参照表COURSE的主码 CNO 3、用户定义完整性 【3-1】列值非空。在定义SC表时,SNO、CNO和GRADE属性都不允许取空值。在不特别声明的情况下,非码属性的值允许取空值的 【3-2】列值唯一。建立部门表DEPT,要求部门名称Dname取值唯一,部门编号Deptno属性为主码 【3-3】CHECK短语指定列值应该满足的条件。定义表Student,属性Ssex的值只允许取“男”或“女”;定义表SC,属性Grade的值定义在0~100之间 【3-4】用户定义的元组上的约束条件。定义表Student,要求当学生性别为“男”时,其名字不能以Ms.打头 4、CONSTRAINT完整性约束子句:在定义表时利用约束命名子句对完整性约束条件命名, 能够灵活的增加或删除一个完整性约束条件 【4-1】定义表Student,要求学号在90000~99999之间,姓名不能取空值,年龄小于30,性别只能“男”或“女”,要求全部用约束命名子句实现 【4-2】修改表Student中的完整性限制,去掉对性别的限制,并将年龄的限制由小于30改为小于40 5、触发器 【5-1】定义表TAB,并在其上定义触发器TRI,在对TAB的插入或更新前检查,如果插入或更新的值在100~1000之间的话,将值置为50;如果值大于1000的话,则将新值插入表。【5-2】检测、执行、结果 【5-3】删除触发器TRI

数据库设计源代码

//选择一种高级语言实现下列语句的功能。 //CREATE TABLE <表名>(<列名><数据类型>[<列完整性约束条件>][,<列名><数据//类型>[<列完整性约束条件>]…][,<表完整性约束条件>] ) //ALTER TABLE <表名> [ADD <新列名><数据类型>[<列完整性约束>]] [DROP<列完整//性约束名>][MODIFY <列名><数据类型>] //使用说明 //1、将程序文件table.sql放在D盘根目录下。 //2、在C盘根目录下建立一个名为"数据库"的文件夹,用于存储表。 //3、建立的表存储路径为C:\数据库:\table.dbf。 //4、在程序文件table.sql中只有一条建表语句和三条修改表语句,在以程序方式执//行时注意执行的次数,慎重选择“是否继续执行”。 //5、程序输入的SQL语句格式如下: //create table student //( //SNO int PRIMARY KEY, //SNAME char(10) UNIQUE, //SAGE int, //SDEPT char(20) NOT NULL, //COURSE char(20), //GRADE int //); //alter table student add CNO int NOT NULL; //alter table student alter column SAGE short; //alter table student drop SDEPT; #include #include #include #include //宏定义 #define YEAR 0 #define MONTH 1 #define DAY 2 #define FOX_VERISON_INFO 262 #define MAX 40 //字段类型 #define DATE 0x44 #define DOUBLE 0x45 #define FLOAT 0x46 #define SHORT 0x47

数据库完整性练习题

数据库完整性 一、选择题 1.完整性检查和控制的防范对象(),防止它们进入数据库。安全性控制的防范对象是(),防止他们对数据库数据的存取。 A. 不合语义的数据 B. 非法用户 C. 不正确的数据 D. 非法操作 2.下述哪个是SQL语言中的数据控制命令()。 A. GRANT B. COMMIT C. UPDATE D. SELECT 3.下述SQL语言中的权限,哪一个允许用户定义新关系时,引用其他关系的主码作为外码()。 A. INSERT B. DELETE C. REFERENCES D. SELECT 选择题答案: (1)A C B D(2)A(3)C 二、简答题 1.什么是数据库的完整性? 答:数据库的完整性是指数据的正确性和相容性。

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

第五章_数据库完整性(习题)

一、选择题 1.完整性检查和控制的防范对象是(),防止它们进入数据库。安全性控制的防范对象是(),防止他们 对数据库数据的存取。 A.不合语义的数据 B.非法用户 C.不正确的数据 D.非法操作 2.找出下面SQL命令中的数据控制命令()。 A.GRANT https://www.wendangku.net/doc/851983542.html,MIT C.UPDA TE D.SELECT 3.下述SQL命令中,允许用户定义新关系时,引用其他关系的主码作为外码的是()。 A.INSERT B.DELETE C.REFERENCES D. SELECT 4.下述SQL命令的短语中,不用于定义属性上约束条件的是()。 A.NOT NULL短语 B.UNIQUE短语 C.CHECK短语 D.HA VING短语 二、填空题 1.数据库的完整性是指数据的正确性和相容性。 2.关系模型的实体完整性在CREATE TABLE中用primary key 关键字来实现。 3.检查主码值出现不唯一和有一个为空违约情况时,则DBMS拒绝插入或修改。 4.关系模型的参照完整性在CREATE TABLE中用foreign key关键字来实现。 5.当参照完整性检查出现违约情况时,则DBMS可以采用拒绝、级联和设置为空策略处理。 6.参照完整性的级连操作的关键字是cascade 。 7.在CREA TE TABLE中定义属性上的约束条件,包括not null 、unique 和check。 8.在CREA TE TABLE中定义属性上的约束条件,检查列值唯一用unique 关键字。 9.关系模型的元组上的约束条件的定义,在CREATE TABLE中用check关键字来实现。 10.在Sno(学号)列上创建约束,要求Sno的值在18至22岁之间,约束名Sno_CK。请写出对应的完整性 命名子句constraint Sno_CK primary key check(sno between 18 and 22)。 1.A C ;BD 2. A 3. C 4. D 三、综合题 1.假设有下面两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码; 部门(部门号,名称,经理名,电话),其中部门号为主码。用SQL 语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:定义每个模式的主码;定义参照完整性;定义职工年龄不

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

数据库系统原理 实验报告 实验名称:关系数据库完整性实验任课教师:霍纬刚 学号:100341324 姓名:汪何媛 完成日期: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_student before insert on student for each row begin select 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_student after delete or insert or update on student for each row begin if deleting then update audit_student set del =del+1 where user_name=user and table_name='student'; end if; if inserting then update audit_student set ins=ins+1 where user_name=user and table_name='student'; end if; if updating then update 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,0 3)以SCOTT身份登录,对student表进行增加删除和修改操作,之后查看 audit_student表的内容变化。 例3、为教师表Teacher定义完整性规则:“职称(pos)为教授时其工资(sal)不得低于1000元,如果低于1000元,自动改为1000元”。 create or replace trigger update_sal

相关文档