数据库第五章

合集下载

数据库5章数据库设计

数据库5章数据库设计

E-R图向关系模型的转换:
码原则:
一个实体型转换为一个关系模式:实体的属性就是关系的 属 性,实体的码就是关系的码。
一个联系转换为一个关系模式:与该联系相连的各实体的码以 及联系的属性转换为该关系的属性。该关系的码有五种情况:
若联系是1:1:则每个实体的码均是该关系的候选码。 若联系是1:n:则关系的码是n端实体的码。 若联系是m:n:则关系的码是参加联系的诸实体的码的集合。 若联系是三个或三个以上的实体的一个多元联系可以转换为一个关系模
① 确定局部E-R图实体之间的函数依赖。 ② 求F的最小依赖集Fm,求其差集,即
D=F-Fm ③ 逐一考察D中每一函数依赖,确定是否为冗余,若是,就把 它去掉。
5.4 逻辑结构设计
任务:将基本E-R模型转换为DBMS所支持的数据模型。 关系型逻辑结构设计的步骤:
1) 将概念结构转换为关系模型 2) 优化模型 3) 设计适合DBMS的子模式
第五章 数据库设计
5.1 数据库设计概述 5.2 需求分析 5.3 概念结构设计 5.4 逻辑结构设计 5.5 数据库物理设计
数据库技术的研究领域
数据库管理系统软件的研制(×)
DBMS的研制包括DBMS本身以及以DBMS为核心的饿一组相互联系的软 件系统。目标是扩大功能、提高性能和用户的生产率。
5.2 需求分析
5.数据库应用系统的数据字典 包括:
数据项 数据结构 数据流 数据存储 处理过程
5.2 需求分析
例:下图给出了某机器制造厂的零配 件采购子系统的数据流图。该子系统 要处理的工作是生产部门提出的生产 计划根据零配件当前价格计算成本送 主管部门审批,对已批准生产计划制 定采购计划,准备好订货单给供应商。

数据库原理与应用第五章课件

数据库原理与应用第五章课件

5.2 需求分析
5.2.2 需求分析的方法
需求分析常用的调查方法有以下几种: (1)亲自参与业务活动,了解业务处理的基本情况。 (2)请专人介绍。 (3)在对用户的需求了解过程中一定会存在许多疑问,可以通
过与用户座谈、询问等方式来解决这些疑问。 (4)设计调查表请用户填写。如果调查表设计得合理接受。 (5)查问记录。即查问原系统有关的数据记录。 (6)学习文件。及时了解掌握与用户业务相关的政策和业务规
5.6 数据库实施
所谓数据库的实施,就是根据数据库的逻辑结构 设计和物理结构设计的结果,在具体RDBMS支持的计算 机系统上建立实际的数据库模式、装人数据、并进行 测试和试运行的过程。 (1)散数据库的建立与调整 (2)数据库的调整 (3)应用程序编制与调试 (4)数据库系统的试逻辑结构设计阶段 物理结构设计阶段 数据库实施阶段 数据库运行和维护阶段
5.2 需 求 分 析
5.2.1 需求分析的任务
需求分析的任务是通过详细调查所要处理的对象(组织、 部门、企业等),充分了解原有系统的工作概况,明确用户的 各种数据需求、完整性约束条件、事务处理和安全性条件等, 然后在此基础上确定新系统的功能。新系统必须充分考虑今后 可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。
(1)一个实体型转换为一个关系模式; (2)实体的属性就是关系的属性,实体的码就是关系的码。
5.5 物 理 设 计
数据库物理设计阶段主要包括以下4个过程: (1)分析影响物理数据库设计的因素。 (2)为关系模式选择存取方法。 (3)设计关系、索引等数据库文件的物理存储结构。 (4)评价物理结构。
(1)数据库的转储和恢复。 (2)维持数据库的完整性与安全性。 (3)监测并改善数据库性能。 (4)数据库的重组和重构。

第5章 数据库基本概念PPT课件

第5章 数据库基本概念PPT课件

