版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章关系数据库基础
2.1.1数据库的定义数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据按一定的数据模型组织、描述和储存,具有较小的冗余度,较高的数据独立性和易扩展性,并可为各种用户共享。例如:通讯录是一个小型数据库,图书馆信息则是一个典型的大型数据库。2.1.2数据库系统的产生数据管理经历了三个发展阶段:人工管理阶段文件系统阶段数据库系统阶段人工管理阶段在20世纪50年代中期以前,计算机主要用于科学计算。特点:(1)数据不保存。(2)数据需要由应用程序自己管理,没有相应的软件系统负责数据的管理工作。(3)数据不共享。(4)数据不具有独立性文件系统阶段在20世纪50年代后期至60年代中期,计算机不仅用于科学计算,还大量用于信息管理;对大量的数据进行存储、检索和维护成为紧迫的需求。特点:(1)数据以文件形式长期保存。(2)文件系统可对数据的存取进行管理。(3)数据共享性差。(4)数据独立性低。数据库系统阶段从20世纪60年代后期开始,计算机应用于管理的规模更加庞大,数据量急剧增加。特点:(1)数据共享性高、冗余低。(2)数据结构化。(3)数据独立性高。(4)有统一的数据控制功能。2.1.3数据库系统的发展经历了三个发展阶段:格式化数据模型层次数据模型网状数据模型关系数据模型面向对象的数据模型第一代数据库系统格式化数据模型:层次模型网状模型层次数据模型层次模型是用一棵“有向树”的数据结构来表示各类实体以及实体间的联系。特征:(1)有且仅有一个结点没有双亲,该结点就是根结点。(2)根以外的其他结点有且仅有一个双亲结点。(3)任何一个给定的记录值只有按其路径查看时,才能显出它的全部意义。层次模型的例子网状数据模型网状模型允许两个或两个以上的结点可以有多个双亲结点,用“有向图”数据结构描述网状模型。特征:(1)有一个以上的结点没有双亲;(2)至少有一个结点可以有多于一个双亲。学生1学生2学生3学生4课程1课程2课程3学生和课程的网状模型图第二代数据库系统第二代数据库系统是指支持关系数据模型的关系数据库系统。在关系模型中,用一个二维表来表示数据间的关系学号姓名性别出生年月系别200510101李丽女07/05/1987计算机200510102赵勇男02/23/1988法律200510103王凯男01/19/1987管理学生登记表S
简单、清晰;以关系代数为语言模型第三代数据库系统第三代数据库系统是指支持面向对象(ObjectOriented,OO)的数据模型的数据库系统。基本特点:第三代数据库系统应支持面向对象的数据模型;第三代数据库系统必须保持或继承第二代数据库系统的优点;第三代数据库系统必须具有开放性。2.1.4数据库管理系统数据库管理系统(DataBaseManagementSystem,简称为DBMS)
——它是位于用户与操作系统之间的一层数据管理软件,对数据库的建立、运行与维护进行统一管理、统一控制。DBMS的主要功能数据定义数据操纵数据库运行管理(控制:安全性、完整性、并发性、数据恢复)数据库的建立和维护功能数据通信接口2.2数据库设计之E-R模型及其作用
E-R模型是面向问题的,与数据库实现无关2.2.1数据库设计的一般过程(1)用户需求分析(2)概念结构设计(3)逻辑结构设计(4)物理结构设计调查用户的需求,包括用户的数据要求、加工要求和对数据安全性、完整性的要求概念模型是一个面向问题的模型,它独立于具体的数据库管理系统,从用户的角度看待数据库,反映用户的现实环境.用ER图来描述。将概念模型转换成所选用的DBMS支持的数据模型(如关系模型)为数据模型在设备上确定合适的存储结构和存取方法如何将客户的信息要求及处理要求进行归纳总结得出数据库设计结果(即:从现实世界的信息到数据库存储的数据是一个逐步抽象的过程),这个过程一般来说要经过三个世界。现实世界:指人们头脑之外的客观世界。信息世界:是现实世界在人们头脑中的反映。数据世界:是信息世界中信息的数字化。信息转变为数据模型过程122.2.2E-R模型E-R模型反映的是现实世界中的事物及其相互联系(是面向问题的,与数据库实现无关),是由P.P.S.Chen于1976年提出。E-R模型中包含三个要素:实体:是客观世界中描述客观事物的概念。属性:实体所具有的某种特性,用来描述实体。联系:不同实体之间的联系。联系方式:一对一联系如果对于实体集合A中的一个实体,实体集合B中至多有一个实体与之发生联系,反之,实体集合B中的每一个实体至多对应实体集合A中的一个实体,则称A与B是一对一联系。例如,系主任与系、学生与座位、丈夫与妻子。ABAB一对多联系如果对于实体集合A中的一个实体,实体集合B中有多个实体与之发生联系,反之,实体集合B中的每一个实体至多对应实体集合A中的一个实体,则称A与B是一对多联系。例如,班与学生、省与市。n:1多对多联系如果对于实体集合A中的一个实体,实体集合B中有多个实体与之发生联系,反之,实体集合B中的每一个实体对应实体集合A中的多个实体,则称A与B是多对多联系。例如,学生与课程、工厂与产品。ABE-R模型实例2.2.3E-R模型的作用接近人的思维,容易理解;与计算机无关,用户容易接受。为了能够用某一DBMS实现用户需求,必须将E-R模型进一步转化为相应的数据模型。转化中遵循的原则一个实体转化为一个关系模式,实体的属性就是关系的属性,实体的主键就是关系的主键。联系也要进行相应的转化,具体转化方法为:若实体间的联系是1:1的,可以在两个实体类型转换成的两个关系模式中选择任意一个关系模式,加入另一个关系模式的主键和联系具有的属性。若实体间的联系是1:N的,则在N端的关系模式中加入1端的主键和联系具有的属性。
若实体间联系是M:N的,则将联系也转换成关系模式。该关系模式的属性为两端实体的主键加上联系的属性,而该关系模式的主键为两端实体主键的组合。例1以图2-5的E-R模型为例,转化成的关系模式为:职工(职工号,姓名,年龄,职称,仓库号)仓库(仓库号,面积,电话号码,仓库地址)零件(零件号,名称,规格,单价)库存(零件号,仓库号,库存量)
2.3.1关系数据模型关系模型的数据结构是一个“二维表”组成的集合,每个二维表又可称为关系,所以关系模型又是“关系”的集合。图2-6(P34)给出了教学数据库的关系模型,它包含三个关系:学生关系S、课程关系C、选课关系SC,分别对应三张表。图2.6教学数据库关系模型关系模型的数据操纵:查询、增加、删除、更改数据;关系模型的优缺点:有较强的数学理论基础为支撑;关系概念单一;存取路径对用户透明,更高的独立性和安全保密性。因存取路径对用户透明,查询效率不高,需要优化。用户不必知道原理或者其他,整个过程,根本感觉不到它的存在,使用起来很方便。2.3.2关系中的基本概念和性质关系(Relation):一个关系对应一张二维表,如图2-6中的三张表分别对应三个关系。元组:二维表格中的一行,如S表中的一个学生即为一个元组。属性(Attribute):二维表格中的一列,相当于记录中的一个字段,如S表中有五个属性(学号、姓名、性别、年龄、系别)。关键字(Key):可唯一标识元组的属性或属性集,也称为主键或主码。如S表中学号可以唯一确定一个学生,学号为学生关系的关键字。域(Domain):属性的取值范围。如年龄的域是(14~40),性别的域是(男,女)。分量:每一行对应的列的属性值,即为元组中的一个属性值。关系模式:是对关系的描述,一般表示为:关系名(属性1,属性2,……,属性n)。如:学生(学号,姓名,性别,年龄,系别)。关系数据库:在一个给定的现实世界领域中,相应于所有实体及实体间的联系的关系的集合构成一个关系数据库。关系的性质关系中不允许出现相同的元组。关系中元组的顺序(即行序)可任意,在一个关系中可以任意交换两行的次序。关系中属性的顺序可任意,即列的顺序可以任意交换。关系中各个属性必须有不同的名字,不同的属性可来自同一个域。关系中每一个分量必须是不可分的数据项。2.3.3关系的完整性为了维护数据库中数据与现实世界的一致性,对关系数据表的插入、删除和修改操作必须有一定的约束条件,这就是关系模型的三类完整性,即:实体完整性参照完整性用户自定义的完整性实体完整性实体完整性规则:主码的取值不能为空或部分为空。例如,在选课关系SC中,主码由SNO、CNO两个属性构成,这两个属性的取值不能为空或某个属性为空。参照完整性外码定义2.1
设F是关系R的一个或一组属性,但不是关系R的码,如果F与关系S的主码KS相对应,则称F是关系R的外码(foreignkey)。并称关系R为参照关系(referencingrelation),关系S为被参照关系(referencedrelation)或目标关系。例如:R:学生(学号,姓名,性别,专业号,年龄)S:专业(专业号,专业名)外码参照完整性规则:若属性(或属性组)F是关系R的外码,它与基本关系S的主码KS相对应,则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。用户自定义完整性用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求.例如,某个属性必须取唯一值、某个非主属性也不能取空值、某个属性的取值范围在0~100之间等。(*)2.4.1规范化问题的提出如何设计一个合适的关系数据库系统,如何将关联的关系模式组建成一个适合的关系模型,(这些工作决定了整个系统运行的效率,也是系统成败的关键所在)。在关系数据库的规范化理论的指导下逐步完成。?例4要求设计教学管理数据库,其关系模式如下:SCD(SNO,SNAME,AGE,DEPT,HEAD,CNO,CNAME,SCORE)这些数据有如下语义:一个系有若干名学生,但一个学生只属于一个系;一个系只能有一名系主任,但一个系主任可以同时兼任几个系的系主任;一个学生可以选修多门课程,每门课程可被若干学生选修;每个学生学习的一门课程有一个成绩。部分数据情况:在进行数据库的操作时,会出现以下几个方面的问题:数据冗余。插入异常。(c4,新技术新方法)删除异常。(S1,王凯,22,C1,数据结构)更新异常。分解后的关系模式:学生关系S(SNO,SNAME,AGE,DEPT)课程关系C(CNO,CNAME)选课关系SC(SNO,CNO,SCORE)系关系D(DEPT,HEAD)一个好的关系模式应该具备以下四个条件:尽可能少的数据冗余;没有插入异常;没有删除异常;没有更新异常;2.4.2范式第一范式如果一个关系模式R的所有属性都是不可分解的基本数据项,则R∈1NF。第二范式若关系模式R∈1NF,并且每一个非主属性都完全依赖于R的主码,则R∈2NF。例如,下列关系虽然满足1NF,但不满足2NF。第三范式如果关系模式R∈2NF,且每个非主属性都不传递依赖于R的主码,则称R∈3NF。例如:SCD2(SNO,SNAME,AGE,DEPT,SLOC)一个系有若干名学生,但一个学生只属于一个系;一个系(DEPT)的学生住在同一个地方(SLOC);SCD2中存在传递依赖。非主属性SLOC通过DEPT属性传递依赖于主码SNO,所以SCD2不属于3NF。分解SCD2学生关系S(SNO,SNAME,AGE,DEPT)系关系D(DEPT,SLOC)分解后的两个关系都属于第三范式。既没有非主属性对主码的部分依赖也没有非主属性对主码的传递依赖2.4.3关系模式的规范化规范化的基本原则就是遵循“一事一地”的原则,(即一个关系只描述一个实体或实体间的联系)。若多于一个实体,就把它“分离”出来。所谓规范化,实质上是概念的单一化,即一个关系表示一个实体。关系规范化的基本步骤分为以下几步:对1NF关系进行分解,消除原关系中非主属性对主码的部分依赖,将1NF转换成若干个2NF关系。对2NF进行分解,消除原关系中非主属性对主码的传递依赖,将2NF转换成若干个3NF关系。(*)2.5.1SQL语言概述SQL(StructuredQueryLanguage)语言又称结构化查询语言。功能包括查询(Query)操纵(Manipulation):增加、删除、修改定义(Definition)控制(Control)是一个综合的、通用的、功能极强的关系数据库语言。SQL完成核心功能一共用了8个动词,如下表:2.5.2数据定义语言定义基本表:建立数据库最重要的一步就是定义一些基本表。SQL语言使用CREATETABLE语句定义基本表,其一般格式如下:CREATETABLE<表名>(<列名><数据类型><列级完整性约束条件>,[,<列名><数据类型><列级完整性约束条件>,……][,<表级完整性约束条件>])例:建立一个学生表student,它由学号SNO、姓名SNAME、性别SEX、年龄AGE、所在系DEPT等5个属性组成,其中AGE是INT类型,其余均为CHAR类型,并且要求SNO的取值不能为空,其值是唯一的,SNO作为主码。
CREATETABLEstudent(SNOCHAR(10)NOTNULLUNIQUE,SNAMECHAR(8),SEXCHAR(2),AGEINT,DEPTCHAR(30),
PRIMARYKEY(SNO)
)修改基本表:修改已建立好的基本表,包括增加新列、增加新的完整性约束条件、修改原有的列定义或删除已有的完整性约束条件等。SQL语言用ALTERTABLE语句修改基本表,其一般格式为:
ALTERTABLE<表名>[ADD<新列名><数据类型>[完整性约束]][DROP<完整性约束名>][MODIFY<列名><数据类型>];例将student表增加一列入学时间列entertime,其数据类型为日期型。ALTERTABLEstudentADDentertimeDATE例将年龄的数据类型改为半字长整数。ALTERTABLEstudentMODIFYAGESMALLINT例删除关于学号必须取唯一值的约束ALTERTABLEstudentDROPUNIQUE(SNO)删除基本表:当某个基本表不再需要时,可以使用SQL语句DROPTABLE进行删除。其一般格式为:DROPTABLE<表名>例:删除student表DROPTABLEstudent注意:基本表一旦删除,表中的数据都将被自动删除掉2.5.3数据操纵语言SQL中数据操纵语言DML主要包括插入数据修改数据删除数据插入数据(1)插入单个元组的INSERT语句的格式为:INSERTINTO<表名>[(<属性列1>[,<属性列2>…])]VALUES(<常量1>[,<常量2>]…)功能:是将新元组插入表中。如果某些属性列在INTO子句中没有出现,则新记录在这些列上将取空值。例插入一个学生记录(学号:2004060101,姓名:李思,性别:女,年龄:19,所在系:信息)插入到STUDENT表中。INSERTINTOSTUDENTVALUES(‘2004060101’,‘李思’,‘女’,19,‘信息’)例插入一条新的选课记录(‘2004090116’,‘C1’)INSERTINTOSC(SNO,CNO)VALUES(‘2004090116’,‘C1’)(2)插入子查询结果插入子查询结果的INSERT语句的格式为INSERTINTO<表名>[(<属性列1>[,<属性列2>…])]子查询功能:是进行批量插入,一次将子查询的结果全部插入到指定表中。例已知数据库中的一个关系SAVG(SNO,S_AVG),求每个学生的平均成绩,并把结果存入SAVG关系中。其中S_AVG属性列表示学生的平均成绩。INSERTINTOSAVGSELECTSNO,AVG(SCORE)FROMSCGROUPBYSNO修改数据修改数据的SQL语句的一般格式为:UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>…][WHERE<条件>];功能:就是修改指定表中满足WHERE子句条件的元组。其中SET子句用来指定用<表达式>的值取代相应的属性列值。如果省略WHERE子句,则表示要修改表中所有的元组。修改某一个元组的值例将学号为‘2004060101’的学生所在系改为‘计算机’UPDATESTUDENTSETDEPT=‘计算机’WHERESNO=‘2004060101’;修改多个元组的值例将所有学生的年龄增加1岁UPDATESTUDENTSETAGE=AGE+1带子查询的修改语句例在SC关系中将计算机系学生的成绩全部置为零UPDATESCSETSCORE=0WHERESNOIN(SELECTSNOFROMSTUDENTWHEREDEPT=‘计算机’)删除数据删除语句的一般格式为:DELETEFROM<表名>[WHERE<条件表达式>]功能:是从指定表中删除满足WHERE条件的所有元组。如果省略WHERE子句,表示删除指定表中的全部元组。注意,DELETE删除的只是表中的数据,而删除数据之后的表仍然是存在的。删除某一个元组的值例删除学号为‘2004060101’的学生记录。DELETEFROMSTUDENTWHERESNO=‘2004060101’删除多个元组的值例删除所有学生的选课信息DELETEFROMSC带子查询的删除语句例删除计算机系学生的选课信息DELETEFROMSCWHERESNOIN(SELECTSNOFROMSTUDENTWHEREDEPT=‘计算机’)2.5.4数据查询语言查询数据可以说是数据库的核心操作,SQL语言提供了SELECT语句进行数据库的查询,其一般格式为:SELECT[ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]…FROM<表名或视图名>[,<表名或视图名>]…[WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[ASC|DESC]]单表查询单表查询是指仅涉及一个数据库表的查询,单表查询是一种最简单的查询操作。例查询全体学生的学号与姓名SELECTSNO,SNAMEFROMSTUDENT例查询全体学生的详细记录SELECT*FROMSTUDENT例查询年龄在20至23岁之间的学生的姓名、系别和年龄,并按年龄的升序排序SELECTSNAME,DEPT,AGEFROMSTUDENTWHEREAGEBETWEEN20AND23ORDERBYAGE例查信息系(IS)、数学系(MA)和计算机科学系(CS)的学生的姓名和性别。SELECTSNAME,SEXFROMSTUDENTWHEREDEPTIN(‘IS’,‘MA’,‘CS’)例已知图2-7中的选课关系SC,要求查询SC关系中至少选修了2门课程的学生的学号。SELECTSNOFROMSCGROUPBYSNOHAVINGCOUNT(*)>=2常用的比较运算符常用的集函数连接查询一个数据库中的多个表之间一般都存在某种内在联系,它们共同提供有用的信息。前面介绍的查询只涉及到一张表,故称为单表查询;若一个查询同时涉及到两个以上的表,则称之为连接查询,连接查询是关系数据库中最主要的查询。例查询选修了C1课程的学生学号、姓名、年龄。SELECTSTUDENT.SNO,SNAME,AGEFROMSTUDENT,SCWHERESTUDENT.SNO=SC.SNOANDSC.CNO=‘C1’2.5.5数据控制语言SQL语言用GRANT语句向用户授予操作权限,GRANT语句的一般格式为:GRANT<权限>[,<权限>…][ON<对象类型><对象名>]TO<用户>[,<用户>…][WITHGRANTOPTION];功能:对指定操作对象的指定操作权限授予指定的用户。如果指定了WITHGRANTOPTION子句,则获得某种权限的用户还可以把这种权限再授予其他用户。例把查询STUDENT表的权限授给用户U1GRANTSELECTONTABLESTUDENTTOU1例把对STUDENT表的全部权限授予用户U2和U3GRANTALLPRIVILEGESONTABLESTUDENTTOU2,U3例把查询STUDENT表和修改学生学号的权限授给所有用户GRANTSELECT,UPDATE(SNO)ONTABLESTUDENTTOPUBLIC例把对表STUDENT的INSERT权限授予U4用户,并允许他再将此权限授予其他用户GRANTINSERTONTABLESTUDENTTOU4WITHGRANTOPTION授予的权限可以由DBA或者其他授权者使用REVOKE语句收回,REVOKE语句的一般格式为:REVOKE<权限>[,<权限>…][ON<对象类型><对象名>]FROM<用户>[,<用户>…]例把用户U4的插入权限收回REVOKEINSERTONTABLESTUDENTFROMU4例收回所有用户对表STUDENT的查询权限REVOKESELECTONTABLESTUDENTFROMPUBLIC2.6.1关系数据库管理系统产品概述SybaseSybase数据库是基于客户/服务器体系结构的数据库。主要由3部分组成:进行数据库管理和维护的一个联机的关系数据库管理系统SybaseSQLServer支持数据库应用系统的建立与开发的一组前端工具SybaseSQLToolset可把异构环境下其他厂商的应用软件和任何类型的数据连接在一起的接口SybaseOpenClient/OpenServer。OracleOracle是以高级
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 邢台二模物理试题及答案
- “3.16”事故警示教育课后考试测试卷及答案
- 2026电网安规考试题库及答案
- 蚊媒传染病考核题目测试卷附答案
- 2026电气原理笔试题目及答案
- 2026年法律援助专员试题库及答案
- 2026年船闸施工安全考试题(附答案)
- 行政诉讼法试题库及答案
- 国家开放大学电大《政府经济学》机考第二套真题题库及答案
- 2026年物流OMS系统应用师考试模拟试卷及答案
- 2026学年河南省永城市六年级数学期末自测重点试卷(附答案)详细答案和解析
- 2026年乒乓球裁判证试题(附答案)
- 眉山市2026年医务社会工作服务岗招募(26人)笔试模拟试题及答案详解
- 2025年设备监理师《设备工程质量管理与检验》真题及答案解析
- 华为任职资格体系(6版)
- 第9课《木兰诗》课件- 统编版语文七年级下册
- 《化工企业安全生产与电气仪表管》课件-专题3-1 防爆电气基础与管理
- 2026年移动式压力容器充装R2作业证考试练习题库含答案
- 呼吸科终末期患者管理
- 医疗器械经营质量管理规范现场检查原则试卷含答案
- 2026大疆在线测评题库
评论
0/150
提交评论