Ch8-1补充 09101数据库系统原理及应用-语法与流程控制

合集下载

ch8数据库系统概念(第6版)第八章关系数据库设计

ch8数据库系统概念(第6版)第八章关系数据库设计

11
目标
决定特定的关系 R 是否有一个 “良好” 形式. 如果 R 不具有 “良好” 形式, 将其分解为关系集 {R1, R2, ..., Rn}, 满足 每个关系都有良好形式 该分解是无损连接分解 理论基于数据依赖: 函数依赖 多值依赖 连接依赖
数据依赖
属性之间的联系是属性间的相互依赖又相互制约的 关系, 这种关系称为数据依赖。 数据依赖:
中:
R = R1 R2
无损连接分解 对模式R上的所有可能的关系r r = R1 (r) R2 (r)
10
关系数据库设计中易犯的错误
关系数据库设计要求找到一个合理关系模式集合 . 一个不合理模式可能导致
信息的重复 某些信息不能表示
设计目标:
避免冗余数据 确保属性间联系得以表示 方便检查更新是否破坏了数据库完整性约束
building, room_number)
不会产生重复
有损分解
分解R = (A, B) R1 = (A)
A B A
R2 = (B)
B 1 2 B(r)

r
1 2 1

A(r) A B 1 2 1 2
A (r)
B (r)

7
有损分解 例
假设我们从 inst_dept 着手. 如何将它分开 (分解) 成为 instructor 和 department? 定一个规则 “如果存在模式 (dept_name, building, budget), 则 dept_name 会成为候选码” 表示为 函数依赖: dept_name building, budget 在 inst_dept 中, 由于 dept_name 不是候选码, 故一个部 门的大楼和预算可能会出现重复. 由此说明需要分解 inst_dept 不是怎样分解都合适. 假设我们把 employee(ID, name, street, city, salary) 分解为 employee1 (ID, name) employee2 (name, street, city, salary) 下个幻灯片会说明这将丢失信息 -- 无法重构原始的 employee 关系 -- 故这是一个 有损分解.

ch8-2数据库系统原理及应用-存储过程1

ch8-2数据库系统原理及应用-存储过程1

SELECT 语句块
SELECT语句与逻辑 语句与逻辑 控制语句 可以包含
存储过程的分类
§系统存储过程 系统存储过程
由系统定义,存放在 由系统定义,存放在master数据库中 数据库中 类似C语言中的系统函数 类似 语言中的系统函数 系统存储过程的名称都以“ 开头或” 系统存储过程的名称都以“sp_”开头或”xp_” 开头或 开头
USE master 创建文件夹D:\bank 创建文件夹 GO EXEC xp_cmdshell 'mkdir d:\bank', NO_OUTPUT IF EXISTS(SELECT * FROM sysdatabases WHERE name='bankDB') DROP DATABASE bankDB GO CREATE DATABASE bankDB ( … ) 查看文件夹 文件夹D:\bank 查看文件夹 GO EXEC xp_cmdshell 'dir D:\bank\' --查看文件 查看文件
§存储过程与其他编程语言中的过程类似, 它可以
包含执行数据库操作(包括调用其他过程)的 编程语句 接受输入参数 向调用过程或批处理返回状态值,以表明成功 或失败(以及失败原因) 以输出参数的形式将多个值返回至调用过程或 批处理
存储过程( 存储过程(procedure)类似于 语言中的函数 )类似于C语言中的函数 用来执行管理任务或应用复杂的业务规则 存储过程可以带参数, 存储过程可以带参数,也可以返回结果
带输入参数的存储过程
调用带参数的存储过程 假定本次考试机试偏难,机试的及格线定为55分,笔试 及格线定为60分 EXEC proc_stu 60,55 --或这样调用: 或这样调用: 或这样调用 EXEC proc_stu @labPass=55,@writtenPass=60

ch8-1Excel数据库与数据库函数

ch8-1Excel数据库与数据库函数

8.1 Excel数据库简介8.1.1 Excel数据库概述Excel提供了一种极其简易的数据库管理功能,运用它可以进行简单的数据的组织管理工作,如在工作表中输入一个单位的财务数据或人事档案,并对这些数据进行排序、筛选、分类、汇总、查询等操作。

但是,Excel并不能取代真正意义上的数据库系统,也不能用于建立较为复杂的数据库信息系统。

在数据量很大,数据的种类较多,数据的关系比较复杂时,用户用它来建立数据库管理信息系统时,很难处理好数据之间的各种关系。

但这并不表示不能用Excel进行企业的数据管理,毕竟,复杂的大型数据库信息系统是较少数的。

在数据量不大(一个工作表最多65 536行),数据种类不多,企业规模不大时,用Excel进行数据的组织和管理工作会给我们的工作带来许多方便,简化我们的工作,提高工作效率。

同专业数据库系统相比较,Excel操作简单,数据的表示非常直观,与我们平常工作中所见的表格没有什么两样,任何人只需通过简单的学习就会使用,不像数据库系统要经过专业的学习才会运用。