数据(Data)
数据(Data)是数据库中存储的基本对象 数据的定义
描述事物的符号记录。
数据的种类
文字、图形、图象、声音
数据的特点
数据与其语义是不可分的
数据举例
学生档案中的学生记录 (马超,男,1972,江苏,计算机系,1990)
数据的形式不能完全表达其内容 数据的解释
语义:学生姓名、性别、出生年月、籍贯、所在 系别、入学时间
数据库管理系统(DBMS)
什么是DBMS 数据库管理系统(Database Management System,简称DBMS) 是位于用户与操作系统之间的一层 数据管理软件。
它是用户与数据库的接口,提供数据库的 定义、检索、更新、维护及各种数据控制。
DBMS的主要功能
★定义数据库
提供数据描述语言(DDL),定义数 据库总体逻辑数据结构、存储结构、 保密定义等。
与数据文件名 统一、集中、独
打交道
立的管理
文件系统
DBMS
人工管理阶段 文件系统阶段
数据库系统阶段
数据的共 享程度
无共享
共享性差
共享性高
数据的冗 余度
冗余度极大
冗余度大
冗余度小
数据的独 不独立,完全 立性 依赖于程序
独立性差
具有高度的物理独立 性和一定的逻辑独立性
数据的结 构化
无结构
记录内有结构 整体无结构
整体结构化 用数据模型描述
数据的控 制能力
应用程序 自己控制
应用程序 自己控制
由DBMS提供数据的 安全性、完整性、并 发控制和恢复能力
数据独立性是要维护数据与应用程序之 间的无关性。其目的是,应用程序不因 数据一方的改变而改变;反过来,数据 也不会因应用程序一方的改变而改变。 数据与应用程序相互独立,不受对方的 影响。数据独立性分成物理数据独立性 和逻辑数据独立性两级。

数据库第五章习题及答案

数据库第五章习题及答案

数据库第五章习题及答案本文档为数据库第五章的习题及答案,帮助读者巩固数据库相关知识。

习题1. 数据库的优点有哪些?数据库具有以下优点: - 数据共享:多个用户可以同时访问和共享数据库中的数据。

- 数据一致性:数据库提供事务管理能力,保证了数据的一致性。

- 数据持久性:数据在数据库中是永久存储的,不会因为系统关机或程序结束而丢失。

- 数据冗余度低:数据库通过规范化设计,减少了数据的冗余性,提高了数据的存储效率。

- 数据独立性:数据库支持数据与应用程序的独立性,提高了系统的灵活性和维护性。

- 数据安全性:数据库提供了用户权限管理和数据备份机制,保证了数据的安全性。

2. 数据库的三级模式结构是什么?数据库的三级模式结构包括: - 外模式(视图层):外模式是用户所看到的数据库的子集,用于描述用户对数据库的逻辑视图。

每个用户可以有不同的外模式来满足自己的需求。

- 概念模式(逻辑层):概念模式是全局数据库的逻辑结构和组织方式,描述了数据的总体逻辑视图。

概念模式独立于具体的应用程序,是数据库管理员的角度来看待数据库的。

- 内模式(物理层):内模式是数据库的存储结构和物理组织方式,描述了数据在存储介质上的实际存储方式。

3. 数据库的完整性约束有哪些?数据库的完整性约束包括: - 实体完整性约束:确保表的主键不为空,每个实体都能够唯一标识。

- 参照完整性约束:确保外键的引用关系是有效的,即外键值必须等于被引用表中的主键值或者为空。

- 用户定义完整性约束:用户可以自定义额外的完整性约束,如检查约束、唯一约束、默认约束等。

4. 数据库的关系模型有哪些特点?数据库的关系模型具有以下特点: - 数据用二维表的形式进行组织,表由行和列组成,每一行表示一个实体,每一列表示一个属性。

- 表与表之间通过主键和外键建立关联关系,形成关系。

- 关系模型提供了一种数据独立性的设计方法,使得应用程序与数据的逻辑结构相分离,提高了系统的灵活性和可维护性。

