数据库第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章

五
表(a)
表(b)
章
关
系 数
A
B
C
D
A
B
C
D
据
• A →AB1在表(a)关B系1 上成立,C但1 A →B在D表1(b)关系上不A成1 立。 B1
C1
D1
库
的
A1
B1
C2
D2
A1
B2
C2
D2
规
A2
B2
C3
D3
A2
B2
C3
D3
范
化
A3
B2
C4
D4
D4
A3
B1
C4
理
论
14
函数依赖(续)
第
五
章
• 定义5.2
规
F
范
化
理
论
P
传递
17
函数依赖(续)
第
例: 在关系SC(Sno, Cno, Grade)中,
五
由于: Sno Grade, Cno Grade,
章
因此: (Sno, Cno) Grade
但:
F
关
(Sno, Cno) Sno, (Sno, Cno) Cno
系
数
例: 在关系Std(Sno, Sdept, Mname)中, 有:
五
章 • 练习:已知R(ABCD),F={B→C,D →A,BD →ABCD},求R的候选码。
B ABCD, D ABCD, BD ABCD
关
所以,R的候选码为BD
系 数 据 库
• 例: 全码
F
考虑关系模式R(P,W,A)
– 其中: P—演奏者, W—作品, A—听众
《数据库技术与应用》第5章 习题答案

第5章数据库完整性与安全性1. 什么是数据库的完整性?什么是数据库的安全性?两者之间有什么区别和联系?解:数据库的完整性是指数据库中数据的正确性、有效性和相容性,其目的是防止不符合语义、不正确的数据进入数据库,从而来保证数据库系统能够真实的反映客观现实世界。
数据库安全性是指保护数据库,防止因用户非法使用数据库造成数据泄露、更改或破坏。
数据的完整性和安全性是两个不同的概念,但是有一定的联系:前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。
后者是保护数据库防止恶意的破坏和非法的存取。
也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据.2。
什么是数据库的完整性约束条件?完整性约束条件可以分为哪几类?解:完整性约束条件是指数据库中的数据应该满足的语义约束条件。
一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束.静态列级约束是对一个列的取值域的说明,包括以下几个方面:①数据类型的约束,包括数据的类型、长度、单位、精度等;②对数据格式的约束;③对取值范围或取值集合的约束;④对空值的约束;⑤其他约束.静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。
静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。
常见的静态关系约束有:①实体完整性约束;②参照完整性约束;③函数依赖约束.动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:①修改列定义时的约束;②修改列值时的约束。
动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件.动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。
3. 试述DBMS如何实现完整性控制.解:为了维护数据库的完整性,DBMS提供了以下三种机制:①完整性约束条件定义完整性约束条件也称为完整性规则,是数据库中的数据必须满足的语义约束条件.SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性。
第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定义。
对单属性构成的码有两种说明方法:一种是定义为列级约束条件;一种是定义为表级约束条件。
对多个属性构成的码只有一种说明方法:定义为表级约束条件。
第五章 数据库的维护和应用

第五章数据库的维护和应用一、例题解析【例题1】设数据表已经打开,为了在表尾增加一条空记录,应使用的命令是()。
A.APPEND B.APPEND BLANK C.INSERT D.INSERT BLANK【解析】答案A,APPEND命令打开一个输入记录的浏览窗口;答案D,INSERT BLANK是插入一条空记录,但必须将记录指针移动到文件尾;答案B是在文件尾追加一条空记录,这个命令常常配合REPLACE命令用于程序中添加记录。
答案:B【例题2】在打开的职工表在有字符型字段“职称”和数值型字段“工资”等,若要求先按职称的升序,职称相同再按工资降序建立排序好的zcgz.dbf文件,应使用的命令是()。
A.SORT ON职称,工资/D Tozcgz.dbfB.SORT ON工资/D,职称/A Tozcgz.dbfC.SORT ON职称+工资Tozcgz.dbfD.SORT ON职称+工资/D Tozcgz.dbf【解析】在SORT命令中,排序的依据只能是关键字段名,而不能使用关键字表达式,因此,答案C和D都是错误的。
答案B是先按工资排序,工资相同再按职称排序,与题意不符,所以正确的答案是A。
答案:A【例题3】在打开的学生档案表中有字符字段“性别”和日期型字段“出生日期”等若要先按性别排序,性别相同时再按出生日期排序创建单索引文件,应使用的命令是()。
A.INDEX ON性别,出生日期TO Xbrq.idxB.INDEX ON性别+出生日期TO xbrq.idxC.INDEX ON性别+STR(出生日期)TO xbrq.idxD.INDEX ON性别+DTOC(出生日期)TO xbrq.idx【解析】对于多重索引,索引表达式中的各字段数据类型必须是一致的。
本题中,“性别”和“出生日期”的数据类型不一致,为构成一个索引表达式,通常是使用转换函数把非字符型的数据转换成字符型的数据。
这里要用DTOC()函数将日期型转换成字符型的,因而答案B、C是错误的;答案A中,索引表达式不能是用逗号隔开的式子。
第五章 数据库设计

