Oracle11g数据库最佳入门教程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-04 20:02:26

点击下载

作者:萧文龙,李逸婕,张雅茜

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Oracle11g数据库最佳入门教程

Oracle11g数据库最佳入门教程试读:

版权信息书名:Oracle11g数据库最佳入门教程作者:萧文龙,李逸婕,张雅茜排版:辛萌哒出版社:清华大学出版社出版时间:2014-01-01ISBN:9787302337553本书由清华大学出版社有限公司授权北京当当科文电子商务有限公司制作与发行。— · 版权所有 侵权必究 · —前 言

笔者参与开发过许多有关网络和数据库的项目,也培训过不少学习数据库的学员,目前正在做有关ERP的相关研究。

对于企业的管理信息系统而言,数据库是最基本的需求,数据库管理几乎是各大院校中计算机相关专业必开的一门课程。然而,笔者在面试计算机相关专业的毕业生时,有相当高比例的毕业生学过数据库的管理,却没有能力管理一个小型的数据库。笔者进入学术界不久,除了引进Oracle的OAI课程训练外,也实际教授数据库课程,学生在学习一到两个学期后,大部分都能理解和管理小型的信息系统,其中最重要的就是让每个学生实际去建立一个小型的数据库系统,这也是本书的主要目的之一。另外,本书的内容可以在一到两个学期内教授完毕,课程结束时也是验收学员成果的时候。

笔者在教授进阶的数据库或专题时,有不少数据库的学员反映备份与恢复很难,再加上使用JSP开发网页连接Oracle数据库,更是令学员头痛的问题,因此本书以Oracle 11g为蓝本,系统讲述了数据库的原理、Oracle 11g的功能和应用,并特别加强备份、恢复和使用ASP和JSP开发网页连接Oracle数据库的内容。

本书共分17章,在讲述数据库原理的同时,详细介绍了数据库简介、数据库的安装和管理工具、数据库的管理、表空间的管理、表的管理、数据的操作与管理、E-R模型转换成关系表、用户与权限的管理、生产管理系统实战、Schema对象的管理、单行函数的应用、企业数据管理实战入门、企业数据管理实战进阶、通过ASP和JSP程序访问Oracle 11g数据库、使用JSP开发生产管理系统、Enterprise Manager实战入门、Enterprise Manager实战进阶等。附录中还给出了下载Oracle 11g数据库、下载/安装/卸载Oracle 11g客户端管理工具的操作步骤,以及Oracle SQL的常用命令语法等,方便读者参考。

本书适合作为高等院校本、专科计算机软件、信息系统、电子商务等相关专业的数据库课程教材,同时也适合作为各种数据库技术培训班的教材以及数据库开发人员的参考资料。

最后,感谢每一位读者,由于你们的支持,才有更好的作品出现,编著此书时虽力求完美,但学识及经验尚有不足,敬请读者不吝指正。

读者可以在http://www.tup.com.cn网站中下载本书所有源代码及实例程序。编 者2013.8  第1章数据库简介1-1 Oracle 11g简介

现今已有多种数据库,例如:Oracle、SQL Server、MySQL、DB2等,那为什么要选择学习Oracle数据库技术呢?在选择学习某项技术时,需要考虑许多方面,例如:数据库的特性、成本、开发环境、应用软件、专业服务等。

首先来谈谈Oracle数据库的特性,其实一直以来Oracle数据库都具有支持跨平台的特性,Oracle 11g也不例外,而且Oracle 11g数据库除了支持网格(Grid)运算外,它还特别支持目前最先进的云端(Cloud)运算,因此成为领先全球数据库的品牌。

其次我们要说明Oracle数据库的开发环境与其应用软件的部分,在Oracle 11g数据库里,除了支持微软的各种开发程序语言外,也支持Java的J2EE,在本书中将介绍ASP与JSP语言存取Oracle 11g数据库的操作。Oracle数据库当然不仅支持各种开发程序语言,它也能支持企业所需要的各种应用软件,例如:ERP企业资源规划、SCM供应链管理系统、CRM客户关系管理系统、HRM人力资源管理系统、BI商业智能、Midsize Companies中型公司解决方案,以及Business Integration商业整合等各种不同的信息管理系统。除此之外,Oracle还提供各行业所需的专业服务。

