第8章 数据库的安全和完整性约束 数据库的破坏一般来自: 1.系统故障; 2.并发所引起的数据不一致; 3.人为的破坏;

Slides:



Advertisements
Similar presentations
仪 容. 一、化妆的技巧 眼部的化妆 唇部化妆 眉部化妆 鼻部化妆 根据脸型化妆 根据脸型选发型.
Advertisements

Oracle. 数据操纵语言  数据操纵语言用于检索、插入和修改数据  数据操纵语言是最常见的 SQL 命令  数据操纵语言命令包括:  SELECT  INSERT  UPDATE  DELETE.
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
1 第 5 章 SQL 语句基础 在 Oracle 数据库中,为了方便管理用户所创建的 数据库对象,引入了模式的概念,这样用户所创建的 数据库对象就都属于该用户模式。对于一般的用户而 言,数据库中的数据是以表、视图行等方式存储的( 表和视图就是最基本的用户模式对象),用户只需要 根据自己的需求查询数据库,然后由数据库根据请求.
第十章 Java 数据库编程. 内容提要 数据库有关概念; 介绍 JDBC 的结构; 重点介绍 JDBC 访问几种数据库的基本过程;
2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
2011/11,12 南台資管 吳昭儀. 1. 使用者介面 (User Interface)  使用者操作畫面的安排  Textbox, ComboBox, ListBox, CheckList, … 2. 流程控制 (Process Control)  使用者輸入資料檢查  計算  資料輸出.
Data type P64 ‘’ 转义字符 P67 P68 EXE,选出某个教师的学生中最新的一 个,要姓名, ID (,LIMIT ) EXISTS,NOT EXISTS P409 Q,EXISTS 和 in 的区别( 1000 ,查询结果)
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
第6章: 完整性与安全性 域约束 参照完整性 断言 触发器 安全性 授权 SQL中的授权.
数据库系统原理及应用 Database Theory and Application
SQL的简单查询.
十一 ASP对数据库的访问.
第2讲 Transact-SQL语言.
Access数据库程序设计 总复习.
数据库原理及应用 《数据库原理及应用》课程组 荆楚理工学院.
第十三章 SQL Server的安全管理.
資料庫 (Database) SQL Server 2008實作
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
数据库原理及设计 --作业.
文科计算机小公共课规划教材 Access 程序设计.
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
电子商务师 第二部分 电子商务的技术基础—计算机.
MySQL主从同步
计算机应用基础 上海大学计算中心.
数据库应用技术 天津大学计算机基础教学部 2013年9月.
数据库原理 Database Principles 第五章 数据库完整性 Database Principles.
An Introduction to Database System
数据库应用与程序设计.
农村五保供养政策法规解读 民政厅社会救助处 田智勇 2015年8月6日 鄂尔多斯
第五讲 利用视图进行查询优化.
也許你很疑惑: 最近升官的同事,專業能力又沒你強! 情場得意的朋友,長的又沒你帥或美! 小曹要交新朋友,為什麼就是比較簡單!
分布式数据库和移动数据库.
数据库技术 第十章 数据库完整性 中国科学技术大学网络学院 阚卫华.
第四章:触发器   触发器类似于过程、函数,因为它们都是拥有说明部分、语句执行部分和异常处理部分的有名的PL/SQL块。与包类似,触发器必须存储在数据库中,并且不能被块进行本地化说明。但是,对于过程而言,可以从另一个块中通过过程调用显式地执行一个过程,同时在调用时可以传递参数。对于触发器而言,当触发事件发生时就会显式地执行该触发器,并且触发器不接受参数。
行動研究就是一種行動性的研究,由行動者來進行研究,而不是由外於行動領域的學者與與科學家來進行,研究的問題也取自行動。
第六章 學習SQL語言.
課程名稱:資料庫系統 授課老師:李春雄 博士
实验二 交互式SQL 邓云.
数据库技术 第三章 关系数据库标准语言SQL 中国科学技术大学网络学院 阚卫华.
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
2、掌握SQL中各种查询方法和数据更新方法 3、掌握SQL中视图的定义方法和用法 4、掌握SQL的授权机制
Chap 10 SQL定義、操作與控制指令.
資料庫安全 (Database Security)
彰化縣政府補助辦理網頁設計資料庫應用班 ASP與資料庫介紹 建國技術學院資管系 饒瑞佶.
第16讲 数据库系统的增强安全性 第7章:数据库系统的增强安全性.
Transact-SQL 語言設計教學.
第九組 組員 M 李俐葶 M 鄧惟升 M 蔡孟均 M 黃炫國
第 16 章 觸發程序.
課程名稱:資料庫系統 授課老師:李春雄 博士
5 数据库管理与保护 数据库运行的最小逻辑工作单位是事务,所有对数据库的操作,都以事务作为一个整体来执行或撤销。
第9章 SQL Server的数据库保护技术 教学目标:通过本章学习,了解SQL Server的安全体系结构的含义和安全认证模式的分类;掌握SQL Server登录账号、用户账号及角色的创建方法;熟悉权限的分类,掌握对象权限和语句权限的管理方法;明确SQL Server中数据完整性的种类,掌握数据完整性实现的具体方法;熟悉SQL.
SQL SERVER 一些经典语句 1.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
Ch4.SQL Server 2005資料庫組成員元件介紹
詩文的形成 有意義的字詞 句子 段落 一首詩文的形成,是由有意義的字詞組成句子,再由句子組成段落。
数据库应用技术 SQL Server 2005.
ORACLE 第九讲 触发器.
CH03 行銷資訊系統資料庫模組--資料庫概論
打造樂活好宅 居家生活佈置 租屋要注意.
An Introduction to Database System
4.2 视图 (1) 视图是一个虚拟表,其内容来自对表查询的基础上。
CS, ZJU 4/18/2019 Chapter 7 数据库.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
第三章 SQL Server数据管理.
第六類 資料庫備份與回復.
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
1.4数据库管理系统 数据库管理系统是数据库系统的核心,是为数据库的建立,维护,使用而建立的系统软件,建立在操作系统基础之上,位于操作系统与用户之间的数据管理软件,负责对数据库进行统一管理与控制.
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