运动会方面,实体集包括:运动员(编号,姓名,性别,队 伍号),比赛项目(项目名,比赛场地)。其中,一个比赛项 目可供多名运动员参加,一名运动员可参加多个项目。
根据上述条件,分别设计运动队和运动会两个局部E-R图。
第三节 概念结构设计 参赛项目 性别 队伍号 队伍名 教练名 运动员 性别 队伍号 运动员 m 参加 n n 属于
第三节 概念结构设计 分解变换。如果实体集的属性较多,可以进行分解。例如, 对于员工实体集,其属性为员工号、姓名、性别、生日、(所 属)支行名、岗位、工资、奖金。 性别 生日 支行名 岗位 工资 奖金
姓名 员工号 员工
第三节 概念结构设计 可以把员工信息分解为两部分,一部分属于固定信息,一部 分属于变动信息。为了区别这两部分信息,产生一个新的实体 和一个新的联系。
在视图合并阶段,设计者把所有视图有机地合并成统一的概 念模型,这个最终的概念模型支持所有的应用。
第三节 概念结构设计 概念结构设计的策略主要分为自顶向下、自底向上、自内向 外和混合策略四种。 这些方法中最常用的是自底向上方法:首先设计局部概念模 式,然后综合局部概念模式成全局概念模式,最后对全局概念 模式进行评估和优化。
P2 P1 D2明细 D3账目 E2会 E1客 D1付款 打印账目 账务处理 单 户 计
第二节 需求分析 元数据是描述数据的数据,通常由数据结构的描述组成,主 要描述数据及其使用环境,例如数据精度、来源、产生时间、 使用范围、注解等。 数据字典是一种用户可以访问的、记录数据库和应用程序元 数据的集合,通常是用来解释数据表、数据字段等数据结构的 意义,数据字段的取值范围、数据值代表的意义等。 简而言之,数据字典是描述数据的信息集合,是系统中所有 数据的定义集合。
数据字典通常由数据项、数据结构、数据流、数据存储和处 理过程组成。
第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操作系统的安 全系统集成在一起,以提供更多的安全功能。
第五章 数据库完整性