最后将说明Oracle数据库的成本问题,在过去,Oracle数据库总是给人价格昂贵的印象,但是经过近几年的价格调整后,Oracle数据库入门版本的价格已与其他数据库价格相差不多,在价格相差不多的情况下,当然要选择一个功能强大且能提供各种支持的数据库。

Oracle 11g数据库与之前的版本有所不同,其新特点如下所示。● Real Application Testing(实时应用测试):无论是操作系统、服务器或软件都采用新技术,以降低其风险和成本。● Advanced Compression(进阶压缩):压缩结构化和非结构化的所有数据,能够有效利用资源并降低存储成本。● Total Recall:为长期存储的数据提供安全、高效率、易使用及应用容易的解决方案。● Active Data Guard:针对一个备用数据库提升其删除数据密集的灾害保护,进而提高整体服务质量。● Flashback Transaction(回闪交易):可以取消错误,并进行备份和恢复功能。● Data Recovery Advisor(数据恢复顾问):自动诊断错误,提出修复选项给用户,以减少平均恢复的时间,从而提高可管理性和可靠性。● LOBs:用来存储大型对象,包括影像、大型纯文本对象等。● Query Result Cache(查询结果快取):用来存储检索快取的结果。将经常执行的查询存储于此,让下次查询的速度快于重新运行,从而提高性能。1-1-1 Oracle 11g数据库产品版本

Oracle Database的版本包括Enterprise、Standard和Standard One等三种版本。● Enterprise Edition:具有高效能、延展性、安全性及可靠性等多种选择,以满足客户需求。● Standard Edition:拥有Oracle 11g数据库的所有基本功能,价格合理。● Standard Edition One:一个使用者只须支付180美元,将被允许使用小的且拥有两个socket的版本。