而且,Excel具有相当强大的数据计算功能,提供了许多有用的函数和数据分析工具,如财务函数、统计函数、图表分析等,这些功能恰好是某些专业数据库系统较弱的地方。

用户用它进行小单位的财务管理,财务分析,资产管理等非常方便。

例如,人们可以直接调用Excel的财务函数进行投资分析、资产折旧、债券分析、工资计算等。

8.1.2 认识Excel数据库在Excel中,一个数据库是一张特殊的工作表,这种工作表和数据清单相似,有关数据清单的内容在第5章已有较为详细的讨论,请读者参考。

图8.1就是一个Excel数据库,实际它也是一个数据清单。

图8.1 数据库示例如图8.1所示的Excel数据库具有以下特征:(1)数据库是一个数据区域,该区域的首行是一些描述性的词组,它能够表明相应列的数据性质及数据类型。

在数据库中,这一行称为数据库的结构名,每一列的第一行称为属性或列标,也称为字段。

ch8-1--数据库原理课程PPT汇总

ch8-1--数据库原理课程PPT汇总

数据结构描述={数据结构名,含义说明,组成:
2020/{4/2数5 据项或数据结构}}
18
(3)数据流
数据流是数据结构在系统内的传输路径。其描述 格式通常为:
数据流描述={数据流名,说明,数据流来源, 数据流
去向,组成:{数据结构},平均流量,高峰 期流量}
(4)数据存储
数据存储是数据结构停留或保存的地方,也是数 据流的来源和去向之一。它可以是手工文档和凭证, 也可以是计算机文档。其描述格式通常为:
2020/4/25
4
8.1.2 数据库设计方法简述
数据库设计方法目前可分为四类:直观设 计法、规范设计法、计算机辅助设计法和自动化 设计法。
直观设计法也叫手工试凑法,它是最早使 用的数据库设计方法。这种方法依赖于设计者的 经验和技巧,缺乏科学理论和工程原则的支持, 设计的质量很难保证,增加了系统维护的代价。 因此这种方法越来越不适应信息管理发展的需要。
2020/4/25
24
• 8.1.2 数据库设计方法简述
数据库设计方法目前可分为四类:直观设计 法、规范设计法、计算机辅助设计法和自动化设 计法。
直观设计法也叫手工试凑法,它是最早使用 的数据库设计方法。这种方法依赖于设计者的经 验和技巧,缺乏科学理论和工程原则的支持,设 计的质量很难保证,增加了系统维护的代价。因 此这种方法越来越不适应信息管理发展的需要。
依赖关系,将它们组织在一个单一的关系模式中,然
后再分析模式中不符合3NF的约束条件,将其进行投
影分解,规范成若干个3NF关系模式的集合。
2020/4/25
27
• 其具体设计步骤分为五个阶段:
(1) 设计企业模式,利用规范化得到的3NF关 系模式画出企业模式;

chp8-1

chp8-1

DECLARE { @local_variable [ , ...n]
[AS]
data_type}
用逗号间隔
Transact-SQL语法(运算符和表达式)



10级 程
8.2.4 Transact-SQL运算符与表达式
1.运算符
Transact-SQL运算符包括:算术运算符、位运算符、 比较运算符、逻辑运算符、字符串运算符、赋值运算符。
2.表达式
Transact-SQL表达式可以包含列名、变量、常量、运 算符或函数的任何组合。
比较运算符: 逻辑运算符: 位运算符(与、或、非、异或): 算术运算符: 字符串运算符:+ >、=、>=、<、<=、<>、!= 、!< 、!> AND、OR、NOT、BETWEEN、 &、|、~、^ +、-、*、/、% 赋值运算符:= LIKE、IN、ALL\ANY
GO命令



10级 程
8.2.6 Transact-SQL函数
1.聚合函数
AVG SUM MIN MAX COUNT

2.时间和日期函数
GETDATE DATEADD DATEDIFF DATEPART DAY MONTH
3.数学函数
COS SIN SQRT SQUARE POWER 等
4.字符串函数



10级 程
第八章 数据库编程



10级 程
第八章 数据库编程
8.1 嵌入式SQL
8.2 PL/SQL (Transcat –SQL) 8.3 存储过程/用户自定义函数

ch8-2--数据库原理课程PPT汇总