第5章 数据库完整性

第5章 数据库完整性

第5章数据库安全性(2课时)数据库的数据保护主要包括数据的安全性和数据的完整性。

数据的安全性是为了保护数据库防止恶意的破坏和非法访问,防范对象是非法用户和非法操作。

数据库的完整性是指数据的正确性和相容性,是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据,防范对象是不合语义的、不正确的数据。

举例说明数据的完整性(三种完整性各一例)。

为维护数据库的完整性,DBMS必须具备三个功能:1 提供定义完整性约束条件的机制完整性约束条件也称为完整性约束规则,是数据库必须满足的语义约束条件。

SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性。

这些完整性一般由SQL的DDL语句来实现。

它们作为数据库模式的一部分存入数据字典中。

2 提供完整性检查的方法DBMS中检查数据是否满足完整性约束条件的机制称为完整性检查。

一般在INSERT、UPDA TE、DELETE语句执行后开始检查,也可以在事务提交时检查。

检查这些操作执行后数据库中的数据库是否违背了完整性约束条件。

3 违约处理DBMS若发现用户的操作违背了完整性约束条件,就采取一定的动作,如拒绝(NOACTION)执行该操作,或级联(CASCADE)执行其他操作,进行违约处理以保证数据的完整性。

目前商用的DBMS产品都支持完整性控制,即完整性定义、检查控制和违约处理都是由DBMS来实现,不必由应用程序来完成,从而减轻了应用程序员的负担。

5.1 实体完整性是关系的两个不变性之一,关系的主属性的取值不能相同,主属性不能取空值,保证在一个关系中不存在两个完全相同的元组。

5.1.1 实体完整性定义关系模型的实体完整性在CREATE TABLE中用PRIMARY KEY定义。

对单属性构成的码有两种说明方法:一种是定义为列级约束条件;一种是定义为表级约束条件。

对多个属性构成的码只有一种说明方法:定义为表级约束条件。

数据库原理第五章关系数据库的规范化设计

数据库原理第五章关系数据库的规范化设计
在以上三个关系模式中,实现了信息的某种程度的 分离: T中存储教师基本信息,与所选课程及系主任无关; D中存储系的有关信息,与教师无关; TC中存储教师讲授课程的信息,而与教师及系的信 息无关。
12
模式分解是关系规范化的 主要方法(二)
与TDC相比,分解为三个关系模式后,数据的冗余度明显 降低。 当新插入一个系时,只要在关系D中添加一条记录。 当某个教师尚未讲课,只要在关系T中添加一条教师记录, 而与TC授课关系无关,这就避免了插入异常。 当某个系的教师不再讲课时,只需在TC中删除该教师的 全部授课记录,而关系D中有关该系的信息仍然保留,从 而不会引起删除异常。 同时,由于数据冗余度的降低,数据没有重复存储,也不 会引起更新异常。
24
2.2 完全函数依赖和部分函数依赖
例如:学生成绩表中
姓名 王一 王二 王三 王一
学号 1 2 3 4
年龄 16 15 16 16
籍贯 河北 山东 北京 天津
姓名不能推出年龄,学号也不能推出年龄,但是 姓名 + 学号能推出年龄,故完全依赖;
学号能直接推出籍贯,故是部分依赖
25
2.3 传递函数依赖
当关系中的元组增加、删除或更新后都不能被破 坏这种函数依赖。因此,必须根据语义来确定属 性之间的函数依赖,而不能单凭某一时刻关系中 的实际数据值来判断。
20
函数依赖的定义和性质(六)
函数依赖可以保证关系分解的无损连接性
设R(X,Y,Z),X,Y,Z为不相交的属性集合,如果X Y或X Z,则有R(X,Y,Z)=R[X,Y]*R[X,Z],其中,R[X,Y]表示关 系R在属性(X,Y)上的投影,即 R等于其投影在X上的自然连 接,这样便保证了关系R分解后不会丢失原有的信息,称为 关系分解的无损连接性

