欢迎来到人人文库网! | 帮助中心 人人文档renrendoc.com美如初恋!
人人文库网
全部分类
  • 图纸下载>
  • 教育资料>
  • 专业文献>
  • 应用文书>
  • 行业资料>
  • 生活休闲>
  • 办公材料>
  • 毕业设计>
  • ImageVerifierCode 换一换
    首页 人人文库网 > 资源分类 > DOC文档下载  

    软考数据库系统工程师知识点讲解

    • 资源ID:10952114       资源大小:147KB        全文页数:40页
    • 资源格式: DOC        下载积分:20积分
    扫码快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
    二维码
    微信扫一扫登录

    手机扫码下载

    请使用微信 或支付宝 扫码支付

    • 扫码支付后即可登录下载文档,同时代表您同意《人人文库网用户协议》

    • 扫码过程中请勿刷新、关闭本页面,否则会导致文档资源下载失败

    • 支付成功后,可再次使用当前微信或支付宝扫码免费下载本资源,无需再次付费

    账号:
    密码:
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源(1积分=1元)下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软考数据库系统工程师知识点讲解

    目录一、数据模型 2二、数据库系统的结构 5三、关系数据库的标准语言 SQL.8四、数据库的存储结构 13五、关系数据库 .15六、关系数据库的规范化理论 函数依赖 .19七、数据库的安全与保护 20八、数据库应用系统的设计 .24九、数据库管理系统的设计与实现 29一、数据模型1.数据模型的三要素(1)数据结构 数据结构是所研究的对象类型 (Object Type)的集合。这些对象和对象类型是数据库的组成成分。一般可分为两类:一类是与数据类型、内容和其它性质有关的对象;一类是与数据之间的联系有关的对象。前者如网状模型中的数据项和记录,关系模型中的域、属性和关系等。后者如网状模型中的关系模型(set type)。在数据库领域中,通常按照数据结构的类型来命名数据模型,进而对数据库管理系统进行分类。如层次结构、网状结构和关系结构的数据模型分别称作为层次模型、网状模型和关系模型。相应地,数据库分别称作为层次数据库、网状数据库和关系数据库。(2)数据操作 数据操作是指对各种对象类型的实例 (或值)所允许执行的操作的集合,包括操作及有关的操作规则。在数据库中,主要的操作有检索和更新(包括插入、删除、修改) 两大类。数据模型定义了这些操作的定义、语法(即使用这些操作时所用的语言)。数据结构是对系统静态特性的描述,而数据操作是对系统动态特性的描述。两者既有联系,又有区别。(3)数据的约束条件 数据的约束条件是完整性规则的集合。完整性规则是指在给定的数据模型中,数据及其联系所具有的制约条件和依存条件,用以限制符合数据模型的数据库的状态以及状态的变化,确保数据的正确性、有效性和一致性。2.概念模型数据模型是数据库系统的核心和基础。每个 DBMS 软件都是基于某种数据模型的。为了把现实世界中的具体事物或事物之间的联系表示成 DBMS 所支持的数据模型,人们首先必须将现实世界的事物及其之间的联系进行抽象,转换为信息世界的概念模型;然后将信息世界的概念模型转换为机器世界的数据模型。也就是说,首先把现实世界中的客观对象抽象成一种信息结构。这种信息结构并不依赖于具体的计算机系统和 DBMS。然后,再把概念模型转换为某一计算机系统上某一 DBMS 所支持的数据模型。因此,概念模型是从现实世界到机器世界的一个中间层次。现实世界的事物反映到人的大脑之中,然后人们开始认识这些事物,经过选择、命名、分类和组织等抽象工作之后形成概念模型,并进入到信息世界。用户(user) 关心的是现实世界中的事物、事物的属性及其相互关系。例如,用户可能关心他的顾客及其属性,如顾客地址、银行帐号等等。用户也关心自己的定货帐目,如谁订的货、订的什么和订多少等等。系统分析员(analyst) 同样也关心现实世界,但是系统分析员需要分析用户的信息需求。作为需求分析的结果,分析员必须以文档的形式对需求进行结构化的描述;这个文档就是信息模型。实体(Entity) 实体是构成数据库的基本元素。实体是指一个存在的东西以区别这个东西所具有的属性和这个东西与其它东西的联系。实体可以是人,也可以是物;可以是实际对象,也可以是概念;可以是事物本身,也可以是指事物之间的联系。属性(Attribute) 一个实体可以由若干个属性来刻画。属性是相对实体而言的,是实体所具有的特性。关键字(Key) 能唯一地标识实体的属性的集合称为关键字(或码)。域(Domain) 属性的取值范围称作域。实体型(Entity Type) 一类实体所具有的共同特征或属性的集合称为实体型。一般用实体名及其属性来抽象地刻画一类实体的实体型。实体集(Entity Set) 同型实体的集合叫实体集。例如,学生就是一个实体集。实体集的名即是实体型。对于学生和(学号,姓名,年龄,系,年级)均是实体型,而学生是对实体型(学号,姓名,年龄,系,年级)所起的名称,两者是指同一客观对象。但本科生和研究生可以为相同实体型,而实体集不同。联系(Relationship) 现实世界的事物之间是有联系的。一般存在两类联系: 一是实体内部的组成实体的属性之间的联系,二是实体之间的联系。在考虑实体内部的联系时,是把属性看作为实体。一般来说,两个实体之间的联系可分为三种:(1)一对一 (11)联系 若对于实体集 A 中的每一个实体,实体集 B 中至多有唯一的一个实体与之联系,反之亦然,则称实体集 A 与实体集 B 具有一对一联系,记作 11。(2)一对多 (1n)联系 若对于实体集 A 中的每个实体,实体集 B 中有 n 个实体(n0)与之联系;反之,对于实体集 B 中的每一个实体,实体集 A 中至多只有一个实体与之联系,则称实体集 A 与实体集 B 有一对多联系,记为 1n。相应地有多对一(n1)联系 多对一联系,从本质上说,是一对多联系的逆转。其定义同一对多联系类似,不再赘述。(3)多对多 (mn)联系 若对于实体集 A 中的每一个实体,实体集 B 中有 n 个实体(n0)与之联系;反之,对于实体集 B 中的每一个实体,实体集 A 中也有 m个实体(m0)与之对应,则称实体集 A 与实体集 B 具有多对多联系,记作mn。实质上,多对多联系是任意一种联系。另外,同一实体集内的各个实体间也可以有各种联系。概念模型的表示方法最常用的是实体一联系方法(Entity-Relationship Approach),简称 E-R 方法。该方法是由 P.P.S.Chen 在 1976 年提出的。E-R 方法用 E-R 图来描述某一组织的概念模型。在这里仅介绍 E-R 图的要点。在 E-R 图中:(1)长方形框表示实体集,框内写上实体型的名称。(2)用椭圆框表示实体的属性,并用有向边把实体框及其属性框连接起来。(3)用菱形框表示实体间的联系,框内写上联系名,用无向边把菱形框及其有关的实体框连接起来,在旁边标明联系的种类。如果联系也具有属性,则把属性框和菱形框也用无向边连接上。3.三种主要的数据模型实际 DBMS 所支持的数据模型主要有三种:层次模型(Hierarchical Model)网状模型(Network Model)关系模型(Relational Model)其中,关系模型是当前 DBMS 所支持的数据模型的主流。90 年代运行的 DBMS 几乎都是基于关系模型的。层次模型和网状模型统称为非关系模型。非关系模型的结构可以和图论中的图相对应,比较直观,但在理论上不完备,实现效率较低,故此目前很少用。但是最近,层次模型在研究面向对象的 DBMS 中已得到重视。在关系模型中,数据在用户的观点中(或在用户视图中) 的逻辑结构是一张二维表(Table)。关系(Relation),对应于平常讲的一张表。元组(Tuple) ,表中的一行。属性(Attribute),表中的一列称为一个属性,给每一列起一个名,称为属性名。这一列或这个属性所有可能取的值的集合称为这个属性的值域(Domain),值域中的一个元素叫做这个属性的值。主关键字(Primary Key Attribute 或 Primary Key),是指能唯一标识一个元组的一个或一组属性。分量(Attribute value),是指元组中的一个属性值。关系模式(Relational Schema),是对关系的描述,一般用关系名 (属性名 1,属性名 2,属性名 n)来表示。同层次模型和网状模型相比较,关系模型具有下列特点:(1)概念单一 在关系模型中,无论是实体还是实体之间的联系都用关系来表示。在关系模型中,在用户的观点中,数据的逻辑结构就是表,也只有这唯一的概念。在非关系模型中,用户要区分记录型与记录型之间的联系两个概念;当环境复杂时,数据结构异常复杂,难以掌握。而关系模型,由于概念单一,可以变复杂为直观、简单,易学易用。(2)规范化 所谓关系规范化是指在关系模型中,每一个关系都要满足一定的条件要求。这些条件被称为规范条件。对于关系,一个最基本的规范条件是,要求关系中的每一个属性(或分量)均是不可分的数据项; 也就是说不允许表中有表,表是不可嵌套的。(3)在关系模型中,用户对数据的操作的输入和输出都是表,也就是说,用户通过操作旧表而得到一张新表。总之,关系模型概念简单,结构清晰,用户易学易用,有严格的以数学为基础的关系理论作指导,便于 DBMS 的实现。基于关系的 DBMS 简化了应用程序员的工作,便于数据库应用系统的设计和维护。故此,关系模型自诞生以后就得到了迅速的发展,成为应用最为广泛的、唯一的数据模型。二、数据库系统的结构1.数据库系统的三级模式结构数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式(external schema),或子模式(subschema)或用户模式(user schema),是指数据库用户所看到的数据结构,是用户看到的数据视图。模式(schema)或逻辑模式(logic schema),是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式(internal schema),或存储模式(storage schema),或物理模式(physical schema),是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。模式描述的是数据的全局的逻辑结构,决定了 DBMS 的功能。外模式涉及的仅是局部的逻辑结构,是模式的子集,是对模式的调用。数据库系统的三级模式是对数据进行三个层次抽象的工具。通过三级模式,把对数据的具体组织留给 DBMS来完成,使得用户能在高层次上处理数据的逻辑结构,而不必关心数据的物理结构。为了实现这三个层次这间的联系,DBMS 在沟通三级模式中提供了两个映象:外模式-模式映象模式-内模式映象(1)模式 模式规定了数据库中全部数据的一个逻辑表示或描述形式。模式既不同于内模式,也不同于外模式。它比内模式抽象,不涉及数据的物理结构和存储介质。它与具体的应用程序或高级语言无关。(2)外模式 外模式是个别用户的数据视图,即与某一应用有关的数据的逻辑表示。(3)内模式 内模式是全部数据库的内部表示或底层描述,是用来定义数据的物理结构和存取方式的。(4)二级映象 对于同一个模式,可以有任意多个外模式。外模式 -模式的映象定义了某个外模式和模式之间的对应关系。这些映象的定义通常包含在各自的外模式中。当模式改变时,外模式-模式的映象要做相应的改变,以保证外模式的不变性。这是数据库管理员(DBA)的责任。模式-内模式的映象定义了数据逻辑结构和存储结构之间的对应关系。例如,字段的内部表示等。当数据库的存储结构改变时,模式-内模式的映象也须做相应的修改,以使得模式保持不变性。这仍是 DBA 的责任。正是由于上述二级映象的功能及其自动实现,使得数据库系统中的数据具有较高的逻辑独立性和物理独立性,从而大大地方便了用户的使用。(5)概念模式与模式 ANSI 研究组于 1975 年 2 月提出一个临时报告。1978年提出一个最终报告,称之为 ANSI/SPARC 报告,简称为 SPARC 报告。SPARC 报告中指出,数据库管理系统应具有三级模式的结构,即概念模式、外模式和内模式。其中外模式和内模多与上面所讲的大致相当。但 SPARC 报告中的概念模式是指一个组织或部门所对应的现实世界的真实模型,即概念模型。概念模式仅描述实体及其属性和联系,不涉及机器世界的概念。概念模型是信息世界范畴内的信息的结构,而模式是机器世界范畴内的概念模型的逻辑表示。概念模型独立于具体的计算机系统,甚至是和计算机无关的,是一个组织或部门的模型。常用的描述概念模式的方法是 E-R 方法。模式是依赖于具体的计算机及其 DBMS 的。模式通过三种具体模型:层次模型、网状模型和关系模型来加以实现。概念模式必须转换成具体的数据模型,然后才能在相应的 DBMS 上实现。概念模型和模式都是描述信息或数据的整体结构的,然而它们是在不同的抽象层次上加以描述的。概念模型离机器更远,形式化程度低。从远离机器的观点看,概念模型更抽象些,但更接近现实世界。而模式描述使用的是形式化的语言-模式 DDL,而概念模型描述使用的是 E-R 图和一些自然语言。2.使用数据库的计算机系统结构广义地讲,实际上使用数据库的计算机系统由下列几个部分组成的:(1)硬件部分 包括主机、外部存储设备、网络设备和电源等。(2)软件部分 包括操作系统、DBMS 、编译系统和应用开发工具软件等。(3)人员 包括数据库管理员(Data Base Administrator-DBA),系统分析员(System Ana lyst)、应用程序员(Application Programmer)和用户(User)。3.数据库管理系统数据库管理系统 DBMS 是数据库系统的核心。DBMS 是负责数据库的建立、使用和维护的软件。DBMS 建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS 还承担着数据库的安全保护工作,按照 DBA 所规定的要求,保证数据库的完整性和安全性。DBMS 的主要功能包括以下几个主要方面:(1)数据库的定义功能 DBMS 通过提供数据描述语言 (也称数据定义语言)(Data Descriptive LanguageDDL)来对外模式、模式和内模式加以描述。然后模式翻译程序把用 DDL 写的各种模式的定义源码翻译成相应的内部表示,形成相应的目标形式,分别叫目标外模式、目标模式、目标内模式,这些目标模式是对数据库的描述,而不是数据本身。(目标)模式只刻画了数据库的形式或框架,而不包括数据库的内容。这些目标模式被保存在数据字典(或系统目标)之中,作为 DBMS 存取和管理数据的基本依据。例如,DBMS 根据这些模式定义,进行物理结构和逻辑结构的映象,进行逻辑结构和用户视图的映象,以导出用户要检索的数据的存取方式。(2)数据操纵功能 DBMS 提供数据操纵语言(Data Manipulation LanguageDML)实现对数据库中数据的一些基本操作,如:检索、插入、修改、删除和排序等等。DML 有两类:一类是嵌入主语言的,如嵌入到 C 或 COBOL 等高级语言中。这类 DML 语言本身不能单独使用,故此称为宿主型的 DML 或嵌入式 DML。另一类是非嵌入式语言(包括交互式命令语言和结构化语言),它的语法简单,可以独立使用,由单独的解释或编译系统来执行,所以一般称为自主型或自含型的 DML。命令语言是行结构语言,单条执行。结构化语言是命令语言的扩充或发展,增加了程序结构描述或过程控制功能,如循环、分支等功能。命令语言一般逐条解释执行。结构化语言可以解释执行,也可以编译执行。现在 DBMS 一般均提供命令语言的交互式环境和结构环境两种运行方式,供用户选择。DBMS 控制和执行 DML 语句(或 DML 程序 ),完成对数据库的操作。对于自主型的结构化的 DML,DBMS 通常采用解释执行的方法,但也有编译执行的方法,而且编译执行的越来越多。另外,很多系统同时设有解释和编译两种功能,由用户选其一。对于嵌入型或缩主型 DML,DBMS 一种提供两种方法:预编译方法。修改和扩充主语言编译程序(亦称增强编译方法)。预编译方法是,由DBMS 提供一个预处理程序,对源程序进行语法扫描,识别出 DML 语句,并把这些语句转换成主语言中的特殊调用语句。主语言必须和 DML 有调用接口。这样在连接形成目标时和主语言语句一起形成可执行的目标。(3)数据库运行管理 数据库运行期间的动态管理是 DBMS 的核心部分,包括并发控制、存取控制(或安全性检查、完整性约束条件的检查)、数据库内部的维护(如索引、数据字典的自动维护等)、缓冲区大小的设置等等。所有的数据库操作都是在这个控制部分的统一管理下,协同工作,以确保事务处理的正常运行,保证数据库的正确性、安全性和有效性。(4)数据库的建立和维护功能 数据库的建立和维护包括初始数据的装入、数据库的转储或后备功能、数据库恢复功能、数据库的重组织功能和性能分析等功能,这些功能一般都由各自对应的实用功能子程序来完成。DBMS 随软件产品和版本不同而有所差异。通常大型机上的 DBMS 功能最全,小型机上的DBMS 功能稍弱点,微机上的 DBMS 更弱些。但是,目前,由于硬件性能和价格的改进,微机上的 DBMS 功能越来越全。三、关系数据库的标准语言SQL 1.SQL 概述 SQL 的英语名称是结构查询语言(Structured Query Language)实际上它的功能包括查询(Query)、操纵(Manipulation)、定义(Definition)和控制(Control)四个方面,是一个综合的、通用的、功能极强的关系数据库语言。SQL 支持数据库的三级模式结构。2.SQL 的数据定义功能 SQL 的数据定义功能包括三部分:定义基本表,定义视图和定义索引。它们是:CREATE TABLE CREATE VIEW CREATE INDEX DROP TABLE DROP VIEW DROP INDEX SQL 的数据定义功能可用于定义和修改模式(如基本表),定义外模式(如视图)和内模式(如索引)。3.基本表的定义与删除定义基本表的语句格式为:CREATE TABLE 表名 (列名 1 类型NOT NULL,列名 2 类型NOT NULL)其他参数;其中,任选项“其它参数”是与物理存储有关的参数。根据具体系统的不同而不同。删除基本表的语句为:DROP TABLE 表名; 删除索引的语句为:DROP INDEX 索引名 ;删除索引的同时把有关索引的描述也从数据字典中删去。但表的内涵仍存在且其数据外延内容不变。把一个基本表的定义连同表上所有的记录、索引以及由此基本表导出的所有视图全部都删除,并释放相应的存储空间。4.索引的建立与删除对一个基本表,可以根据应用环境的需要建立若干索引,以提供多种存取方式。通常,索引的建立和删除由 DBA 或表的主人(即建立表的人)负责。用户不必也不能在存取数据时选择索引。存取路径的选择由系统自动进行。索引的描述存放在数据字典中。建立索引的语句格式为:CREATEUNIQUE INDEX 索引名 ON 基本表名(列名次序,列名次序)其他参数 ;这里的任选项 其他参数是与物理存储有关的参数。索引可以建在一列或几列上。圆括号内是索引列的顺序说明表。其中的任选项次序,指定了索引值排序的次序。可取 ASC(升序)或 DESC(降序)。缺省值为升序。UNIQUE 表示每一索引值只对应唯一的数据记录。5.SQL 的数据操纵功能SQL 的数据操纵功能包括 SELECT,INSERT,DELETE 和 UPDATE 四个语句,即检索和更新(包括增、删、改)两部分工能。检索就是查询。SQL 更新语句 SQL 的更新语句包括修改,删除和插入三类语句。修改(UPDATE)(亦称为更新)修改语句的一般格式为:UPDATE 表名SET 字段=表达式,字段 =表达式WHERE 谓词;修改指定表中满足谓词(或条件)的元组,把这些元组按 SET 子句中的表达式修改相应属性或字段上的值。删除(DELETE)删除语句一般格式为:DELETE FROM 表名WHERE 谓词;从指定表中删除满足谓词的那些记录。没有 WHERE 子句时表示删去此表中的全部记录,但此表的定义仍在数据字典中,只是一个空表。DELETE 只对表外延操作,不对内涵操作。插入(INSERT) 插入语句的一般格式为:INSERT INTO 表名(字段名,字段名)valueS(常量,常量);或INSERTINTO 表名 (字段名,字段名)子查询;第一种格式把一个新记录插入指定的表中。第二种格式把子查询的结果插入表中。若表中有些字段在插入语句中没有出现,则这些字段上的值取空值NULL。当然在表定义中说明了 NOT NULL 的字段在插入时不能取 NULL。若插入语句中没有指出字段名,则新记录必须在每个字段上均有值。6.视图视图是从一个或几个基本表(或视图)导出的表。某一用户可以定义若干视图。因此对某一用户而言,按 ANSI/SPARC 报告的观点,他的外模式是由若干基本表和若干视图组成的。视图和基本表不同,视图是一个虚表,即视图所对应的数据不实际存储在数据库中,数据库中只存储视图的定义(存在数据字典中)。视图一经定义就可以和基本表一样被查询、被删除(DROP),也可以用来定义新的视图,但更新(增、删、改)操作将有一定限制。视图可以理解成一个数据库,只有内涵保存在数据库字典中,而无外延存储;其外延是在使用时动态地生成的或计算出来的。(1)视图的定义与删除SQL 建立视图的语句格式为:CREATE VIEW 视图名(字段名,字段名)AS 子查询WITH CHECK OPTION 谓词;视图可以删除,语句格式为:DROP VIEW 视图名;视图的定义就从数据字典中删除。由此视图导出的其它视图也将自动被删除。若导出此视图的基本表删除了,则此视图也将自动删除。(2)视图的查询语句视图定义后,用户可以如同基本表那样对视图查询。(3)视图的更新语句对视图的更新最终要转换成对基本表的更新(这里的更新,指 INSERT,UPDATE 和 DELETE 三类操作)。在关系数据库中,并非所有的视图都是可更新的,也就是说,有些视图的更新不能唯一地有意义地转换成对基本表的更新。(4)视图的优点视图的概念具有很多优点,主要有:(1)视图对于数据库的重构造提供了一定程度的逻辑独立性;(2)简化了用户观点 ;(3)视图机制使不同的用户能以不同的方式看待同一数据;(4)视图机制对机密数据提供了自动的安全保护功能。7.SQL 的数据控制功能SQL 数据控制功能是指控制用户对数据的存取权力。某个用户对某类数据具有何种操作权力是由 DBA 决定的。这是个政策问题而不是技术问题。数据库管理系统的功能是保证这些决定的执行。为此它必须能:(1)把授权的决定告知系统,这是由 SQL 的 GRANT 和 REVOKE 语句来完成的。(2)把授权的结果存入数据字典。(3)当用户提出操作请求时,根据授权情况进行检查,以决定是执行操作请求还是拒绝之。授权语句的一般格式为:GRANT 权力,权力ON 对象类型对象名 TO 用户,用户 ,WITH GRANT OPTION;对不同类型的操作对象可有不同的操作权力。(1)对基本表、视图及其字段的操作权力有查询、插入、更新、删除以及它们的总和 ALL PRIVILEGE。(2)对基本表的操作权力还有修改(ALTER) 和建立索引 (INDEX)。(3)对数据库的操作权力有建立表(CREATETAB)。某用户有了此权力就可以使用 Create table 建立基本表。称他为表的主人,拥有对此表的一切操作权力。(4)对表空间的权力有使用(USE)数据库空间存储基本表的权力。(5)系统权力有建立新数据库(CREATEDBA) 的权力。GRANT 语句中的任选项 WITH GRANT OPTION 的作用是使获得某种权力的用户可以把权力再授予别的用户。8.嵌入式 SQL把 SQL 嵌入主语言使用时必须解决三个问题 :(1)区分 SQL 语句与主语言语句。这是通过在所有的 SQL 语句前加前缀EXEC SQL 来解决的。SQL 语句结束标志随主语言不同而不同,如 PL/1 用分号(;),COBOL 用 EMD-EXEC 来表示。SQL 语句首先由预编译程序加以处理,转换为主语言编译程序能够识别的形式,然后交主语言编译程序进一步处理。(2)数据库工作单元和程序工作单元之间的通信。SQL 语句中可以使用主语言的程序变量(简称主变量),这些变量名前加冒号(:)作标志,以区别地字段名,程序中使用的任何表(基本表或视图)都要用 EXEC SQL DECLARE 语句加以说明。一则使程序更加清晰,二则使预编译程序能作某些语法检查。SQL 语句执行后,系统要反馈给应用程序若干信息,这些信息送到 SQL 的通信区 SQL CA。SQL CA 用语句 EXEC SQL INCLUDE 加以定义。在 SQL CA 中有一个状态指示字段 SQL CODE。当 SQL CODE 为零时,表示 SQL 语句执行成功,否则返回一个错误代码(负值)或警告信息(正值) 。程序员应该在每个 SQL 语句之后测试 SQL CODE 的值,以便处理各种情况。(3)一个 SQL 语句原则上可产生或处理一组记录,而主语言一次只能处理一个记录,为此必须协调两种处理方式。这是用游标(Cursor)来解决的。下面首先讨论不需要游标的 DML 语句,然后讨论使用游标的 DML 语句。9.不用游标的 DML 语句不需要游标的 DML 语句有:查询结果为单记录的 SELECT 语句UPDATE(除了 CURRENT 形式的 UPDATE)语句 DELETE(除了 CURRENT 形式的 DELETE)语句 INSERT 语句(1)查询结果为单记录的 SELECT 语句这类语句的一般格式是:( 主语言为PL/1)EXEC SQL SELECT 目标列 INTO 主变量空值标志FROM 基本表( 或视图)WHERE 条件表达式;SELECT 语句从数据库中找到符合条件的记录,把结果放到主变量中。(2)UPDATE 语句(3)DELETE 语句(4)INSERT 语句10.使用游标的 DML 语句一般情况下 SELECT 语句的查询结果是记录的集合而不是单个记录,为此需要用游标机制作为桥梁,把集合操作转换为单记录处理。与游标有关的语句有四个:(1)定义游标。游标是与某一查询结果相联系的符号名。用 DECLARE 语句定义。这是一个说明语句。与游标相对应的 SELECT 语句这时并不执行。(2)打开(OPEN)游标。打开游标语句使游标处于活动状态。与游标相应的查询语句被执行。游标指向查询结果集中的第一个记录之前。(3)推进(FETCH)游标。把游标向前推进一个记录,并把游标指向的当前记录中的字段值取出,放到 INTO 子句后相应的主变量中。 FETCH 语句常常用于循环,以借助主语言功能逐一处理结果集中的数据。(4)关闭(CLOSE)游标。关闭游标,使它不再和原来的查询结果相联系。关闭了的游标可以再次被打开,与新的查询结果集相联系。使用 CURRENT 形式的 UPDATE 和删除语句应注意:(1)若游标定义中的 SELECT 语句带有 UNION 或 ORDER BY 子句,或者这个 SELECT 语句相当于定义了一个不可更新的视图,则不能用这两个更新语句。(2)若使用 CURRENT 形式的 UPDATE 语句,则游标定义中要包括 FOR UPDATE 子句,指出更新的字段(SET 子句中使用的字段)。因此,游标定义语句的一般格式为:EXEC SQL DECLARE 游标名 CURSOR FOR 子查询 UNION 子查询FOR UPDATE OF 字段名,字段名|ORDER-BY-子句;11.SQL 的事务处理功能(1)事务处理的概述所谓事务(Transaction) 是指一系列动作的组合,这些动作被当作一个整体来处理。这些动作或者相继都被执行,或者什么也不做。在数据库中,一个动作是指一个 SQL 语句。事务是一组 SQL 语句组成的一个逻辑单位。要么这些 SQL 语句全部被按顺序正确执行,要么在某 SQL 语句执行失败时,按照用户要求,取消已执行的 SQL 语句对数据库中数据的修改。或者要么事务中 SQL 语句都被正确执行,完成该事务对数据库中数据的所有操作 ;或者要么相当于一条 SQL 语句也未执行,数据库数据未做任何改动。(2)SQL 语言的事务处理语句 SQL 语言有 3 条语句用于事务处理,它们是:(1)Commit 语句,对于正确执行了的事务进行提交,进行提交即对数据库中数据的修改永久化。同时还释放事务和封锁,标志该事务结束。(2)Save point 语句,定义事务中的一个回滚保留点,它是事务恢复时的一个标记点。(3)rollback 语句,无论事务执行的当前位置在哪里,该语句的执行要么取消事务执行以来对数据库的全部修改,要么取消至某个指定回滚点后对数据库的全部修改。释放自保留点之后的全部表或行的封锁(没有保留点,相当于回滚到事务开始处,终止该事务)。事务的恢复(回滚)是根据事务执行前保存下的当时数据库状态来实现的。一遇到 rollback 语句,就将数据库中数据恢复到原来的状态,相当于撤消事务中已执行了的 SQL 语句。四、数据库的存储结构 数据库的存储结构不同于一般文件系统的存储结构。数据库数据的特点是各种记录型之间彼此有联系,数据是结构化的。数据的存储结构不仅涉及每种记录型的记录如何存储,而且要使数据的存储反映各种记录型之间的联系。在 DB多级模式中引入内模式(存储模式)的主要目的是使模式的数据结构的描述同它的存储表示的描述分开,以致 DBA 为了协调数据库性能而对数据库数据的存储方法进行修改时,可不必修改模式,以提高数据库的物理独立性。在各个数据库管理系统中,对内模式的定义功能各不相同。在关系数据库管理系统中有些 DDL 语句可影响数据库的存储结构。在 DBMS 中各级模式的存储结构是恒定的或唯一的,而数据库内容(或其记录)的存储方式是不唯一的。数据库存储结构设计的好坏直接影响系统的性能。在存储结构中主要是涉及存储记录的设计。存储记录与概念记录之间具有对应关系,如果存储记录与概念记录之间具有一一对应关系,在这种情况下存储记录的设计就比较简单,不需要进一步讨论。概念记录是指在逻辑结构中的记录。但当一个概念记录对应多个不同类型的存储记录时,存在如何设计存储记录的问题。对于这样的概念记录,其存储记录可以有以下几种设计:1.顺序组织将存储记录设计成与概念记录一一对应,按 SNO 大小(或按记录到来) 的顺序将记录组成一个顺序组织的文件。这样组织的优点是结构简单,缺点是会浪费存储空间。2.顺序带链的组织顺序带链组织允许记录中带有指针(Pointer),这样可以大大节省存储空间。3.带次关键字索引的顺序组织为了适应对多项内容的检索,可以建立索引文件,上述组织可改为带次关键字索引的顺序组织。4.多表组织在次关键字索引中,由于一个次关键字值对应于多个记录值,它们的个数是不固定的,所以对应的指针数目是可变的。这种可变性给管理带来困难,为了解决这个困难,引入了多表组织。多表组织的实现思想比较简单,在索引中多个指针分散存放在每个记录值中,索引项中的指针指向第一个记录,在第一个记录中的指针指向第二个记录等等。5.完全倒排组织在一个记录型中,对主关键字以外的数据项都建立索引,这样的组织称之为完全倒排组织。6.Hash 定址组织对于每一个存储记录值存放在数据库的什么地方,可通过对该记录的主关键字值的杂凑函数计算得出。这种组织为 Hash 定址组织。杂凑函数种类很多,如质数除余法、基数转换法、平方取中法、折叠法、位移法及各位数字分析法等等。关键是如何选择一个杂凑函数,尽可能避免发生碰撞。对于不同的主关键字值通过计算而得到同一个地址的映象,称之为碰撞。7.联系的存储在关系数据库中,通过外来关键字(Foreign Key)来表示概念记录之间的联系。例如,为了表达学生和学校的联系,可以在学生记录中增加外来关键字“学校号”来表示联系。五、关系数据库 1.表格表格(或简称表) 表示了用户的特定类型(Type)的一些实体。表头由一些属性名(Attribute Name)组成,每个属性名对应于一列。在表上属性名必须唯一,不允许重名。表体是由一些行或元组(tuple)、或记录(record)组成。一个元组对应于传统的文件结构中的一个记录,一个记录含有若干个域(field)用以存储属性值(Attribute value)。一个元组对应于一个“用户”实体的出现(occurrence)。表体中每一行和某一列的交叉点(相当于记录中的域)上保存一个属性值。这个属性值叫做这一行(或这个实体出现)的相应属性值。表体中每一列可以保存的值对应于某种属性类型(Type of Attribute),也就是说,这一列的属性值只能取这个属性类型的值。某个属性所能取的所有值的集合叫做这个属性的值域(Domain of Attribute)。类型和值域的对应关系是一对多的。一个类型有一个值域,但一个值域可以作为多个类型,基名称不同,但实质上值域一样。实际上,类型是对值域的命名。能唯一标识一个元组的属性称之为关键属性(Primary Key Attribute)或简称为主关键字(Primary Key)。主关键字有时是由多个属性组成的,此时的主关键字叫做组合关键字(Concatenated primary Key)。有的时候,表中必须由一些组合的主关键字才能唯一地标识一个元组,也就是说,不存在能作关键字的一个属性。这时为了方便,往往引入一个附加的属性并称之为外来关键字(Foreigh Key)来作主关键字。外来关键字为以后检索和查询带来了方便,但也增加了信息冗余。2.表名、表头和表体表名、表头和表体在关系模型中具有不同的作用或功能,因而也具有完全不同的性质。表头是一个属性的集合,它规定了表的结构。表体是一个特殊的集体,称作为关系(relation)。 “关系模型”中的“关系”一词就是指表体中的这个数学关系。在关系数据库中,表名对应于数据库名(或关系名),表头对应于数据描述(或结构描述) ,表体对应于数据库。表体是数据库的内容及数据库操作的对象。另外,有两个概念必须加以强调:型(type)和值或出现(occurence) 。表头定义了实体(或元组) 的型,也就是说规定了实体(或元组)的值域。而表体则给出了实体(或元组) 的出现。出现是型中的一个值。3.关系的数学定义关系模型是建立在集合论(Set Theory)的基础之上的。现在,开始用集合论的术语来严格地定义数学上的关系,即给出关系的数学定义。定义 1 域(Domain)是值(value)的集合。4.关系模型关系模型由三部分组成:数据结构(即关系)、关系操作、关系的完整性。下面将对这三个部分进行分别的讨论。(1)单一的数据结构关系 在关系模型中,无论是实体还是实体之间的联系均由单一的类型结构关系来表示。在前面,已给出了关系和域的数学定义,介绍了 n 元关系、元组和属性等概念。下面介绍关键字、关系模式和关系数据库等一些基本概念。关键字 关系中的某一组属性,若其值可以唯一地标识一个元组,则称该属性组为一个候选关键字(Candidate Key)。若一个关系有多个候选关键字,则可以任选其中一个作为主关键字(Primary Key)。主关键字中的诸属性被称为主属性。关系模式 关系的描述称为关系模式。它包括:关系名、组成关系的诸属性名、属性到域的映象、属性间的数据依赖关系等等。所以,关系模式由关系名、诸属性名和属性到域的映象三个部分组成,关系模式通常简记为 R(A 1 ,A 2 ,A n ),其中 R 是关系名,A 1 ,A 2 ,A n 为诸属性名。属性到域的映象一般通过指定属性的类型和长度来说明。某个关系模式在某一时刻所具有的状态是指关系的外延,即元组的集合。关系的外延内容有时简称为关系。但关系模式和关系的内容有时也统称为关系。读者可以从上下文中区别其确切的含义。形象地说,关系模式是关于表名和表头的描述,而关系的内容是表体。关系数据库 在关系数据库中,要分清型和值两个基本概念。关系数据库的型是指数据库的结构描述,它包括关系数据库名、若干属性的定义,以及这些属性上的若干关系关系模式。亦称为数据库的内涵(Intension) ,数据库的值亦称为数据库的外延。在关系数据库中,内涵是比较稳定的,它规定了外延的取值范围。而外延却是随时间变化的。这和在一般的形式逻辑中外延和内涵一一对应有所区别。此处外延是指任意一个满足内涵的集合,而不一定恒指满足内涵的最大的一个集合。关系模式(即内涵) 是稳定的 ;而关系的内容,即外延,却是随时间动态的变化而变化的。数据库的结构(即模式) 是稳定的;而数据库中的数据内容却在不断地更新。(2)关系操作 关系模型规定了关系操作的功能和特点,但不对 DBMS 语言的语法做出具体的规定。关系数据库语言的主要特点(或优点)是其高度的非过程化(Non-procedureae)或者说明性 (declarative)。关系数据库语言的语句是透明的。用户只须知道语句做什么,而不须知道怎么做的。Codd 在其早期的文章中,引入了 8 种基本的操作:并(Union)交(Intersection)差(Difference)笛卡尔乘积(Cartesian Product)限制(Restrictions) 投影(Projection)连接(Join)除(Division)这些操作都是对关系的内容或表体实施操作的,得到的结果仍为关系。注意,这些操作只是基本的操作,而不是不再可分的原始(Primitive)操作,例如,Join, Intersection 和 Division 可以由其它五种操作合成。但是,把它们三个也作为基本操作使用起来很方便。另外,Codd 并没说上述 8 种操作就是关系数据库只能有的 8 种操作。实际上,上述 8 种操作仅仅是作为最小的 DML 操作的基础部分,并且也还未考虑到 DDL 的需求。SQL 支持的操作多于上述 8 种 DML操作,而且 SQL 还支持 DDL 操作。关系操作的特点是集合操作,即操作的对象和结果都是集合。这种操作方式也称为一次一集合(set-at-a-time)方式。而非关系模型的数据库的操作方式则为一次一记录(record-at-a-time)方式。关系操作可以用两种方式来表示:代数方式,即关系代数逻辑方式,即关系演算而关系演算又进一步分为元组关系演算和域关系演算。已经证明,这些表示方式在功能上是相互等价的。一般选其一即可。(3)关系模型的三类完整性 关系模型的三类完整性是:实体完整性(Entity Integrity)参照完整性(Referential Integrity)用户定义的完整性(User Defined Integrity)其中,实体完整性和参照完整性是任何关系模型都必须满足的完整性约束条件,应该由关系数据库 DBMS 自动支持。而用户定义的完整性的支持是由 DBMS 提供完整性定义设施(或机制),可以随 DBMS 商品软件不同而有所变化。实体完整性是指: 若属性 A 是基本关系 R 的主关键字的属性(即主属性),则属性 A 不能取空值(NULL)。在关系数据库中有各种关系,如基本关系(常称为基本表)、查询表、视图表等等。基本表是指实际存在的表,它是实际存储数据的逻辑表示。查询表是指和查询结果相对应的表。而视图表是由基本表或视图表导出的表,是虚表,不对应实际存储的数据。实体完整性是针对基本关系的。空值是指“不知道”或者“无意义的”或“不属于定义域”值。空值以“NULL”表示。对于实体完整性作如下说明:(1)一个基本关系通常对应于现实世界中的一个实体集。例如学生关系对应于学生实体集。基本关系不是由其它关系生成的关系。基本关系是本原(Primitive),是定义复杂关系的出发点。(2)现实世界中的实体是可区分的,即实体具有某种唯一性的标识。(3)在关系模型中由主关键字作为满足唯一性的标识。(4)主关键字中属性不能取空值。因为若主关键字中某属性取空值,则意味着某个实体不可标识;而这和(2)相矛盾。参照完整性是指:若基本关系 R 中含有另一个基本关系 S 的主关键字 K S 所对应的属性组 F(F 称为 R 的外部关键字(external keys),则在关系 R 中的每个元组中的 F 上的值必须满足:或者取空值(即 F 中的每个属性的值均为空值 );或等于 S 中某个元组的主关键字的值。基本关系 R 和 S 不一定是不同的关系。外部关键字也称为外来关键字。例如,某数据库中有职工关系 EMP(职工号,姓名,部门号)和部门关系 DEPT(部门号,部门名称)为两个基本关系。关系 EMP 的主关键字为 “职工号” ,DEPT 的主关键字为“部门号”在 EMP 中,“部门号”是 EMP 的外部关键字。故此,在 EMP 中的每个元组中“部门号”的值只有两种可能性:取空值。这说明这个职工尚未分到某个部门;或取非空值。这时“部门号”的值必须是 DEPT 中某个元组中的“部门号”的值。这说明一个职工不可能被分配到一个不存在的部门。也就是说,被参照的关系 DEPT 中一定存在一个元组,该元组的关键字的值等于 EMP 中某元组的外部关键字的值。实体完整性和参照完整性是针对任何关系数据库系统的所有数据库的一般性原则。用户定义的完整性针对某一具体的数据库的约束条件。条件是由现实世界中的应用环境决定的。它涉及到某一具体的应用中的数据所必须满足的语义要求。关型模型的 DBMS 应提供定义和检验这类完整性条件的机制,以使用统一的方法来自动地处理它们而不要求应用程序员来承担这一功能。5.关系数据库语言概述关系数据库语言分三类:数据描述语言 DDL,数据操纵语言 DML 和数据控制语言 DCL。其中,DDL 负责数据库的描述,提供一种数据描述机制,用来描述数据库的特征或数据的逻辑结构。DML 负责数据库的操作,提供一种处理数据库操作的机制。DCL 负责控制数据库的完整性和安全性,提供一种检验完整性和保证安全的机制。DML 是用户经常使用的语言,包括了 DBMS 的主要功能。DML 包括数据查询和数据的增、删、改等功能。其中查询的表达方式是DML 的主要部分。关系数据库的 DML 按照查询方式可以分为两大类:(1)用对关系的集合代数运算来表示查询的方式,称为关系代数(Relational Algebra)。(2)用谓词演算来表达查询的方式,称为关系演算(Relational Calculus)。关系演算又可按谓词变元的基本对象是元组变量(tuple variable)还是域变量(domain variable)分为元组关系演算和域关系演算两种。关系代数和两种关系演算均是抽象的查询语言,这些抽象的查询语言和实际的 DBMS 软件产品中实现的具体的查询语言并不完全一样。但它们是 DBMS 中查询语言的理论基础。关系代数、元组关系演算和域关系演算这三种语言在表达能力上是彼此相互等价的,它们均可以作为评价实际 DBMS 软件产品中查询语言能力的标准。实际 DBMS 软件产品的查询语言,除了提供关系代数(或一种关系演算)之外,还提供了许多附加的功能,如库函数、算术运算等功能。SQL 是介于关系代数,和关系演算之间的一种语言。SQL 不仅具有丰富的查询功能,而且还具有数据库定义和数据库控制功能。SQL 是集 DDL、DML、DCL 为一体的标准的关系数据库语言。SQL 充分体现了关系数据库语言的优点。6.关系代数关系代数中的运算可以分为两类:(1)传统的集合运算,如并、交、差、笛卡尔乘积等。这类运算是从关系的“水平方向(即按行) ”来进行的。(2)专门的关系运算,如选择、投影、连接、除。这类运算不仅涉及到行而且也涉及到列。7.关系演算关系演算是以数理逻辑中的谓词演算为基础的。用谓词演算作为关系数据库的语言并提出关系演算的是 E.F.Codd。Codd 首先定义了关系演算语言ALPHA。但 ALPHA 并没有在计算机上实现。但关系数据库管理系统 INGRES所用的 QUEL 语言是参考 ALPHA 研制的,与 ALPHA 十分类似。六、关系数据库的规范化理论 函数依赖定义 1 设 R(U)是属性集 U 上的关系模式。X ,Y 是 U 的子集。若对于R(U)的任意一个可能的关系 r,r 中不可能存在两个元组在 X 上的属性值相等,而在 Y 上的属性值不等,则称X 函数确定 Y或Y 函数依赖于 X,记作XY。函数依赖和别的数据依赖一样是语义范畴的概念。只能根据语义来确定一个函数依赖。例如姓名年龄这个函数依赖只有在没有同名人的条件下成立。如果允许有相同名字,则年龄就不再函数依赖于姓名了。设计者也可以对现实世界作强制的规定。例如规定不允许同名人出现,因而使姓名年龄函数依赖成立。这样当插入某个元组时这个元组上的属性值必须满足规定的函数依赖,若发现有同名人存在,则拒绝插入该元组。注意,函数依赖不是指关系模式 R的某个或某些关系满足的约束条件,而是指 R 的一切关系均要满足的约束条件。七、数据库的安全与保护 1.安全性数据库的安全性是指保护数据库以防止不合法的或非正常的使用所造成的数据泄露、更改或破坏。安全性问题不是数据库系统所独有的,计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多用户直接共享,是十分重要的信息资源。从而使安全性问题变得更为突出。系统安全保护措施是否有效是数据库系统的主要性能指标之一。对于数据库的安全保密方式可以有系统处理的和物理的两个方面。所谓物理的是指,对于强力逼迫透露口令、在通信线路上窃听、以至盗窃物理存储设备等行为。对此所采取的措施是将数据编为密码,加强警卫以识别用户身份和保护存储设备等措施。在一般计算机系统中,安全措施是一级一级层层设置的。(1)用户标识和鉴定首先,系统提供一定的方式让用户标识自己的名字或身份。系统进行核实,通过鉴定后才提供机器使用权。常用的方法有:用一个用户名或者用户标识号来标明用户身份。系统鉴别此用户是否是合法用户。若是,则可以进入下一步的核实;若不是,则不能使用计算机。用户名的登录只由系统管理员进行,一般用户不能实施用户名登录。口令(Password),为了进一步核实用户,系统常常要求用户输入口令。(2)存取控制对于获得上机权的用户还要根据预先定义好的用户权限进行存取控制,保证用户只能存取他有权存取的数据。所谓用户权限是指不同的用户对于不同的数据对象允许执行的操作权限。它由两部分组成,一是数据对象,二是操作类型。数据对象有二类。一类是数据本身,如关系数据库中的表、字段,非关系数据库中的记录、字段(亦称为数据项)。另一类是外模式、模式、内模式。在关系系统中 DBA 可以把建立、修改基本表的权力授予用户,用户获得此权力后可以建立基本表、索引、视图。这说明关系系统中存取控制的数据对象不仅有数据而且有模式、外模式、内模式等数据字典中的内容。对于存取权限的定义称为授权(Authorization)。这些定义经过编译后存储在数据字典中。每当用户发出存取数据库的操作请求后,DBMS 查找数据字典,根据用户权限进行合法权限检查(Authorization Check)。若用户的操作请求超出了定义的权限,系统拒绝执行此操作。授权编译程序和合法权限检查机制一起组成了安全性子系统。衡量授权子系统精巧程度的另一个尽度是否提供与数据值有关的授权。有的系统还允许存取谓词中引用系统变量,如一天中的时刻,终端设备号。这样用户只能在某台终端、某段时间内存取有关数据,这就是与时间和地点有关的存取权限。另外,在操作系统中对文件、目标等的存取还有一些安全保护措施。其中加密是一种防止数据内容被别人引用或了解的切实可行的办法。加密有程序加密和硬件加密卡两种形式。2.完整性数据库的完整性是指数据的正确性和相容性。DBMS 必须提供一种功能来保证数据库中数据的完整性。这种功能亦称为完整性检查,即系统用一定的机制来检查数据库中的数据是否满足规定的条件。这种条件在数据库中称为完整性约束条件。数据的约束条件是语义的体现,这些完整性约束条件将作为模式的一部分存放数据字典中。数据的完整性和安全性是两个不同的概念。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garbage In Garbage Out)所造成的无效操作和错误结果。而后者是保护数据库防止恶意的破坏和非法的存取。当然,完整性和安全性是密切相关的。特别从系统实现的方法来看,往往

    注意事项

    本文(软考数据库系统工程师知识点讲解)为本站会员(咸****下)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    网站客服QQ:2881952447     

    copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

    备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!