ch8-2--数据库原理课程PPT汇总
数据抽象后得到了实体和属性,实际上实体和属性 是相对而言的,往往要根据实际情况进行必要的调 整。在调整中要遵循两条原则:
① 实体具有描述信息,而属性没有。即属性必须是不 可分的数据项,不能再由另一些属性组成。
② 属性不能与其他实体具有联系,联系只能发生在实 体之间。
2020/4/25
15
例如:学生是一个实体,学号、姓名、性别、 年龄、系别等是学生实体的属性,系别只表 示学生属于哪个系,不涉及系的具体情况, 换句话说,没有需要进一步描述的特性,即 是不可分的数据项,则根据原则①可以作为 学生实体的属性。但如果考虑一个系的系主 任、学生人数、教师人数、办公地点等,则 系别应看作一个实体。如图8-11所示。
2020/4/25
2
这样做有三个好处:
1.从逻辑设计中分离出概念设计以后,各阶段 的任务相对单一化,设计复杂程度大 大降低, 便于组织管理。
2.概念模型不受特定的DBMS的限制,而且独 立于存储安排和效率因素,因而比逻辑模型更为 稳定。
3.概念模型不含具体的DBMS所附加的技术细 节,更容易为用户所理解,因而更有可能准确反 映用户的信息需求。
1.概念结构设计的方法 设计概念结构的E-R模型可采用四种方法。 自顶向下。先定义全局概念结构E-R模型的框架,再
逐步细化。如图8-9(a)所示。 自底向上。先定义各局部应用的概念结构E-R模型,
然后将它们集成,得到全局概念结构E-R模型。如图 8-9(b)所示。 逐步扩张。先定义最重要的核心概念E-R模型,然后 向外扩充,以滚雪球的方式逐步生成其他概念结构 E-R模型。如图8-9(c)所示。 混合策略。该方法采用自顶向下和自底向上相结合 的方法,先自顶向下定义全局框架,再以它为骨架 集成自底向上方法中设计的各个局部概念结构。

现代数据库系统实用教程ch8数据交换原理

现代数据库系统实用教程ch8数据交换原理
2007-9-5
动态SQL相关语句
1 有关描述符区的操作语句: • 分配描述符语句(ALLOCATION DECRIPTOR):用于分配一个 SQL描述符区。 • 解除分配描述符语句(DEALLOCATION DESCRIPTOR):用于解除 所分配的SQL描述符区。 • 设置描述符语句(SET DESCRIPTOR):在SQL的描述符区设置信 息。 • 取描述符语句(GET DESCRIPTOR):从SQL的描述符区取得信息。
2007-9-5
数据交换的五种方式
上面所介绍的五种方式反映了数据库应用发展过程中不 同阶段、不同环境的数据交换需求,它们在数据库系 统中构成如图8.2所示的结构。
在五种方式中目前最为常用的是: • 人机交互方式。 • 在服务器中的自含方式。 • 在C/S结构中的调用接口层方式。 • 在Web环境中的Web方式。
2007-9-5
数据交换的五种方式
5.Web方式 在近期,互联网的出现以及Web的发展使得数据交换方式又
出现了新的形式,其主要的特点是XML与传统数据库间 的数据交换方式。由于传统数据库是一种严格的格式化数 据,而XML则是一种松散的半格式化数据,由于两者数 据结构形式的严重差异,因此须进行数据交换,而此种方 式称Web数据交换方式,它在Web环境下应用广泛。 在SQL标准的SQL’03中出现有此种方式称SQL/XML,此 外,微软与SUN公司中也有此类方式的产品出现,如微软 的ASP与ADO控件,SUN公司的JSP与JAVA Applet等。 人应用程序应用程序数据库应用程序XML图8.2 数据交换 五种方式人机交互式嵌入式自含式Web方式调用层接口
在网络环境中,需选定与之会话的目录以及目录下的模 式,它们可用一些语句设置,如:

数据库系统原理教学大纲

数据库系统原理教学大纲

《数据库系统原理》教学大纲一、课程名称:数据库系统原理Principles of Database Systems二、课程编号:0601033三、学分学时:3学分/48学时四、使用教材:王能斌:《数据库系统教程(上册)》,电子工业出版社(始终选用最新版本)五、课程属性:专业课/必修六、教学对象:计算机科学与技术专业本科生七、开课单位:计算机及信息工程学院八、先修课程:算法与数据结构、编译原理、操作系统九、教学目标:通过本课程的学习,使学生建立现代数据管理技术的基本概念,掌握关系数据库系统及关系数据库设计的基本原理、方法与技术,奠定数据库理论研究和应用开发的必备基础。

十、课程要求:⑴教师在课堂上精心讲授,学生课后认真消化教材和补充素材内容,认真完成作业和课程设计实验,通过课堂讲解、课堂讨论、自主探究、实践训练等相互联系和互补的教学环节来提高教学效果;⑵遵循“研究性教学”理念,在本课程网站上提供丰富教学资源(精选的英文文献、国内外大学同类课程链接、数据库工业界和学术界资源等),引导和帮助学生去主动学习、扩充学习和发展个性。

十一、教学内容:本课程主要由以下内容组成:第一章数据库系统引论(4学时)⏹知识要点:数据管理技术的发展;数据库系统;数据模型和数据模式;数据库的生存周期。

⏹重点难点:数据模型的概念;数据模式的概念;多级数据模型/模式。

⏹教学方法:讲授、自学、作业、讨论。

第二章数据模型(6学时)⏹知识要点:关系数据模型;E/R数据模型;后关系数据模型。

