项目3逻辑模型设计数据库设计的步骤:1.需求分析2.概念结构设计3.逻辑结构设计4.数据库的物理设计5.数据库实施6.数据库运行与维护数据库三级模式结构各种人员的数据视图不同的人员涉及不同的数据抽象级别,具有不同的数据视图,如下图所示项目3逻辑模型设计学习目标:1.了解关系模型的基本概念;2.理解关系数据库的概念;3.掌握函数依赖、范式的定义;4.理解关系模式规范化的意义;5.熟练掌握模式分解的方法;6.熟练掌握E-R图向关系数据模型转换的规则和方法。项目3逻辑模型设计任务1逻辑模型基础知识任务2关系数据库理论任务3概念模型向关系模型的转换任务4数据库逻辑结构设计实训4逻辑模型设计任务1逻辑模型基础知识1.1关系模型概述1.2关系数据库的基本概念任务1逻辑模型基础知识E-R图表示的概念模型是用户数据要求的形式化。E-R图独立于任何一种数据模型,它也不为任何一个DBMS所支持。逻辑结构设计的任务就是把概念模型结构转换成某个具体的DBMS所支持的数据模型,并将其性能进行优化。任务1逻辑模型基础知识不同的数据模型具有不同的数据结构形式。数据库系统中最常使用的数据模型是层次模型、网状模型和关系模型。非关系模型–层次模型(HierarchicalModel)–网状模型(NetworkModel)任务1逻辑模型基础知识关系模型(RelationalModel)–数据结构:表面向对象模型(ObjectOrientedModel)–数据结构:对象1.1关系模型最重要的一种数据模型。也是目前主要采用的数据模型,关系数据库系统采用关系模型作为数据的组织方式,现在流行的数据库系统大都是关系数据库系统。1970年由美国IBM公司SanJose研究室的研究员E.F.Codd提出本课程的重点一、关系数据模型的数据结构在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。学号姓名年龄性别系名年级2005004王小明19女社会学20052005006黄大鹏20男商品学20052005008张文斌18女法律2005………………学生登记表属性元组(1)关系模型的基本概念–关系(Relation)一个关系对应通常说的一张表。–元组(Tuple)表中的一行即为一个元组。存放的是客观世界的一个实体,如表Student关系中的一行,存放的是一个学生的数据。–属性(Attribute)表中的一列即为一个属性,给每一个属性起一个名称即属性名。(1)关系模型的基本概念–主码(Key)表中的某个属性组,它可以唯一确定一个元组。–域(Domain)属性的取值范围。–分量(Element)元组中的一个属性值。–关系模式(Relationmode)对关系的描述关系名(属性1,属性2,…,属性n)学生(学号,姓名,年龄,性别,系,年级)(1)关系模型的基本概念关系术语一般表格的术语关系名表名关系模式表头(表格的描述)关系(一张)二维表元组记录或行属性列属性名列名属性值列值分量一条记录中的一个列值非规范关系表中有表(大表中嵌有小表)表1.2术语对比关系的等价术语之间的对应关系一般用户关系模型程序员表(Table)关系(Relation)文件(File)行(Row)实体(Entity)记录(Record)列(Column)属性(Attribute)字段(Field)(1)关系模型的基本概念(2)关系模型中的数据全部用关系表示–在关系模型中,实体集以及实体间的联系都是用关系来表示。例如,关系模型中,学生、课程、学生与课程之间的联系表示为:学生(学号,姓名,性别,年龄,所在系);课程(课程号,课程名,先行课);选修(学号,课程号,成绩)。2.关系操作和关系的完整性约束条件数据操作由查询、插入、删除、更新数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合。存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”。2.关系操作和关系的完整性约束条件关系模型的完整性约束实体完整性参照完整性用户定义的完整性3.关系模型的存储结构关系数据模型的存储结构表以文件形式存储有的DBMS一个表对应一个操作系统文件有的DBMS自己设计文件结构4.关系模型的优缺点优点–建立在严格的数学概念的基础上;–概念单一;数据结构简单、清晰,用户易懂易用;•实体和各类联系都用关系来表示。•对数据的检索结果也是关系。–关系模型的存取路径对用户透明•具有更高的数据独立性,更好的安全保密性•简化了程序员的工作和数据库开发建立的工作4.关系模型的优缺点缺点存取路径对用户透明导致查询效率往往不如非关系数据模型为提高性能,必须对用户的查询请求进行优化增加了开发数据库管理系统的难度5.典型的关系数据库系统–ORACLE–SYBASE–INFORMIX–DB/2–COBASE–PBASE–EasyBase–DM/2–OpenBase信息的三种世界术语的对应关系表现实世界信息世界计算机世界实体实例记录特征属性数据项实体集对象或实体型数据或文件实体间的联系对象间的联系数据间的联系概念模型数据模型1.2关系数据库的基本概念1.关系数据结构2.关系操作概述3.关系的完整性1.关系数据结构在关系模型中,无论是实体集,还是实体集之间的联系均由单一的关系表示。由于关系模型是建立在集合代数基础上的,因而一般从集合论角度对关系数据结构进行定义。(1)域(Domain)域是一组具有相同数据类型的值的集合。–例•整数•实数•介于某个取值范围的整数•长度指定长度的字符串集合•{‘男’,‘女’}•介于某个取值范围的日期(2)笛卡尔积(CartesianProduct)1)笛卡尔积给定一组域D1,D2,…,Dn,这些域中可以有相同的。D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|diDi,i=1,2,…,n}–所有域的所有取值的一个组合–不能重复(2)笛卡尔积(CartesianProduct)例2-1给出三个域:D1=SUPERVISOR={张清玫,刘逸}D2=SPECIALITY={计算机专业,信息专业}D3=POSTGRADUATE={李勇,刘晨,王敏}则D1,D2,D3的笛卡尔积为:D1×D2×D3={(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏)}(2)笛卡尔积(CartesianProduct)2)元组(Tuple)–笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组。例3)分量(Component)–笛卡尔积元素(d1,d2,…,dn)中的每一个值di叫作一个分量。(2)笛卡尔积(CartesianProduct)4)基数(Cardinalnumber)–若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n),则D1×D2×…×Dn的基数M为:在上例中,基数:2×2×3=12,即D1×D2×D3共有2×2×3=12个元组mMin1i(2)笛卡尔积(CartesianProduct)5)笛卡尔积的表示方法–笛卡尔积可表示为一个二维表。表中的每行对应一个元组,表中的每列对应一个域。在上例中,12个元组可列成一张二维表表2.1D1,D2,D3的笛卡尔积SUPERVISORSPECIALITYPOSTGRADUATE张清玫计算机专业李勇张清玫计算机专业刘晨张清玫计算机专业王敏张清玫信息专业李勇张清玫信息专业刘晨张清玫信息专业王敏刘逸计算机专业李勇刘逸计算机专业刘晨刘逸计算机专业王敏刘逸信息专业李勇刘逸信息专业刘晨刘逸信息专业王敏(3)关系(Relation)1)关系D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)R:关系名n:关系的目或度(Degree)(3)关系(Relation)注意关系是笛卡尔积的有限子集。无限关系在数据库系统中是无意义的。由于笛卡尔积不满足交换律,即(d1,d2,…,dn)≠(d2,d1,…,dn)但关系满足交换律,即(d1,d2,…,di,dj,…,dn)=(d1,d2,…,dj,di,…,dn)(i,j=1,2,…,n)解决方法:为关系的每个列附加一个属性名以取消关系元组的有序性(3)关系(Relation)例如在表2.1的笛卡尔积中取出有实际意义的元组来构造关系关系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)–关系名,属性名假设:导师与专业:1:1(即一个导师只能对一个专业),导师与研究生:1:n(一个研究生只能遵从一个导师)于是:SAP关系可以包含三个元组{(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(刘逸,信息专业,王敏)}(3)关系(Relation)2)元组关系中的每个元素是关系中的元组,通常用t表示。3)单元关系与二元关系当n=1时,称该关系为单元关系(Unaryrelation)。当n=2时,称该关系为二元关系(Binaryrelation)。(3)关系(Relation)4)关系的表示关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。表2.2SAP关系SUPERVISORSPECIALITYPOSTGRADUATE张清玫信息专业李勇张清玫信息专业刘晨刘逸信息专业王敏(3)关系(Relation)5)属性关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。n目关系必有n个属性。(3)关系(Relation)6)码候选码(Candidatekey)若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码,在有多个后选码时可以选一个作为主码。在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)(3)关系(Relation)码(续)主码若一个关系有多个候选码,则选定其中一个为主码(Primarykey)主码的诸属性称为主属性(Primeattribute)。不包含在任何侯选码中的属性称为非主属性(Non-keyattribute)(3)关系(Relation)7)三类关系(或称三类表)基本关系(基本表或基表)实际存在的表,是实际存储数据的逻辑表示查询表查询结果对应的表视图表由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据(4)数据库中基本关系的性质①列是同质的(Homogeneous)每一列中的分量是同一类型的数据,来自同一个域②不同的列可出自同一个域其中的每一列称为一个属性不同的属性要给予不同的属性名(4)数据库中基本关系的性质③列的顺序无所谓列的次序可以任意交换遵循这一性质的数据库产品(如ORACLE),增加新属性时,永远是插至最后一列但也有许多关系数据库产品没有遵循这一性质,例如FoxPro仍然区分了属性顺序(4)数据库中基本关系的性质④任意两个元组不能完全相同由笛卡尔积的性质决定但许多关系数据库产品没有遵循这一性质。例如:Oracle,FoxPro等都允许关系表中存在两个完全相同的元组,除非用户特别定义了相应的约束条件。(4)数据库中基本关系的性质⑤行的顺序无所谓行的次序可以任意交换遵循这一性质的数据库产品(如ORACLE),插入一个元组时永远插至最后一行但也有许多关系数据库产品没有遵循这一性质,例如FoxPro仍然区分了元组的顺序(4)数据库中基本关系的性质⑥分量必须取原子值每一个分量都必须是不可分的数据项。这是规范条件中最基本的一条表2.3非规范化关系POSTGRADUATESUPERVISORSPECIALITYPG1PG2张清玫信息专业李勇刘晨刘逸信息专业王敏(5)关系模式(Rel