数据库 第十章
第十章 对象关系数据库
聚集类型的差异
类型 元 素
有 序
元素的重复性
允许一个元素出 现多次
元素 个数
预置
例子
[1,2,1]和[2,1,1]是 不同的数组
数组
列表
包(多集)
有 序
无 序
允许一个元素出 现多次
允许一个元素出 现多次
未预 置
未预 置
{1,2,1}和{2,1,1}是 不同的列表
{1,2,1}和{2,1,1}是 相同的包
persistent
也可以不定义关系类型,直接使用集合set形式: type UniversityTup = tuple (uno: integer, uname: string,
staff : set(FacultTup));
type
FacultTup = tuple(fno:integer,
fname:string, age:integer);
… …
FacultyTup
采用“引用” 技术解决类型定义中的递归问题。
在属性的类型中,除了基本数据类型、元组类型、关系类型外,
还可以出现“引用类型”。引用类型相当于程序设计中指针的概 念, 在面向对象技术中称为“对象标识”。 引入“引用”概念的类型构造: UniversityRel UniversityTup
数据库实用教程(第三版)第十章ຫໍສະໝຸດ 对象关系数据库第十三章
本章概念:
对象关系数据库
新一代DBS的两条途径:ORDBS和OODBS; 平面关系模型,嵌套关系模型,复合对象模型,引用类型; 对象联系图的成分及表示方法,数据的泛化/细化; ORDB的定义语言:数据类型、继承性、引用类型的定义, ORDB的查询语言:路径表达式、嵌套与解除嵌套。
第十章练习题及答案
第十章数据库恢复技术一、选择题1.一个事务的执行,要么全部完成,要么全部不做,一个事务中对数据库的所有操作都是一个不可分割的操作序列的属性是(A )。
A. 原子性B. 一致性C. 独立性D. 持久性2.表示两个或多个事务可以同时运行而不互相影响的是(C)。
A. 原子性B. 一致性C. 独立性D. 持久性3. 事务的持续性是指(B )A.事务中包括的所有操作要么都做,要么都不做。
B.事务一旦提交,对数据库的改变是永久的。
C.一个事务内部的操作对并发的其他事务是隔离的。
D.事务必须是使数据库从一个一致性状态变到另一个一致性状态。
4.SQL语言中的COMMIT语句的主要作用是(C)。
A. 结束程序B. 返回系统C. 提交事务D. 存储数据5.SQL语言中用(B)语句实现事务的回滚A. CREATE TABLEB. ROLLBACKC. GRANT和REVOKED. COMMIT 6.若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为(A )。
A. 介质故障B. 运行故障C. 系统故障D. 事务故障7.在DBMS中实现事务持久性的子系统是(B D )。
A. 安全管理子系统B. 完整性管理子系统C. 并发控制子系统D. 恢复管理子系统8. 后援副本的作用是(C)。
A. 保障安全性B. 一致性控制C. 故障后的恢复D. 数据的转储9.事务日志用于保存(D C)。
A. 程序运行过程B. 程序的执行结果C. 对数据的更新操作D. 数据操作10.数据库恢复的基础是利用转储的冗余数据。
这些转储的冗余数据包括(C)。
A. 数据字典、应用程序、审计档案、数据库后备副本B. 数据字典、应用程序、审计档案、日志文件C. 日志文件、数据库后备副本D. 数据字典、应用程序、数据库后备副本选择题答案:(1) A (2) C (3) B (4) C (5) B(6) A (7) D (8) C (9) C (10) C二、简答题1.试述事务的概念及事务的四个特性。
数据库系统概论第五版课后答案第十章
数据库系统概论第五版课后答案第十章
1。
在数据库中为什么要并发控制?
答:数据库就是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取与,或修改同一数据得情况。
若对并发操作不加控制就可能会存取与存储不正确得数据,破坏数据库得一致性。
所以数据库管理系统必须提供并发控制机制.
2.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致得情况?
答:并发操作带来得数据不一致性包括三类:丢失修改、不可重复读与读“脏’夕数据。
( l)丢失修改(]ostupdate)两个事务Tl与T2读入同一数据并修改,T2提交得结果破坏了(覆盖了)提交得结果,导致l得修改被丢失。
(2)不可重复读(No n- RepeatableRead) 不可重复读就是指事务l读取数据后,事务几执行更新操作,使Tl 无法再现前一次读取结果。
( 3)读“脏”数据( D irtyRead)读“脏’夕数据就是指事务Tl修改某一数据,并将其写回磁盘,事务几读取同一数据后,Tl由于某种原因被撤销,这时Tl己修改过得数据恢复原值,几读到得数据就与数据库中得数据不一致,则几读到得数据就为“脏”数据,即不正确得数据。
避免不一致性得方法与技术就就是并发控制。
最常用得技术就是封锁技术。
也可以用其她技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制.。
数据库的国际保护制度
2、《世界知识产权组织版权条约》(WCT)第5条规定:“数 据或其他材料的汇编无论采用任何形式,只要由于其内容的选 择或排列构成智力创作,其本身就受保护。”
上诉法院认为,如果不需咨询意见就能明确对指令的解释,法 院倾向于支持原审法院的判决。但法院还是决定向欧洲法院咨 询,而并未提交上议院处理(因其认为,上议院也会向欧洲法 院咨询),以免拖延争议的解决。法院还决定,解除对被告的 禁令。
该案这充分反映出数据库指令虽然已在欧盟各国实施多年,但 各国并没有真正统一理解和实施数据库指令。或许,这正是该 案例的价值所在。
(三)数据库特殊权利的限制
欧盟《数据库指令》对特殊权利保护的限制不但范围狭窄,而 且设定了前提条件,只有数据库的“合法用户”才能适用这些 例外规定:
1、为任何目的,复制或传播数据库内容的非实质性部分;
2、为私人目的,复制非电子数据库内容的实质部分;
3、为教学科研目的,复制数据库内容的实质性部分,但要标明 材料的来源,使用的内容也不能超出实现非商业性目的所需的 程度;
经定性与/或定量证明作出实质性投入(Substancial Inves殊权利保护的 规定
二、特殊权利保护的适用 (一)受特殊权利保护的数据库范围 1、受特殊权利保护的数据库必须是按有序的方式编 排的,由独立的(包括非版权)作品、数据或其他材 料组成的,并且各部分能被以电子或其他方式单独访 问的集合体,但用于制作或驱动电子数据库的计算机 程序不享受特殊权利保护。 2、上述适用范围的限制条件:只有那些在内容的获 得、检验、编排等方面进行了实质性投资的数据库方 能享有特殊权利保护。
MySQL 数据库基础与应用 第10章 权限管理和安全控制
MySQL 数据库基础与应用
5
10.2 用户管理
10.2.1 创建用户
创建用户使用CREATE USER语句。 语法格式:
CREATE USER user_specification [ , user_specification ] ...
其中,user_specification:
user [
IDENTIFIED BY [ PASSWORD ] ‘password’ | IDENTIFIED WITH auth_plugin [ AS ‘auth_string’] ]
10.2 用户管理
一个新安装的MySQL系统,只有一个名为root的用户,可使用以下 语句进行查看:
mysql> SELECT host, user, authentication_string FROM er;
+-----------+--------+------------------------------------------------------------------------+
4. procs_priv表 procs_priv表可以存储过程和存储函数进行权限设置。procs_priv表 包含8个字段,分别是Host、Db、User、Routine_name、Routine_type、 Grantor 、Proc_priv和Timestamp。
MySQL 数据库基础与应用
4
+-----------+--------+------------------------------------------------------------------------+
《MySQL数据库原理、设计与应用》第10章课后习题答案
第十章一、填空题1.92. e3.@,变量名4.REPEAT5.DELIMITER二、判断题1.错2.错3.对4.对5.对三、选择题1. A2. D3. D4. C5. B四、简答题1.请简述存储过程和函数的区别。
答:(1)语法中实现的标识符不同,存储过程使用PROCEDURE,函数为FUNCTION。
(2)存储过程在创建时没有返回值,而函数在定义时必须设置返回值。
(3)存储过程没有返回值类型,且不能将结果直接赋值给变量;而函数定义时需要设置返回值类型,且在调用时除在SELECT中,必须将返回值赋给变量。
(4)存储过程必须通过CALL进行调用,不能使用SELECT调用;而函数则可在SELECT语句中直接使用。
2.请说一说触发器以及其作用。
答:概念:触发器可以看作是一种特殊类型的存储过程,在预先定义好的事件(如INSERT、DELETE等操作)发生时,才会被MySQL自动调用。
作用:①触发器可以通过数据库中的相关表实现级联无痕更改操作。
②保证数据安全,进行安全校验五、实训题11. 请在shop数据库中创建一个存储过程,以订单编号为参数,输出该订单的商品信息。
mysql> DELIMITER $$mysql> CREATE PROCEDURE shop.order_proc(IN order_id INT )-> BEGIN-> SELECT g.id, FROM sh_goods g-> LEFT JOIN sh_order_goods og ON g.id = og.goods_id-> WHERE og.order_id = order_id;-> END-> $$Query OK, 0 rows affected (0.01 sec)mysql> DELIMITER ;2. shop.sh_order_goods表上创建一个触发器,当添加订单-商品信息时,修改sh_goods表中对应商品的库存量。
第10章 数据完整性-数据库原理与应用教程(Oracle 12c版)-赵明渊-清华大学出版社
例如,对于stsys数据库中student表,sno列作为主键,每一个学 生的sno列能唯一地标识该学生对应的行记录信息,通过sno列建立 主键约束实现student表的实体完整性。
3.参照完整性
参照完整性保证主表中的数据与从表中数据的一致性,又称为 引用完整性,参照完整性确保键值在所有表中一致,通过定义主键 (PRIMARY KEY)与外键(FOREIGN KEY)之间的对应关系实现参照 完整性。
Oracle使用完整性约束机制以防止无效的数据进入数据库的基 表,如果一个DML语句执行结果破坏完整性约束,就会回滚语句并 返回一个错误。通过完整性约束实现数据完整性规则有以下优点:
●完整性规则定义在表上,存储在数据字典中,应用程序的任何 数据都必须遵守表的完整性约束。
●当定义或修改完整性约束时,不需要额外编程。
主键(PRIMARY KEY):表中能唯一标识每个数据行的一个或 多个列。
外键(FOREIGN KEY):一个表中的一个或多个列的组合是另 一个表的主键。
数据库原理与应用教程
(Oracle 12c 版)
4
10.1 数据完整性概述
例如,将student表作为主表,表中的sno列作为主键,score表作为 从表,表中的sno列作为外键,从而建立主表与从表之间的联系实现参 照完整性,student表和score表的对应关系如表10.1、和表10.2所示。
● CHECK约束,检查约束,现域完整性。
● NOT NULL约束,非空约束,实现域完整性。
● PRIMARY KEY约束,主键约束,实现实体完整性。
● UNIQUE KEY约束,唯一性约束,实现实体完整性。
● FOREIGN KEY约束,外键约束,实现参照完整性。
第10章数据库实体联系模型
2021/4/22
17
三种基本二元联系示例
部门
1
被管理
1
经理
部门
1
包含
n
职工
职工
m
参与
n
项目
2021/4/22
18
n-元联系
用具有n个连接的菱形表示,每个连接 对应一个实体。
病人
就医
医院
病房
2021/4/22
医生
药物
19
联系的存在性
指某个实体的存在依赖于其它实体的 存在。
联系中实体的存在分为强制和非强制 (或可选的)两种。
强制存在要求联系中任何一端的实体 的实例都必须存在。
非强制存在允许实体的实例可以不存 在。
2021/4/22
20
联系的存在性(续)
在E-R图中,在实体和联系的连线上 标○表示是非强制存在;
由一个独立成分构成的属性。 不可再分成更小的成分。 也称为原子属性。 实体“学生”中的学号、姓名、性别
属性都是简单属性的例子。
2021/4/22
27
复合属性
由多个独立存在的成分构成的属性。 有些属性可以划分成更小的独立成分。 如,设“职工”实体中有“地址”属性,该
属性取值形式为“**省**市**区**街道”, 则该属性可进一步分解为 省、市、区、街道 “街道”又可分为街道号、街道名和楼牌
工作任务
用于 外部项目
被分配
OR
内部项目
“工作任务” 可以分配到 “外部项目” 中或者是“内 部项目”中, 但不能同时分 配到这两个实 体中。
第10章__数据库Access2010
打开数据库
10.2.1 数据库的创建与使用
②保存数据库 操作步骤如下: 单击屏幕左上方的“文件”标签,在打开的 Backstage视图中选择“保存”命令,即可保存输入 的信息。 弹出Microsoft Access对话框,提示保存数据库 前必须关闭所有打开对象,单击“是”按钮即可。 或者选择“数据库另存为”命令,可更改数据库 的保存位置和文件名。
10.1.2 Access2010的界面
状态栏
“状态栏”位于窗口底部,用于显示状态信息, 还包含用于切换视图的按钮。
微型工具栏
在Access2010中,可以使用微型工具栏轻松 设置文本格式。用户选择要设置格式的文本后, 微型工具栏会自动出现在所选文本的上方。如果 将鼠标指针靠近微型工具栏,则微型工具栏会渐 渐淡入,用户可以用它来加粗、倾斜、选择字号、 颜色等。如果将鼠标指针移开,则微型工具栏会 渐渐淡出。如果不想使用微型工具栏设置格式, 只需将指针移开一段距离,微型工具栏即会自动 消失。
“外部数据”选项卡
10.1.2 Access2010的界面
“数据库工具”选项卡 利用“数据库工具”选项卡可以完成以下功 能:启动VB编辑器或运行宏、创建或查看表关系、 显示隐藏对象相关性或属性工作表、运行数据库 文档或分析性能、将数据移至数据库、运行链接 表管理器、管理Access加载项、创建或编辑VBA模 块等。
10.2.2 表的建立
创建“联系人”表
表操作
10.2.2 表的建立
使用表设计创建表操作步骤: ①启动Access2010,新建数据库“表示例” ② 切换到“创建”选项卡,单击“表格”组中的 “表设计”按钮,进入表的设计视图。
10.2.2 表的建立
③ 在“字段名称”栏中输入字段的名称“学号”; 在“数据类型”选择该字段的数据类型,这里选择 “数字”选项;“说明”栏可以输入也可以不输入 ④ 用同样的方法,输入其它字段名称,并设置相应 的数据类型。 ⑤ 选择要设为主键(能唯一标识一条记录的字段) 的字段, 在“设计” 选项卡的“工具”组中,单 击 “主键”按钮,即可将其设为主键。
数据库原理10-PPT精选文档
事务中所有对数据库的更新永久生效
ROLLBACK
事务异常终止
事务运行的过程中发生了故障,不能继续执行
回滚事务的所有更新操作 事务滚回到开始时的状态
3.事务的特性(ACID特性)
事务的ACID特性:
原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持续性(Durability )
1)原子性
事务是数据库的逻辑工作单位
事务中包括的诸操作要么都做,要么都不做
2) 一致性
事务执行的结果必须是使数据库从一个一致性状态变 到另一个一致性状态
一致性状态:数据库中只包含成功事务提交的结果 不一致状态:数据库中包含失败事务的结果
2. 备 份
我们希望永远不进行恢复数据库的操作,但是数据库的备份操
作是必须定期进行的;数据库必须适时地进行备份,以防意外 事件的发生而造成数据的损失。
数据库备份需要根据实际情况,制定不同的备份策略,一方面
可以保证数据的安全性,另一方面又要避免不必要浪费。 备份策略:确定备份的内容、确定备份介质、确定备份方式、
(3) 病毒。破坏性病毒会破坏系统软件、硬件和数据。
(4) 误操作。如用户误使用了诸如DELETE、UPDATE等命令而引起 数据丢失或被破坏。
(5) 自然灾害。如火灾、洪水或地震等,它们会造成极大的破坏,会 毁坏计算机系统及其数据。
(6) 盗窃。一些重要数据可能会遭窃。
数据库恢复就是当数据库出现故障时,将备份的数据 库加载到系统,从而使数据库恢复到备份时的正确状 态。 恢复技术是衡量系统优劣的重要指标; 系统进行恢复操作时,先执行一些系统安全性的检查 ,包括检查所要恢复的数据库是否存在、 数据库是否 变化以及数据库文件是否兼容等,然后根据所采用的 数据库备份类型采取相应的恢复措施。
数据库应用技术10
10.1.3 深入SQL-DMO 对象
例程10.3:在VB中用SQL-DMO对象建立到数据库Book的连接,并且在该数据库上建立一个视图,该视图返回与“北 京怡神工贸有限公司”签定的所有合同。代码如下: Dim objSQLSERVER As SQLDMO.SQLServer Set objSQLSERVER = New SQLDMO.SQLServer Dim objDB As SQLDMO.database Dim objView As SQLDMO.View On Error GoTo ErrorHandler objSQLSERVER.LoginTimeout = -1 objSQLSERVER.LoginSecure = False objSQLSERVER.AutoReConnect = False objSQLSERVER.Connect "red", "sa", "" Set objDB = objSQLSERVER.Databases("book") Set objView = New SQLDMO.View = "GetContract" objView.Text = "Create View GetContract AS" _ & " select companyname,contractid from company,contract" _ & " where panyid=panyid " _ & " and companyname='北京怡神工贸有限公司'" objDB.Views.Add objView MsgBox "创建成功!" objSQLSERVER.DisConnect Set objSQLSERVER = Nothing Set objDB = Nothing Set objView = Nothing Exit Sub ErrorHandler: MsgBox "错误: " & Err.Number & " " & Err.Description, vbOKOnly, "提示"
数据库系统第10章--数据库恢复技术
写回A=13
T1的修改被T2覆盖了!
PPT课件
4. 持续性
❖ 持续性也称永久性(Permanence)
▪ 一个事务一旦提交,它对数据库中数据的改变就应该 是永久性的。
▪ 接下来的其他操作或故障不应该对其执行结果有任何 影响。
PPT课件
事务的特性
❖ 保证事务ACID特性是事务处理的任务 ❖ 破坏事务ACID特性的因素
PPT课件
事务结束
COMMIT 事务正常结束 提交事务的所有操作(读+更新) 事务中所有对数据库的更新永久生效
ROLLBACK 事务异常终止 ▪ 事务运行的过程中发生了故障,不能继续执行 回滚事务的所有更新操作 ▪ 事务滚回到开始时的状态
PPT课件
二、事务的特性(ACID特性)
事务的ACID特性:
PPT课件
事务内部的故障(续)
❖ 这个例子所包括的两个更新操作要么全部完成要么全部不 做。否则就会使数据库处于不一致状态,例如只把账户甲 的余额减少了而没有把账户乙的余额增加。
❖ 在这段程序中若产生账户甲余额不足的情况,应用程序可 以发现并让事务滚回,撤销已作的修改,恢复数据库到正 确状态。
PPT课件
数据库系统概论
An Introduction to Database System
第十章 数据库恢复技术
PPT课件
第十章 数据库恢复技术
10.1 事务的基本概念 10.2 数据库恢复概述 10.3 故障的种类 10.4 恢复的实现技术 10.5 恢复策略 10.6 具有检查点的恢复技术 10.7 数据库镜像 10.8 小结
▪ 多个事务并行运行时,不同事务的操作交叉执行 ▪ 事务在运行过程中被强行停止
PPT课件
第十章列族数据库
第⼗章列族数据库
10.1 何谓列族数据库
列族数据库将数据存储在列族中,⽽列族⾥的⾏则把许多列数据与本⾏的“⾏键”关联起来。
Cassandra可以说是⼀种能快速执⾏跨集群写⼊操作并易于对此扩展的数据库。
集群中没有主节点,其中每个节点均可处理读、写。
10.2 特性
cassandra的基本存储单元叫做“列”。
Cassandra的列由⼀个“名值对”组成,其中的名字也丛当关键字。
每个键值对都占据⼀列,并且都存有⼀个“时间戳”值。
令数据过期、解决写⼊冲突、处理陈旧数据等操作都会⽤到时间戳。
⾏是列的集合,由相似⾏构成的集合就是列族。
列族数据库的各⾏不⼀定要具备完全相同的列,并且可以随意向其中某⾏加⼊⼀列
超列:某列中包含⼀个由⼩列组成的映射表。
超列构建的列族叫做“超列族”。
键空间:
10.2.1 ⼀致性
Cassanfra收到写⼊请求后,会先将待写数据记录到“提交⽇志”中,。
数据库系统实用教程-第十章数据库管理-732
2.对象查询子语言 (1)查询
SELECT 目标子句 FROM 范围子句 WHERE 条件子句—路径表达式 —路径表达式:由路径组成 —路径:路径变量 —路径变量:可插入方法 —路径谓词:X ⊙ Y
Student (S)
Sno Sname Sage Study
Course (C)
Cno Cname Pcno Teaching Classroom
7.类(class) 8.类继承(inheritance) 9.类继承层次结构(class inheritance hierarchy
strncture) 10.类性质 多态 重载 重定义 迟联编 11.类合成(composition) 12.类合成层次结构(class composition hierarchy
(4)修改
修改语句可以完成类中对象的修改,对象修 改也选用类似SQL语句中有关修改的语句:
UPDATE Target Clause
SET
Set Clause
WHERE Condition Clause
11.6面向对象数据库的应用
工程领域应用 多媒体领域应用 GIS领域应用 系统集成领域应用
structure) 13.类层次结构(class hierarchy structure) 14.持久性(persistance)
11.4面向对象数据模型
1.类层次结构构成一个面向对象数据模型 2.面向对象数据模型包括: 数据结构 数据结构上的操纵 数据间的约束
11.5面向对象数据库管理系统OODBMS
Undergraduate Gruduate -Student (U) -Student (G)
Classno direct
Room ( R )
数据库系统l试题库及答案第10章排序
第10章排序10.1排序的相关知识一、填空题1.将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列叫2.大多数排序算法都有两个基本的操作:____________ 和___________ 。
二、选择题1.()排序算法的稳定性是指()。
A.经过排序后,能使关键字相同的元素保持原顺序中的相对位置不变B.经过排序后,能使关键字相同的元素保持原顺序中的绝对位置不变C.排序算法的性能与被排序元素的个数关系不大D.排序算法的性能与被排序元素的个数关系密切2.()关于排序的以下叙述中,正确的是()。
A.稳定的排序方法优于不稳定的排序方法,因为稳定的排序方法效率高B.对同一个线性表使用不同的排序方法进行排序,得到的排序结果可能不同C.排序方法都是在顺序表上实现的,在链表上无法实现排序方法D.在顺序表上实现的排序方法都可以在链表上实现3.()以下不属于内部排序方法的是()。
A.选择排序B. 插入排序C. 归并排序D. 拓扑排序10.2插入排序填空题1. 在对一组记录(54, 38, 96, 23,15,72,60,45, 83)进行直接插入排序时,当把第个记录60插入到有序表时,为寻找插入位置至少需比较______________ 次。
二、选择题:1.()排序方法中,从未排序序列中依次取出元素与已排序序列(初始时空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为()。
A. 希尔排序B. 冒泡排序C. 插入排序D. 选择排序2.()折半插入排序算法的平均情况下的时间复杂度为()。
2 3A. O(n)B. O (nlog 2n)C. O (n )D. O (n )3.()对含有n个元素的顺序表采用直接插入排序方法进行排序,在最坏情况下所需的比较次数是()。
A.n-1B. n+1C. n/2D. n(n-1)/2三、简答题1.给出关键字序列{4,5,1,2,8,6,7,3,10,9} 的直接插入排序过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
完整性约束条件( 完整性约束条件(续) 4. 动态列级约束
动态列级约束是修改列定义或列值时应 满足的约束条件
完整性约束条件( 完整性约束条件(续)
1) 修改列定义时的约束
例:将原来允许空值的列改为不允许空值时: 该列目前已存在空值,则拒绝这种修改
2) 修改列值时的约束 修改列值时新旧值之间要满足的约束条件
1. 外码是否可以接受空值的问题
例2:学生-选课数据库
Student关系为被参照关系,其主码为Sno. SC为参照关系,外码为Sno. SC Sno 若SC的Sno为空值:表明尚不存在的某个学生,或者 某个不知学号的学生,选修了某门课程,其成绩记录 在Grade中 与学校的应用环境是不相符的,因此SC的Sno列不能 取空值.
DBMS的完整性控制机制(续) 的完整性控制机制( 的完整性控制机制 3. 违约反应
拒绝该操作 其他处理方法
DBMS的完整性控制机制(续) 的完整性控制机制( 的完整性控制机制
完整性规则五元组表示:
(D,O,A,C,P)
D(Data) 约束作用的数据对象; O Operation O(Operation) 触发完整性检查的数据库操作 当用户发出什么操作请求时需要检查该完整性规则 是立即检查还是延迟检查; A(Assertion) 数据对象必须满足的断言或语义约束 这是规则的主体; C(Condition) 选择A作用的数据对象值的谓词; P(Procedure) 违反完整性规则时触发的过程.
允许修改主码策略
例:将Student关系中Sno=950001的元组中 Sno值改为960123.而SC关系中有 4个元组 的Sno=950001 级联修改:将SC关系中4个Sno=950001元 组中的Sno值也改为960123.如果参照关系 同时又是另一个关系的被参照关系,则这种 修改操作会继续级联下去.
4. 修改被参照关系中主码的问题 两种策略 (1)不允许修改主码 (2)允许修改主码
允许修改主码策略
违约操作 要修改被参照关系中某些元组的主码 值,而参照关系中有些元组的外码值 正好等于被参照关系要修改的主码值
要修改参照关系中某些元组的主码值, 而被参照关系中没有任何元组的外码 值等于被参照关系修改后的主码值
2.在被参照关系中删除元组时的问题 在被参照关系中删除元组时的问题
置空值删除:将SC关系中所有Sno=950001 的元组的Sno值置为空值. 在学生选课数据库中,显然第一种方法和第 二种方法都是对的.第三种方法不符合应用 环境语义.
3.在参照关系中插入元组时的问题 在参照关系中插入元组时的问题
出现违约操作的情形 需要在参照关系中插入元组,而被参 照关系不存在相应的元组 违约反应 受限插入 递归插入
3.在参照关系中插入元组时的问题 在参照关系中插入元组时的问题
受限插入 仅当被参照关系中存在相应的元组,其主码 值与参照关系插入元组的外码值相同时,系 统才执行插入操作,否则拒绝此操作. 递归插入 首先向被参照关系中插入相应的元组,其主 码值等于参照关系插入元组的外码值,然后 向参照关系插入元组.
延迟执行的约束(Deferred constrainsts) 完整性检查延迟到整个事务执行结束后 进行
DBMS的完整性控制机制(续) 的完整性控制机制( 的完整性控制机制
例:银行数据库中"借贷总金额应平衡"的约束 就应该是延迟执行的约束 从账号A转一笔钱到账号B为一个事务,从账 号A转出去钱后账就不平了,必须等转入账 号B后账才能重新平衡,这时才能进行完整 性检查.
DBMS的完整性控制机制(续) 的完整性控制机制( 的完整性控制机制
例1:在"学号不能为空"的约束中 D 约束作用的对象为Sno属性 O 插入或修改Student 元组时 A Sno不能为空 C 无(A可作用于所有记录的Sno属性) P 拒绝执行该操作
DBMS的完整性控制机制(续) 的完整性控制机制( 的完整性控制机制
1) 2) 3) 4) 实体完整性约束 参照完整性约束 函数依赖约束 统计约束
函数依赖约束 关系字段间存在的函数依赖
例:在学生-课程-教师关系 SJT(S,J,T) 的函数依赖: ( (S,J)→T, T→J ) 主码: (S, J)
统计约束
定义某个字段值一个关系多个元组的统计值之间 的约束关系 例:职工平均工资的2倍<=部门经理的工资<= 2 <= <= 职工平均工资的5倍 职工平均工资值: 统计值
完整性约束条件( 完整性约束条件(续) 1. 静态列级约束
静态列级约束:对的取值域的说明 最常见,最简单,最容易实现的一类完 整性约束
完整性约束条件( 完整性约束条件(续)
五类静态列级约束
1) 数据类型约束:数据的类型,长度,单位,精度等 例:学生姓名的数据类型为字符型,长度为8 2) 对数据格式的约束 例: 学号:前两位表示入学年份,后四位为顺序编号 日期:YY.MM.DD.
完整性约束条件( 完整性约束条件(续)
2. 静态元组约束
规定元组的各个列之间的约束关系
例:订货关系中发货量<=订货量 <= 教师关系中教授的工资>=700元
静态元组约束只局限在元组上
完整性约束条件( 完整性约束条件(续)
3. 静态关系约束
关系的各个元组之间或若干关系之间存在的各 种联系或约束 常见静态关系约束:
例:职工工资调整 >= 原来工资 年龄只能增长
完整性约束条件( 完整性约束条件(续) 5. 动态元组约束
修改元组值: 各个字段之间要满足的约束条件
例: 职工工资调整不得低于其原来工资 + 工龄*1.5
完整性约束条件( 完整性约束条件(续) 6. 动态关系约束
关系变化前后状态:限制条件
例:事务一致性,原子性等约束条件
2.在被参照关系中删除元组时的问题 在被参照关系中删除元组时的问题
出现违约操作的情形: 删除被参照关系的某个元组(student) 而参照关系有若干元组(SC)的外码值与 被删除的被参照关系的主码值相同
2.在被参照关系中删除元组时的问题 在被参照关系中删除元组时的问题
违约反应:可有三种策略 级联删除(CASCADES) 受限删除(RESTRICTED) 置空值删除(NULLIFIES)
3.在参照关系中插入元组时的问题 在参照关系中插入元组时的问题
例:向SC关系插入(99001,1,90)元组, 而Student关系中尚没有Sno=99001的学生 受限插入:系统将拒绝向SC关系插入 (99001,1,90)元组 递归插入:系统将首先向Student关系插入 Sno=99001的元组,然后向SC关系插入 (99001,1,90)元组.
拒绝执行 接受这个操作,同时执行一些附加的操作,以保证 数据库的状态正确
三,参照完整性的实现
例:职工-部门数据库包含职工表EMP和部门表DEPT
1 DEPT关系的主码为部门号Deptno 2 EMP关系的主码为职工号Empno, 外码为部门号Deptno 称DEPT为被参照关系或目标关系,EMP为参照关系
1.完整性约束条件定义机制 2.完整性检查机制 3.违约反应
完整性约束条件定义
完整性约束条件:数据模型的组成部分约束 数据库中数据的语义 DBMS应提供定义数据库完整性约束条件, 并把它们作为模式的一部分存入数据库中
完整性控制机制
检查用户发出的操作请求是否违背了完 整性约束条件
违约反应
如果发现用户的操作请求使数据违背了 完整性约束条件,则采取一定的动作来 保证ห้องสมุดไป่ตู้据的完整性.
一,DBMS的完整性控制机制 的完整性控制机制 1. 定义功能
一个完善的完整性控制机制应该允许用户定义 各类完整性约束条件.
DBMS的完整性控制机制(续) 的完整性控制机制( 的完整性控制机制 2. 检查功能
立即执行的约束(Immediate constraints)
语句执行完后立即检查是否违背完 整性约束
数据库系统概论
第十章 数据库完整性
第十章
数据库完整性
什么是数据库的完整性
数据的正确性和相容性 防止不合语义的数据进入数据库.
例: 学生的年龄必须是整数,取值范围为14--29; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系;
完整性:否真实地反映现实世界
完整性控制机制
RDBMS实现参照完整性时需要考虑以下4方面:
1. 外码是否可以接受空值的问题
外码是否能够取空值:依赖于应用环境的语义 实现参照完整性:
系统提供定义外码的机制 定义外码列是否允许空值的机制
1. 外码是否可以接受空值的问题
例1:在职工-部门数据库中, EMP EMP关系包含有外码Deptno Deptno 某元组的这一列若为空值,表示这个职 工尚未分配到任何具体的部门工作 和应用环境的语义是相符
完整性约束条件分类
六类完整性约束条件 静态列级约束 静态元组约束 静态关系约束 动态列级约束 动态元组约束 动态关系约束
完整性约束条件( 完整性约束条件(续)
对象状态 动态 动态列级约束 ④ 静态列级约束 ① 动态元组约束 ⑤ 静态元组约束 ② 动态关系约束 ⑥ 静态关系约束 ③
静态
列
元组
关系
对象粒度
这三种处理方法,哪一种是正确的,要依应 用环境的语义来定
2.在被参照关系中删除元组时的问题 在被参照关系中删除元组时的问题
级联删除
将参照关系中外码值与被参照关系中要删除元 组主码值相对应的元组一起删除
受限删除
当参照关系中没有任何元组的外码值与要删除 的被参照关系的元组的主码值相对应时,系统 才执行删除操作,否则拒绝此删除操作
第十章 数据库完整性
10.1 完整性约束条件 10.2 完整性控制