⏹重点难点:关系数据模型三要素(结构、约束与操作);键、超键、主键、外键;E/R数据模型的构造子及语义。

⏹教学方法:讲授、自学、作业、讨论。

第三章SQL语言(6学时)⏹知识要点:数据库的用户接口;SQL语言概况;SQL数据定义语言;SQL查询语言;SQL数据操纵语言;SQL视图;嵌入式SQL和SQL过程化扩充(简介)。

⏹重点难点:数据库语言的特点;条件查询;连接查询;嵌套查询;视图定义。

数据库系统基础教程答案ch8

数据库系统基础教程答案ch8

数据库系统基础教程答案ch8Section 1Exercise 8.1.1a)CREATE VIEW RichExec ASSELECT * FROM MovieExec WHERE netWorth >= 10000000;b)CREATE VIEW StudioPres (name, address, cert#) ASSELECT , MovieExec.address, MovieExec.cert# FROM MovieExec, Studio WHERE MovieExec.cert# = Studio.presC#;c)CREATE VIEW ExecutiveStar (name, address, gender, birthdate, cert#, netWorth) AS SELECT , star.address, star.gender, star.birthdate, exec.cert#, WorthFROM MovieStar star, MovieExec exec WHERE = ANDstar.address = exec.address;Exercise 8.1.2a)SELECT name from ExecutiveStar WHERE gender = ‘f’;b)SELECT from RichExec, StudioPres where = ;c)SELECT from ExecutiveStar, StudioPresWHERE Worth >= 50000000 ANDStudioPres.cert# = RichExec.cert#;Section 2Exercise 8.2.1The views RichExec and StudioPres are updatable; however, the StudioPres view needs to be created with a subquery.CREATE VIEW StudioPres (name, address, cert#) ASSELECT , MovieExec.address, MovieExec.cert# FROM MovieExecWHERE MovieExec.cert# IN (SELECT presCt# from Studio);Exercise 8.2.2a) Yes, the view is updatable.CREATE TRIGGER DisneyComedyInsertINSTEAD OF INSERT ON DisneyComediesREFERENCING NEW ROW AS NewRowFOR EACH ROWINSERT INTO Movies(title, year, length, studioName, genre)VALUES(NewRow.title, NewRow.year, NewYear.length, ‘Disney’, ‘comedy’);c)CREATE TRIGGER DisneyComedyUpdateINSTEAD OF UPDATE ON DisneyComediesREFERENCING NEW ROW AS NewRowFOR EACH ROWUPDATE Movies SET length NewRow.lengthWHERE title = NewRow.title AND year = NEWROW.year ANDstudionName = ‘Disney’ AND genre = ‘comedy’;Exercise 8.2.3a) No, the view is not updatable since it is constructed from two different relations.b)CREATE TRIGGER NewPCInsertINSTEAD OF INSERT ON NewPCREFERENCING NEW ROW AS NewRowFOR EACH ROW(INSERT INTO Product VALUES(NewRow.maker, NewRow.model, ‘pc’))(INSERT INTO PC VALUES(NewRow.model, NewRow.speed, NewRow.ram, NewRow.hd, NewRow.price));c)CREATE TRIGGER NewPCUpdateINSTEAD OF UPDATE ON NewPCREFERENCING NEW ROW AS NewRowFOR EACH ROWUPDATE PC SET price = NewPC.price where model = NewPC.model;d)CREATE TRIGGER NewPCDeleteINSTEAD OF DELETE ON NeePCREFERENCING OLD ROW AS OldRowFOR EACH ROW(DELETE FROM Product WHERE model = OldRow.model)(DELETE FROM PC where model = OldRow.model);Section 3Exercise 8.3.1a)CREATE INDEX NameIndex on Studio(name);b)CREATE INDEX AddressIndex on MovieExec(address);c)CREATE INDEX GenreIndex on Movies(genre, length);Section 4Exercise 8.4.1Exercise 8.4.2Q1 = SELECT * FROM Ships WHERE name = n;Q2 = SELECT * FROM Ships WHERE class = c;Q3 = SELECT * FROM Ships WHERE launched = y;I = InsertsIndexesNone Name Class Launched Name & Name & Class & ThreeSection 5Exercise 8.5.1Updates to movies that involves title or yearUPDATE MovieProd SET title = ‘newTitle’ where title=’oldTitle’ AND year = oldYear;UPDATE MovieProd SET year = newYear where title=’oldYitle’ AND year = oldYear; Update to MovieExec involving cert#DELETE FROM MovieProdWHERE (title, year) IN (SELECT title, yearFROM Movies, MovieExecWHERE cert# = oldCert# AND cert# = producerC#);INSERT INTO MovieProdSELECT title, year, nameFROM Movies, MovieExecWHERE cert# = newCert# AND cert# = producerC#;数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8数据库系统基础教程答案ch8 Exercise 8.5.2Insertions, deletions, and updates to the base tables Product and PC would require a modification of the materialized view.Insertions into Product with type equal to ‘pc’:INSERT INTO NewPCSELECT maker, model, speed, ram, hd, price FROM Product, PC WHEREProduct.model = newModel and Product.model = PC.model;Insertions into PC:INSERT INTO NewPCSELECT maker, ‘newModel’, ‘newSpeed’, ‘newRam’, ‘newHd’, ‘newPrice’FROM Product WHERE model = ‘newModel’;Deletions from Product with type equal to ‘pc’:DELETE FROM NewPC WHERE maker = ‘deletedMaker’ AND model=’deletedModel’; Deletions from PC:DELETE FROM NewPC WHERE m odel = ‘deletedModel’;Updates to PC:Update NewPC SET speed=PC.speed, ram=PC.ram, hd=PC.hd, price=PC.price FROMPC where model=pc.model;Update to the attribute ‘model’ needs to be treated as a delete and an insert.Updates to Product:Any changes to a Product tuple whose type is ‘pc’ need to be treated as a delete or aninsert, or both.Exercise 8.5.3Modifications to the base tables that would require a modification to the materialized view: inserts and deletes from Ships, deletes from class, updates to a Class’ displacement.Deletions from Ship:UPDATE ShipStats SETdisplacement=((displacement * count) –(SELECT displacementFROM ClasssesWHERE class = ‘DeletedShipClass’)) / (count – 1),count = count – 1WHEREcountry = (SELECT country FROM C lasses WHERE class=’DeletedShipClass’); Insertions into Ship:Update ShipStat SETdisplacement=((displacement*count) +(SELECT displacement FROM ClassesWHERE class=’InsertedShipClass’)) / (count + 1),count = count + 1WHEREcountry = (SELECT c ountry FROM Classes WHERE classes=’InsertedShipClass); Deletes from Classes:NumRowsDeleted = SELECT count(*) FROM ships WHERE class = ‘DeletedClass’; UPDATE ShipStats SETdisplacement = (displacement * count) - (DeletedClassDisplacement *NumRowsDeleted)) / (count – NumRowsDeleted),count = count – NumRowsDeletedWHERE country = ‘DeletedClassCountry’;Update to a Class’ displacement:N = SELECT count(*) FROM Ships where class = ‘UpdatedClass’;UPDATE ShipsStat SETdisplacement = ((displacement * count) + ((oldDisplacement – newDisplacement) * N))/countWHEREc ountry = ‘UpdatedClassCountry’;Exercise 8.5.4Queries that can be rewritten with the materialized view:Names of stars of movies produced by a certain producerSELECT starNameFROM StarsIn, Movies, MovieExecWHERE movieTitle = title AND movieYear = year AND producerC# = cert# AND name = ‘Max Bialystock’;Movies produced by a certain producerSELECT title, yearFROM Movies, MovieExecWhere producerC# = cert# AND name = ‘George Lucas’;Names of producers that a certain star has worked withSELECT nameFROM Movies, MovieExec, StarsInWhere producerC#=cert# AND title=movieTitle AND year=movieYear AND starName=’Carrie Fisher’;The number of movies produced by given producerSELECT count(*)FROM Movies, MovieExecWHER E producerC#=cert# AND name = ‘George Lucas‘;Names of producers who also starred in their own moviesSELECT nameFROM Movies, StarsIn, MovieExecWHERE producerC#=cert# AND movieTitle = title AND movieYear = year AND = starName;The number of stars that have starred in movies produced by a certain producer SELECT count(DISTINCT starName)FROM Movies, StarsIn, MovieExecWHERE producerC#=cert# AND movieTitle = title AND movieYear = year AND n ame ‘George Lucas’;The number of movies produced by each producerSELECT name, count(*)FROM Movies, MovieExecWHERE producerC#=cert# GROUP BY name。

ch8 数据库安全

ch8 数据库安全

8.2数据库安全技术和机制
(1)用户认证 数据库系统为了保护授权用户对数据库的操作,提供了用 户身份识别与认证机制。用户认证即用户标识与鉴别,是系统 提供的最外层安全保护措施。其方法是由系统提供一定的方式 让用户标识其用户名或身份,每次用户登录系统时,由系统进 行核对,通过鉴别后提供使用权限。已获得使用权的用户若要 使用数据库,DBMS还要进行用户认证。 (2)访问控制 数据库安全性主要依靠DBMS的访问控制机制。通过数据库 系统的访问控制机制,可以对已登录系统的用户的访问控制, 是数据库安全系统中的核心技术,也是最有效的安全手段。
8.1数据库安全概念及特点
2.数据安全性 数据安全性收到很多方面的影响,其中数据库安全、网络 安全是数据安全的关键,网络安全的最终目标是实现网络数据 (信息)安全属性特征(保密性、完整性、可用性、可靠性与 可控性和可审查性),其中保密性、完整性、可用性也是数据 (信息)安全的基本要求。
(1)保密性
用户标识和认证是系统提供的最外层安全保护措施。其方法是由 系统提供一定的方式让用户注册、登录用户名或身份和密码等。用户 标识与认证在SQL中对应的是Windows NT或Windows登录账号和口令, 以及SQL用户登录账号和口令。
8.2数据库安全技术和机制
(3)视图隔离 视图是从基表(或视图)导出的一个不含有数据的虚表。是数 据库系统提供给用户以多种角度观察数据库中数据的重要机制, 数据库中只存放视图的定义,而不存放视图对应的数据,数据仍 存放在原来的基本表中。 (4)数据加密
为了有效防止数据在传输和使用过程中被窃取或泄密,必须对 数据进行加密。
8.2数据库安全技术和机制
数据库安全最重要的一点就是确保只授权给有资格的用户 访问数据库,同时令所有未被授权的人员无法接近数据。这是通 过数据库系统的存取控制机制实现的。 它包括两部分: 第一部分是定义用户权限,并将用户权限登记到数据字典中。 用户权限是指不同用户对不同数据对象允许执行的操作权限 。用户权限被定义并经过编译后存放在数据字典中,即作为系 统的安全规则或授权规则。 第二部分是合法权限检查。当用户发出存取数据库的操作请 求后,数据库管理系统查找数据字典,根据安全规则进行合法 权限检查,若用户操作请求超出了定义权限,系统将拒绝执行 此操作。

数据库原理及其应用(doc 7页)

数据库原理及其应用(doc 7页)

数据库原理及其应用(doc 7页)2011(1)学期《数据库原理及应用》课程授课指南课程名称:数据库原理及应用使用教材:《数据库系统概论》第四版王珊等,高等教育出版社专业:年级:班级:1,2,3授课教师:撰写人:一、课程教学目标《数据库系统原理及应用》是数据管理的最新技术,是计算机科学的重要分支,它为计算机专业、管理专业等众多学科提供利用计算机技术进行数据管理的基本理论知识,是计算机专业、管理专业等学科的专业必修课。

本课程主要介绍数据库的基本理论和应用方法。

本课程的任务是通过各个教学环节,运用各种教学手段和方法,使学生在掌握数据模型、数据库管理系统、数据库语言及数据库设计理论等基本理论知识的基础上,逐步具有开发和设计数据库的能力,为进一步开发和设计大型信息系统打下坚实基础。

二、主要讲述内容及知识体系组成1、理论教学大纲内容:第一章绪论(一)课程内容1、数据库系统概述2 、数据模型3 、数据库系统结构4 、数据库管理系统5 、据库技术的研究领域(二)学习目的和要求本章阐述了数据库的基本概念,介绍了数据库管理技术的进展情况、数据库技术产生和发展的背景、数据库系统的组成以及数据库技术的主要研究领域。

学习本章的重点在于将注意力放在基本概念和基本知识的把握方面,从而为以后的学习打好扎实的基础。

第二章关系数据库(一)课程内容1 、关系模型2 、关系数据结构3 、关系的完整性4、关系代数(二)学习目的和要求1、需要了解的:产系统数据库理论产生和发展的过程,关系数据库产品的发展沿革;关系演算的概念;2、需要牢固掌握的:关系模型的三个组成部分及各部分所包括的主要内容;牢固关系数据结构及其形化定义;关系的三类完整性约束的概念。

3、需要举一反三的:关系代数;关系代数中的各种运算、元组关系演算语言PLPHA及域关系演算语言QBE等,能够使用这些语言完成各种数据操纵。

4、难点:本章的难点在于关系代数。

由于关系代数较为抽象,因此在学习的过程中一定要结合具体的实例进行学习。

ch8 数据库系统概念(第6版)第八章关系数据库设计

ch8 数据库系统概念(第6版)第八章关系数据库设计
函数依赖 多值依赖
连接依赖
数据依赖的特点及性质是关系规范化的理论基础。
13
函数依赖
函数依赖( Functional Dependency,FD )是在 合法的关系集上的约束(是属性间的关联,是一种 约束,依赖是针对数据模式,而不是特定的实例 (避免从个别元组中归纳约束))。 要求一个属性集的值唯一地决定另外一个属性集 的值。 函数依赖是键的概念扩充。
关系数据库设计关系数据库设计中易犯的错误函数依赖分解第一范式与第二范式第三范式boycecodd范式多值依赖与第四范式关系数据库设计中易犯的错误假设我们将instructordepartment合并为instdept关系集instdept没有被连接结果有可能出现信息重复关系数据库设计中易犯的错误过度冗余数据重复更新异常更新代价大可能导致数据不一致删除异常部分信息的删除可能导致信息的丢失插入异常必须有完整信息不重复的合并表将以下关系进行合并secclasssecidbuildingroomnumbersectioncourseidsecidsemesteryear合并为一个关系sectioncourseidsecidsemesteryearbuildingroomnumber不会产生重复有损分解分解r假设我们从instdept着手
如S4选了C3 如果C3也不选的话,整个元组就被删除, S4信息也没有 了)
更新异常:如果学生转系,若他选修了k门课,则需要修
改k条记录 数据冗余:如果一个学生选修了k门课,则有关他的所在 系的信息重复。 将SLC分解为两个关系模式 SC(SNO,CNO,G) SL(SNO,SDEPT,SLOC)
有损分解
无损分解
将关系模式Lending-schema 分解成:
Branch-schema = (branch-name, branch-city,assets) Loan-info-schema = (customer-name, loan-number, branch-name, amount) 原模式(R)的所有属性都必须出现在分解后的(R1, R2)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

