数据库课件ch5
ch5
DEAN 思齐 述圣 省身
BCNF
STC(S# , T# , C#) 每位老师只教授一门课
某学生选定一门课,就对应一位老师 候选码 T# C# (S#,C#) T#
(S#,T#),(S#,C#)
S#
S# s1 s2 s3 s3 T# t1 t2 t3 t1
T#
C# c1 c2 c2 c1
C#
t2 t3
c2 c2
范式之间的关系
• 3NF 2NF
反证:若R3NF, 但R2NF,则按2NF定义, 一定有非主属性部分依赖于码
设X为R的码,则存在X的真子集X′,以及非主 属性Z(Z X′),使得X′Z 于是在R中存在码X,属性组X′,以及非主属 性Z(Z ,使得XX′, X′Z,X′X成 X′) 立,这与R3NF矛盾。 所以R2NF
STC 3NF ?
BCNF
• 不良特性
– 插入异常:如果没有学生选修某位老师的任课,则该 老师担任课程的信息就无法插入 – 删除异常:删除学生选课信息,会删除掉老师的任课 信息 – 更新异常:如果老师所教授的课程有所改动,则所有 选修该老师课程的学生元组都要做改动
– 数据冗余:每位学生都存储了有关老师所教授的课程 的信息
3NF
• 定义
– 关系模式R< U , F >中,若不存在这样的码X, 属性组Y及非主属性Z(Z Y),使得下式成 立, XY , YZ , YX
则称R3NF
– 消除非主属性对码的传递依赖 如S_SD 3NF,因为有S#SD, SDDEAN
3NF
• 改造
将S分解为
STUDENT(S# , SN , SD)
如S# SN, (S#,C#) G
CH5空间数据管理
§5.4 空间数据库管理系统
空间数据库特点:
1)数据量特别大; 2)数据种类多,复杂; 3)数据应用面相当广。
空间数据库管理系统:
1)是指能够对物理介质上存储的地理空间数据进行语 义和逻辑上的定义;
2)提供必须的空间数据查询、检索和存取功能; 3)能够对空间数据进行有效的维护和更新的一套软件系
统。
含有数据和操作方法的独立模块,可以认为是数据和行 为的统一体。(如一个城市、一棵树均可作为地理对 象。)
具有一个唯一的标识,以表明其存在的独立性; 具有一组描述特征的属性,以表明其在某一时刻的状态; 具有一组表示行为的操作方法,用以改变对象的状态。
§5.3 数据库模型
❖ 类:
▪ 共享同一属性和方法集的所有对象的集合。(如河流均具有共性,如名 称、长度、流域面积等,以及相同的操作方法,如查询、计算长度、求 流域面积等,因而可抽象为河流类。)
核心工具
传播
• 是作用于联合和聚集的工具, 它通过一种强制手段将子目标的 属性信息传播给复杂对象。成员 对象的属性只存储一次,保证数 据一致性和减少冗余。如桂林市 总人口,由存储在各成员对象中 的各区人口总和。
§5.3 数据库模型
(5)面向对象数据模型的特点 1 可充分利用现有数据模型的特点 2 具有可扩充性 3 可以模拟和操纵复杂对象
空间 数据库
ArcInfo的空间数据库 —— GeoDatabase
Geodatabase Feature Dataset Feature class
Geodatabase要素数据集
Geodatabase要素类
§5.5 空间数据组织
一、图幅内空间数据的组织
▪ 工作区:研究区图幅的范围 ▪ 工作层:空间数据处理的一个工作单元 ▪ 逻辑层:逻辑层可以包含任意多个地类 ▪ 地物类:类型相同的地物
Access数据库应用基础教程(第三版)ch05简明教程PPT课件
5.4.1 预定义计算
预定义计算用于对查询中的分组记录或全部记录进行“总 计”计算。例如,求总和、平均值、计数、最小值、最大值、 标准偏差或方差,Access通过聚合函数来完成这些计算。 单击工具栏上的“总计”按钮 ,可以在设计网格中显示出 “总计”行。对设计网格中的每个字段,都可在“总计”行中 选择总计项,来对查询中的全部记录、一条或多条记录组进行 计算。 在査询中,如果要对记录进行分类统计,可以使用分组统 计功能。分组统计时,只需在“设计”视图中将用于分组字段 的“总计”行设置成“分组”即可。
DROP TABLE语句将删除数据库中一个已有表。若选择 RESTRICT,则该表的删除是有限制条件的,即欲删除的表不 能被其他表的约束所引用,如CHECK,FOREIGN KEY等约 束,不能有视图,不能有触发器,不能有存储过程或函数等, 如果存在这些依赖该表的对象,则此表不能被删除;若选择 CASCADE,则该表的删除没有限制条件,在删除基本表的同 时,相关的依赖对象都将被一起删除。默认情况下是 RESTRICT。
教 学 提 纲
SQL语言 查询类型与查询条件 创建各种查询 查询中的计算 编辑和使用查询
5.1 SQL语言简介
SQL语言是一种介于关系代数和关系演算之间的结构化查 询语言,其功能并不仅仅是查询,还具备数据定义和数据操纵 等功能。
SQL概述 SQL数据定义功能
SQL数据查询功能
SQL数据操纵功能
5.4 查询中的计算
前面介绍了创建查询的一般方法,同时也使用这些方法创 建了一些査询,但所建査询仅仅是为了获取符合条件的记录, 并没有对査询得到的结果进行更深入的分析和利用。而在实际 应用中,常常需要对查询结果进行统计计算,如计算学生的总 成绩、平均成绩,某科成绩的最高分和最低分等。Access允许 在査询中利用设计网格中的“总计”行进行各种统计,通过创 建计算字段进行任意类型的计算。 在Access査询中,可以执行两种类型的计算,预定义计算和自 定义计算。
ch 5
算的
2. 平坦的;平板(状)的;扁平的
distributed database
分布式数据库
下一页 返回
5.1 What is database?
that can be dispersed or replicated among different points in a network. An objectoriented programming database is one that is congruent with the data defined in object classes and subclasses. Computer databases typically contain aggregations of data records or files, such as sales transactions, product catalogs and inventories and customer profiles. Typically, a database manager provides users the capabilities of controlling read/write access, specifying report generation and analyzing
5.1 What is database?
according to 根据 In one view 在某人看来,依某人见解 Bibliographic [,bibliəu'græ fik]
书目(或目录学)的;与书目(或目录学)有关的
relational database 相关数据库 tabular ['tæ bjulə] 1. 表格的,列成表的;按表格计
ch5 逻辑数据库设计
不足: 的信息, 不足:获取 employee 的信息,需要访问两个关系
数据库设计与实现
5.9
一般化的表示方式 (Cont.)
方法2: 方法 : 若一般化是不相交且全部的, 若一般化是不相交且全部的,则可为每个低层实体集构建一个关 系模式,含继承属性、 系模式,含继承属性、自身属性 schema customer employee attributes name, street, city, credit_rating name, street, city, salary
数据库设计与实现
5.6
模式的冗余
连接弱实体集和相应强实体集的标识性联系集, 连接弱实体集和相应强实体集的标识性联系集,对应的关系模式 是冗余的 如: loan, loan_payment, payment loan_payment = (loan_number, payment_number) payment = (loan_number, payment_number, payment_date, payment_amount)
数据库设计与实现 5.10
5.1.5 聚集的表示方式
对于聚集与实体集间的联系,创建一个关系模式, 对于聚集与实体集间的联系,创建一个关系模式, 包含: 包含: 聚集联系的主码 参与实体集的主码 自身所有属性
数据库设计与实现
5.11
聚集的表示方式 (Cont.)
例如, 例如,为表达聚集 works_on 和实体集 manager 之间的联系集 manages, 创建关系模式: 创建关系模式: manages (employee_id, branch_name, title, manager_name) 为空, 如果允许关系模式 manages 的属性 manager_name 为空,则模 式 works_on 是冗余的
数据库原理ch5
Chapter 5 数据库完整性
数据库的完整性是指数据的正确性和相容性
DBMS必须能够:
1.定义完整性
定义完整性时可给完整性条件取个名字
2.完整性检查
3.违约处理
拒绝,级连操作,设置空值
一.实体完整性
1.实体完整性定义
2.实体完整性检查和违约处理
二.参照完整性
1.参照完整性定义
2.参照完整性检查和违约处理
三.用户定义的完整性
1.属性上的约束条件的定义
①不允许取空值
②列值唯一
③用check指定列值应该满足的条
件
a)S表中属性ssex只允许取‘男’或
'女'
b)SC表中属性grade的值应在
0~100之间
c)S表中,计算机系(‘CS’)的学生年
龄应在16~25之间,其他系的
学生年龄应在16~35之间
2.约束条件检查和违约处理
拒绝执行
¾触发器
¾问题:
当用户输入一个修改表的语句给DBMS,DBMS做什么?
①检查语法
②检查用户权限
③检查此修改是否违反某个完整性
约束条件
④对相应数据项加锁
⑤执行修改操作
上机六
1.增加表SC对S、C的外键约束
2.将system.C中的值插入你的C
3.增加表C中cpno对cno的外键约束
4.在表SC中插入system.SC的相应记录
5.在表S中增加完整性约束:性别只允许
取‘男’或‘女’, 男学生的年龄在17~28之间,女学生的年龄在16~30之间6.在表S中将你的年龄改为16。
ch05_Visual FoxPro 6.0 程序设计教程_[共26页]
82第5章结构化查询语言SQL在Visual FoxPro 数据库管理系统中,除了具有Visual FoxPro 命令外,还支持结构化查询语言SQL 。
SQL 是关系数据库的标准语言。
查询是SQL 语言的重要组成部分,但不是全部,SQL 还包含数据定义、数据操纵和数据控制等功能。
本章将从数据查询、数据定义、数据修改这3个方面来介绍Visual FoxPro 支持的SQL 语言。
5.1 SQL 简介SQL 来源于20世纪70年代IBM 的一个被称为SEQUEL (Structured English Query Language )的研究项目。
20世纪80年代,SQL 由美国国家标准局(简称ANSI )进行了标准化。
1989年,国际标准化组织ISO 将SQL 定为国际标准,推荐它为标准关系数据库语言。
1990年,我国也颁布了《信息处理系统数据库语言SQL 》,将其定为中国国家标准。
现在,SQL 语言已广泛应用于各大、中、小数据库,如Oracle 、Access 、Sybase 、SQL Server 、FoxPro 等。
SQL 语言的主要特点如下。
(1)SQL 是一种一体化语言,它包括数据定义、数据查询、数据操纵和数据控制等方面的功能,可以完成数据库活动中的全部工作。
包括对表结构的定义、修改,记录的插入、更新、删除和查询以及安全性控制等一系列操作,为数据库应用系统的开发提供了良好的环境。
(2)SQL 是一种高度非过程化语言,它没有必要一步步告诉计算机“如何”去做,而只需要描述清楚用户要“做什么”,SQL 语言就可以将要求交给系统,系统自动完成全部工作。
(3)SQL 语言简洁,易学易用。
虽然SQL 语言功能很强,但它只有为数不多的几条命令,表5.1给出了分类的命令动词。
另外,SQL 的语法也非常简单,接近于自然语言(英语),容易学习与掌握。
(4)统一的语法格式,不同的工作方式。
不仅可以直接以命令的方式交互使用SQL ,也可以嵌入到程序设计语言中以程序方式使用SQL 。
ch5
connection handle,
the server to which to connect
the user identifier, password SQL_NTS denotes previous argument is a null-terminated string.
5.17 ©Silberschatz, Korth and Sudarshan
Database System Concepts - 6th Edition
5.4
©Silberschatz, Korth and Sudarshan
ODBC
Open DataBase Connectivity(ODBC) standard
standard for application program to communicate with a database server. application program interface (API) to
result
When a tuple is fetched, its attribute values are automatically stored in corresponding C variables. Arguments to SQLBindCol()
ODBC stmt variable, attribute position in query result The type conversion from SQL to C. The address of the variable. For variable-length types like character arrays, – The maximum length of the variable – Location to store actual length when a tuple is fetched. – Note: A negative value returned for the length field indicates null value
数据库讲义ch05
5 多表查询(连接)5.1 一个两表查询例子列出所有班级,显示班级的年级、班级号、专业名称和专业的学制。
“班级”表包含班级的班级号、所属学院代码、所属专业代码、年级。
“专业”表包含专业大类代码、代码、名称、专业特色、培养目标、培养要求、学制。
1) 写下查询结果的四个字段名,然后转移到“班级”表从第一个订单开始;2) 扫描行以找出年级(2004)和班级号(04014001),并且将其值拷贝到查询结果的第一行中;3) 扫描行以找出该班级中的所属专业(110103),并且转到“专业”表中找出代码为110103的字段(通过查询代码字段);4) 扫描“专业”表中的行,找出代码为110103的名称(工业工程)和学制(4),并拷贝到查询结果表中。
5)现在就生成了查询结果的一行了。
回到“班级”表的下一行,从第2步开始,重复上述过程,直到班级完毕。
这不是生成这个查询结果的唯一的方法,但是不管怎样,有两件事是相同的: 查询结果的每行数据均来自特定匹配行,一个来自于“班级”表,另一个来自于“专业”表。
匹配行是通过匹配表间对应字段的内容而找出的。
5.2 简单连接(相等连接)通过匹配相关内容形成匹配行的过程称之为连接表。
结果表称之为两表间的一个连接。
基于两个字段间的完全匹配的连接更准确地称之为相等连接。
列出所有班级,显示班级的年级、班级号、专业名称和专业的学制。
SELECT 年级, 班级号, 名称, 学制FROM 班级, 专业WHERE 所属专业 = 代码5.2.1父/子查询大多数普通的多表查询涉及具有自然父/子关系的两个表。
例如:每个教师(子)具有相关联的单位(父)每个单位(父)具有许多与之关联的教师(子)产生查询结果的匹配行是父/子行的结合。
主键和外键创建一个父/子关系。
在关系中,包含外链的表是子,包含主键的表是父。
为了在查询中生成父/子关系,你必须指定一个比较外键和主键的搜索条件。
列出每个教师及其所在的单位SELECT 姓名, 名称FROM 教师, 单位WHERE 单位代码 = 代码下面是包含相问两表的另—个查询,但其父子关系颠倒。
ch5数据库应用
– EOFAction:决定当该控件位于光标的开始和末尾时
的行为
adDoMoveLast:若当前记录到达数据记录中最后一条记录时, 移动到最后一条记录 adStayEOF:若当前记录到达数据记录中最后一条记录时, 继续停留在原来位置 adDoAddNew:若当前记录到达数据记录中最后一条记录时, 增加一条记录
– 记录(Record):表中的每一行称为一个记录。
– 字段(Field):表中的每一列称为一个字段,每一
个字段描述了它所包含的数据的属性,如字段名、 数据类型、数据宽度等。
– 结构化查询语言SQL(Structure Query Language)
SQL是一种关系数据库语言,可用于定义查询对 象,直接创建和操作Jet数据库、操作客户/服务 器数据库。
– 关键字(Key):关键字是用来区别两条记录的字
段或字段组合。它分为主关键字和外部关键字,主 关键字可对数据库表中的一条记录进行唯一标识, 而外部关键字可将一条记录与另外数据库中的关键 字联系起来。
字段
关键字
记录/记录集
表
关键字
字段 course_id 是表 course_info 的主要关键字,是表 teacher_info 的外部关键字
– 数据访问接口是数据提供方和数据访问方的中介,
接口代表了数据访问技术的集合, 数据访问通过接 口实现 – DAO(Data Access Object)
是jet数据库引擎的面向对象的接口。可访问本地数据库(jet 引擎数据库),利用ODBCDirect也可访问ODBC数据。VB 已经将DAO模型封装为Data控件。 是一个到ODBC的面向对象的数据访问接口,可访问 ODBC数据。
CH5数据库完整性(+本章重点)资料
本章重点
了解三种完整性的基本含义
实体完整性 参照完整性 用户自定义完整性
实体完整性
会使用SQL语句创建带有主键的表
参照完整性
会使用SQL语句创建带有外键的表
用户自定义完整性
掌握not null、unique、check的用法
了解触发器的基本含义并能够使用SQL语句创建简单的触发 器
2017/9/20 5/56
数据库系统概论
An Introduction to Database System
CH5 数据库完整性
张永新 山东师范大学 数学科学学院 waterzyx@
2017/9/20 <Pages: 56>
数据库完整性
数据库的完整性
数据的正确性和相容性
数据的完整性和安全性是两个不同概念
数据的完整性 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不 正确的数据 防范对象:不合语义的、不正确的数据 数据的安全性 保护数据库防止恶意的破坏和非法的存取 防范对象:非法用户和非法操作
2017/9/2011/源自6实体完整性检查和违约处理
插入或对主码列进行更新操作时,RDBMS按照实体完整性 规则自动进行检查。包括:
1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改 2. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或 修改
检查记录中主码值是否唯一的一种方法是进行全表扫描
CREATE TABLE SC ( Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno), /*在表级定义实体完整性*/ FOREIGN KEY (Sno) REFERENCES Student(Sno), /*在表级定义参照完整性*/ FOREIGN KEY (Cno) REFERENCES Course(Cno) /*在表级定义参照完整性*/ );
ch5 数据查询
第5章 数据查询
本章主要内容为使用查询语句对数据库中进 行特定信息的查询,查询语句返回用户需要的值 。介绍SELECT查询语句基础,包括SELECT语句中 各种子句的使用方法及SELECT语句的高级查询, 如在多个表间进行查询、使用子查询以及对XML 的查询等。通过本章学习,掌握SELECT语句结构 ,熟练使用SELECT语句进行数据查询。
下一页 上一页 回目录
第5章 数据查询
5.1 简单SELECT语句
5.1.1 SELECT语句的语法格式
SELECT语句的基本格式
SELECT [ALL|DISTINCT] select_list [ALL|DISTINCT] 指明查询结 [ INTO new_table_name ] 果集的内容。使用关键字ALL select_list 指明要查询的字段列表。列表可以包括 INTO new_table_name 指定用 FROM table_source FROM,则查询结果集是表的全部记 table_source 指定所查 若干个列名或表达式,列名或表达式之间用逗号 查询的结果创建成一个新表。 [ WHERE 隔开,用来指示应该返回哪些数据。表达式可以 search_condition ]录;使用关键字DISTINCT, 询的表或视图的名称。。 new_table_name为新表名称。 WHERE group_by_expression 指 search_condition 根 GROUP BY [ GROUP BY group_by_expression ] 是列名、函数或常数的列表。如果用“*”代替 查询结果是不包含重复行的记 明查询所要满足的条件。 [ HAVING 字段列表,则将返回指定数据表中的全部数据信 search_condition ] 据指定列中的值对结果集进行 录集。默认为ALL关键字。 分组。 [ ORDER BY order_expression [ ASC | 对用FROM、 HAVING search_condition 息。 DESC ] ]。 [ ORDER BY order_expression [ ASC | DESC ] ] 对查询 WHERE或GROUP BY子句创建的中间结果 结果集中的行重新排序。ASC 和DESC关键字分 集进行行的筛选。它通常与GROUP BY子 别用于指定按升序或降序排序。如果省略ASC或 句一起使用。 DESC,则系统默认为升序ASC排列。
ch5数据库技术基础
5.1关系数据模型
什么是数据模型?
• 模型是对现实世界的抽象。数据模型就是一组严格 定义的概念工具,和地图中的图例符号一样,我们 用这组概念工具,把现实世界中我们所关心的那部 分内容――数据及其联系描述出来 • 数据模型采用的工具:
• E-R图、树、有向图、关系等
• 数据模型的种类很多。目前广泛使用的可分为两种 类型:
CREATE TABLE <表名> (<列名> <数据类型>[ <列级完整性约束条件> ] [,<列名> <数据类型>[ <列级完整性约束条件>] ] … [,<表级完整性约束条件> ] ); <表名>:所要定义的基本表的名字 <列名>:组成该表的各个属性(列) <列级完整性约束条件>:涉及相应属性列的完整性约束条件 <表级完整性约束条件>:涉及一个或多个属性列的完整性约 束条件 ) 常用完整性约束
实体 抽象 转换
现实世界
信息世界
机器世界
5.1关系数据模型
概念模型
主要术语
• 实体:客观存在并可相互区别的事物。可以是具体的人、事、 物,也可是抽象的概念或联系。
• 如一个学生, 一个部门;也可以是抽象的事件,如学生一次选课
• 属性:实体所具有的某一特征。一个实体可以用若干个属性来 刻画
• 如学生实体可有学号、姓名、年龄、性别、专业等属性
第五章 数据库技术基础
[本章要点]
关系数据模型 数据库应用系统设计 数据库技术的新发展
5.1
关系数据模型
5.1.1 数据模型
ch.5数据库设计
选课(学号,课程编号,成绩)
课外活动(学号,社团编号,加入时间)
20综20年合5以月1上9日可星知期二图5-11经过转数据换库一教共程(得沈到--0了6.81)4个关系模式 .
需求分析说明书的主要内容。)
鉴于采用软件工程方法,此处不做详细介绍。
2020年5月19日星期二
数据库教程(沈--06.8)
6
数据流图(DFD)
Ch.5
2.需求分析
2020年5月19日星期二
数据库教程(沈--06.8)
7
Ch.5 2.需求分析
2020年5月19日星期二
数据库教程(沈--06.8)
8
当E2是全参与时: R1(K1,A1),R2(K2,A2,K1,AR),其中K1是R2的外键
M:N联系----
A1
K2
M
N
E1
R
E1
K1 A2
AR
M:N联系
2020年5月19日星期二
数据库教程(沈--06.8)
22
Ch.5 4. 逻辑设计
R1(K1,A1),R2(K2,A2),R3(K1,K2,AR),其中K1,K2联 合构成R3的键,且K1,K2又同时都是外键.
10
Ch.5 2.需求分析
2)数据结构:“学生”是该系统中的一个核心数据结构,它可以如下描述: 数据结构:学生 含义说明:是学籍管理子系统的主体数据结构,定义了一个学生的有
关信息 组 成:学号,姓名,性别,年龄,所在系,年级
3)数据流:“体检结果”可如下描述:
数据流: 体检结果
说明:
学生参加体格检查的最终结果
图5-1 数据库设计基本过程
2020年5月19日星期二
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3) 关系模式的形式化定义:
关系模式可以看作为一个三元组:R(U,r,F)其中U是 属性组,F是U上的一组数据依赖,当且仅当U上的一个 关系r满足F时,r成为关系模式R(U,F)的一个关系。
6
3. 范式: 衡量一个关系模式“好坏”程度的标准就是
模式的范式(Normal Forms,再记为NF).
平凡的多值依赖:若X→→Y,而Z=U-X-Y= Ф ,则X→→Y
称为平凡的多值依赖
多值依赖
非平凡的多值依赖:若X→→Y,而Z=U-X-Y≠ Ф,则称 X→→Y为非平凡的多值依赖
4NF定义:不含有非平凡的且非函数依赖的多值依赖,这样
的关系模式R称为4NF范式.
21
范式之间的关系 四、范式之间的关系 1NF2NF3NFBCNF4NF5NF
设 SCG(S#,SDN,CN,G)属于3NF,为满足BCNF消除有些主属性 对码的部分依赖和传递依赖关系可继续把它分解为: SS=SCG S#,SN SG=SCG S#,CN,G
规范化后,SS、SG都属于BCNF,并且大大减少了冗余.
注:为了给出4NF的定义,我们需要先来学习多值依赖。
19
三、多值依赖
14
为了消除非主属性对侯选码的部分函数依赖,采用投影分解运算
来提高关系模式UN的范式等级。
因为G完全函数依赖于侯选码S#、CN ,SDN、MN部分函数 依赖于侯选码,所以可分解如下:
SG=UN[S#,CN,G]
SDM=UN[S#,SDN,MN]
在上述两个关系中,非主属性对其主码都是完全函数依赖,即 SG∈2NF, SDM∈2NF
1) 在函数依赖下,一个关系模式通过分解总可以达到 BCNF范式.
2) 在多值依赖下,一个关系模式通过分解总可以达到
4NF范式.
3) 在联接依赖下,一个关系模式通过分解总可以达到
5NF范式.
22
范式层次
规范与非规范化关系 1NF 2NF 3NF BCNF 4NF 5NF
23
五、规范化小结
消除插入异常
例1:R{{A,B,C},{A→B}} 分解为: R1={A,B},R2={B,C} 判定R为无 损分解。 解: U1∩U2={A,B}∩{B,C}={B}
24 24 25
12
600 600 700
学号、姓名 为侯选码
年龄、工资 则不是
范式的定义 二、范式的定义
1. 1NF定义:在关系模式R中的每一个具体关系r中,如
果每个属性值都是不可再分的最小数据单位, 则称R
是第一范式的关系,记作R∈1NF.
例如:
#S S1 S1 S2 S2 S3 S3 CN C2 C4 C2 C3 C1 C2 G A A A B B A SDN 计算机系 计算机系 计算机系 计算机系 数学系 数学系 MN 赵 赵 赵 赵 王 王
30
举例: 2. 举例:
1) 求侯选码(上节已讲过)
2) 判定是第几范式:
例1. 设R(U,F)为关系模式,其中U={A,B,C}, F={A→B,A→C}
则R为BCNF模式.
提示:主要从定义(范式)出发判断.
3) 判定是否为无损分解
定义: 如果一个模式R分解为R={R1,R2,……Rn},则 R1,R2,…Rn
通过自然联接后所包含的元组和R为分解前所包含的 元组完全相同(数量相等,元组对应相同),则称R的分解 为无损分解。
31
特例: R(U,F)分解为R={R1<U1,F1>,R2<U2,F2>}, 判定其是
否为无损分解的简单方法是:
定理1: U1∩U2→U1-U2 F+或 U1∩U2→U2-U1 F+
传递律:若X→Y,Y→Z为F所蕴含,则X→Z为F
所蕴含.
合并规则: 若X→Y,X→Z,则X→YZ.
规则 伪传递规则: 若X→Y,WY→Z,则XW→Z.
分解规则: 若X→Y,Z Y,则X→Z.
定理: X→A1,A2…..An<=>X→Ai (i=1,2,…..n)
27
求侯选码 七、求侯选码
例: 关系模式R(A,B,C,D,E),F={A→BC,CD→E,B→D,E→A}
(S#,CN)
p
SDN
这里SDN部分函数依赖于侯选码S#,CN
5) 设X,Y,Z为关系模式R的互不相同的属性集合,如果 X→Y(Y X),而Y→X,但Y→Z,则称Z传递函数依赖于X,记作X t Z.
6) 若X→Y,Y→X, 则X ←→ Y, X直接Z称直接函数依赖.
例2: UN(S#,CN,G,SDN,MN) S# SDN, SDN
4
2. 在逻辑上设计一个好的关系模式
1)
数据依赖: 模式的属性间的相互关联反映出来的数据间的
相互联系,称为数据依赖,是属性间联系的抽象,是 数据的内在性质,是语义的体现.数据依赖是造成 “不良”关系模式的根本原因.
2)
规范化: 是数据库逻辑设计的工具,是衡量关系模式三大缺 点的严重程度的度量.从1971年 E.F.CODD提出了 规范化理论起.按规范化理论,将一个低一级的范式 要求的关系模式分解为几个高一级范式的关系模式 的过程叫规范化.
课程信息也被删除。 3) 数据冗余。课程、教师的信息重复出现。
1
1. 不好的关系模式的缺点
1) 插2
12 16
李华 张简
假如要插入一个学生学号=03,但该生还未选课,即这个学 生没有课号和教师两个字段,这样的一个学生就插不进这 个表中.
2
2) 删除异常
例:
学号
课号
17
4. BCNF定义:
若R∈1NF,且R中每个决定因素都是
候选码,则R ∈BCNF.
满足BCNF的关系将消除任何属性对
候选码的部分依赖与传递依赖.
应用BCNF定义时,可直接判断1NF值
否属于BCNF.
18
例5 :
SCG (S#,SDN,CN,G)中,SCG为关系名,S#:描述学生, CN: 描述课程, G:描述学习成绩, SDN:描述系名。
15
3. 3NF定义:
若关系模式R∈2NF,且每个非主属性都
不传递依赖于R的任意候选码,R∈3NF.
从2NF关系中,消除非主属性对码的传递
函数依赖而获得3NF关系
R∈3NF,则每个非主属性既不部分依赖,
也不传递依赖于R的任何候选码.
16
例4:UN(S#,CN,G,SDN,MN)其中UN为关系名,
定义:设U是关系模式R的属性集,X和Y是U的子
集,Z=U-X-Y,rR,给定一对(x,z)值,有一组
y值,这组y值仅仅决定于x值,而与z值无关,
则称Y多值依赖于X,记作X→→Y.
例如: 课程 物理 数学 教师 李勇 王军 李勇 张平 参考书 普通物 理参考 高等数 学参考
20
即:课程→→教师 表示了1:n 关系 而函数依赖是 n:1, 1:1 是这两 个的特例.
9
函数依赖的种类
对函数依赖: X→Y
① X→Y 中,X为决定因素。 ② 如X→Y且 Y→X,则记:X ←→ Y。 ③ 若Y不函数依赖于X ,则记作X → Y。
1) 如果X → Y,并且Y不是X的子集,则称X → Y是 非平凡的函数依赖.
2) 如果Y是X的子集,则称X→Y是平凡的函数依赖.
3) 如果X → Y是关系模式R(U)的一个函数依赖,当对X 的每一个真子集X1,都有X1→Y,则Y对X的函数依赖 是完全的,称Y对X完全函数依赖,记作X
求侯选码.
解: CD→E = CD→A = CD→BC |= CD→B ∧ CD→C E→A A→BC 而:CCD ∧ D CD,所以由自反律得:CD→C,CD→D。 故 CD可作为侯选码。 思考题: 是否还有其它侯选码?
作业
P197 5, 9, 10, 11
28
八、关系数据库理论应用举例
1. 应用的5类问题
r1,r2,……ri 全部满足某一范式时,称RXNF.
25
六、数据依赖的公理系统 定义: 对于满足一组函数依赖F的关系模式 R(U,F),其任何一个关系r,若函数依赖X→Y都成 立,则F逻辑蕴含X→Y.
26
Armstrong公理:
自反律:若YXU,则X→Y为F所蕴含,记作 F|=X→Y.
定律 增广律:若X→Y为F所蕴含,且Z U,则XZ→YZ.
第五章 关系数据理论
一、什么是数据依赖
例如:从一个关系的“好”与“坏”谈起 学号 01 02 03 姓名 年龄 李勇 18 王军 17 张平 20 课程 教师 成绩 数学 刘晨 80 数学 刘晨 88 数学 刘晨 76
缺点: 1) 插入异常。学号为主码时,教师和课程信息无法插入。
2) 删除异常。该班所有学生毕业后,信息全部删除,则教师、
1) 求侯选码
2) 判定是第几范式 3) 判定是否为函数依赖的模式分解 4) 判定是否为无损分解 5) 模式分解
29
模式分解的原则:
① 保持函数依赖
② 保持无损分解 ③ 既保持无损分解,有保持函数依赖 注: ①遵循不同的原则,模式达到的级别不同.
②当三条无法同时满足时,应以保持函数依赖为优先
(数据依赖是语义的体现)
1) 规范化的目的: 消除删除异常
修改复杂性 消除数据冗余
2) 规范化的过程:是对关系模式进行分解,使满足低一级范式
的关系模式分解为多个满足高一级范式的 关系模式的过程.
注:这种分解不唯一
24
3) 关系范式与关系数据库范式的区别
① 关系范式指某一个关系满足第几范式,即rXNF. ② 关系数据库范式指关系数据库R包含的所有关系模式
辅导员
01 02
12 16
李华 李华