例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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
修改主码值
可能破坏参照完整性
拒绝/级联修改/设空值
表1 student
Sno 95001 Sname 李勇 Ssex 男
表2 sc
Sage Sdept
20 CS
Sno 95001
Cno 1
Grade 92
95002
95003 95004
刘晨
王敏 张立
女
女 男
19
18 19
IS
MA IS
95001
95001 95002 95002
举例: 如将Student表中Sno=95001元组的Sno值改为95123,而 SC表中有 4个元组的Sno=95001。 级联修改:将SC表中4个Sno=95001元组的Sno值也改为 95123,若参照关系同时又是另一个关系的被参照关系, 则这种修改会继续级联下去; 受限修改:只有SC表中没有任何元组的Sno=95001时, 才能将Student表中Sno=95001元组的Sno值改为95123; 置空值修改:将Student表中Sno=95001元组的Sno值改 为95123,而将SC表中所有Sno=95001元组的Sno值置为 空值。 显然在学生选课数据库中只有第一种方法是正确的。若修 改的是参照关系,则与插入类似,有受限修改、递归修改 两种策略。
RDBMS实现参照完整性时需要考虑以下四个方面的问题: 修改关系中主码的问题: 要修改被参照关系中某些元组的主码值,而参照关系中有 些元组的外码值正好等于被参照关系要修改的主码值; 要修改被参照关系中某些元组的主码值,而参照关系中没 有任何元组的外码值等于被参照关系修改后的主码值。 一般有两种策略: ⑴不允许修改主码:有的DBMS不允许修改关系的主码值, 若需要修改主码值,只能先删除该元组,然后再把具有新主 码值的元组插入到关系中。
5.2 参照完整性
RDBMS实现参照完整性时需要考虑的问题: 外码能否可以接受空值:
依赖于应用环境的语义,系统除应提供定义外码机制外, 还提供定义外码列允许为空否的机制。 学生–选课数据库中Student关系为被参照关系,其主 码为Sno;SC为参照关系,外码为Sno。若SC的Sno 为空值:表明尚不存在的某个学生,或者某个不知学 号的学生,选修了某门课程,其成绩记录在Grade中, 与学校的应用环境是不相符的,因此SC的Sno列不能 取空值。
⑴受限插入:仅当被参照关系中存在相应元组 其主码值与参照关系插入元组的外码值相同时, 系统才执行插入操作,否则拒绝此操作。 Student(sno,sname,depno) 95001 张三 D1 95002 李四 D2 Dept(Depno,Dname) D1 IS D2 CS 插入95003 王五 D3
关系模型的参照完整性在CREATE TABLE 中用FOREIGN KEY定 义外码,用REFERENCES短语指明这些外码参照了哪些主码。 [例3] 建立一个“学生选课”表SC,它由学号Sno、课程号Cno, 修课成绩Grade组成,其中Sno和 Cno为外码,分别参照了 Student(Sno)和Course(Cno)。 CREATE TABLE SC( Sno CHAR(5) REFERENCES Student(Sno) , Cno CHAR(3) REFERENCES Course(Cno) , Grade int, Primary key (Sno, Cno));
数据库系统概论
An Introduction to Database System
第五章
数据库完整性
广东工业大学计算机学院
第五章
数据库完整性
什么是数据库的完整性
数据的正确性和相容性 防止不合语义的数据进入数据库。
例: 学生的年龄必须是整数,取值范围为14--29; 学生的性别只能是男或女; 学生的学号一定是唯一的; 学生所在的系必须是学校开设的系;
5.2 参照完整性
Student(sno,sname,depno) 95001 张三 D1 95002 李四 D2
Dept(Depno,Dname) D1 IS D2 CS D3 MA 修改D2 CS中D2为D4 简述级联修改,受限制修改和置空修改的操作方法
5.2 参照完整性
CREATE TABLE SC( Sno CHAR(5) , Cno CHAR(3) , Grade real, Primary key (Sno, Cno) Foreign key(sno) references student(sno), Foreign key(cno) references course(cno),
完整性:否真实地反映现实世界
区分数据的完整性和安全性
数据的完整性:防止数据库中存在不符 合语义的数据(不正确的数据)
数据的安全性:保护数据库防止恶意的 破坏和非法的存取。
完整性控制机制
为了维护数据库完整性,DBMS必须能够:
1.完整性约束条件定义机制:DDL
2.完整性检查机制:insert,update,delete以
5.2 参照完整性
RDBMS实现参照完整性时需要考虑以下四个方面的问 题: 3、在参照关系中插入元组时的问题:当参照关系插入 某个元组,而被参照关系不存在相应的元组,其主码 值与参照关系插入元组的外码值相同,这时可以两种 策略: Student(sno,sname,depno) 95001 张三 D1 95002 李四 D2 Dept(Depno,Dname) D1 IS D2 CS 插入95003 王五 D3
5.2 参照完整性
⑵允许修改主码:若修改的是被参照关系,则与删除类似, 有三种策略: ①级联修改:修改被参照关系主码值的同时,修改参照关 系中相应的外码值。 ②受限修改:拒绝此修改操作。只当参照关系中没有任何 元组的外码值等于被参照关系中某个元组的主码值时,才 能被修改。 ③置空值修改:修改被参照关系主码值的同时,将参照关 系中相应的外码值置为空值。
5.2 参照完整性
置空值删除:删除被参照关系的元组,并将参照关系 中与被参照关系中被删除元组主码值相等的外码值置 为空值。 Student(sno,sname,depno) 95001 张三 D1 95002 李四 D2
Dept(Depno,Dname) D1 IS D2 CS 删除D1 IS 则95001 张三 D1变为95001 张三 NULL 该删除操作也要综合语义和其他约束限制进行操作。
参照完整性的实现: RDBMS在实现参照完整性时,除了要向用户提供 定义主码、外码的机制,还需要向用户提供不 同的策略供用户选择。选择哪种策略,都要根 据应用环境的要求确定。
5.3 用户自定义的约束条件
5.4 完整性约束命名子句
Constraint <完整性约束条件名> [PRIMARY key 短语|foreign key 短语 |check短语 等]
);
5.2 参照完整性
• • 一个参照完整性将两个表中的相应元组联系起来。 对参照表和被参照表进行增删改操作时有可能破坏参照 完整性的情况:
被参照表(student)
可能破坏参照完整性 可能破坏参照完整性 删除元组
参照表(sc)
插入元组 修改外码值 可能破坏参照完整性
违约处理
拒绝 拒绝 拒绝/级联删除/设空值
5.2 参照完整性
பைடு நூலகம்
Student(sno,sname,depno) 95001 张三 D1 95002 李四 D2
Dept(Depno,Dname) D1 IS D2 CS D3 MA 修改D2 CS中D2为D4 简述级联修改,受限制修改和置空修改的操作方法
5.2 参照完整性
Student(sno,sname,ssex,sage,sdept) Course(cno,cname,cpno,ccredit) SC(sno,cno,grade)
RDBMS实现参照完整性时需要考虑以下四个方 面的问题:
2、在被参照关系中删除元组时的问题:参照关系有若 干元组的外码值与被删除的被参照关系的主码值相同, 这时有三种不同策略: ⑴级联删除:将参照关系中外码值与被参照关系中要 删除元组主码值相对应的元组一起删除。 ⑵受限删除:当参照关系中没有任何元组的外码值与 要删除的被参照关系的元组的主码值相对应时,系统 才执行删除操作,否则拒绝此删除操作。 (3)置空值删除:
⑵递归插入:首先向被参照关系中插入相应的元组, 其主码值等于参照关系插入元组的外码值,然后向参 照关系插入元组。 Student(sno,sname,depno) 95001 张三 D1 95002 李四 D2 Dept(Depno,Dname) D1 IS D2 CS 插入95003 王五 D3 先在Dept中插入D3元组,再在student中插入元组
Student(sno,sname,ssex,sage,sdept) Course(cno,cname,cpno,ccredit) SC(sno,cno,grade)
RDBMS实现参照完整性时需要考虑以下四个方面的问 题: 4、修改关系中主码的问题: 要修改被参照关系中某些元组的主码值,而参照关系 中有些元组的外码值正好等于被参照关系要修改的主 码值; 要修改被参照关系中某些元组的主码值,而参照关系 中没有任何元组的外码值等于被参照关系修改后的主 码值。 一般有两种策略:
2
3 2 3
85
88 90 80
5.2 参照完整性
RDBMS实现参照完整性时需要考虑四个方面的问题: 1、外码能否可以接受空值:依赖于应用环境的语义, 系统除应提供定义外码机制外,还提供定义外码列允 许为空否的机制。 学生–选课数据库中Student关系为被参照关系,其主 码为Sno;SC为参照关系,外码为Sno。若SC的Sno 为空值:表明尚不存在的某个学生,或者某个不知学 号的学生,选修了某门课程,其成绩记录在Grade中, 与学校的应用环境是不相符的,因此SC的Sno列不能 取空值。