关系数据库设计实例(20190417224320)
- 格式:docx
- 大小:17.59 KB
- 文档页数:3
《数据库系统》:关系数据库设计关系数据库设计关系数据库设计的⽬的是得到⼀组合适的关系模式,使其不含冗余,结构良好,便于获取信息。
概念和数学基础码超码:⼀个或多个属性的集合,这个集合可以唯⼀地区分出⼀个元组(⼀⾏)候选码:包含属性最少的超码,可能有多个主码:⼈为地选中,作为⼀⾏的区分标准的候选码。
本节中候选码更常⽤另⼀个常⽤的码是外码,与本节⽆关,不详细介绍函数依赖函数依赖是⼀个形如 α→β 的逻辑推理式,表⽰属性集 α 决定(determine)属性集 β ,或称 β 依赖 α . 同⼀模式中包含的多条函数依赖称为函数依赖集。
例如,R 上的两个属性 α 和 β ,如果关系实例中的所有元组对 t1,t2 都符合 若 t1[α]=t2[α] ,则 t1[β]=t2[β]。
也就是说,只要我们知道 α 的值,就能唯⼀确定 β 的值,称 α 决定β 。
特别地,如果β⊆α,称为平凡的函数依赖。
由此,我们得出超码的新定义:对于关系R和函数依赖集K,若 K→R 在 r(R) 上成⽴,则 K 是 r(R) 的⼀个超码。
闭包有了函数依赖集F,我们就可以由已知的函数依赖得出其他的函数依赖。
如 r(A,B,C)中有A→B,B→C,则 A→C(具体推理⽅法见下⽂Armstrong公理)。
类似的推理被称为逻辑蕴涵。
不断将这些新的函数依赖加⼊F,最终能够得到⼀个被原F逻辑蕴涵的所有函数依赖的集合,称为F的闭包,记作 F+.Armstrong公理系统反复运⽤以下三条Armstrong公理,就能通过F求出F+,保证结果是正确有效的。
⾃反律:若α为⼀属性集,β⊆α,则α→β增补律:若α→β,γ为⼀属性集,则γα→γβ传递律:若α→β且β→γ,则α→γArmstrong公理是完备的。
下⾯还有⼀些推论规则,使⽤起来更⽅便。
合并律:若α→β且α→γ,则α→βγ分解律:若α→βγ,则α→β且α→γ伪传递律:若α→β且γβ→δ,则αγ→δ属性闭包与函数依赖集的闭包相似,属性闭包是某⼀属性(或属性集)决定的所有属性的集合。
关系数据库设计范式1、第一范式(1NF):无重复的列所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。
在第一范式(1NF)中表的每一行只包含一个实例的信息。
简而言之,第一范式就是无重复的列。
(说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
)2、第二范式(2NF):属性完全依赖于主键[消除部分子函数依赖]第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。
第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。
为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。
例如员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此每个员工可以被惟一区分。
这个惟一属性列被称为主关键字或主键、主码。
第二范式(2NF)要求实体的属性完全依赖于主关键字。
所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。
为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。
简而言之,第二范式就是属性完全依赖于主键。
3、第三范式(3NF):属性不依赖于其它非主属性[消除传递依赖]满足第三范式(3NF)必须先满足第二范式(2NF)。
简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。
那么在的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。
第 6 章关系数据库设计实例——网上书店学习目标
通过本章学习,加深对 E-R 模型和关系数据理论的进一步理解,并熟练掌握关系数据
库的设计步骤与方法,从而具备正确设计关系数据库的基本能力。
另外,在学习过程
中还要体会到,正确的数据库设计不是一蹴而就的,它是一个循序渐进和反复设计的过
程。
学习方法
本章主要介绍如何将所学的数据库设计理论指导具体应用设计实践。
在学习本章内
容的同时,要多回顾和复习前两章所学内容。
在进行需求分析和建立 E-R 模型时,能运用抽象方法对具体应用业务流程和系统功能进行分析、提炼和归纳。
学习指南
重点:需求分析,包括业务需求分析、功能需求分析和业务规则分析;
如何确定实体集及属性和确定联系集及 E-R 图;检查是否满足需求;逻辑数据库设计。
难点:如何检查是否满足需求。
本章导读
本章综合运用第 4 章和第 5 章所学知识,给出了一个完整的关系数据库设计实例。
在学习时,要学会如何在需求描述的基础上进行需求分析,如何根据需求分析确定实体
集、联系集及其属性,如何根据得到的 E-R 图生成关系模式,以及如何对得到的关系模式进
行求精。
在学习本章之前,要回顾以前学过的知识:
1.数据库设计通常包括哪几个步骤?各个步骤之间的联系是什么?
2.为什么要进行需求分析?
3.需求分析的任务是什么?有哪些需求分析方法?
4.为什么不能直接设计出数据库的关系模式,而要先设计概念模式?
5.请至少列出两种可用于描述概念模式的工具,并对它们进行比较。
6.E-R 模型是如何表达概念模式的?
7.如何确定实体集和联系集?实体集和联系集的主码分别是如何确定的?
8.E-R 模型的设计原则是什么?
9.数据在关系模型是如何表示的?
10.如何通过 E-R 图得到关系模式?
11.数据冗余会带来什么问题?关系模式分解又会带来什么问题?
12.什么样的关系模式是一个“好”的关系模式?
13.什么是关系模式的范式?如何判断一关系模式属于哪一范式?
14.如何进行 BCNF 和 3NF 范式分解?本章教学设计
任课教师
教
学
设
计
一
教
学
设
计
二
教
学
设
计
三
刘爱红计划课时 6 课时上课地点250
1
第 6 章关系数据库设计实例——网上书店
本章主要是以案例驱动的方法,将学生重新分 4 组,分别完成用户管理、商品管理、订单及配送管理、留言管理等功能。
由于书上有数据
库设计的参考信息,要求每一组学生能根据现有材料做更为详细合理的
分析,提出新的方法和思路,供同学们深入讨论和补充。
为鼓励学生积极参与和思考,进一步提高学生的学习兴趣和学习热
情,增强他们的自信心,原则上奖励每一组同学的进步和成绩,对热别
优秀的小组和学生给予“表现好”的课堂表现成绩并在全班表扬这些学
生。
6.1需求描述和系统边界:参考信息见教学内容。
6.2定义需求分析:参考信息见教学内容。
6.3确定实体集及属性:参考信息见教学内容。
6.4确定联系集及E-R 图:参考信息见教学内容。
6.5检查是否满足需求:参考信息见教学内容。
6.6逻辑数据库设计:参考信息见教学内容。
6.7模式求精:参考信息见教学内容。
6.8 进一步思考:参考信息见教学内容。
这部分信息要求每一组同学必
须作出进一步补充和细化,真正掌握数据库设计的基本方法。
最后,可以让同学们谈谈这次大讨论的感受、收获以及不解之处,
以便更好地完成大作业。
*****温馨提示*****
同学们必须要完成大作业的概念设计了,做好的同学可以提交到
FTP、 QQ或邮箱了,老师要分别给每个小组同学指导概念设计。
本章教学内容
见附件 6.
本章小结
本章综合运用前两章所学知识,给出了一个网上书店的数据库设计实例,包括需求
分析、概念数据库设计和逻辑数据库设计。
主要内容小结如下:
1.需求分析包括业务流程分析、功能分析和业务规则分析。
系统设计人员要根据用户的
需求描述和系统边界,与用户进行深入交流和沟通,分析各个应用业务的具体流程。
然后,根
据业务流程,抽象出所开发系统拟实现的具体功能。
最后,根据功能描述,进
一步确定具体的业务规则和数据约束。
2.概念数据库设计即E-R 模型设计,包括实体集、联系集及属性的确定。
实体集
通常是功能分析中出现的具有一组属性且需要存储的“名词” 。
而联系集对应的概念为一种动作,即描述实体集间的一种行为。
当两个或多个实体集之间的某种行为需要记录时,
可建模为一个联系集。
确定联系集的难点是分清联系集的映射基数并确定主码属性。
属
性的确定原则是,只需要将那些与应用相关的特征建模为实体集或联系集的属性。
3.逻辑数据库设计是根据E-R 模型转换为数据库模式,并对数据库模式求精。
该
步骤应根据E-R 图转换规则和模式求精的步骤依次进行。
在进行数据库模式转换时要注
意联系集的转化:多对多联系集转化为一个单独的关系表;一对多或多对一联系集与“多”方实体集的表合并;一对一联系集与任何一方实体集的表合并。
通过本章的分析和设计过程可以看出:
(1)正确的数据库设计不是一蹴而就的,而是一个循序渐进和反复设计的过程。
因此,
在完成 E-R 模型设计后,还需仔细检查是否包含了所有的需求,如果没有,则需对已得
出的 E-R 模型进行调整甚至重新设计。
(2) 如果能仔细分析用户需求,并正确识别出所有的实体集和联系集,由E-R 图转换生成的数据库模式并不需要太多的进一步模式求精。
然而,如果一个实体集中的属性
之间可能存在函数依赖( 不包括主码依赖关系),则需要根据函数依赖理论将其规范化。