第8章 数据库的安全和完整性约束 数据库的破坏一般来自: 1.系统故障; 2.并发所引起的数据不一致; 3.人为的破坏; 数据库的安全保护(security protection) 4.数据的语义错误或对DB的错误操作引起的并发所引起的数据库不一致; 数据完整性约束

8.1 数据库的安全保护 主要讨论计算机系统在保证数据库安全方面的技术措施。 DBMS建立在OS之上,OS应能保证数据库中的数据必须经由DBMS访问,而不允许用户越过DBMS,直接通过OS访问。

8.1.1 视图的定义和查询修改 (1) 定义视图,可以限制各个用户的访问范围; (2) 有些DBMS没有视图功能,但是系统可以根据用户的访问限制条件,自动的修改查询条件,使其只能在给定访问范围内查询。

8.1.2 访问控制 访问控制(access control)是对用户访问数据库各种资源的权力的控制。 基表、视图、各种目录以及实用程序等 创建、撤销、查询、增、删、改等 在同一DBMS下,可能建立多个数据库,访问控制在数据库之间是相互独立的。

数据库用户: 1.一般数据库用户; 2.具有支配数据库部分资源权限的数据库用户; 3.具有DBA特权的数据库用户 DBMS须解决:用户的标识与鉴别以及授权(grant--revoke)的问题。

在数据库中,许多用户的权限相同,如分别授权,十分繁琐,可以为他们定义一个角色。 对角色授权,某用户承担某种角色就拥有该角色的权限,一个用户可以拥有多个角色和其他权限。 角色不是用户,不能用做登陆!

8.3 完整性约束检查 8.3.1 完整性约束的类型 以关系数据模型为例分类。 1. 静态约束(static constraints) (1) 固有约束(inherent constraints) ——第一范式 (2) 隐含约束(implicit constraints) 用DDL说明,例如:域完整性、实体完整性、 引用完整性等。 (3) 显式约束(explicit constraints) 依赖于数据的语义和应用。

2. 动态约束(dynamic constraints) 不是对数据库状态的约束,而是数据库从一个状态 转到另一个状态时要遵守的约束。

8.3.2 完整性约束的说明 约束的显式说明方法: 1.用过程说明约束 让应用程序完成约束的说明和检验。 缺点:检验分散在应用程序中,增加程序员的负担, 约束改变会导致程序要修改。 优点:容易实现,目前应用较多。