第5章 数据库安全保护

第5章 数据库安全保护

更改登录账号的属性
使用存储过程sp_password可改变登录账号的密码
EXEC sp_password '旧密码', '新密码', '登录账号名称' [例5-3]将Mike账号的密码由原来的m1934改为mike1934. EXEC sp_password ‘m1934’,’mike1934’,’Mike’
第5章 数据库安全保护
5.1 5.2 5.3 5.4
数据库的安全性 完整性控制 并发控制与封锁 数据库的恢复
2
5.1 数据库的安全性
5.1.1 数据库安全性的含义
数据库的安全性是指保护数据库以防止非法使 用所造成的数据泄露、更改或破坏。
安全性问题有许多方面 :
(1)法律、社会和伦理方面时问题。 (2)物理控制方面的问题。 (3)政策方面的问题。 (4)运行方面的问题。 (5)硬件控制方面的问题。 (6)操作系统安全性方面的问题。 (7)数据库系统本身的安全性方面的问题。
18
其中: BUILTIN\Administrators: 表示所有 Windows Adiminstrators组中的用户都可以 登录到SQL Server。此组中的成员同时也具 有SQL Server的系统管理员权限。 sa:SQL Server身份验证模式的系统管理 员账户。 方法2:使用存储过程查看登录账号。 EXEC sp_helplogins
14
5.1.4 SQL Server2000的身份验证模式
1.Windows身份验证模式 : 允许Windows操作系统用户连接到SQL Server。 当使用Windows身份验证模式时,用户必 须首先登录到Windows操作系统中,然后 再登录到SQL Server。 一般推荐使用Windows验证模式,因为这 种安全模式能够与Windows操作系统的安 全系统集成在一起,以提供更多的安全功能。

第五章 数据库完整性

第五章 数据库完整性
7
例2:将SC表中的SNO、cno属性组定义为码 create table sc (sno char(9) not null, cno char(4) not null, grade smallint, primary key(sno,cno) )
8
5.1.2 实体完整性的违约处理

对于实体完整性的检查,包括:
在子表中修改外码(也是主属性)的策略


6. 在参照关系(子表)中修改外码(同时是主码 属性 )。与在参照关系中插入元组类似,可以 有2种策略: 受限修改 递归修改 RDBMS在实现参照完整性时: 需要向用户提供定义主码、外码的机制。 向用户提供按照自己的应用要求选择处理依 赖关系中对应的元组的方法。
6
5.1 实体完整性
5.1.1 定义实体完整性 例1:将student表中的sno属性定义为码 create table student (sno char(9) primary key, sname char(20) not null, ssex char(2), sage smallint, sdept char(20) )
26
5.4 完整性约束命名子句


1. 完整性约束命名子句 Constraint <完整性约束条件名><完整性约 束条件> 例5.10 建立学生登记表 student,要求学号在 90000—99999 之间,姓名不能取空值,年 龄小于30,性别只能是“男”或者“女”
5

数据库完整性控制机制


