




免费预览已结束,剩余190页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 数据库系统概论 市场前景: 四大支柱: 操作系统、网络、计算机语言、数据库 。 两大热门: 网络、数据库 。 数据库技术所研究的问题就是如何科学地组织和存储数据,如何高效地获取和处理数据。数据库技术作为数据管理的主要技术目前已广泛应用于各个领域,数据库系统已成为计算机系统的重要组成部分。数据库在信息系统中的地位1. 1 数据库的基本概念数据库技术涉及到许多基本概念,主要包括数据、数据处理、数据库、数据库管理系统以及数据库系统等。1、数据 数据是数据库中存储的基本对象。描述事物的符号记录称为数据,这些符号可以是文字、图形、图像、声音、语言等,数据有多种表现形式,它们都可以经过数字化后存入计算机。2、数据处理数据处理是指对各种形式的数据进行收集、存储、加工和传播的一系列活动的总和。其目的之一是从大量的、原始的数据中抽取、推导出对人们有价值的信息以作为行动和决策的依据;目的之二是为了借助计算机科学地保存和管理复杂的、大量的数据,以便人们能够方便而充分地利用这些宝贵的信息资源。 3、数据库数据库是与特定的主题或目的相关的数据的集合。数据库可以直观地理解为存放数据的仓库,只不过这个仓库是在计算机的大容量存储器上(例如,硬盘就是一种最常见的计算机大容量存储设备)。而且数据必须按照一定的格式存放,因为它不仅需要存放,而且还要便于查找。可以认为数据库是被长期存放在计算机内、有组织的、可以表现为多种形式的可共享的数据集合。使数据能按一定格式组织、描述和存储,且具有较小的冗余度,较高的数据独立性和易扩展性,并可为多个用户所共享。 数据库的特点 数据的结构化数据库中不仅保存了各个数据项本身,而且还描述数据之间的联系。 数据的共享性 减少数据的冗余度 数据的独立性数据的逻辑结构和物理结构 4、数据库管理系统数据库管理系统(DataBase Management System,简称DBMS)是对数据库进行管理的系统软件,它的职能是有效地组织和存储数据、获取和管理数据,接受和完成用户提出的访问数据的各种请求。数据库管理系统主要功能包括以下几个方面:(1)数据定义功能DBMS提供了数据定义语言DDL(Data Definition Language),用户通过它可以方便地对数据库中的相关内容进行定义。例如,对数据库、表、索引进行定义。 (2)数据操纵功能DBMS提供了数据操纵语言DML(Data Manipulation Language),用户通过它可以实现对数据库的基本操作。例如,对表中数据的查询、插入、删除和修改。 (3)数据库运行控制功能这是DBMS的核心部分,它包括并发控制(即处理多个用户同时使用某些数据时可能产生的问题)、安全性检查、完整性约束条件的检查和执行、数据库的内部维护(例如,索引的自动维护)等。所有数据库的操作都要在这些控制程序的统一管理下进行,以保证数据的安全性、完整性以及多个用户对数据库的并发使用。(4)数据库的建立和维护功能数据库的建立和维护功能包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重新组织功能和性能监视、分析功能等。这些功能通常是由一些实用程序完成的。它是数据库管理系统的一个重要组成部分。 5 数据库系统数据库系统是指拥有数据库技术支持的计算机系统,它可以实现有组织地、动态地存储大量相关数据,提供数据处理和信息资源共享服务。数据库系统不仅包括数据本身,即实际存储在计算机中的数据,还包括相应的硬件、软件和各类人员。 1.3 数据库系统的组成一个数据库系统包括四个主要部分: 数据库 用户 软件 硬件1、数据库数据库存储的数据是“集成的”和“共享的”。它是数据库系统的工作对象2、软件主要是指负责数据库存取、维护和管理的软件系统,通常叫做数据库管理系统(Data Base Management System)(DBMS) 数据库系统的各类用户对数据库的各种操作请求,都是由DBMS完成的 数据库系统的核心软件主要由三类用户1. 最终用户(End User) 是指从计算机联机终端存取数据库的人员2. 应用程序员(Application Programmer) 是指负责设计和编制应用程序的人员3. 数据库管理员(Date Base Administrator) DBA。主要职责: 决定数据库的信息内容和结构 决定数据库的存储结构和存取策略 定义数据库的安全性和完整性约束条件 监督和控制数据库的使用和运行 数据库系统的改进、重构1.4 数据模型1、现实世界的数据描述 对用户来说,数据库是模拟现实世界中某些企业活动的信息集合。数据库中所存储的数据,来源于现实世界的信息流,都是用来描述现实世界中一些事物的某些方面的特征及其相互联系的。 在信息系统中,信息从客观事物出发,流经数据库,通过控制决策机构,最后又回到客观事物。信息的这一循环经历了三个领域:现实世界、信息世界、计算机世界。现实世界 是指存在于人脑之外的客观世界,泛指客观存在的事物及其相互间的联系。一个实际存在并且可以识别的事物称为个体。个体可以是一个具体的事物,如一个学生、一台计算机等。 每个个体都有自己的特征,用以区别其他个体。具有相同特征要求的个体称为同类个体,所有同类个体的集合称为总体。 客观事物是信息的源泉,是设计数据库的出发点。信息世界 现实世界中的事物反映到人们的头脑里,经过认识、选择、命名、分类等综合分析而形成了印象和概念,产生认识,这就是信息,即进入信息世界。在信息世界中,对每一个被认识了的个体称为实体,这是具体事物(个体)在人们头脑中产生的概念,是信息世界的基本单位。另外,个体的特征在头脑形成的知识称为属性。所以属性是事物某一方面的特征,即属性是反映实体的某一特征的。换句话说,一个实体是由它所有的属性表示的。计算机世界 信息世界中的有些信息,可以直接用数字表示;有些是由符号、文字或其它形式表示的。在计算机中,所有信息只能用二进制表示,一切信息进入计算机时,必须是数据化的。可以说,数据是信息的具体表现形式。 基本术语数据项:是实体属性的数据表示。记录:是实体的数据表示。文件:是同类记录的集合,例如所有职工的登记表组成一个文件。数据模型:现实世界中,个体与个体之间总是存在着某些联系。反映到信息世界中,是实体与实体之间的联系,由此构成实体模型。反映到计算机世界中,是记录与记录之间的联系。实体模型在该领域的数据化表示,就是数据模型。三个世界间的关系 表示同一信息的所有属性的数据组合,称为记录。记录作为一个数据单位处于数据世界中。因此,现实世界、信息世界和数据世界之间就建立了一种关系。2、数据库的数据模型层次模型网状模型关系模型面向对象模型它们之间的根本区别在于数据之间的联系的表示方式不同(记录型之间的联系方式不同)按照三类数据模型设计和实现: (关系、层次、网状) DBMS (关系、层次、网状) 数据库系统2.3 关系模型在关系模型中,数据的逻辑结构是一张二维表。在数据库中,满足下列条件的二维表称为关系模型: 1、每一列中的分量是类型相同的数据;2、列的顺序可以是任意的;3、行的顺序可以是任意的;4、表中的分量是不可再分割的最小数据项,即表中不允许有子表:5、表中的任意两行不能完全相同。 关系数据模型 人们常常习惯于用表格的形式,表示所关心的现实世界中的信息。 用表格数据来表示实体和实体间联系的模型,叫关系模型 1.6关系数据库的基本概念关系数据库采用了关系模型作为数据的组织方式,这就涉及到关系模型中的一些基本概念。另外,对关系数据库进行查询时,若要找到用户关心的数据,就需要对关系进行一定的关系运算 。 关系 :一个关系就是一张二维表,每个关系有一个关系名。在Access 中,一个关系就是一个表对象。 属性 :二维表中垂直方向的列称为属性。在Access 中,被称为字段。 域:一个属性的取值范围叫做一个域。元组:二维表中水平方向的行称为元组。在Access 中,被称为记录。码(又称为关键字):二维表中的某个属性,若它的值唯一地标识了一个元组,则称该属性为侯选码。若一个关系有多个侯选码,则选定其中一个为主码,这个属性称为主属性。分量:元组中的一个属性值叫做元组的一个分量。关系模式:是对关系的描述,它包括关系名、组成该关系的属性名、属性到域的映像。通常简记为:关系名(属性名1,属性名2,属性名n)学生基本情况表的关系模式可记为:Student(StudentID,Name,Sex,Birthday,Entrancescore)关系名:学生登记表关系模式:学生(学号,姓名,年龄.)第二章 数据库设计2.1 概念模型表示方法2.2 关系模式设计理论(逻辑模式)2.3 数据库设计步骤2.1 概念模型表示方法1、概念模型的定义概念模型是对显示世界的抽象反映,它不依赖于具体的计算机系统,是现实世界到机器世界的一个中间层次。 2、信息实体的概念实体(Entity):客观存在并可以相互区分的事物。既可以是具体的事物也可以是抽象的概念或者事物间的联系。属性(Attribute):实体所具有的某一特征,一个实体可以由若干个属性来刻画。键(Key):又称为码,唯一标识实体的属性集,也叫关键字。域(Domain):某个(些)属性的取值范围。联系(Relationship):两类实体内部的联系,如组成实体的属性之间的联系。实体之间的联系。3、实体之间的联系1对1联系例子:部门 - 经理1对多联系例子:部门 - 职工多对多联系例子:项目 - 职工4、概念模型的表示方法概念模型反映实体型及其联系的结构形式概念模型的表示方法最常用的是实体-联系方法,该方法是用E-R图来描述某一组织的概念模型。5、ER模型的图形描述使用长方形来表示实体型,框内写上实体名。椭圆型表示实体的属性,并用无向边把实体和属性连接起来。用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连接,在无向边旁标上联系的类型,若实体之间联系也具有属性,则把属性和菱形也用无向边连接上。6、概念模型示例举例:用E-R图表示某个工厂的物资管理的概念模型实体有:仓库:属性有仓库号、仓库面积、电话号码。零件:属性有零件号、名称、规格、单价、描述。供应商:属性有供应商号、姓名、地址、电话号、帐号。项目:属性有项目号、预算、开工日期。职工:属性有职工号、姓名、年龄、职称。概念模型示例(续)实体之间的联系如下: 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中。某种零件在某个仓库中的数量用库存量描述。 一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作。概念模型示例(续)如果某个部门的概念模型中涉及的实体和实体属性较多,可以把实体及其属性在另一个图上画出概念模型示例(续) 2.2 关系模式设计理论(逻辑模式)1、“不好”的数据库设计2、关系的完整性3、数据的函数依赖4、关系数据库的规范化理论2.2.1 “不好”的数据库设计示例:考虑为管理职工的工资信息而设计一个关系模式。把单位所具有的工资级别信息和职工工资信息进行保存。关系数据库设计中存在的问题问题:麻烦! 麻烦! 好麻烦! 插入异常 :如果没有职工具有8 级工资,则8 级工资的工资数额就难以插入。 删除异常 :如果仅有职工赵明具有4 级工资,如果将赵明删除,则有关4 级工资的工资数额信息也随之删除了。 数据冗余 :职工很多,工资级别有限,每一级别的工资数额反复存储多次。 更新异常 :如果将5 级工资的工资数额调为620 ,则需要找到每个具有5 级工资的职工,逐一修改。关系数据库设计中存在的问题解决之道:分解! 分解! 再分解!示例2:为学校设计一个关系数据库。对数据库操作时,会出现以下问题1. 数据冗余(系主任名的存储次数)数据重复存储:浪费存储空间,数据库维护困难(更新异常)2. 插入异常(一个系刚成立)主码为空的记录不能存在与数据库,导致不能进行插入操作3. 删除异常(一个系的学生全部毕业)删除操作后,一些相关信息无法保存在数据库中4.更新异常(修改系主任的名称)需要逐一修改多次。要消除以上的“弊病”,把上面的关系数据库模式分解为三个关系模式:学生系别(学号,系别)学生成绩(学号,课程,成绩)系部信息(系别,系主任)用以上三个结构简单的关系代替了原来的结构复杂的关系,从而得到的了“好的”关系数据库模式“好的”关系数据库模式并不是在任何情况下都是最优的,要从实际的设计目标出发2.2.2 关系的完整性 完整性约束是对要建立关联关系的两个关系的主键和外键设置约束条件。实体完整性 主码的值不能为空的约束条件称为实体完整性。 主码中的任一属性都不可以为空。 实体完整性是针对基本表的。 参照完整性 如果关系R2的外键X与关系R1的主键相符,那么外键X的每个值必须在关系R1中主键的值中找到,或者取空值,称为参照完整性。用户定义的完整性 用户针对具体的应用环境定义的完整性约束条件。 如S# 要求是8 位整数,SEX 要求取值为“ 男” 或“ 女” 。 2.2.3 数据的函数依赖 定义属性值间的相互关连,这就是数据依赖,它是数据库模式设计的关键。是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,类似于变量之间的单值函数关系。Y=F(X),其中自变量X的值,决定一个唯一的函数值Y在一个关系模式里的属性,由于它在不同元组里属性值可能不同,由此可以把关系中的属性看作变量一个属性与另一属性在取值上可能存在制约关系,这种逻辑依赖关系就是属性间的函数依赖。函数依赖定义:对于()任意可能的关系r,r中不能存在两个元组在上的属性相等,而在属性上的属性不等,则称函数确定或依赖于函数记作:XY当Y不函数依赖与X,则记作:X Y当XY,且YX,则记作:XY举例:职工号(A) 基本工资(B) 奖金(C)051 390 50052 420 50053 390 80AB AC BA CA几点说明:1:函数依赖是指关系模型中所有的元组都要满足的约束条件,而不仅仅是某个或某些元组的特例2: 函数依赖与属性间的联系类型有关若属性X和Y之间有“一对一”的联系,则XY,YX,XY.若属性X和Y之间有“多对一”的联系,则XY,但YX.若属性X和Y之间有“多对多”的联系,则X与Y之间不存在任何函数依赖.当确定函数依赖关系时,可从属性间的联系入手 2 传递函数依赖定义:设X,Y,Z为关系模式R的互不相同的属性集合,如果XY,而YX,但YZ,则称Z传递函数依赖与X,记作XtZ(t在箭头上面中间).例:学生信息(学号,课程,成绩,系别,系主任)学号系别,系别学号,系别 系主任则有学号t系主任(t在箭头上面中间)3 完全函数依赖与部分函数依赖定义:设XY是关系模式R(U)的一个函数依赖,当对X的每一个真子集X,都有XY,则Y对X的函数依赖是完全的,记作XfY(f在箭头上面中间);如果对X某个真子集X有XY,则称Y对X的函数依赖是部分的,记作X pY(p在箭头上面中间).例:学生信息(学号,课程,成绩,系别,系主任)(学号,课程)f成绩(f在箭头上面中间)(学号,课程)p系别(p在箭头上面中间) 2.2.4关系数据库模式的规范化理论关系模式规范化设计规范化理论是围绕着范式建立的.满足不同程度要求的约束集则称为不同的范式.如果一个关系满足某个指定的约束集,则称它属于某个特定的范式.一个低一级范式的关系模式,通过投影运算可以转化为若干个高一级范式的关系模式的集合,这个过程叫做规范化.如果一个关系满足某个范式要求,则它也会满足较其级别低的所有范式的要求范式要求2 第一范式定义如果一个关系模型R的每个属性的域都只包含单一的值,则称R满足第一范式.第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。但是满足第一范式的关系模式并不一定是一个好的关系模式。3 第二范式例: 关系模式 学生信息(学号, 系别, 住址, 课程, 成绩),假设每个系的学生住在同一个地方。函数依赖包括:(学号, 课程)f成绩(f在箭头上面中间)学号 系别(学号, 课程)P系别(P在箭头上面中间)学号 住址(学号, 课程)P住址(P在箭头上面中间)系别 住址“学生信息”的码为(学号, 课程)“学生信息”满足第一范式。非主属性系别和住址部分函数依赖于码(学号, 课程)(1) 插入异常假设学号95102,系别信息,住址N 的学生还未选课,因课程号是主属性,因此该学生的信息无法插入表中。(2) 删除异常假定某个学生本来只选修了3号课程这一门课。现在因身体不适,他连3号课程也不选修了。因课程号是主属性,此操作将导致该学生信息的整个元组都要删除。(3) 数据冗余度大如果一个学生选修10门课程,那么他的”系别”和”住址”值就要重复存储了10次。(4) 修改复杂例如学生转系,在修改此学生元组的”系别”值的同时,还可能需要修改“住处”。如果这个学生选修了K门课,则必须无遗漏地修改K个元组中全部“系别”、”住址”信息。原因”系别”和”住址”部分函数依赖于码。解决方法表分解为两个关系模式,以消除这些部分函数依赖 学生课程(学号, 课程, 成绩)学生住址(学号, 系别, 住址)函数依赖图:定义:如果关系范式R满足第一范式,而且它的所有非主关键字属性完全依赖于整个关键字(也就是说,不存在部分依赖),则R满足第二范式,即R2NF例:学生信息(学号, 系别, 住址, 课程, 成绩) 1NF学生信息(学号, 系别, 住址, 课程, 成绩) 2NF 学生课程(学号,课程,成绩) 2NF学生住址(学号,系别,住址) 2NF4 3NF例:2NF关系模式:学生住址(学号,系别,住址)中函数依赖:学号系别系别住址学号住址“住址”传递函数依赖于“学号”,即学生住址中存在非主属性对码的传递函数依赖。函数依赖图:解决方法采用投影分解法,把SL分解为两个关系模式,以消除传递函数依赖:学生系别(学号, 系别)系别住址(系别, 住址)“学生系别”的码为”学号”, “系别住址”的码为”系别”。“学生系别”的码为”学号”, “系别住址”的码为”系别” 。定义: 如果某关系模式满足第二范式,而且它的任何一个非主属性都不传递依赖于任何关键字,则R满足第三范式。例学生住址(学号,系别,住址) 2NF学生住址(学号,系别,住址) 3NF 学生系别(学号, 系别) 3NF系别住址(系别, 住址) 3NF若R3NF,则R的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。如果R3NF,则R也是2NF。采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上解决原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。将一个2NF关系分解为多个3NF的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。5 规范化关系数据库的规范化理论是数据库逻辑设计的工具。规范化程度过低的关系不一定能够很好地描述现实世界,可能会存在插入异常、删除异常、修改复杂、数据冗余等问题一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫关系模式的规范化规范化2.3 数据库设计步骤1数据库系统的设计过程2需求分析3概念设计4逻辑结构设计5物理设计6数据库的实施、运行和维护数据库设计的步骤 按规范设计的方法将数据库设计分为以下六个步骤:(1)需求分析阶段(2)概念设计阶段(3)逻辑设计阶段(4)数据库物理设计阶段(5)应用程序编码、调试、试运行阶段(6)数据库的运行维护阶段2.3.2 系统需求分析 (了解)主要任务通过详细调查客观世界要处理的对象(包括组织、部门、企业等),了解该对象所处系统的概括、各组成部分的工作流程,明确用户提出的各种需求,然后在此基础上确定新系统的框架和功能。同时考虑可能发生的扩充和改变。重点调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。2.3.3 概念设计概念模型的特点及设计方法局部概念模型设计合成全局概念模型1概念模型的特点什么是概念结构设计需求分析阶段描述的用户应用需求是现实世界的具体需求将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。概念结构设计是整个数据库设计的关键概念结构设计的特点(1)能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求。是对现实世界的一个真实模型。(2)易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库的设计成功的关键。(3)易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。2局部概念模型设计明确局部应用的范围设计分E-R图首先需要根据系统的具体情况,在多层的数据流图中选择一个适当层次的数据流图,让这组图中每一部分对应一个局部应用,然后以这一层次的数据流图为出发点,设计分E-R图。通常以中层数据流图作为设计分E-R图的依据。选择实体,确定实体的属性及关键字将各局部应用涉及的数据分别从数据字典中抽取出来,参照数据流图,标定各局部应用中的实体、属性、实体的码例:在图书馆中,可把流通部、管理部等对象抽象为部门实体。确定实体之间的联系,产生局部ER模型确定实体之间的联系及其类型(1:1,1:n,m:n)定义E-R图。按上面给出的准则进行必要的调整。例:学籍管理局部应用中主要涉及的实体包括学生、宿舍、档案材料、班级、班主任。例:部门编号、部门名称、联系电话、职能等可以抽象为部门实体的属性。其中编号为标识部门实体的码3合成全局概念模型各个局部E-R图建立好后,还需要对它们进行合并,集成为一个整体的数据概念结构即总E-R图。集成局部E-R图的步骤消除冲突,合并各分ER模型属性冲突命名冲突结构冲突消除冗余,得到基本ER模型 (一)消除冲突(1)属性冲突两类属性冲突属性域冲突:属性值的类型、取值范围或取值集合不同。例, 由于学号是数字,因此某些部门(将学号定义为整数形式,而另一些部门(将学号定义为字符型形式。属性取值单位冲突。例:学生的身高,有的以米为单位,有的以厘米为单位,有的以尺为单位。 (2)命名冲突两类命名冲突同名异义:不同意义的对象在不同的局部应用中具有相同的名字例,局部应用A中将教室称为房间局部应用B中将学生宿舍称为房间异名同义(一义多名):同一意义的对象在不同的局部应用中具有不同的名字例,有的部门把教科书称为课本有的部门则把教科书称为教材(3)结构冲突三类结构冲突同一对象在不同应用中具有不同的抽象例,“课程”在某一局部应用中被当作实体在另一局部应用中则被当作属性同一实体在不同局部视图中所包含的属性不完全相同,或者属性的排列次序不完全相同。实体之间的联系在不同局部视图中呈现不同的类型2.3.4逻辑结构设计概念模型向关系模型的转换应用规范化理论优化逻辑模型设计用户子模式1、E-R图向关系模型的转换转换原则 一个实体型转换为一个关系模式。关系的属性:实体型的属性关系的码:实体型的码例,学生实体可以转换为如下关系模式:学生(学号,姓名,出生日期,所在系,年级,平均成绩)性别、宿舍、班级、档案材料、教师、课程、教室、教科书都分别转换为一个关系模式。 一个m:n联系转换为一个关系模式。关系的属性:与该联系相连的各实体的码以及联系本身的属性关系的码:各实体码的组合例,“选修”联系是一个m:n联系,可以将它转换为如下关系模式,其中学号与课程号为关系的组合码:选修(学号,课程号,成绩) 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。1) 转换为一个独立的关系模式关系的属性:与该联系相连的各实体的码以及联系本身的属性关系的候选码:每个实体的码均是该关系的候选码2) 与某一端对应的关系模式合并合并后关系的属性:加入对应关系的码和联系本身的属性合并后关系的码:不变例,“管理”联系为1:1联系,可以有三种转换方法:(1)转换为一个独立的关系模式:管理(职工号,班级号)或 管理(职工号,班级号)(2)“管理”联系与班级关系模式合并,则只需在班级关系中加入教师关系的码,即职工号: 班级:(班级号,学生人数,职工号)(3)“管理”联系与教师关系模式合并,则只需在教师关系中加入班级关系的码,即班级号:教师:(职工号,姓名,性别,职称,班级号,是否为优秀班主任)5. 具有相同码的关系模式可合并。目的:减少系统中的关系个数。合并方法:将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性的次序。2、数据模型的优化数据库逻辑设计的结果不是唯一的。得到初步数据模型后,还应该适当地修改、调整数据模型的结构,以进一步提高数据库应用系统的性能,这就是数据模型的优化。关系数据模型的优化通常以规范化理论为指导。3、设计用户子模式定义用户外模式时应该更注重考虑用户的习惯与方便。2.3.5物理设计数据库物理设计阶段的任务是根据具体的计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。合理的两个含义要使设计出的物理数据库占用较少的存储空间对数据库的操作具有尽可能高的速度2.3.6数据库实施、运行和维护数据库的实施数据库的试运行数据库的运行和维护第三章 关系数据(选讲) 传统的集合运算专门的关系运算关系数据库检索实例2.1传统的集合运算并运算所有至少出现在两个关系中之一的元组集合。 记做: RS 两个关系R 和S 若进行并运算,则它们必须是相容的: 关系R 和S 必须是同元的,即它们的属性数目必须相同。 R 的第i 个属性的域必须和S 的第i 个属性的域相同。差运算所有出现在一个关系而不在另一关系中的元组集合。 记做: RSR 和S 必须是相容的。交运算 所有同时出现在两个关系中的元组集合。 记做: R n SR 和S 必须是相容的。 交运算可以通过差运算来重写: R n S = R - (R - S)笛卡尔积两个关系R ,S , 其度分别为n ,m , 则它们的笛卡尔积是R 中每个元组与S 中每个元组连接组成的新关系。 记做: R * SR * S 的度 为R 与S 的度之 和。 R * S 的 元组个数 为R 和S 的 元组个数的乘积。 2.2专门的关系运算投影运算选择运算连接运算除法运算投影运算连接运算定义从两个关系的广义笛卡儿积中选取给定属性间满足一定条件的元组。RS连接又分为:条件连接:一般的连接。等值连接:满足等值条件的连接。关系R 关系S自然连接定义 从两个关系的广义笛卡儿积中选取在相同属性列B 上取值相等 的元组,并去掉重复的行 。 自然连接与等值连接的不同:自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。 当R与S无相同属性时,R S RS。外连接外连接 为避免自然连接时因失配而发生的信息丢失,可以假定往 参与 连接的一方表中附加一个取值全为空 值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接 。 外连接 = 自然连接 + 失配的元组。 外连接的形式:左外连接、右外连接、全外连接 。 (LJN)左外连接 = 自然连接 + 左侧表中失配的元组。 (RJN)右外连接 = 自然连接 + 右侧表中失配的元组。 (FJN)全外连接 = 自然连接 + 两侧表中失配的元组。 除运算象集(Image Set) 关系R(X , Z), X, Z 是属性组,x 是X 上的取值,定义x 在R 中的象集为 Zx = tZ | tR tX= x 从R中选出在X上取值为x的元组,去掉X上的分量,只留Z上的分量关系除法运算分下面4步进行:1) 将被除关系的属性分为象集属性和结果属性两部分:与除关系相同的属性属于象集属性,不相同的属性属于结果属性。2) 在除关系中,对与被除关系相同的属性(象集属性)进行投影,得到除目标数据集。3) 将被除关系分组,分组原则是,结果属性值一样的元组为一组4) 逐一考察每个组,如果它的象集属性值中包括除目标数据集,则对应的结果属性值应属于该除法运算结果集.2.3关系数据检索实例例3:查询学生关系Student在学生姓名和所在系两个属性上的投影。Sname,Sdept( Student )或2,5( Student )例4:查询学生关系Student中都有那些院Sdept( Student)例5:求至少选修002号课和003号课程的学生学号 (1)建立临时关系 (2)做除法Spo,Cno( Student_Course )K (3)结果为:200100098第四章 关系数据库标准语言SQLSQL的数据描述和操作SQL语言的数据更新功能SQL语言的数据检索功能SQL语言的视图4.1 SQL的数据描述和操作定义基本表定义索引4.1.1定义基本表(一)基本表的定义(CREATE) CREATE TABLE ( , , ); :所要定义的基本表的名字 :组成该表的各个属性(列) :涉及相应属性列的完整性约束条件 :涉及一个或多个属性列的完整性约束条件 列的完整性约束条件(1)NOT NULL约束:是否允许字段值为空(2)UNIQUE约束:唯一性约束,不许重复(3)DEFAULT约束:默认值Publisher varchar(50) DEFAULT 科学出版社(4)CHEECK 约束:检查约束Copy int DEFAULT 0 CHECK (Copy=0 AND Copy=100)(5)PRIMARY KEY:主键约束JsmID varchar(11) PRIMARY KEY表的完整性约束条件格式:CONSTRAINT (1)UNIQUECONSTRAINT un_Book_Author UNIQUE(BookName,Author)(2)CHEKCONSTRAINT chk_Amt CHECK(Copy*Price1000)(3)PRIMARY KEY(4)FOREIGN KEY? 文本 varchar(50) 或者 char(50)长整型 integer整型 short双精度型 double,float单精度型 real货币 money备注 text日期/时间 date,time,datetime是/否 bit OLE 对象 OLEObject例如:建立一个学生基本表CREATE TABLE S ( S# CHAR(4),SN CHAR(8),AGE NUMBER,SEX CHAR(2),DEPT CHAR(2);例:建立包含完整性定义的学生基本表CREATE TABLE S ( S# CHAR(4) CONSTRAINT S_PRIM PRIMARY KEY,SN CHAR(8) CONSTRAINT SN_CONS NOT FULL,AGE NUMBER(2) CONSTRAINT AGE_CHE CHECK(AGE BETWEEN 15 AND 45),SEX CHAR(2) DEFAULT男,DEPT CHAR(2);(二)表的修改ALTER TABLEADD 完整性约束ADD CONSTERAINT DROP COLUMN DROP CONATRAINT ALTER COLUMU 完整性约束(1) ADD方式 使用 ADD 方式可以向表中增加列定义和表约束 语法格式: ALTER TABLE ADD (|, (|) 例:在S 表中增加一个班号列 ALTER TABLE SADD(CLASSNO CHAR(6); 例: 在S 表中增加一个完整性约束定义, 使DEPT 的取值只能在 “1” 到 “15” 之间 ALTER TABLE SADD (CHECK(DEPT BWTEEN “1”AND”15”);(2) MODIFY方式 该方式能对基本表中已有的列定义进行修改 语法格式: ALTER TABLE MODIFY ( 数据类型NULL|NOT NULL, ( 数据类型NULL|NOT NULL) 例:把S 表中S# 列加宽到10 为字符宽度 ALTER TABLE SMODIFY(S# CHAR(10);(3) DROP方式 该方式能删除基本表中已有的完整性约束定义 语法格式: ALTER TABLE DROP CONSTRAINT |PRMARY KEY|UNIQUE(,) 例:删除S 表中的主码 ALTER TABLE SDROP PRIMARY KEY(三) 改变基本表的名字RENAME TO (四) 删除基本表DROP TABLE 4.1.2 定义索引建立索引是加快查询速度的有效手段建立索引 DBA或表的属主(即建立表的人)根据需要建立 有些DBMS自动建立以下列上的索引 PRIMARY KEY UNIQUE 维护索引 DBMS自动完成 使用索引 DBMS自动选择是否使用索引以及使用哪些索引一:建立索引语句格式CREATE UNIQUE CLUSTER INDEX ON (, ); 用指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE表明此索引的每一个索引值只对应唯一的数据记录 CLUSTER表示要建立的索引是聚簇索引例:为学生-课程数据库中的Student,Course,SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDEX Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 二、删除索引 4.2 SQL语言的数据更新功能1 插入数据2 修改数据3 删除数据4.2.1 插入数据两种插入数据方式 插入单个元组 插入子查询结果1. 插入单个元组语句格式INSERTINTO (,)VALUES ( , )功能将新元组插入指定表中。 INTO子句 指定要插入数据的表名及属性列 属性列的顺序可与表定义中的顺序不一致 没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致 指定部分属性列:插入的元组在其余属性列上取空值VALUES子句 提供的值必须与INTO子句匹配 值的个数 值的类型例1 将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。INSERTINTO StudentVALUES (95020,陈冬,男,IS,18);例2 插入一条选课记录( 95020,1 )。INSERTINTO SC(Sno,Cno)VALUES ( 95020 , 1 );新插入的记录在Grade列上取空值DBMS在执行插入语句时会检查所插元组是否破坏表上已定义的完整性规则 实体完整性 参照完整性 用户定义的完整性 对于有NOT NULL 约束的属性列是否提供了非空值 对于 有UNIQUE 约束的属性列是否提供了非重复值 对于有值域约束的属性列所提供的属性值是否在值域范围内 4.2.2 修改数据语句格式UPDATE SET =,=WHERE ;功能 修改指定表中满足WHERE 子句条件的元组 SET子句 指定修改方式要修改的列修改后取值 WHERE 子句 指定要修改的元组缺省表示要修改表中的所有元组1. 修改某一个元组的值例4 将学生95001 的年龄改为22 岁。 UPDATE StudentSET Sage=22WHERE Sno= 95001 ; 2. 修改多个元组的值例5 将所有学生的年龄增加1岁。UPDATE StudentSET Sage= Sage+1;例6 将信息系所有学生的年龄增加1岁。UPDATE StudentSET Sage= Sage+1WHERE Sdept= IS ;DBMS在执行修改语句时会检查修改操作是否破坏表上已定义的完整性规则 实体完整性 主码不允许修改 用户定义的完整性 NOT NULL约束 UNIQUE约束 值域约束4.2.3 删除数据DELETEFROM WHERE ; 功能删除指定表中满足WHERE子句条件的元组 WHERE子句指定要删除的元组缺省表示要修改表中的所有元组例8 删除学号为95019的学生记录。DELETEFROM StudentWHERE Sno=95019;删除数据DBMS在执行删除语句时会检查所删除元组是否破坏表上
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沈阳师范大学《高层建筑结构设计》2023-2024学年第二学期期末试卷
- 外墙消防栓施工方案
- 2025签订买卖合同注意事项
- 2025至2031年中国床上用品四件套行业投资前景及策略咨询研究报告
- 圆弧木饰面施工方案
- 《体育教学方法与实践》课件
- 住宅防噪音施工方案
- 《气候变化课件》课件
- 2025至2030年中国花生碎仁数据监测研究报告
- 2025至2030年中国电子测高仪数据监测研究报告
- 2024年美国商用车和乘用车市场现状及上下游分析报告
- 幼儿园语言故事《阿里巴巴和四十大盗》课件
- 浙教版八年级信息技术上册《第8课网页的数据呈现》课件
- 便秘课件完整版本
- 2024-2029年波分复用器(WDM)行业市场现状供需分析及重点企业投资评估规划分析研究报告
- DB32T3748-2020 35kV及以下客户端变电所建设标准
- 家庭医生签约服务培训
- 《狼和鸭子》PPT课件小学幼儿园儿童故事表演幻灯片背景有音乐
- 中国近代三种建国方案
- 第2课+古代希腊罗马(教学设计)-【中职专用】《世界历史》(高教版2023基础模块)
- 工会制度牌模板
评论
0/150
提交评论