2.用断言(assertions)说明约束 DBMS提供断言说明语言,用此语言可以写出数据库完整性断言,由系统编译成约束库(constraint base) 。 DBMS的完整性控制子系统,对每个更新事务,用 相关断言进行检查,如果发现违反约束,就回卷该事 务。 例如:Assert 余额约束 on 储蓄帐:余额0

优点:集中控制,用户不编程,维护方便; 缺点:实现复杂,开销大,处理单一。 3.用触发子(triggers)表示约束 触发子是一种软件机制,形如: whenever <条件> then <动作> Event(激活触发器) Condition(检验触发器的条件是否满足) Actions(触发器运行后的动作)

传统的数据库系统只能按照用户或应用程序的要求, 对数据库进行操作,而不能根据发生的事件或数据库 的状态主动进行相应的处理,这样的数据库系统是被 动的。 主动数据库系统就是具有主动数据库功能的数据库 系统。

问题:主动数据库系统和关系数据库系统、面向对 象数据库系统的区别和联系? 主动数据库只是数据库系统的一种功能!

假 设有下列三个关系: Sailors(sid, sname, rating, birth, master) /*分别为水手的编号、名字、级别、出生日期、师父的编号,每个水手的师父也是水手*/ Boats(bid, bname, color) /*分别为船的编号、名字、颜色*/ Reserves(sid, bid, day) /*分别为订船水手编号、所订船编号、日期*/

以Sailors,Boats,Reserves三张表为例,写出实现引用完整性约束的规则。 范例.引用完整性规则的实现 以Sailors,Boats,Reserves三张表为例,写出实现引用完整性约束的规则。 有哪些操作会影响到三张表间的引用完整性? Reserves表的Insert操作 Sailors表的Delete操作 Boats表的Delete操作 Reserves表的Update操作 Sailors表的Update操作 Boats表的Update操作 是否对所有属性的Update操作都影响引用完整性?

规则1 创建触发器,对Reserves表的Insert操作进行监控,如果插入元组的外键属性在Sailors和Boats表中不存在,回卷插入该记录的操作。 Create trigger referential_integrity_check Before Insert on Reserves Referencing NEW as N For Each Row Event

When (not (exists(Select * From Sailors Where sid = N.sid) and ) (exists(Select * From Boats Where bid = N.bid)) ) Rollback; Condition Action

规则2 创建触发器,对Boats表的Delete操作进行监控,如果删除元组的主键是Reserves表中的外键,回卷删除该记录的操作。 Create trigger boats_delete Before Delete on Boats Referencing OLD as O For Each Row Event

When (exists(Select * From Reserves Where bid = O.bid)) Rollback; Condition Action

规则3 创建触发器,对Sailors表的Delete操作进行监控,如果删除元组的主键是Reserves表中的外键,则将Reserves表中的相关记录删除。 Create trigger sailors_delete After Delete on Sailors Referencing OLD as O For Each Row Event

When (exists(Select * From Reserves Where sid = O.sid)) Delete From Reserves Where sid = O.sid; Condition Action

规则4 创建触发器,对Reserves表的Update操作进行监控,如果修改元组sid和bid属性值在Sailors和Boats表中不存在,回卷修改该记录的操作。 Create trigger referential_integrity_check Update of sid,bid on Reserves Referencing NEW as N For Each Row Before Event

When (not (exists(Select * From Sailors Where sid = N.sid) and ) (exists(Select * From Boats Where bid = N.bid)) ) Rollback; Condition Action

规则5 Create trigger sailors_sid_update Before Update of sid on Sailors Referencing Old as O For Each Row When (exists(Select * From Reserves Where sid = O.sid)) Rollback; 创建触发器,对Sailors表的Update操作进行监控,如果Reserves表中有元组引用修改前的sid值作为外键,回卷此修改操作。

规则6 监视Sailors表上的Insert操作,对每条Insert语句,判断其插入后的元组是否有年龄小于18的水手,将这样的水手自动插入到YoungSailors表中(YoungSailors表与Sailors表的模式相同)。 问题:与上面各题创建触发器的范例有什么不同?如何实现?

Create trigger young_sailor_update After Insert on Sailors Referencing New as N For Each Statement 针对每条语句! Insert into YoungSailors(sid,name,age,rating) Select sid,name,age,rating From N Where N.age<19 ;