产品的详细对比如下表所示。StandardEnterprise使用功能版本版本Total Recall(为长期存储的数据提供安 Option全、高效率、易使用及容易应用的解决方案)Active Data Guard(针对一个备用数据库 Option提升其删除数据密集的灾害保护,进而提高整体服务质量)Fail Safe(与Microsoft Cluster Server具有高度兼容性,可在Server故障时自动√√切换到另一台Server)Flashback Query(可将错误恢复,即恢√√复到错误前的状态)Flashback Table,Database and  Transaction Query(取消诊断错误,使√还原时间缩短)Server Managed Backed and Recovery(利用此功能可更简单且更自√√动化地完成备份与还原的工作)Real Application Clusters(可提供极高的容错性、性能和可延展性,适用于任何√√套件或自定义的应用软件)Real Application Clusters One Node(是 Option一个节点版本,让客户能够在单一模型中部署他们对数据库的需求)Integrated Clusterware(内置的丛集服√√务,用来保护任何有关Oracle的应用)Automatic Workload Management(将需求以最低的工作量分配给适当的服务√√器,并在失败时自动重新分配)Java,PL/SQL Native Compilation(将数据库部署在Java和PL/SQL,并将过程写√√入)In-Memory Database Cache(通过在内 Option存中快取数据,实现较短的响应时间)Oracle Database Vault(限制Super User Option和特权用户使用未授权的应用和数据库)Oracle Advanced Security(地址隐私和 Option法规要求)Oracle Label Security(根据数据列卷标 Option提供高度的安全性)Secure Application Roles(可以授予用户和其他角色,一旦授予一个用户且用户 成功进行身份验证,则该角色可以被设√置为默认角色,且与他相关的特权可给予用户使用Virtual Private Database(遵从隐私和法 √规来执行复杂的安全要求)Fine-Grained Auditing(允许指定的审 √计)Proxy Authentication(允许使用所有数据√√库的安全性功能)Data Encryption Toolkit(提供一个额外√√的保护层,用来存储重要的数据)Oracle SQL Developer(图形化接口工√√具)Application Express(快速Web应用开发√√工具)Java Support(通过Web服务启动数据√√库)Comprehensive XML Support(使用标准√√访问方法操作和查询XML)Comprehensive Microsoft,Net Support OLE DB,ODBC(支持多种Windows数√√据访问方法)Real Application Testing(无论是操作系 Option统、服务器或软件都采用新技术,以降低其风险和成本)Enterprise Manager(通过一个堆栈且整合而成的控制台来管理和监控所有的应√√用程序和系统)Automatic Memory Management(可自动√√化管理数据的共享)Automatic Storage Management(在所有服务器和存储平台中都使用一致的管理√√接口)Automatic Undo Management(监控所有√√Oracle系统的设置、安全设置和存储)Oracle Exadata Storage Server(用于提 √高数据库查询的性能)Oracle Database Machine(这是一个完整的系统,包含软件、服务器、网络和 √存储器,其指令周期比传统的系统至少快10倍)Advanced Compression(压缩所有结构 Option化和非结构化的数据,能够有效利用资源并降低存储成本)OLAP(在内置的分析工作区进行在线分 Option析处理)Partitioning(无须修改应用程序就能使大 Option型表格和索引分割为更小的容量,从而更易于管理)Data Mining(在数据库中有效、快速地 Option存取数据)Transportable Tablespaces,Including  Cross-Platform(将表格空间从一个数据√库转到另一个)Information Lifecycle Management(了解数据演变,决定其如何成长,并监视其 √使用状况及变化,最后决定应该被保留多久)Materialized View Query Rewrite(自动识 √别数据,以满足使用需求)Distributed Queries/Transactions(在两个或多个不同节点的分布式数据库上查√√询或更新数据)XML DB(高性能的XML存储和检索技√√术)Multimedia(在数据库中能有效地管理和检索多媒体,并支持最流行的多媒体格√√式)Text(新增文字搜索与文件分类管理)√√Locator(管理地理空间的数据并提供定√√位功能) OptionSpatial(支持复杂的GIS部署)

以上已经介绍Oracle 11g数据库的基本特性、应用程序开发环境、应用软件、支持的新特性和数据库产品的版本,下面将以生产管理系统为例,对项目实例所需要的SQL技能进行详细介绍。1-1-2 Oracle 11g数据库的基本概念

数据库的范围和内容相当广泛,本章主要介绍数据库的基本概念,以方便后面的学习。数据库的基本概念包括:数据(Data)、数据库(Database)、数据库系统(Database System)、数据库管理系统(Database Management System,DBMS)、数据库系统的架构等。在了解这些数据库的基本概念后,就可以进行数据库的设计与练习了。● 数据(Data):数据是指对某项事实的代称,并方便存储在计算机介质上,常见的数据有学生的姓名、客户的编号、供货商的产品名称、手机的品牌、游戏的名称等。现在的数据除了一般的文本和数字外,还包含了语音、图形和视频等。● 数据库(Database):数据库是指逻辑上相关数据的集合。在日常生活中,有许多的数据,有些数据是没有关系的,例如,水果的名称和学生的借书数据;有些数据则是有关系的,例如,客户的姓名、客户的住址和客户的电话。而数据库就是将这些有关系的数据加以处理(存储),以方便数据或信息的存取。● 数据库系统(Database System):数据库系统指的是软件厂商所开发的系统软件,例如Oracle的8i和9i、微软的SQL Server、IBM的DB2和Sybase等都是用来管理数据的系统软件。● 数据库管理系统(Database Management System,DBMS):数据库管理系统指的是数据库管理员和程序员依照客户方的需求来构建与维护所需要的管理系统,例如,企业的进销存管理系统、会计管理系统、客户关系管理(CRM)系统、企业资源规则(ERP)管理系统等。● 数据库系统的架构:数据库管理员要想管理好数据库系统,最好能了解数据库系统的架构。就如同一家公司的新任总经理,若想管好这家公司,最好先了解这家公司的组织架构一般。

目前,大部分人都认同的是于1978年提出的数据库系统架构,如下图所示。数据库系统的架构

对数据库系统架构的说明如下。● 外层(External Level):外层是提供给用户直接操作使用的,所以会隐藏其他不需要用到的数据部分,在关系型数据库中常建立View(视图)供用户使用,所以又称为视图层(View Level)。● 概念层(Conceptual Level):概念层主要是用来描述数据库中存放数据的类型、表之间的关系、高级的数据模型、用户的权限等,可以说包含了数据库的整个内容,所以,概念层一般由数据库管理员建立、运作和管理。在概念层中还有另外一项重要的功能,就是要隐藏实际数据库存储结构的细节,作为外层(数据库逻辑设计)和内层(数据库实体设计)沟通的桥梁。● 内层(Internal Level):内层主要用来描述实际的数据库存储结构,一般会详细地说明数据库存取的路径、数据存储的方式等。数据库管理员可以考虑采用适当的方法来改进数据库存取的方式。● 映射(Mapping):在数据库系统架构中,外层必须提供用户的需求,并且转换成概念层所需要的数据,而概念层必须提供外层的需求,并且转换成内层所需要的数据,反之亦然,这样,才能顺利地存取实际的数据,完成各层之间的转换。提供需求和转换所需要数据的过程称为映射。数据库管理员负责维护和管理的就是这些映射的定义,一般会放在系统目录(System Catalog)下,而不需要更改各层的模式(Schema),以方便维护数据的独立性(Independence)。● 数据独立性(Data Independence):数据独立性的意思是当数据有所变动时,不必改变其他的数据结构。以数据库系统架构为例,数据库系统架构分成“外层”、“概念层”和“内层”,各层之间以映射来关联。如果为了适应文件重组的需求而改变内层的模式,那么只需要改变内层与概念层的映射,而不必改变概念层的数据;如果为了适应添加字段而改变概念层的模式,则只需要改变概念层与外层的映射,而不必改变外层的模式。通过映射进行处理,可以维持良好的数据独立性,数据库的操作也较容易完成。这种映射关系如下图所示。映射目的:维持数据的独立性(Data Independence)1-2 数据模型

数据模型主要是用来描述数据库内数据结构的特性的,一般分为低级(实体)数据模型和高级(概念)数据模型,如下图所示。数据模型说明高级(High-Level)或概念以用户能理解的方式来构建的数据模型数据模型以记录(Record)的形式存储,含有多低级(Low-Level)或实体个字段(Field),字段由一个或多个字节数据模型所组成

低级数据模型通常用来描述数据如何存储于计算机中,一般情况下,存储的数据是以记录(Record)的形式存放在磁盘上。一条记录包含多个字段(Field),每个字段由一个或多个字节组成,至于需要多少个字节则要视字段的数据类型而定。例如,布尔型数据为1个字节,整型数据为4个字节。当然,如果程序员使用低级的数据模型建立数据库时,可以自定义数据类型的长度,而数据库管理员,则需使用数据库系统定义的标准数据类型。下面以学生数据为例,如下表所示。

记录的名称为Student,共有SID、Sname、Saddress、Sphone、Se-mail等5个字段名称,数据类型有integer(整型)和string(字符串型)。

在操作计算机时一般接触到的存储数据的方式是“文件”,而文件正是由一个或多个记录所组成的。在低级数据模型中,还要有描述文件中记录的操作,例如,添加一条记录、修改一条记录、删除一条记录、查找一条记录,这些操作都包含了实体存储方法和存取结构方法。通过存取结构方法,可以加速记录的存取,这种方法就是索引(Index)。一般常用的索引有主索引(Primary Index)、次索引(Secondary Index)和动态的多层索引。● 主索引是一个经过排序的有序文件,每个字段的值必须是唯一且不重复的,能对记录实体进行排序,每个文件最多只能有一个主索引。● 次索引是使用排序字段作为索引,以避免实体上的排序。一个文件可以同时有多个索引,以加速文件存取,但是过多的索引反而会降低数据存取的速度。● 动态的多层索引是由多层索引改变而来,多层索引如下图所示。

数据由主键值进行有序的排序,可以由主键值形成的索引文件建立起第1层索引,同理,也可以由第1层的索引建立起第2层。每个索引由一个字段值和指针所组成,直到连接到数据区块。如果数据量很大,则可以再建立起第3层索引、第4层索引,依次类推,这就是多层索引。在数据库中典型的动态多层索引是B树和B+树。● B树是平衡查找树(Search Tree)的一种。一般的查找树无法保证其平衡性,而B树在查找树中加上了许多约束的条件,从而确保查找树是平衡的。B树的结构是每个字段值和指针都包含在B树中且只出现一次,如下图所示。● B+树是动态多层索引中使用最多的数据结构,检索字段值会出现在叶子节点内,形成在B+树中出现两次字段值的情形,而指针只会出现在叶子节点,如下图所示。在B+树中数据3出现了2次

高级数据模型是以能让用户理解的方式构建的数据模型,它会隐藏低级数据模型处理数据的细节。利用高级数据模型构建数据模型时,会从现实世界中的实体(例如学生、员工)或概念(例如项目)出发,实体或概念都有其属性(例如学生姓名、项目名称),而每个属性都有其内容,也就是属性值(例如学生姓名:王一田)。在实体与概念之间,若有相关的数据,则需要关系(Relationship)来进行处理,这就是高级数据模型。1-2-1 层级式数据模型

层级式数据模型是由结构来定义的,如下图所示。

树状数据结构中的记录类型为节点(Node),除了根(Root)节点外,每个节点一定有一个父节点,而每个父节点则可以有多个子节点,形成了一对多的父子关系类型(Parent-Child Relationship Type,PCR Type)。例如,一个业务部门会有多个销售项目,所以销售项目是业务部门的子节点,再加上一位业务人员会有多个客户,所以客户是销售人员的子节点,这时候就形成了层级式的树状结构,如下图所示。

从图中可以看出这种层级式的数据库特别适用于一对多的关系。当遇到多个业务人员参与多个销售项目时,层级式数据模型就很难描述此类多对多的关系,而这正是网络式数据模型的专长,稍后会再讨论。

为维持层级式数据库的完整性,就需要有参照完整性的约束,层级式数据模型的完整性约束如下:● 除了根(Root)节点外,每个“子”记录数据必须要有“父”记录数据。● 当“父”记录数据存在时,才可以添加“子”记录。● 记录可以单独被删除。● 当删除“父”记录数据时,会自动删除所有“子”记录。● 一个“子”记录最多可以拥有一个真实的“父”记录,但可以拥有多个虚拟的“父”记录。1-2-2 网络式数据模型

在层级式数据模型中提到网络式数据模型适用于多对多的关系,当然也包含一对多的关系。以网络式数据模型为基础的典型网络式数据库有综合数据库管理系统(Integrated Database Management System,IDMS)。

网络式数据模型由记录的集合和关系的集合组成,典型案例如下图所示。

这是一家公司的网络式数据模型,由记录的集合(有业务人员、业务部门、销售项目和工作时间)和集合的类型(D_Have、Handle、P_Time和S_Time)组成,集合的类型代表两个记录类型的关系。例如,D_Have集合的类型是代表业务部门和业务人员两个记录的关系。若是出现多对多的关系时,并不能用单一的集合类型来代表。例如业务人员和销售项目这两个记录,一位业务人员可以销售多个项目,而一个项目也可能需要多位销售人员,这时就需要用到两个集合的类型(S_Time、P_Time)。

为了维持网络式数据库的完整性,就需要有参照完整性约束。网络式数据模型的完整性约束如下:● 当“父”记录数据存在时,才可以添加“子”记录,若是采用自动(Automatic)方式,数据库系统会自动完成添加操作;若是采用手动(Manual)方式,则由应用程序负责添加操作。● 在查找数据时,需要跟着链接到下一个节点进行处理。● 当删除“父”记录数据时,会删除所有“子”记录。1-2-3 关系数据模型

关系数据模型是由一位名为Codd的数据库大师于1970年提出的模型,以关系(Relation)为基础,发展出许多处理数据的方式。

在关系数据模型中,关系的名称即为“表名称”,属性即是“字段名称”,属性值即是“字段值”。以Customer关系为例,如下图所示。

表与表之间以字段值来连接,以Customer和Order为例,如下图所示。

Customer(客户)和Order(订单)表之间,以Customer_Id字段值作为连接,获取相关联的数据。

为了维持关系数据库的完整性,在关系数据模型中大多包含“实体完整性约束”(Entity Integrity Constraint)和“参照完整性约束”(Referential Integrity Constraint),分别介绍如下。

1.实体完整性约束

表本身的约束条件,也和键值约束一起使用,例如,设置主键值时,其主键值不可以为空值,否则无法区分相关的属性值。

2.参照完整性约束

表之间的约束条件,用以维持关系表之间数据的一致性,通常会使用外键(Foreign Key)技术,外键可以参照其他的关系表,也可以参照自己的关系表。在同一个数据库中,有多个表时通常也会用多个外键进行约束,以此保证表中数据的一致性。

目前大部分的商用数据库系统都支持实体完整性约束、键值约束、参照完整性约束、外键约束等,以维护数据库系统中数据完整性的正常运行。1-3 功能依赖性

功能依赖性(Function Dependence,FD)是属性语义(Semantic)的解释,用来说明关系表中的属性有哪些功能依赖性。典型案例如下图所示。

在Customer表中,Name功能依赖于Customer_Id,也就是说,Customer_Id决定了Name,表示为Customer_Id→Name。

如果用R表示关系表,用X(例如Customer_Id)和Y(例如Name)表示属性,且Y功能依赖于X,也就是说X决定了Y,那么可以将这种关系表示成X→Y。对需要注意的地方说明如下。● 功能依赖性一般是用在关系表上,处理的是属性(字段)。● 在R中存在X→Y的关系,并不表示存在Y→X的关系。● 在R中,X决定了Y,代表着任意属性值的X相同时,Y也必定相同。● 多个功能依赖性有相同的特性时,可以组合成功能依赖性图,如下图所示。这就形成了以Customer_Id属性为主的功能依赖性图。

功能依赖性的推导规则是1974年由Armstrong提出的,简称Armstrong Axioms(公理),是一个可靠且完备的推导规则,对其简单介绍如下。● Reflexive Rule(反身律):若Y是X的子集,⊇,则X→Y。● Augmentation Rule(扩展律):若X→Y,则XW→YW。● Transitive Rule(传递律):若X→Y,Y→W,则X→W。● Decomposition Rule(分配律):若X→YW,则X→Y,且X→W。● Union Rule(结合律):若X→Y,X→W,则X→YW。● Pseudotransitive Rule(假传递律):若X→Y,TY→W,则XT→W。

在此不做公式的推导。1-4 规范化

1.ANSI/Sparc数据库的系统架构

在前面的章节中提到了ANSI/Sparc数据库系统架构,如下图所示。

内层关心的是实际的数据库存储结构,概念层关心的是在概念上如何描述整个数据库,而外层关心的是用户所感兴趣的部分数据库。

一个数据库由一个以上的表组合而成,一个表由一个以上的字段组合而成,而一个数据库需要多少表,一个表需要多少字段才合适,都是在设置数据库时需要加以考虑的问题,这些问题都可归纳为“逻辑数据库设计”的问题,映射到ANSI/Sparc数据库。

系统架构是概念层以上的部分,而有关实体数据存储的问题都归纳为“实体数据库设计”的问题,映射到ANSI/Sparc数据库系统架构时,对应内层部分,这种关系整理如下图所示。

2.数据库的规范化

在商用的数据库管理系统中,系统会处理好实体数据存储结构的方式,所以在数据库设计中,会将重心放在逻辑数据库的设计上,包括用户的约束、索引的处理、字段的类型、表之间的关系等。基本上,对于一个数据库中需要多少表、一个表需要多少字段才能使数据库管理系统运行正常,需要进行系统分析,所需的最重要的理论基础就是“规范化”(Normalization)。(1)规范化的范式

在尚未经过良好处理的表中,常常会存放多余的数据,以致浪费了大量存储数据的空间,有时更会影响到数据库系统的处理效率,这时就需要将表切割成多个较小的表。然而,切割的表越多,说明存放数据的表越多,而跨多个表进行数据查询时,Join(合并)运算也就会越多,数据库系统的效率也就更差,所以我们需要一套良好的规则——规范化来处理,以免浪费存储空间、降低运算的效率。

规范化是1972年由Codd提出的,他说明了数据的规范化是一个过程,目的是将未满足某些条件的关系表分成较小的关系表,以避免浪费存储空间。已经符合条件的关系表就不再分割了,以免降低运算的效率,Codd一次提出了3个范式,分别如下。● First Normal Form,第一范式,简称1NF。● Second Normal Form,第二范式,简称2NF。● Third Normal Form,第三范式,简称3NF。

接着Boyce和Codd提出了如下强化型的第三范式:Boyce /Codd Normal Form,Boyce /Codd范式,简称BCNF。

由于关系表分割及规范化的不足,于是提出了多值依赖性,从而得到如下第四范式:Fourth Normal Form,第四范式,简称4NF。

在少数情况下,会发生一个表分割成两个松散结合(Lossless Join)的情形,这时需要合并依赖性进行处理,也就是如下第五范式:Fifth Normal Form,第五范式,简称5NF或投影-合并正规式。

在设计数据库时,常用的范式有第一范式、第二范式、第三范式和BCNF范式,这些常用的范式及其条件如下:范式条件字段的属性值必须是原子、不可分割的第一范式(1NF)值第二范式(2NF)• 先符合1NF• 先符合2NF第三范式(3NF)• 在关系表中,非候选属性(字段)之间不能有功能依赖性• 先符合2NFBoyce/Codd范式(BCNF)• 具有决定性的属性(字段)都是关系表的候选属性(字段)(2)规范化的顺序

在练习时,我们执行的规范化步骤如下:

步骤01 收集数据,将数据分类成表。

步骤02 进行第一范式,字段的值必须是原子的(Atomic)。

步骤03 进行第二范式,非主键的字段与主键必须存在功能依赖性,根据这一点切割成较小的表。

步骤04 进行第三范式和Boyce/Codd范式,非候选字段彼此不能有功能依赖性,规定性的字段会纳入候选字段。

以Magic公司为例,将规范化步骤实现如下。

①收集数据,进行分类

将Magic公司的人员数据收集起来,按照不同的公司分类进行整理。

尚未规范化的表如下所示:

②进行第一范式

将尚未规范化的数据表进行第一次规范化,也就是将字段里面的值逐一展开,变成每个字段都是原子值或空值(Null),如下表所示:

③进行第二范式

将已经是第一范式的表,依“非主键的字段与主键必须存在功能依赖性”的规则进行第二范式。在上表中可以看出姓名是陈一、张三、王五和胡六的人员都完全功能依赖性于Emp_id字段,从而形成一个表;姓名是林二、李四、洪七的人员完全功能依赖性于Cust_id字段,所以另外形成一个表,如下所示。Employee TableCustomer Table

④进行第三范式

将已经是第二范式的表,按照“非候选字段彼此不能有功能依赖性”的规则进行第三范式。在上面Employee Table中的部门名称(d_name)和部门位置(d_location)存在功能依赖性,所以必须加以分割。由于部门名称和位置会形成交叉映射(业务─北京、业务─石家庄、行政─石家庄),所以需要添加部门代号(d_no),以便把部门名称和部门位置移出做成另一个表,作为参考表,这样可以节省许多字段空间,也可以维持数据的完整性,如下所示。Employee TableDepartment Tabled_nod_named_location1业务北京2业务石家庄3行政北京Customer Table

整理规范化后的表关系如下:

这份表关系代表着一个部门可以有许多员工,一位员工会有许多客户的情形。1-5 实体-关系模型1-5-1 实体-关系的表现方式

实体-关系模型简称E-R模型,是目前设计关系型数据库时,非常受欢迎的一种方法,由于实体-关系模型是属于语义(Semantic)式的处理,所以可以将数据库系统架构中的概念层和外层结合起来,设计出用户向导所需要的关系表。

想要利用实体-关系模型设计出用户向导所需要的关系表,就需要先了解实体-关系的表现方式,如下所示::矩形框,表示实体的名称:菱形,表示实体间的关系名称:直线,表示数量的基数为一:箭头,表示数量的基数为多:椭圆,表示实体的属性

在了解了实体-关系的表示方式后,再来看看如何使用实体-关系的图标来表示日常生活中常见的例子,举例如下。

1.一对一的关系

我国的法律规定婚姻是一夫一妻制,实体-关系如下图所示。

2.一对多的关系

学校规定每个学生可以选修多门课程,实体-关系如下图所示。

3.多对多的关系

在实习课程时,一位学生可以用到多台计算机,多位学生也可能共享一台计算机,实体-关系如下图所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载