




已阅读5页,还剩123页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章数据库基础,2,7.1数据库概述,第7章数据库基础,7.2数据模型,7.3数据库系统结构与数据库设计步骤,7.4关系数据库,7.5结构化查询语言SQL,3,7.1数据库概述,数据库技术产生于20世纪60年代末,是对数据进行组织与管理的重要技术手段,是计算机科学的重要分支。,4,7.1.1为什么需要数据库,2,1,3,信息社会数据量大,仅靠人工管理难以实现。,社会的业务工作模式需要计算机和数据的支持。,大数据时代来临,为数据的应用开拓了更广阔的舞台。,7.1.2数据库的基本概念和术语,1.数据(Data)用于描述事物的符号记录称为数据。数据是数据库中存储的基本对象,包括数字、文本、声音、图形、图像、音频、视频等不同的表现形式,其共同点是都可以经过数字化后存入计算机。,5,7.1.2数据库的基本概念和术语,数据的表现形式与数据的语义是密不可分的,仅凭其表现形式无法准确表达数据的内容。例如一个数据180,可以有如下解释:语义1:表示某人的身高。语义2:表示某教室上课学生的课容量。语义3:某专业某届学生的总人数。语义4:某商品的单价。例如一条学生学籍记录:20151001,张三,男,1997/1/1,180,上海,电气自动化。语义:分别表示学生的学号,姓名,性别,出生日期,身高,生源地,录取专业。解释:张三是某校电气自动化专业2015级男学生,1997年1月1日出生,身高180,来自上海。,6,7.1.2数据库的基本概念和术语,2.数据库(Database,简称DB)定义:数据库是长期存储在计算机内、有组织、可共享的大量数据集合。数据库中的数据按一定数据模型组织、描述和存储。在数据库中不仅存储着数据,还描述了数据之间的联系,这是数据库能够高效管理数据的关键。,7,存储数据的仓库!,7.1.2数据库的基本概念和术语,3.数据库管理系统(DBMS)定义:DBMS就是专门用于管理数据库的计算机系统软件。DBMS在计算机系统中的层次如图7.1所示:,8,DatabaseManagementSystem,7.1.2数据库的基本概念和术语,3.数据库管理系统(DBMS)数据库管理系统一般由软件厂商提供,例如:Microsoft公司的产品:AccessSQLServerOracle公司的产品:MySQLOracleDatabaseIBM公司的DB2,9,还有哪些知名的DBMS?,7.1.2数据库的基本概念和术语,3.数据库管理系统(DBMS)DBMS主要包含以下几方面的功能:(1)数据定义功能DBMS提供了数据定义语言(简称DDL),主要用于建立、修改数据库的库结构,以实现数据对象的定义。(2)数据组织存储和管理要确定以何种文件结构和存取方式组织存储数据及数据间联系。(3)数据操纵功能利用DBMS提供的数据操纵语言(简称DML),实现对数据库的基本操作,包括查询、插入、删除和更新等。(4)数据库的事务管理和运行管理,10,7.1.2数据库的基本概念和术语,(4)数据库的事务管理和运行管理功能数据完整性控制。检查数据库中数据的正确性、有效性、相容性和一致性。例如,录入学生成绩时,不能输入负数或其他非法字符;当插入一条销售记录时,首先校验该产品是否存在于产品信息表中。并发控制。控制多个应用程序并发访问所产生的相互干扰以保证其正确性。例如,酒店预订、火车订票、机票预订等问题;保证数据库安全。检查数据库访问者,以防不合法的访问。执行备份和恢复。数据库出错时,保证将其恢复到某一已知的正确状态。数据库的建立和维护其他功能,11,7.1.2数据库的基本概念和术语,4.数据库系统(DatabaseSystem,简称DBS)数据库系统由数据库、数据库管理系统、用户应用程序(应用系统)和用户构成,如下图所示。,12,DBMS是数据库系统的核心,可由不同的开发人员使用不同的开发工具来设计实现。,数据库系统相关人员包括数据使用者(用户)、系统分析员和数据库设计人员、数据库应用程序开发人员、数据库管理员4类。,13,7.1.3数据管理技术的发展,1.人工管理阶段(20世纪40年代中期至50年代中期),2.文件系统阶段(20世纪50年代末至60年代中期),3.数据库系统阶段(20世纪60年代末至今),人工管理阶段特点是数据不保存、不共享、无独立性,由应用程序管理数据,无专用软件管理数据。,特点是数据以文件形式长期保存,由文件系统管理数据,数据共享性差、冗余度大,程序与数据间独立性差。,7.1.3数据管理技术的发展,3.数据库系统阶段特点(1)数据结构化是指整体数据的结构化。不仅存储数据,还描述了数据之间的关系。建立的是一种全局的数据结构,即不仅面向某个应用。(2)数据共享性高、冗余度低、易扩充(3)数据独立性高是指数据库系统中的数据与应用程序之间是互不依赖的,既实现了数据的物理独立性,又实现了数据的逻辑独立性。(4)数据由数据库管理系统统一管理和控制。,14,15,7.2数据模型,范畴1:现实世界人们头脑之外的客观世界,范畴2:信息世界现实世界在人们头脑中的反映称为信息世界,范畴3:机器世界信息世界的信息以数据形式存储在计算机中,对于数据认识过程可分为现实世界、信息世界和机器世界3个范畴。,3,7.2数据模型,16,机器不能直接识别客观世界的事物。因此,数据库的设计过程,其实就是将数据的表示从现实世界抽象到信息世界(构建概念模型),再从信息世界转换到计算机世界(例如关系模型)的过程。这一抽象过程需要使用数据模型作为工具。,7.2数据模型,17,7.2.1数据模型概述7.2.2E-R模型7.2.3层次模型7.2.4网状模型7.2.6E-R模型向关系模型转换7.2.7面向对象数据模型,7.2.1数据模型概述,1.概念模型(ConceptualModel)也称为信息模型,是客观世界到信息世界的抽象,它是面向用户的数据建模,主要用于数据库设计。概念模型是现实世界到机器世界的一个中间层次。与具体的数据库管理系统、具体的计算机平台都无关。在数据库领域中,建立概念模型最常用的方法是E-R方法(也称E-R模型,E-R图)。,18,7.2.1数据模型概述,2.逻辑数据模型和物理模型(1)逻辑数据模型(LogicDataModel)数据模型的组成要素包括数据结构、数据操作和完整性约束条件。最常用的数据模型主要包括层次模型、网状模型、关系模型、面向对象模型和对象关系模型。(2)物理模型(PhysicalDataModel)用于描述数据在存储设备上具体的存储方式和存取方法。它是面向计算机系统的,具体实现由DBMS完成。,19,7.2.2E-R模型,E-R模型(Entity-RelationshipModel)即实体-联系模型,又称为E-R方法或E-R图,是描述概念模型最有效的方法之一。E-R模型将现实世界对数据的需求抽象为实体、属性、码等基本概念以及实体间联系,并用实体-联系图直观地表示出来。它是由美籍华人陈平山(PeterPingshanChen)于1976年提出的。,20,7.2.2E-R模型,1、E-R模型中的基本概念(1)实体(Entity)实体是客观存在并可以相互区别的事物。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、一门课程、一本书、一场会议、一项计划、学生的一次选课、职工与部门的关系(即某位职工属于某个部门)等都是实体。(2)属性(Attribute)实体所具有的某一特性称为属性。一个实体可以有若干个属性来描述。例如教师实体可以有工号、姓名、性别、出生日期、职称、学位、所属院系等属性。(3)码(又称键,Key)码是唯一标识实体的属性集。例如工号是教师实体的码,学号是学生实体的码。,21,7.2.2E-R模型,1、E-R模型中的基本概念(4)域(Domain)属性的取值范围称为该属性的域。例如;性别的域为(男,女);学位的域为(学士,硕士,博士)。(5)实体型(EntityType)用实体名及其属性名集合来抽象和刻画同类实体称为实体型。例如,课程(课程号,课程名称,学时,学分)就是一个实体型。(6)实体集(EntitySet)同一类型实体的集合称为实体集。例如,全体教师就是一个实体集。(7)联系实体之间的联系:通常是指不同实体之间的联系。实体内部的联系:通常是指构成实体的各属性之间的联系。,22,7.2.2E-R模型,2实体之间的联系(1)两个实体集间的联系(分3类),如图7.5所示。,23,(1)两个实体集间的联系1:1,对一联系(1:1)如果对于实体集A中的每个实体,实体集B中至多有一个实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1。例7-1需求描述:一个部门只有一个经理,而一个经理只在一个部门工作。则部门与经理之间具有一对一联系,如图7.6(a)所示。,24,(1)两个实体集间的联系1:n,一对多联系(1:n)如果对于实体集A中的每一个实体,实体集B中有n(n0)个实体与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n。例7-2需求描述:一个部门中有若干职员,而每个职员只在一个部门工作。则部门和职员之间具有一对多联系,如图7.6(b)所示。,25,(1)两个实体集间的联系m:n,多对多联系(m:n)如果对于实体集A中的每一个实体,实体集B中有n个实体(n0)与之联系;反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m0)与之联系,则称实体集A与实体集B具有多对多联系,记为m:n。例7-3需求描述:一个教师可讲授多门课程,而一门课程可由多个教师主讲。则教师和课程之间具有多对多联系,如图7.6(c)所示。,26,(2)两个以上实体集间的联系1:1,类似地,也分为一对一、一对多、多对多三类联系。下面分别举例说明。对一联系(1:1)实例例7-4需求描述:假设某校规定,一个班主任只能管理一个班级,一个班级也只能有一位班长,一位班主任。则班主任、班长、班级3个实体间就是一对一联系,如图7.7(a)所示。,27,(a)一对一联系,(2)两个以上实体集间的联系1:n,对多联系(1:n)实例例7-5需求描述:对于课程、教师、参考书3个实体,若一门课程可由若干教师主讲,使用若干本参考书;而一名教师只能讲授一门课程,每一本参考书也只能供一门课使用。则课程、教师、参考书3个实体型之间是一对多联系,如图7.7(b)所示。,28,(b)一对多联系,(2)两个以上实体集间的联系m:n,多对多联系实例例7-6需求描述:有供应商、项目、零件3个实体集,一个供应商可以供给多个项目多种零件,每个项目可以使用多个供应商供应的多种零件,而每种零件可以由不同的供应商供给不同的项目。则供应商、项目、零件三者之间是多对多的联系,如图7.7(c)所示。,29,(c)多对多联系,7.2.2E-R模型,3.单一实体型内的联系同一实体集内的各实体之间也存在一对一、一对多和多对多的联系。例7-7职工之间有夫妻关系的,则他们之间是一对一联系,如图7.8(a)所示。例7-8课程之间是有先修关系的,规定某一课程可以是若干门课程的先修课,而一门课程至多只有一门先修课。因此这是一对多联系,如图7.8(b)所示。,30,7.2.2E-R模型,4.E-R模型的图示法E-R图(Entity-RelationshipDiagram)提供了用图形符号表示实体集、属性和联系的方法。(1)实体型:用矩形表示,框内写明实体名。(2)属性:用椭圆表示,并用无向边将其与对应实体连接起来。例如教师实体包括工号、姓名、性别、出生日期,职称、学位、院系等属性,其E-R图如图7.9所示。注意加下划线“”的属性为码,也称键属性。,31,7.2.2E-R模型,4.E-R模型的图示法(3)联系用菱形表示,菱形框内写明联系名,并用无向边分别与对应实体连接起来,同时在连线旁边标明联系的类型(1:1,1:n,m:n),若联系也有属性,则这属性也要与联系用无向边连接起来。,32,7.2.2E-R模型,5.E-R模型设计综合实例例7-9问题需求描述如下:某高校有若干个部门,每个部门有若干名教师和学生。每个教师只能隶属于一个部门,每个学生只能在一个部门读书,有些部门没有学生。教工之间有夫妻关系;每个教师可讲授多门课程,每门课程可由多个教师讲授;一个学生可选修多门课程,每门课程可供多个学生选修;一门课程可以是多门课程的先修课,每门课最多有一门先修课。,33,思考:共有几个实体?,5.E-R模型设计综合实例,该系统共有部门、教师、学生、课程4个实体。(1)实体间联系:一对多联系有:教师和部门学生和部门之间多对多联系有:学生和课程教师和课程之间(2)实体内部联系:教师之间的夫妻关系是一对一关系;课程之间的先修关系是一对多关系。(3)按照E-R模型表示方法,画出E-R图。,34,5.E-R模型设计综合实例,该教学管理E-R模型如图7.10所示。,35,7.2.3层次模型,层次模型是数据库系统中最早出现的一种数据模型。1968年IBM公司推出的IMS数据库管理系统是层次模型的典型代表。层次模型用树形结构表示实体及实体间联系。现实世界中很多实体间联系就是一种自然的层次关系,是一棵“倒长的树”。例如反映行政关系的组织机构图。,36,7.2.3层次模型,1.层次模型的数据结构(1)有且仅有一个结点没有父结点,称为根结点。(2)根结点外,其他结点有且仅有一个父结点。层次模型用记录表示实体,数据项表示实体的属性,实体间的联系变成了记录间的两两联系。层次模型是一棵树形结构的模型。例如,图7.11是学生-教师的层次数据库模型。,37,7.2.3层次模型,2.层次模型的优缺点(1)层次模型的优点数据结构简单清晰,便于描述一对多的层次联系。向下查找容易,查询效率高,性能优于关系模型,不低于网状模型。层次模型提供了良好的完整性支持。(2)层次模型的缺点对于多对多联系表示不直接,比较繁琐。对插入和删除操作的限制多,应用程序的编写比较复杂。查询子结点必须通过双亲结点,导致寻找非直系结点较为麻烦。,38,7.2.4网状模型,网状数据库系统采用网状模型组织数据,典型代表是DBTG(DataBaseTaskGroup)系统。网状模型用无向图结构来表示各类实体及实体间的联系。1.网状模型的数据结构网状模型允许多个结点无父结点,允许一个结点有多个父结点,还允许两个结点间存在多种联系,即两个结点间的连线可以多于一条。网状模型更为灵活,更具有普遍性;层次模型实际上是网状模型的一个特例。,39,7.2.4网状模型,40,网状模型中在表示多对多联系时,需要增加个联结记录将多对多联系分解成多个对多联系。例如,一个读者可以借阅多本书,某一书籍可以被多个学生借阅,则读者与图书之间是多对多联系,其E-R模型如图7.12(a)所示。增加一个读者借阅的联结记录,由四个数据项借书证号、图书编号、借书时间、还书时间构成;联系分解成两个一对多联系,读者-图书网状数据库模型如图7.12(b)所示。,7.2.4网状模型,2.网状模型的优缺点网状模型的优点是能够更为直接地描述现实世界,存取效率较高。缺点是实体间的联系通过结点的存取路径表示,数据独立性差;当网状模型的结点和联系增多时,数据库的结构会变的越来越复杂,难以维护与重建。虽然在上世纪70年代层次模型、网状模型也有许多成功的DBMS产品,但由于使用相对复杂,最终逐渐被关系数据库取代。,41,7.2.5关系模型,关系模型是最重要的一种数据模型,1970年由美国IBM公司SanJose研究室的研究员EFCodd首次提出。1.关系模型的数据结构一个关系的逻辑结构就是通常说的一张表,即关系。例如“课程”关系的数据结构如图7-13所示。关系模型的基本概念及术语:(1)关系(Relation),即一张二维表格。(2)属性(Attribute),即表格中的每一列。(3)元组(Tuple),即表格中的一行。,42,图7.13关系模型的数据结构,关系模型的基本概念及术语,(4)关键字(Key)关键字又称为主属性,是可以唯一地标识一个元组的属性组。主关键字(PrimaryKey)一个关系中只能有一个主关键字,用以唯一地标识元组,简称为关键字。例如学生表中的学号,课程表中的课号。候选关键字(CandidateKey)与主关键字不同的是,一个关系中可以有多个候选关键字。(5)外部关键字(ForeignKey)如果某个关系中的一个属性或属性组不是该关系的主关键字或候选关键字,但却是其他关系的主关键字,则称其为外部关键字。(6)关系模式(RelationSchema)是对关系数据结构的描述。记为:关系名(属性1,属性2,属性n)。,43,数据模型中的术语对比,44,表7.1数据模型中的术语对比,关系模型中的一些术语与概念模型中较为相似,如表7.1展示了数据模型中的术语的对应关系。,7.2.5关系模型,2.关系模型的优缺点(1)关系模型的优点关系模型建立在严格的数学概念的基础上;实体和各类联系,以及查询更新结果都用关系来表示,数据结构简单易懂;关系模型的存取路径对用户透明,具有更高的数据独立性与更好的安全保密性,大大简化了程序员和DBA的工作。(2)关系模型的缺点查询效率往往低于非关系模型;为提高性能,必须对用户的查询请求进行优化,增加了开发DBMS的难度。,45,7.2.6E-R模型向关系模型转换,在关系数据模型中,一个实体对应一个关系,实体集以及实体间的联系都用关系表示。1.一对一实体间联系的转换转换方法:每个实体用一个关系表示,然后将其中一个关系的关键字置于另一关系中,使其成为外关键字。例7-10部门与部门经理的1:1联系转换为关系模型。(1)将每个实体转换为一个关系,并设置主键部门(部门编号,部门名称,部门电话)经理(经理编号,姓名,性别,出生日期)(2)添加字段,设置外键为经理关系设置外键(用斜体表示),则转换成的关系模型为:部门(部门编号,部门名称,部门电话);经理(经理编号,姓名,性别,出生日期,部门编号),46,思考:若为部门设置外键,结果如何?,7.2.6E-R模型向关系模型转换,2.一对多实体间联系的转换转换方法:每个实体用一个关系表示,然后将“一方”关系的关键字置于“多方”关系中,使其成为外关键字。例7-11“系”与“学生”之间的一对多联系在关系模型中的表示。(1)将每个实体转换为一个关系,并设置主键系(系号,系名,办公地点);学生(学号,姓名,生日,性别)。(2)添加字段,为“多方”设置外键“系”是一方,“学生”是多方;故将“系号”作为学生关系的外关键字。系(系号,系名,办公地点);学生(学号,姓名,生日,性别,系号)。,47,7.2.6E-R模型向关系模型转换,3.多对多实体间联系的转换转换方法:需要新增一个关系,即将这两个实体的纽带联系,也建立成一个关系。新关系属性中必包含原来两个实体对应关系的关键字。例7-12将学生与课程之间的多对多联系转换为关系模型。,48,“学生”与“课程”的联系为“选修”,则“选修”必须包含学号和课程号;除此还有“成绩”这个新属性出现,故可表示为3个关系,如下所示。学生(学号,姓名,生日,性别,系号,专业);课程(课程号,课程名,学分);选修(学号,课程号,成绩)。,7.2.6E-R模型向关系模型转换,4.实体内联系转换方法:通过在实体内增加一个属性列,其与原关键字类型相同;要为其另起一个名称,作为外关键字来体现实体内的联系。例7-13课程之间的先修关系转换为关系模型。【分析】某课程至多有一门先修课,但一门课程可作为多门课程的先修课。即1:n联系,在课程实体内添加“先修课编号”属性即可。课程(课程编号,课程名称,学分,先修课编号),49,思考:试将例7-9的E-R模型的转换为关系模型。,7.2.7面向对象数据模型,面向对象模型(ObjectOrientedDataModel,简称OO模型),是面向对象技术与数据库技术结合而建立的一种新模型。OOBMS将关系模型与面向对象程序设计语言中的核心概念加以综合。这些概念包括将对象、对象标识、封装、类、多重继承、任意数据类型、嵌套对象等。典型的对象-关系型数据库管理系统有:Ds2UDB、ORACLE、MicrosoftSQLServer等。,50,7.3数据库系统结构与数据库设计步骤,51,7.3.1数据库系统的外部体系结构,单用户结构:一台计算机,不能共享数据。主从式结构:大型主机带多个终端,主机处理,终端输出。分布式结构:是分布在计算机网络上的多个逻辑相关的数据库的集合。客户服务器(C/S)结构:把数据库管理系统的功能与应用程序分开,管理数据的结点称为服务器,应用数据库管理系统的结点称为客户机。浏览器应用服务器数据库服务器(B/S)结构:将客户端运行的应用程序转移到应用服务器上,充当客户机和数据库服务器的中介。,52,7.3.2数据库系统的三级模式结构,虽然不同的数据库管理系统支持不同的数据模型,但它们在体系结构上都采用三级模式结构并提供二级映像功能。数据库系统的三级模式结构是由外模式、模式和内模式的三级构成。如图7.14所示。,53,7.3.2数据库系统的三级模式结构,1.数据库系统的三级模式(1)模式(schema)模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共视图。模式的定义包括数据的逻辑结构(数据项的名字、类型、取值范围等)、数据之间的联系,以及数据有关的安全性、完整性要求等。例如,关系模型中对课程数据的一组描述(课程号,课程名,学分)就是一个模式,如图7.13所示,这个模式可以有多组不同的值与其对应,每组值称为模式的实例。,54,1.数据库系统的三级模式,(2)外模式(ExternalSchema)是数据库用户的数据视图,又称用户模式或子模式,它是用户所能看见和使用的局部数据的逻辑结构和特征描述。显然外模式是从模式得到的子集,用户的需求不同,用户视图就不同。因此,一个模式可以有多个外模式。(3)内模式(InternalSchema)又称存储模式或物理模式(PhysicalSchema),是数据物理结构和存储方式的描述,一个模式只能有一个内模式。模式的三个层次反映了对数据不同级别的抽象:其中内模式处于最底层,它反映了数据库在计算机物理结构中的实际存储形式;概念模式处于中层,它反映了设计者的数据全局逻辑要求;外模式处于最上层,它反映了用户对数据的要求。,55,2.数据库系统的二级映像,(1)外模式与模式映像该映像定义了外模式与模式之间的对应关系。同一个模式可以有任意多个外模式,对于每个外模式,数据库系统都建立一个外模式/模式映像,存储其与模式的对应关系。当模式改变时,DBMS对外模式/模式映像做相应改变,可以使外模式保持不变,从而保证了数据的逻辑独立性。(2)模式与内模式间映像一个模式只有一个内模式,该映像定义了内模式与模式之间的对应关系。当数据库的存储结构改变了,由DBA对模式/内模式映像做相应改变,可以使模式保持不变,从而保证了数据的物理独立性。,56,7.3.3数据库设计的步骤,如图7.15所示,数据库的设计分为5个步骤。,57,充分理解现实世界中的实际问题和需求,分析归纳出需要存储在数据库中的数据。,根据需求分析,为实际问题建立概念模型(E-R模型)。,将E-R模型转换为逻辑数据模型(如关系模型)。,依据逻辑数据模型(如关系模型),在相应的DBMS环境中建立数据库。,为了改善系统的性能,可能要对数据库结构进行修改或扩充。,7.4关系数据库,58,7.4.1关系规范化理论,关系必须是规范化的,即满足一定的规范条件。数据库规范化(NormalForm)的目的就是建立规范、合理的关系。1.函数依赖函数依赖是指属性之间的一种联系,一种约束。例如:学生(学号,姓名,性别,出生日期,专业)由于学号是码(主属性),每个学生有唯一的学号,一旦学号确定了,姓名等其他属性的值也被确定了,这种依赖关系就叫做函数依赖。由此可以写出一组函数依赖关系。记作:学号姓名,学号性别,学号出生日期,学号专业。,59,练习:试写出课程关系中的函数依赖。,7.4.1关系规范化理论,2.函数依赖对关系的影响例:学生(学号,姓名,性别,出生日期,专业,系,系主任)上述模式存在以下问题:(1)数据冗余大。系主任的姓名反复出现,其重复次数与该系学生人数相同。(2)插入异常。对于新成立的院系,未招生时,因为没有学生信息导致系主任信息无法录入。(3)删除异常。当该系学生全部毕业后,再删除学生信息的同时,系主任信息也随之丢失。(4)更新异常。当该系变更系主任时,必须更新该系所有的学生信息,比较繁琐。,60,3.规范化范式,按照规范化的严格程度,划分为第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BCNF、4NF、5NF等多种范式。其严苛程度依次递增,它们之间是包含关系:第一范式是最基本的要求,满足2NF一定满足1NF。实际应用中,大部分应用系统的设计只需要满足3NF即可。,61,3.规范化范式,(1)1NF(FirstNormalForms)关系模式必须都满足第一范式,是最基本的要求。即二维表格中每列(属性)的取值只能是原子数据(即不可再分的数据项),且每列的数据类型相同,具有唯一的列名(属性名)。例7-14判断表7.3教师信息是否满足1NF。表7.3教师信息表,62,7.4拆分后的教师信息,3.规范化范式,(2)2NF(SecondNormalForms)在关系中,每一个非关键字属性都完全函数依赖于主关键字属性,则满足2NF。换言之,若存在非关键字属性对主关键字的部分依赖,即不满足2NF。例7-15判断表7.5学生成绩表是否满足2NF。,63,表7.5学生成绩表,主关键字:,学号+课程号,(学号,课程号)成绩。,学号姓名,课程号课程名,,部分依赖,如何拆分呢?需要将部分依赖移除出去。故,成绩表变为:学生成绩(学号,课程号,成绩),满足2NF。,3.规范化范式,另一方面,不能丢失姓名、课程名等信息。分析表7.5包含的主题:其一学生成绩;其二,学生信息;其三,课程信息。按照一个表包含一个主题的原则,需要将表7.5拆解为3个表。最后拆分结果如图7.16所示:,64,图7.16学生成绩表拆分结果,3.规范化范式,(2)3NF(ThirdNormalForms)在满足2NF的基础上,3NF要求所有的非关键字属性间相互独立,不能存在依赖关系。例7-16判断关系:学生(学号,姓名,性别,出生日期,专业,系,系主任),是否满足3NF。,65,首先判断是否满足2NF?,写出所有函数依赖关系,关注非关键字属性间,系系主任,拆解方法:将系主任属性从学生表中移除,单独形成一个关系:系(系名,系主任)。,不满足3NF,1NF、2NF、3NF的规范化规则,每个关系只包含一个实体集,并且只能有一个主题。属性只能是原子数据,即为不可再分;且同一属性的数据类型和取值范围相同。所有非关键字属性必须完全依赖主关键字。所有非关键字属性相互独立,不能存在依赖关系。,66,7.4.2创建数据库和表,准备工作:E-R模型转换为关系模型;利用关系规范化理论进行优化,建立满足3NF的关系。,67,试将例7-9的E-R模型转换为满足3NF的关系。,学生(学号,姓名,性别,出生日期,民族,入学成绩,政治面貌,所属院系,照片)课程(课程编号,课程名称,学分,学时,先修课程编号)选修(学号,课程编号,成绩)教师(工号,姓名,性别,出生日期,职称,学位,职务,所属院系,来校时间)教师授课(课表编号,工号,课程编号,学年,学期,班级,教室)院系(院系名称,办公地点,电话),7.4.2创建数据库和表,1.创建数据库数据库的作用就是一个容器,可包含多个数据表等对象。在创建数据前首先要创建数据库。为每个关系创建数据表。上述6个关系与数据表名的对应关系,如表7.6所示。,68,表7.6关系对应的数据库表,Access2010中创建数据库,启动Access2010,如图(a)所示,在“可用模板”中选择“空数据库”,在右侧的文件名文本框中(默认为“Database1.accdb”),输入数据库名gxjxgl;然后点击浏览按钮,设置存储路径,再单击“创建”按钮,即在指定位置创建了一个空数据库。当数据库创建成功后,系统将自动进入数据表视图,如图(b)所示。,69,图(a),图(b),7.4.2创建数据库和表,2.创建数据表(1)设计表结构设置字段属性字段名:设置字段名称。字段类型:设置字段的数据类型。常用的类型有:文本、数字、日期时间、货币、自动编号、是否(布尔型)、备忘录、OLE嵌入对象、超链接、附件、计算等。宽度:文本类型需要设置宽度。设置主键默认值:可为字段设置默认值。还可设置输入掩码、字段有效性规则等。,70,在Access2010中创建course表,71,course表的结构如下所示:,在Access2010中创建course表,72,Access2010中创建course表结构如图所示:,在Access2010中创建student表,73,student表的结构如下所示:,在Access2010中创建student表,74,Access2010中创建student表结构如图所示:,(2)设置数据表的完整性,关系模型的完整性规则是对关系的某种约束,包括实体完整性规则、域完整性规则、参照完整性和用户定义完整性规则。实体完整性规则用来保证关系中元组的唯一性,用主关键字和候选关键字来实现。例如:student表的主键是学号。SC表,如下图所示,主键是学号和课程编号两个字段。,75,(2)设置数据表的完整性,域完整性用于保证关系中属性取值正确、有效的特性。包括建表时定义属性的数据类型,设置有效性规则和输入掩码等内容。例如性别字段,可设置有效性规则为其取值只能是“男”或“女”,当违反规则时不允许输入,并给出相关提示。如图7.20所示。,76,2.创建数据表,(3)录入数据创建好数据表后,就可以录入数据。以student表为例,如图7.21所示。创建数据表步骤总结:设计表结构设置数据表的完整性录入数据,77,3.建立索引,建立索引是加快查询速度的有效手段。(1)主索引创建主键后,系统会自动创建主索引。一张表中只能有一个主索引。主索引字段值不允许为空和重复。(2)候选索引候选索引字段值不允许为空和重复;但一张表允许有多个候选索引。(3)普通索引普通索引字段值可以为空,允许有重复值。一张表可以建立多个普通索引。,78,主索引,普通索引,候选索引,4.建立表间关系,关系是参照两个表之间的公共字段按建立起来的。通常情况下,如果一个表的主关键字与另外一个表的外键之间建立联系,就构成了一对多联系。若主键与主键间建立联系便是一对一联系。建立一对多两表间关系步骤:首先确立可建立关系的公共字段,分别为其建立索引。将各表添加至“关系”窗口中。将一方的主索引拖拽至多方;“编辑关系”对话框中不勾选任何选项,即建立了表间关系。,79,5.建立表间关系及参照完整性,建立两表间关系及参照完整性步骤:首先确立可建立关系的公共字段,分别为其建立索引。例:deparment表和teacher表,建立联系的公共字段是什么?院系名称-主索引所属院系-普通索引将各表添加至“关系”窗口中。将一方deparment的院系名称主索引拖拽至多方student;“编辑关系”对话框中勾选“实施参照完整性”选项,根据需要勾选更新和删除规则。建立了两表间的参照完整性。,80,81,7.4.3关系运算,关系运算的对象和结果都为关系,分为传统的集合运算和专门的关系运算。1、集合运算1)并运算(Union)A和B的并是由属于A或属于B的元组构成的一个新关系,记作:AB或A+B。2)差运算(Difference)A和B的差是由属于A且不属于B的元组组成的关系,记作:A-B。3)交运算(Intersection)A和B的交是由既属于A又属于B的元组构成的一个新关系,记作:AB。4)积运算(广义笛卡尔积ExtendedCartesianproduct)设关系A有m列,k1个元组;关系B有n列,k2个元组,则A和B的积是一个新关系C,记作C=AB。C共有m+n列(前m列来自集合A,后n列来自集合B),共有k1k2个元组。,82,1、集合运算,【例7-17】已知关系R和关系S,如表7.7和7.8所示,请分别对R和S进行并、交、差和积运算。,83,表7.7关系R表7.8关系S,(a)RS,(b)RS,(d)RS,(c)R-S,2.专门的关系运算,(1)选择(Selection)是指从关系中选择满足一定条件的元组。即,选取的水平方向上的关系的子集。(2)投影(Projection)是指从一个关系中选择若干个属性(列)组成新的关系。即,选取的是垂直方向上的关系子集。【例7-18】已知关系student,如表7.9所示。(1)在此关系上只选择学号、姓名信息构成关系stu1。(2)在此关系上选择女生信息构成关系stu2。解析(1)为投影操作,只从表7.9中选择前两列,结果为stu1。(2)为选择操作,从表7.9中横向上选择性别值为F的元组(3条)。,84,例7-18选择、投影运算,7.9关系student,85,7.10关系stu1,7.11关系stu2,2.专门的关系运算,(3)连接(Join)从两个关系中选择满足一定条件的元组,就要用到连接运算,它是两个关系的积、选择、投影运算的组合。,86,【例7-19】对表7.11所示的学生关系stu2和选课关系SC(如表7.12所示)。(1)按照学号的值相等建立关系stu2和SC的等值连接。(2)建立关系stu2和SC的自然连接。,7.12关系SC,表7.13stu2和SC的等值连接,(2)自然连接,即在等值连接的结果中再去掉重复的列“学号”,7.5结构化查询语言SQL,87,7.5结构化查询语言SQL,SQL(StructuredQueryLanguage)语言就是DBMS提供的对数据进行操作的关系数据库语言。其功能强大,包括查询、操纵、定义和控制(授权、回收权限)等四个方面。如表7.15所示。,88,7.5.1数据查询语言,SELECT命令的作用是从一个或多个表中检索数据。其基本形式是SELECTFROMWHERE。1.Select命令格式SELECT谓词*|表名.*|表名|表别名.字段名1AS列别名1,表名.字段名2AS列别名2,FROM表名As表别名INNER|LEFT|RIGHT|JOIN表名As表别名ON联接条件IN库名WHERE逻辑表达式GROUPBY分组字段列表HAVING过滤条件UNIONSELECT命令ORDERBY排序字段ASC|DESC,排序字段ASC|DESCINTO新表名IN库名,89,1.Select命令格式,90,表7.16SELECT命令的SQL子句,Select命令主要子句的功能简要说明如表7.16所示。,2.简单查询实例,(1)选择字段(投影运算)即选择表中若干列,建立一个新表。例7.20查询课程表所有信息。SELECT*FROMcourse;例7.21查询教师的姓名、性别、职称信息。SELECT姓名,性别,职称FROMteacher;例7.22查询已选课学生的学号信息,按学号升序排列,并存入新表SC1中。解析从学生选课表SC中输出“学号”列,应去掉重复行,即使用谓词DISTINCT。SELECTDISTINCT学号FROMSCINTOSC1ORDERBY学号;,91,2.简单查询实例,(1)选择字段(投影运算)例7.23查询学生的学号,姓名和年龄信息,结果按年龄由大到小排列,年龄相同时按学号升序排列(设当前年份为2016)。解析在学生表中只有“出生日期”字段而并没有“年龄”字段,但它可由“2016-出生日期年份”计算出来。提示:系统函数YEAR()可获取日期型数据的年份SELECT学号,姓名,2016-YEAR(出生日期)AS年龄FROMstudentORDERBY年龄DESC,学号;,92,(2)选择记录(选择运算),用【WHERE条件子句】选择满足条件的若记录,建立一个新表。WHERE子句中查询条件常用的符号和关键字如表7.17所示。,93,(2)选择记录(选择运算),例7-24查询所有女生信息。SELECT*FROMstudentWHERE性别=女;例7-25查询外语学院非党员学生的学号、姓名、出生日期信息。SELECT学号,姓名,出生日期FROMstudentWHERE所属院系=“外语学院”AND政治面貌”党员”;例7.26查询所有2015级学生信息。解析方法1:即学号以2015开头,其形式为2015,可用通配符*,表示任意字符串。SQL命令如下:SELECT*FROMstudentWHERE学号LIKE2015*;方法2:条件表达式总可用字符串函数LEFT实现。SELECT*FROMstudentWHERELEFT(学号,4)=2015;,94,(2)选择记录(选择运算),例7-28查询入学成绩在500到600分数段的学生信息。解析使用“BETWEENAND”或者关系复合运算“AND”都可实现。方法1:SELECT*FROMstudentWHERE入学成绩BETWEEN500AND600;方法2:SELECT*FROMstudentWHERE入学成绩=500AND入学成绩=6;,99,3多表查询实例,多表查询的注意事项如下:首先,FROM子句中应列出用到的所有表。其次,必须为相关表建立连接。方法一:利用WHERE子句指明连接条件;方法二:在FROM子句的JOINON子句中指定连接条件。(1)使用WHERE子句建立连接两表连接例7.37查询学生的选课情况,包括学号、姓名、课程编号。解析:共需使用student表和SC表2个表。通过学号相等建立连接。SELECTstudent.学号,姓名,课程编号FROMstudent,SCWHEREstudent.学号=SC.学号;,100,(1)使用WHERE子句建立连接,例7.38查询外语学院有考试不及格学生的学号、姓名。解析在student和SC两表建立连接基础上,还需进一步设置过滤条件:所属院系和考试成绩。这种WHERE子句中含有多个条件的连接,称为复合条件连接。注意:存在一个学生有多门课程不及格的情况,应使用DISTINCT去掉重复行。SELECTDISTINCTstudent.学号,姓名FROMstudent,SCWHEREstudent.学号=SC.学号AND所属院系=外语学院AND考试成绩60AND考试成绩ISNOTNULL;,101,(1)使用WHERE子句建立连接,例7.39查询外语学院2015级学生所选课程平均成绩排名前20%的学生学号、姓名及平均成绩,并按平均成绩由高到低排列。解析必须使用GROUPBY子句按学号分组,求出外语学院2015级学生的平均成绩,按平均成绩降序排列取前20%即可。SELECTTOP20PERCENTstudent.学号,姓名,AVG(考试成绩)AS平均成绩FROMstudent,SCWHEREstudent.学号=SC.学号AND所属院系=外语学院ANDLEFT(student.学号,4)=2015AND考试成绩ISNOTNULLGROUPBYSC.学号ORDERBY平均成绩DESC;,102,(1)使用WHERE子句建立连接,自身连接例7.40查询课程的间接先修课。解析查询间接先修课,即先修课的先修课。查找过程如下:对应一门课程A,需要先查找到它的先修课编号B;然后再从课程表中查找课程编号等于B的记录,查出其先修课程C。因此需要自身建立连接,连接条件是:第一个表(课程表)的先修课编号=第二个表(可看作先修课程表)的课程编号。SELECTcourse.课程编号,pre-course.先修课程编号AS间接先修课FROMcourse,courseASpre-courseWHEREcourse.先修课程编号=pre-course.课程编号;注意:为了建立自身连接,需要区分这两个表,可以用AS表别名给它们起别名。,103,(1)使用WHERE子句建立连接,多表连接例7.41查询学生的选课情况,包括学号、姓名、课程名称。解析需要使用SC、student、course3个表。两两建立连接:student表和SC通过学号相等建立连接;course表和SC表通过课程编号相等建立连接。SELECTstudent.学号,姓名,课程名称FROMstudent,SC,courseWHEREstudent.学号=SC.学号ANDcourse.课程编号=SC.课程编号;,104,(1)使用WHERE子句建立连接,多表连接例7.42查询高等数学考试成绩最低的5名同学的学号、姓名、所属院系和成绩信息。解析需要按考试成绩升序排列,并用谓词TOP5取前5条记录。SELECTTOP5student.学号,姓名,所属院系,考试成绩FROMstudent,SC,courseWHEREstudent.学号=SC.学号ANDcourse.课程编号=SC.课程编号AND课程名称=高等数学AND考试成绩ISNOTNULLORDERBY考试成绩;,105,(2)使用JOINON子句建立连接,内连接(普通连接:INNERJOIN)例7.43查询所有选修了高等数学的学生的学号、姓名信息。SELECTstudent.学号,姓名FROMcourse(studentINNERJOINSCONstudent.学号=SC.学号)INNERJOINSCONcourse.课程编号=SC.课程编号WHERE课程名称=高等数学;左连接(左外连接:LEFTJOIN)例7.44显示所有学生信息和选课情况,若某学生未选课,则相应的选课字段值为空。解析记录数等于student表的记录数,题意正好符合student表和SC表的左连接。SELECT*FROMstudentLEFTJOINSCONstudent.学号=SC.学号;,106,(2)使用JOINON子句建立连接,右连接(右外连接:RIGHTJOIN)例7.45显示所有课程信息和选课情况,若某课程未被选修,则相应的选课信息值为空。解析查询结果的记录数与course表的记录数相等,题意正好符合SC表和course表的右连接。SELECT*FROMSCRIGHTJOINcourseONcourse.课程编号=SC.课程编号;,107,4子查询(嵌套查询),子查询的处理通常是由内向外处理,内层查询必须放在括号内。子查询一般跟在比较运算符后面或IN、ANY、SOME、ALL等谓词的后面。例7.46查询有不及格成绩的学生信息。SELECT*FROMstudentWHERE学号IN(SELECT学号FROMSCWHERE考试成绩60);例7.47查询所有未选课的学生信息。SELECT*FROMstudentWHERE学号NOTIN(SELEC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理模拟实操考试题及答案
- 小型企业股份合作协议示范文本
- 2024-2025学年新教材高中化学 专题4 硫与环境保护 1.1 二氧化硫的性质与应用(2)说课稿 苏教版必修1
- 小学升初中英语模拟试题及听力材料
- 小学语文期末复习重点及试题
- Unit 3 weather A Spell (Weather and activities)(教学设计)-2023-2024学年人教PEP版英语四年级下册
- 医院内感染控制措施与案例
- 班组长技能竞赛试题与评分标准
- 多学科联合治疗-第1篇-洞察及研究
- 2025-2030中国工业无人机整机行业市场发展趋势与前景展望战略研究报告
- 001 比较思想政治教育(第二版) 第一章
- GB/T 9728-2007化学试剂硫酸盐测定通用方法
- GB/T 2992.1-2011耐火砖形状尺寸第1部分:通用砖
- 神经系统的分级调节课件 【知识精讲+备课精研+高效课堂】 高二上学期生物人教版选择性必修1
- 中医门诊消毒隔离制度
- 三年级上册数学试卷-第一单元 混合运算 北师大版 (含答案)
- 教学课件-英语学术论文写作(第二版)
- 实习证明模板(两种格式)
- ISO 31000-2018 风险管理标准-中文版
- 职能部门督导检查记录表
- 滨海县生活垃圾填埋场改建工程环评报告书
评论
0/150
提交评论