数据库系统原理教程PrinciplesofDatabaseSystem第一章绪论(续)第一章绪论1.1数据库系统概述1.2数据模型1.3数据库系统结构1.4数据库系统的组成1.5数据库技术的研究领域1.6小结1.2数据模型1.2.1概念模型1.2.2数据模型的组成要素1.2.3最常用的数据模型1.2.4层次模型1.2.5网状模型1.2.6关系模型1.2.5网状模型1.网状数据模型的数据结构2.网状数据模型的完整性约束3.网状数据模型的存储结构4.网状数据模型的优缺点5.典型的网状数据库系统1.网状数据模型的数据结构网状模型满足下面两个条件的基本层次联系的集合为网状模型。1.允许一个以上的结点无双亲;2.一个结点可以有多于一个的双亲。网状数据模型的数据结构R1R2R3L1L2R1R2L3L1L2R3L4R4R5结构数据模型——网状模型学生宿舍专业系学生教研室教师学生课程父亲子女人树种植砍伐父母子女养育詹养网状数据模型的数据结构(续)表示方法(与层次数据模型相同)实体型:用记录类型描述。每个结点表示一个记录类型。属性:用字段描述。每个记录类型可包含若干个字段。联系:用结点之间的连线表示记录(类)型之间的一对多的父子联系。网状数据模型的数据结构(续)特点只能直接处理一对多的实体联系每个记录类型定义一个排序字段,也称为码字段任何记录值只有按其路径查看时,才能显出它的全部意义网状数据模型的数据结构(续)网状模型与层次模型的区别网状模型允许多个结点没有双亲结点网状模型允许结点有多个双亲结点网状模型允许两个结点之间有多种联系(复合联系)网状模型可以更直接地去描述现实世界层次模型实际上是网状模型的一个特例2.网状数据模型的完整性约束完整性约束条件允许插入尚未确定双亲结点值的子女结点值允许只删除双亲结点值3.网状数据模型的存储结构关键实现记录之间的联系常用方法单向链接双向链接环状链接向首链接网状数据模型——存储结构学生课程选课年级姓名学号学分课程名课程号成绩课程号学号AC1S1AC2S1BC1S2A-C2S2CC1S3S1S2S3C1C2存储结构(单向链、双向链、环行链、非环行链等多种)4.网状模型的优缺点优点能够更为直接地描述现实世界,如一个结点可以有多个双亲具有良好的性能,存取效率较高缺点结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握DDL、DML语言复杂,用户不容易使用5.典型的网状数据库系统DBTG系统,亦称CODASYL系统由DBTG提出的一个系统方案奠定了数据库系统的基本概念、方法和技术70年代推出实际系统CullinetSoftwareInc.公司的IDMSUnivac公司的DMS1100Honeywell公司的IDS/2HP公司的IMAGE1.2数据模型1.2.1概念模型1.2.2数据模型的组成要素1.2.3最常用的数据模型1.2.4层次模型1.2.5网状模型1.2.6关系模型1.2.6关系模型1.关系数据模型的数据结构2.关系数据模型的操纵3.关系数据模型的完整性约束4.关系数据模型的存储结构5.关系数据模型的优缺点6.典型的关系数据库系统关系模型最重要的一种数据模型。也是目前主要采用的数据模型1970年由美国IBM公司SanJose研究室的研究员E.F.Codd提出本课程的重点关系数据模型的数据结构在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。学生登记表学号姓名年令性别系名年级12004王小明19女社会学1212006黄大鹏20男商品学1212008张文斌18女法律学12………………关系模型的基本概念关系(Relation)一个关系对应通常说的一张表。元组(Tuple)表中的一行即为一个元组。属性(Attribute)表中的一列即为一个属性,给每一个属性起一个名称即属性名。关系模型的基本概念主码(Key)表中的某个属性组,它可以唯一确定一个元组。域(Domain)属性的取值范围。分量元组中的一个属性值。关系模式对关系的描述关系名(属性1,属性2,…,属性n)学生(学号,姓名,年龄,性别,系,年级)关系数据模型的数据结构(续)实体及实体间的联系的表示方法实体型:直接用关系(表)表示。属性:用属性名表示。一对一联系:隐含在实体对应的关系中。一对多联系:隐含在实体对应的关系中。多对多联系:直接用关系表示。1)一个实体用一个二维表来表示,实体的所有属性就是表的属性,实体的码就是表的码。2)一个m:n联系也用一个二维表来表示,与该联系相连的各实体的码以及联系本身的属性均成为此表的属性。而表的码为联系相连的各实体的码的组合。关系模型的表示方法学生选修课程学号姓名籍贯课程号课程名成绩例如:mn学生(学号,姓名,籍贯)课程(课程号,课程名)选修(学号,课程号,成绩)关系模型的表示方法3)一个1:n联系可以转换为一个独立的二维表,与该联系相连的各实体的码以及联系本身的属性均成为此表的属性。而表的码为联系相连的n端实体的码。另一种方法是并入n端实体,即在n端实体的表中增加1端实体的码。后一种方法较好。关系模型的表示方法学生属于班级学号姓名籍贯班级号班级名例如:1n学生(学号,姓名,籍贯,班级号)班级(班级号,班级名)外码关系模型的表示方法4)一个1:1联系可以转换为一个独立的二维表,与该联系相连的各实体的码以及联系本身的属性均成为此表的属性。每个实体的码均是该表的码。另一种方法是并入任一端实体,即在该端实体的表中增加另一端实体的码和联系本身的属性。后一种方法较好。关系模型的表示方法班主任负责班级职工号姓名性别班级号班级名例如:11班主任(职工号,姓名,性别,班级号)班级(班级号,班级名)外码或,班级(班级号,班级名,职工号)关系模型的表示方法4)对三个以上实体间的多元联系,以及同一实体集的实体间的自联系,根据相同的转换规则,按联系的不同类型进行相应的转换。关系模型的表示方法讲授课程课程号课程名例如:mn课程(课程号,课程名)教师职工号姓名性别教材书号书名p教材(书号,书名)教师(职工号,姓名,性别)讲授(课程号,书号,职工号)关系模型的表示方法例如:n教师职工号姓名性别教师(职工号,姓名,性别,系主任号)负责1关系模型的表示方法关系数据模型的数据结构(续)关系必须是规范化的,满足一定的规范条件最基本的规范条件:关系的每一个分量必须是一个不可分的数据项。职工号姓名职称基本工龄职务房租水电实发06051陈军讲师36004156002002800........职工号姓名职称工资扣除实发基本工龄职务房租水电06051陈军讲师36004156002002800..................2.关系模型的数据操纵查询、插入、删除、更新数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么做”3.关系模型的完整性约束实体完整性参照完整性用户定义的完整性4.关系数据模型的存储结构表以文件形式存储有的DBMS一个表对应一个操作系统文件有的DBMS自己设计文件结构5.关系模型的优缺点优点建立在严格的数学概念的基础上概念单一。数据结构简单、清晰,用户易懂易用实体和各类联系都用关系来表示。对数据的检索结果也是关系。关系模型的存取路径对用户透明具有更高的数据独立性,更好的安全保密性简化了程序员的工作和数据库开发建立的工作关系模型的优缺点(续)缺点存取路径对用户透明导致查询效率往往不如非关系数据模型为提高性能,必须对用户的查询请求进行优化增加了开发数据库管理系统的难度6.典型的关系数据库系统ORACLESQLSERVERSYBASEINFORMIXDB/2COBASEDBASEDM/2第一章绪论1.1数据库系统概述1.2数据模型1.3数据库系统结构1.4数据库系统的组成1.5数据库技术的研究领域1.6小结1.3数据库系统结构数据库系统内部的模式结构从数据库管理系统角度看数据库系统外部的体系结构从数据库最终用户角度看数据库系统的模式结构数据库系统模式的概念数据库系统的三级模式结构数据库的二级映象功能与数据独立性小结1.3.1数据库系统模式的概念“型”和“值”的概念型(Type)对某一类数据的结构和属性的说明值(Value)是型的一个具体赋值例如:学生记录记录型:(学号,姓名,性别,系别,年龄,籍贯)该记录型的一个记录值:(090201,李明,男,计算机,22,江苏)1.3.2数据库系统的三级模式结构应用A应用B应用C应用D应用E外模式1外模式2外模式3外模式/模式映象模式模式/内模式映象内模式数据库1)模式(Schema)模式(也称逻辑模式)数据库中全体数据的逻辑结构和特征的描述所有用户的公共数据视图,综合了所有用户的需求一个数据库只有一个模式模式的地位:是数据库系统模式结构的中间层与数据的物理存储细节和硬件环境无关与具体的应用程序、开发工具及高级程序设计语言无关模式的定义数据的逻辑结构(数据项的名字、类型、取值范围等)数据之间的联系数据有关的安全性、完整性要求createtablestudent(Sidintprimarykey,Snamechar(25),Sageint,Ssexchar(1),Didint);createtabledepartment(Didintprimarykey,Dnamechar(20),Daddrchar(20),Dtelchar(10));模式的用户自定义2)外模式(ExternalSchema)外模式(也称子模式或用户模式)数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述数据库用户的数据视图,是与某一应用有关的数据的逻辑表示三级模式和两级映像2)外模式:换句话说,它是模式一个子集或者是一个映射,一个数据库只有一个模式,但通常都对应着多个子模式。子模式所包含的数据之间容许有重叠,也容许多个用户共用同一个子模式。提供这一层次的数据模式描述,有以下优点:V_1:建立IS系所开课程的视图(子模式)CreateviewIs_c(课程号,课程名,学分,上课教室,上课时间)AsSELECTcourse.cno,course.cname,course.cxuefen,course.caddress,course.ctimeFROMdepartment,courseWHEREdepartment.did=course.didAnddepartment.dname=IS;例2:建立每个系教师平均工资视图(子模式)Createviewavg_sal(系名,平均工资)AsSELECTdepartment.dname,avg(salary)FROMdepartment,teacherWHEREdepartment.did=teacher.didGROUPBYdepartment.dname;例3:建立教师所讲授课程信息的视图(教师姓名、课程名,选课人数)(子模式)Createviews_count(tid,cno,renshu)AsSelecttid,t_c.cno,count(sno)Froms_c,t_cWheres_c.cno=t_c.cnoGroupbytid,t_c.cno提供外模式描述,有以下优点:〈1〉用户可以定义自己所需的子模式〈2〉保证了数据独立性〈3〉数据能够被较好地共享〈4〉有利于保证数据的安全和保密3)内模式(InternalSchema)内模式(也称存储模式)是数据物理结构和存储方式的描述是数据在数据库内部的表示方式记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储)索引的组织方式数据是否压缩存储数据是否加密数据存储记录结构的规定一个数据库只有一个内模式例4:为表student创建了一个唯一聚集索引,其程序清单如下: