第一章数据库系统的世界TheWorldsofDatabaseSystems数据库系统的发展数据库管理系统的结构未来的数据库系统2§1.1数据库系统的发展c一、术语1.数据库是长期储存在计算机内的、有组织的、可共享的数据的集合。32.数据库管理系统数据库系统基础教程AFirstCourseinDatabaseSystemsDBMS-DataBaseManagementSystem是处理数据库访问的软件。提供数据库的用户接口。DBMS的目的:提供一个可以方便地、有效地存取数据库信息的环境53.数据库系统是指在计算机系统中引入数据库后的系统6数据库最终用户应用系统应用开发工具DBMS操作系统数据库管理员DBA数据库系统构成应用程序员7保存信息的两种不同方法:永久性的系统文件、数据库系统。文件方式的问题:数据的冗余和不一致数据访问困难数据孤立完整性问题原子性问题并发访问异常安全性问题二、文件系统与数据库系统8数据库方法能较好地解决以上的问题数据的独立性有效地访问数据减少应用程序的开发时间数据的一致性和安全性统一的数据管理并发的数据访问三、为什么用数据库9几种模型:基于树的层次模型基于图的网状模型物理相关、无高级查询语言基于表的关系模型物理无关、支持高级查询语言,基于对象的面向对象模型OOOR四、数据库模型的发展定长记录10关系数据库系统accountNOBalanceType123451000.00Savings678902846.92Checking………属性元组11关查询语言SQL语言SELECTbalanceFROMAccountsWHEREaccountNO=67890;关系数据库系统12DBMS的组成数据、元数据存储管理程序事务管理程序查询处理程序§1.2数据库管理系统的结构数据元数据存储管理程序查询处理程序事务管理程序模式更新更新查询13数据、元数据关于数据结构的信息(关于数据的数据)索引(INDEX)DBMS的组成14存储管理程序文件管理程序缓冲区管理查程序DBMS的组成15查询处理程序查询优化磁盘访问,是查询的主要代价;索引是查询优化的利器DBMS的组成16事务管理程序事务:是用户定义的一个数据库操作序列事务的四个特性原子性A一致性C隔离性I持久性DDBMS的组成17客户-服务器程序体系结构浏览器-服务器体系结构DBMS的组成18客户-服务器程序体系结构浏览器-服务器体系结构§1.3未来的数据库系统第二章数据库建模DatabaseModeling20数据库的设计步骤需求收集和分析设计概念结构设计逻辑结构设计物理结构物理实现21数据库的设计步骤需求收集和分析用户关心什么用户要什么结果设计概念结构设计逻辑结构设计物理结构物理实现22数据库的设计步骤需求收集和分析设计概念结构存什么关系(联系)如何ODL或E/R图,是各种数据模型的共同基础设计逻辑结构设计物理结构物理实现23数据库的设计步骤需求收集和分析设计概念结构设计逻辑结构用什么数据模型数据库的模式(databaseschema)用户子模式设计物理结构物理实现24数据库的设计步骤需求收集和分析设计概念结构设计逻辑结构设计物理结构数据怎么存根据DBMS产品、环境特点物理实现25数据库的设计步骤需求收集和分析设计概念结构设计逻辑结构设计物理结构物理实现运行DDL装入测试数据应用程序26数据库的设计步骤想法需求ODLE/R关系RDBMSOODBMS27§2.1ODL对象定义语言ObjectDefinitionLanguage以面向对象的观点、方法,说明数据库的概念结构可方便地直接转换成OODBMS的说明经过努力,可以转换成RDBMS的说明28面向对象的设计对象标识—OID对象与对象的区别类具有相同特性的对象归为一类对象的归并必须有意义属于同一类的对象其特性必须相同29面向对象的设计对象的三个特性属性:特性联系:引用方法:函数接口说明interface名字{特性表}30属性对象某方面的特征,属性就是数据只由基本数据类型构成属性的类型,不能是类、也不能从类中构造InterfaceMovie{//MovieClass的ODL说明attributestringtitle;attributeintegeryear;attributeintegerlength;attributeenumFilm{color,blackAndWhite}filmType;};31InterfaceStar{attributestringname;attributeStructAddr{stringstreet,stringcity}address;};记录结构类型32联系对象的引用对象的关联对象集合的引用(1:N)RelationshipSetStarstars;单一对象集合的引用(1:1)RelationshipStarstarOf;33反向联系ODL要求显式表示存在的反向联系InterfaceMovie{//MovieClass的ODL说明attributestringtitle;attributeintegeryear;attributeintegerlength;attributeenumFilm{color,blackAndWhite}filmType;relationshipSetStarstarsinverseStar::starredIn;//Star与Movie的联系};34联系的多重性N:N在联系中,每个C都和D的集合有关,而在反向联系中,每个D都和C的集合有关N:1在联系中,每个C都和唯一的D有关,而在反向联系中,每个D都和C的集合有关1:1在联系中,每个C都和唯一的D有关,而在反向联系中,每个D都和唯一的C有关35InterfaceMoive{……relationshipSetStarstarsinverseStar::staredIn;relationshipStudioownedByinverseStudio::owns;};InterfaceStar{……relationshipSetMoivestaredIninverseMoive::stars;};InterfaceStudio{……relationshipSetMoiveownsinverseMoive::ownedBy;};NNN136ODL中的类型基本类型原子类型接口类型结构类型,可由以下类型组合而成集合•无重复,次序无关包•可重复,次序无关列表•可重复,次序相关数组结构37§2.2实体联系图(E/R)用图形的方法,描述实体及实体间的联系世界由一组称作实体的基本对象及这些对象间的联系组成元素实体(Entity)客观存在并可相互区别的事件或物体对应于ODL中的对象实体集(EntitySet)同类(具有相同类型、相同性质)实体的集合对应于ODL中的类用矩形表示38§2.2实体联系图(E/R)元素属性(Attribute)实体所具有的某一特性用与实体集相连的椭圆表示联系(Relationship)实体集之间的关联可涉及多个实体集可表示双向的联系用与相应的实体集相连的菱形表示39MoviesStarsStars-inlenghtfilmTypetitleyearnameaddress40E/R联系的多重性N与1的表示MoviesStarsStars-inStudiosPresidentsRunsMoviesStudiosOwns41联系的多向性E/R图能方便地描述两个以上实体集间的联系StarsMoviesContractsStudios一个制片公司与一位特定的影星签约来演一部特定的电影42联系中的角色实体集在联系中的作用参与联系的实体集互异只标注联系名同一实体集在一个联系中多次出现标注联系名及角色名Sequel-ofMoviesOriginalSequelStarsMoviesContractsStudiosStudioofstarProducingstudio43联系中的属性联系中可以包含属性由联系而产生的属性可为由联系产生的属性建立实体集StarsMoviesContractsStudiossalary44将多向联系转换成二元联系新增连接实体集引入连接实体集至原实体集的多对一的联系45§2.3设计原则真实性设计应当忠于规范存什么避免冗余任何事物只表达一次避免引入过多的元素选择合适的元素类型属性?类/实体集?联系集?46§2.4子类特殊化与概括子类与超类属性的继承47ODL中的子类子类继承其超类的所有特性属性联系InterfaceCartoon:Movie{relationshipsetStarvoices;}48ODL中的多重继承类的层次一个类可以有多个超类InterfaceMurderMystery:Movie{attributestringweapon;}InterfaceCartoon-MurderMystery:Cartoon,MurderMystery{}49E/R中的子类IsaE/R中的继承50§2.5对约束的建模建模包含对现实世界的对象及联系的描述,也包含对它们的一些约束键码单值约束参照完整性约束域的约束一般约束51键码在类的范围内唯一标识一个对象(或者在实体集的范围内唯一标识一个实体)的属性或属性集一个类中的两个对象(或一个实体集中的两个实体)在构成键码的属性集上取值不能相同ODL中键码的表示interfaceMovie(key(title,year)){……}52超码一个或多个属性的集合,能在一个实体集中唯一地标识一个实体一个类(或实体集)中可能有多个超码候选码其任意真子集都不为超码的超码一个类(或实体集)中可能有多个候选码主码从候选码中选取的一个,一个类(实体集)中只有一个主码E/R图中只能表示主码:主码属性名加上下划线53单值约束要求某个角色的值是唯一的,如键码当一个属性为单值时可以要求该属性值存在(notnull)可以允许该属性值任选(null)构成键码的属性,必须有值存在(notnull)54参照完整性约束要求由某个对象引用的值在数据库中确实存在参照与被参照、引用与被引用参照完整性约束的操作(各产品不同)禁止删除被引用的对象级联删除/修改E/R图中参照完整性的表示MoviesStudiosOwns55§2.6弱实体集弱实体集的属性不足以形成主码有主码的实体集称为强实体集弱实体集只有作为一对多联系的一部分(多)才有意义弱实体集与其拥有者之间的联系是标识性联系CrewsUnit-ofStudiosnumbernameaddr56§2.7关于联系集联系集的成份参加联系的实体集的主码联系集的属性联系中属性的决策(二元联系)1:1联系集的属性:放到任意一端1:N联系集的属性:放到N端N:M联系集的属性:只能留在联系集中57联系集的取舍(二元联系)1:1联系:将一端的主码作为另一端的属性1:N联系:将一端的主码作为N端的属性N:M联系:必须保留联系集联系集的键码(二元联系)1:1联系:任意一端的主码1:N联系:N端的主码N:M联系:参加联系的所有实体集的主码58ODL、E/R建模关心:存什么数据、关系如何不关心:用什么数学模型、DBMS产品透过E/R图,便于与用户交流59作业思考所有带*的练习,并上网查阅解答练习2.1.7/2.2.8/2.3.2/2.5.3/2.5.4/2.6.4(a)第三章关系数据模型TheRelationalDataModel61ODL