DBMS完整性控制机制: 1. 提供定义完整性约束条件的机制:提供定义数 据完整性约束条件的方法,完整性约束条件作为 模式的一部分存入数据库中; 2. 提供完整性检查的方法:进行完整性检查,检 查数据是否满足约束条件; 3. 进行违约处理:若有违反,采取相应措施(拒 绝、报告、改正)处理。 完整性子系统:DBMS中执行完整性控制的子系统。 其功能为监督事务的执行,测试其是否违反完整性 约束条件;若有违反,则分情况进行预定的处理。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.5 存储过程()
例4 创建带有多个输入参数并有默认值的存储过程:查询某 个学生的某门课程的考试成绩,列出学生的姓名,课程名 和成绩,若没有指定课程,则默认课程为数据库基础. CREATE PROC STUDENT_GRADE4 @STUDENT_NAME CHAR(10), @COURSE_NAME CHAR(20)='数据库基础' AS SELECT SNAME,CNAME,GRADE FROM STUDENT,SC,COURSE WHERE STUDENT.SNO=SC.SNO AND O=O AND SNAME=@STUDENT_NAME AND CNAME=@COURSE_NAME 执行存储过程: EXEC STUDENT_GRADE4 '刘晨'
数据库原理与应用
周蓓(zhp_jdy@) 常熟理工学院计算机科学与工程系
第5章 数据库完整性
数据库完整性机制 触发器 存储过程
数据库的完整性是指数据的正确性和相容性. 完整性检查和控制的防范对象是不合语义的,不 正确的数据. DBMS对完整性的维护机制: 1,提供定义完整性约束条件的机制 2,提供完整性检查的方法 3,违约处理
5.5 存储过程
存储过程:SQL语句和控制流语句的预编译 存储过程名 集合.
过程的参数,存 储过程最多可以 有 2100 个参数. 参数不能用于代 替表名,列名或 其它数据库对象 的名称.
CREATE PROC [ EDURE ] procedure_name [ ;number ] [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [ ,...n ]
使用变量和参数
1,Transact-SQL 局部变量: Transact-SQL 变量是 Transact-SQL 批处理和脚本中能 够保存数据值的对象.声明或定义变量后,批处理中的一个 Transact-SQL 语句可以设置变量值,而该批处理中后面的 语句可以从变量获得此值.例如: DECLARE @EmpIDVar INT SET @EmpIDVar = 1234 SELECT * FROM Employees WHERE EmployeeID = @EmpIDVar
5.5 存储过程(续)
例7 建立存储过程check_Xk,功能是根据提供的 参数学号和课程号,完成选课记录的插入功能.要 求如下: 首先检查该课程选课人数是否已满(可自己根据表 中数据的情况定义一个限定值),若满,则返回一 个0;若不满,继续检查该学生是否已经选满3门课 程,若满,则返回-1,否则将选课记录插入到SC 表中,并返回1.
例4 创建一个包括学生和教师编号,姓名以及类别 的视图,建立更新触发器,使更新结果返回到源基 本表中. 什么的视图是可更新的? 行列子集视图 建立INSTEAD OF 触发器,根据类别更新相应 的基本表.
CREATE TRIGGER [UPDATE_1] ON [JS_AND_ST1] INSTEAD OF UPDATE AS IF UPDATE(XM) BEGIN DECLARE @LB NVARCHAR(15) DECLARE @PID NVARCHAR(255) DECLARE @XM NVARCHAR(255) SET @LB = (SELECT LB FROM INSERTED) SET @PID = (SELECT PID FROM INSERTED) SET @XM = (SELECT XM FROM INSERTED) IF @LB='STUDENT' BEGIN UPDATE XS$ SET XM=@XM WHERE XH=@PID END IF @LB='TEACHER' BEGIN UPDATE JS$ SET XM=@XM WHERE GH=@PID END END
5.5 存储过程(续)
例5 创建带有输出参数存储过程:统计指定课程的平均成 绩,并将统计的结果用输出参数返回. CREATE PROC AVGGRADE @CN CHAR(10),@AVGGRADE INT OUTPUT AS SELECT @AVGGRADE=AVG(GRADE) FROM SC,COURSE WHERE O=O AND CNAME=@CN 执行存储过程: DECLARE @ACGGRADE INT EXEC AVGGRADE 'VB',@AVGGRADE OUTPUT PRINT @AVGGRADE
5.5 存储过程(续)
例3 创建带有多个输入参数的存储过程:查询某个学生的 某门课程的考试成绩,列出学生的姓名,课程名和成绩 CREATE PROC STUDENT_GRADE3 @STUDENT_NAME CHAR(10), @COURSE_NAME CHAR(20) AS SELECT SNAME,CNAME,GRADE FROM STUDENT,SC,COURSE WHERE STUDENT.SNO=SC.SNO AND O=O AND SNAME=@STUDENT_NAME AND CNAME=@COURSE_NAME 执行存储过程: EXEC STUDENT_GRADE3 '刘晨','VB'
1,不允许取空值 NOT NULL 2,列值惟一 UNIQUE 3,CHECK子句 CHECK(约束条件表达式)
5.4 触发器
1,触发器(Trigger) 触发器是用户定义在关系表上的一类由事 件驱动的特殊存储过程. 当发生表的UPDATE,DELETE,INSERT操 作时,触发器生效.
5.4 触发器(续)
5.4 触发器(续)
例3 在订单表(ORDER)中插入或修改订购数量(NUM),必须 满足客户相应等级的数量上限和下限.
5.4 触发器(续)
CREATE TRIGGER [CHECK_NUM] ON [ORDER] FOR INSERT, UPDATE AS IF UPDATE(NUM) BEGIN IF EXISTS( SELECT * FROM INSERTED ,CUSTOMER,CUSTOMERLEVEL WHERE INSERTED.CID=CUSTOMER.CID AND CUSTOMERLEVEL.CLEVEL=CUSTOMER.CLEVEL AND NUM NOT BETWEEN CUSTOMERLEVEL .NUMDOWN AND CUSTOMERLEVEL .NUMUP ) BEGIN PRINT '订购数量违反了客户的限额!' ROLLBACK END END
5.5 存储过程(续)
例6 建立带通配符参数的存储过程:查询学生的基 本情况. CREATE PROC S_NAME @SN VARCHAR(10)='%' AS SELECT * FROM STUDENT WHERE SNAME LIKE @SN 执行存储过程: EXEC S_NAME '李%'
5.4 触发器(续)
4,AFTER和INSTEAD OF的区别 AFTER:触发发生在SQL操作后,若发生错误,可 利用回滚恢复原数据. INSTEAD OF:触发发生在SQL操作前,且如何操 作由触发器操作来实现. INSTEAD OF 触发器的主要优点是可以使不能更 新的视图支持更新.基于多个基表的视图必须使用 INSTEAD OF 触发器来支持引用多个表中数据的 插入,更新和删除操作. 每个表只能有一个同类型的INSTEAD OF触发器
使用变量和参数
2,Transact-SQL 参数: 参数是在存储过程和执行该存储过程的批处理或脚本之间传递 数据的对象.参数可以是输入参数也可以是输出参数.例如: CREATE PROCEDURE ParmSample @EmpIDParm INT AS SELECT * FROM Employees WHERE EmployeeID = @EmpIDParm GO EXEC ParmSample @EmpIDParm = 1234 GO
{ [ INSERT ] [,] [ UPDATE ] [,] [ DELETE ] } AS sql_statement [ ...n ] 触发器激活后所 作的操作,例如 检查,回滚,插 入,删除等
5.4 触发器(续)
例1 在COURSE表上创建触发器,检查插入和更新时是否出 课程名相同的记录,若有则不插入. CREATE TRIGGER [C_INSERT] ON [DBO].[COURSE] FOR INSERT, UPDATE 触发器名字 AS IF 判断插入或更新的数据 (SELECT COUNT(*) FROM 是否与表中课程名相同 [DBO].[COURSE] ,INSERTED WHERE [DBO].[COURSE].CNAME=AME)>1 BEGIN PRINT 'NOT INSERT' 操作回滚 ROLLBACK TRANSACTION END
5.4 触发器(续)
例2 插入选课记录时,检查若选课人数已满5人,则拒绝插
CREATE TRIGGER [XK] ON [SC] FOR INSERT, UPDATE AS IF(SELECT COUNT(*) FROM [SC] ,INSERTED WHERE [SC].CNO=O )>5 BEGIN PRINT '选课已满' ROLLBACK END
2,使用触发器的优点 触发器是自动的; 触发器可以通过数据库中的相关表进行层 叠更改. 触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂.
5.4 触发器(续)
3,定义触发器
CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] {FOR | AFTER | INSTEAD OF } 加密 触发器激活的顺 序,AFTER表示 执行操作后, INSTEAD OF 操 作前.
相关文档
最新文档