§ @@SPID:返回当前用户进程的服务器进程标识符 (ID)。 § @@ROWCOUNT:返回受上一语句影响的行数。 § @@NESTLEVEL:返回当前存储过程执行的嵌套层次(初 始值为0)。 § @@LANGUAGE:返回当前使用的语言名。 § @@OPTIONS:返回当前 SET 选项的信息。 § @@CPU_BUSY:返回自上次启动 SQL Server 以来 CPU 的工作时间,单位为毫秒(基于系统计时器的分辨率)。 § @@IDLE:返回 SQL Server 自上次启动后闲置的时间, 单位为毫秒(基于系统计时器的分辨率)。 § @@IDENTITY:返回最后插入的标识值。
一、批处理命令
§批处理是多条Transact-SQL语句构成的集 合。SQL Server将批处理语句进行编译形 成一个可执行单元,称为执行计划。 §执行计划中的语句一次执行每一条语句, 如果在编译过程中出现语法错误,那么批处 理中所有的语句均无法正常执行。如果在运 行阶段出现错误时,一般都会中断当前以及 其后语句的执行,只有在少数情况下,如违 反约束时,仅中断当前出错的语句而继续执 行其他语句。
二、注释
§注释是程序代码中不执行的文本字符串。 在SQL Server中,可以使用两种类型的注 释字符:
一种是ANSI标准的注释符‚--”,它用于单行注 释; 另一种是与C语言相同的注释符号,即‚/* */”。
注释语句
§嵌于行内的注释语句
示例 1 SELECT productname , (unitsinstock - unitsonorder) -- 计算存货 , supplierID FROM products GO
INSERT INTO jobs (job_desc,min_lvl,max_lvl) VALUES ('Accountant',12,125) SELECT @@IDENTITY AS 'Identity'
§①全局变量不是由用户的程序定义的,它 们是在服务器级定义的。 §②用户只能使用预先定义的全局变量。 §③引用全局变量时,必须以‚@@”开头。 §④局部变量的名称不能与全局变量的名称 相同,否则会在应用程序中出现不可预测的 结果。
以@开头的标识符代表局部变量或参数 以@@开头的标识符代表全局变量或参数 以#开头的标识符代表临时表或存储过程 以##开头的标识符代表一个全局临时对象
§限定标识符
当对象名称包含空格时 当保留关键字被用作对象名或对象部分的名字时
限定标识符
§限定标识符可以
用中括号表示的括号标识符([ ])
§块注释语句
示例 2
/* 这部分代码检索产品表的所有行并且显示单价,增加了10%的单价和产品名 称。 */ USE northwind SELECT unitprice, (unitprice * 1.1), productname FROM products GO
三、标识符
§标准标识符:第一个字符必须是字母(a~z 或 A~Z),第一个字符后可以是数字、字母或各种符 号 §特殊标识符:当标识符的第一个字符是符号时, 代表它有特殊用处
五、常量
§常量,也称为字面值或标量值,是表示一个特定数据 值的符号,在运行过程中其值不会变的量。 §常量的格式取决于它所表示的值的数据类型。包 括:字符型常量,整型常量, 实型常量,日期常 量等。 §Example: ‘This is …’ 12 12.3 ‘2002-09-09’
六、变量
§变量对于一种语言来说是必不可少的组成 部分。 §变量有两种形式,
SELECT * FROM [含空格的表名]
用双引号表示的引用标识符(‚ ‛) SELECT * FROM “含空格的表名”
标识符的命名原则
§使用短的名字 §尽量使用有意义的名字 §使用简单明了的命名约定 §使用能够区分出对象类型的标识符
视图 存储过程
§保持对象名和用户名的一致性
sales 表和 sales 角色
EXECUTE /EXEC用于执行用户定义的函数、系统存储过程、 用户自定义存储过程或一个扩展的存储过程。在一个 Transact-SQL 批处理内部,EXEC 能控制一个字符串的运行
一个完整的批处理需要使用GO语句作为结束标记。
GO实际上并不是 Transact-SQL 语句,向 SQL Server 描述由 Transact-SQL 语句组成的批处理
局部变量:用户自己使用DECLARE语句定义, 名字前要有一个标记符‚@”。 全局变量:系统提供的,引用全局变量时,名 字前要有两个标记符‚@@”。
局部变量
§局部变量只具有局部作用范围
只能在定义它的语句、批处理或过程中使用
§用 DECLARE @ 语句定义局部变量 §用 SET 或 SELECT @ 语句给局部变量赋值 §【例】创建局部变量@var1、@var2,并赋值, 然后输出变量的值。 DECLARE @var1 varchar(20),@var2 varchar(40) SET @var1='中国' /*一个SET语句只能给一个变 量赋值*/ SET @var2=@var1+'是一个伟大的国家' select @var1,@var2 go
全局变量
§全局变量:用两个 @ 标识,由 SQL Server 提供,用户不能创建全局变量
设置变量
提供 SQL Server 当前各种特性和参数的设置信息
统计变量
提供 SQL Server 自启动后的运行信息
系统变量
提供最近对表操作的信息
一些常用的全局变量:
§ @@CONNECTIONS:返回自上次启动SQL Server以来 连接或试图连接的次数。 § @@MAX_CONNECTIONS:返回SQL Server上允许的同 时用户连接的最大数。 § @@ERROR:返回最后执行的 T-SQL 语句的错误代码。 § @@TRANCOUNT:返回当前连接的活动事务数。 § @@VERSION:返回 SQL Server 当前安装的日期、版本 和处理器类型。 § @@SERVERNAME:返回运行 SQL Server 的本地服务 器名称。 § @@SERVICENAME:返回 SQL Server 正在其下运行的 注册表键名。若当前实例为默认实例,则 返回 MSSQLServer;若当前实例是命名实例,则该函数返回实 例名。
四、数据类型
§ 数字型:包括各种整数如 int、tinyint、smallint 和 bigint § 日期型:包括 datetime 和 smalldatetime § 字符型:包括 char、nchar、varchar 和 nvarchar § 二进制型:在存储与结构上与字符型数据相似,包括 binary 和varbinary § 惟一标识符(GUID):代表一个全局的特殊标识符,是一 个16 位16 进制的值 § SQL 变量:代表 SQL Server 所支持的各种数据类型 § 图像和文本:属于大型二进制对象结构(BLOB),代表 定长或变长的数据类型 § 表:代表一个表结构,在 SQL Server 2000 中,可以把表 保存在字段中 § 游标:用于存储过程的编程中,也会和低层客户接口同时 使用。游标从不用于数据定义语言(DDL)语句中 § 用户自定义数据类型:基于系统数据类型,由数据库管理 员生成
数据操纵语言语句
§数据操纵语言语句,用来在数据库中操纵各种对 象,检索和修改数据,这些语句包括SELECT、 INSERT、UPDATE、DELETE等。这些语句都是 操纵数据库的最常用到的语句。
语句 功能 说明
SELECT
从表或视图中检索数据
是使用最频繁的SQL语句 之一 既可修改表或视图的一行 数据,也可修改一组或 全部数据 可根据条件删除指定的数 据
SQLServer2005编程—语 法与流程控制
Transact-SQL语言的特点
§Transact-SQL语言是微软对SQL语言的扩展。 §Transact-SQL语言是一种交互式查询语言,具有 功能强大、简单易学的特点。 §Transact-SQL语言有4个特点:
一是一体化的特点,集数据定义语言、数据操纵语言、 数据控制语言和附加语言元素为一体。 二是两种使用方式,交互式和嵌入到高级语言的使用方 式。前者适合于非数据库专业人员使用,后者适合于数 据库专业开发人员使用。 三是非过程化语言,只需要提出‚干什么‛,不需要指 出‚如何干‛,语句的操作过程由系统自动完成。 四是,类似于人的思维习惯,容易理解和掌握。
Transact-SQL语言的组成元素
§数据控制语言语句 §数据定义语言语句 §数据操纵语言语句 §附加的语言元素
数据控制语言语句
§ 安全性管理是分布式数据库系统的重要特征。安全性管理 就是确保数据库中的数据和操作不能被未授权的用户使用 和执行。 § 数据控制语言语句就是用来进行安全性管理,它可以确定 哪些用户可以查看或修改数据、或执行数据库中的操作等, 这些语句主要包括GRANT、DENY、REVOKE等语句。 语句 功能 GRANT 授予权限 说明 可把语句许可或对象许可的权限授 予其他用户和角色 与GRANT的功能相反,但不影响该 REVOK 收回权限 用户或角色从其他角色中作为成 E 员继承许可权限 DENY 收回权限,并 功能与REVOKE相似,不同之处: 禁止从其他 除收回权限外,还禁止从其他角 角色继承许 色继承许可权限 可权限
【例】创建一个名为sex的局部变量,并在 SELECT 语句 中使用该局部变量查找表student中所有女同学的学号、姓名。 DECLARE @sex char(2) SET @sex='女' SELECT SNO,SNAME FROM student WHERE SSEX=@sex GO
【例】使用查询给变量赋值。 =(SELECT SNAME FROM student WHERE SNO='200215121') SELECT @student GO 用SELECT语句赋值 语法格式: SELECT {@local_variable=expression} [,…n]
相关文档
最新文档