第1章 关系数据库设计.pdf
《第1章 关系数据库设计.pdf》由会员分享,可在线阅读,更多相关《第1章 关系数据库设计.pdf(38页珍藏版)》请在咨信网上搜索。
1、第1章关系数据库设计SQL语言及采用SQL语言的关系数据库系统是计算机中重要的基础技术之一。在使 用任何数据库之前,都必须设计好数据库,包括将要存储的数据的类型,数据之间的相互 关系以及数据的组织形式。本章将对SQL语言进行简要的介绍,并详细地介绍如何进行数 据库的设计。本章主要内容:SQL简史及功能特性 关系数据模型 关系操作 数据库设计概述 概念数据库设计 逻辑数据库设计 完整性 数据库设计的其他问题 回顾数据库设计1.1 SQL简史及功能特性与其他编程语言类似,SQL语言也有一个从简单到复杂的发展过程。同时,所提供的 功能也逐步强大。本节中简单介绍一下SQL语言的历史与功能特性。1.1.
2、1 SQL 简史SQL语言的历史与关系数据库的发展密切联系在一起。关系数据库的概念是由IBM 的研究员DrEF.Codd提出的,他在1970年6月发表了一篇题为“大型共享数据银行的关 系数据模型”的论文,在该文中描述了关于数据如何在表中存储和处理的数学理论。70年 代中期,IBM San Jose研究实验室把SQL作为一种新型关系数据模型的数据库语言设计出 来,其含义是结构化查询语言(Structed Query Language)。SQL语言不同于C、JAVA等其 他程序设计语言,它属于一种描述性的语言,描述的是检索、删除或插入何种数据,而不 是说明如何去执行它,SQL的出现使得建立关系数据
3、库成为可能。它的正式发音是 ess-cue-ell(按照 American National Standards Institute),但许多人发音为 sequelo 在本书中,SQL的发音为sequel o七十年代后期,IBM准备开发一个关系数据库系统:SQL/DS RDBMS,其他开发商也 迅速准备开发他们的RDBMSo但是低性能的关系型数据库管理系统制约了他们的商业生 存能力。在早期关系系统中,关系模型的重要问题,“数学上的有效描述和直观的显示”没有有效的处理方法,导致了大型数据库管理系统速度慢又难以使用。直到大容量、高速 度的计算机出现和开发了优秀的数据检索、数据存储和数据访问方法,这
4、些方法有效地支 持了关系系统的后台处理功能,才在一定程度上解决了这个问题。1981年,IBM发布了它的第一个基于SQL的商业产品SQL/DSo在八十年代早期,Oracle,Relational Technology等其他几个开发商也纷纷发布了各自的基于SQL的关系型数 据库管理系统。到1989年,市场上出现了许多种SQL或类似于SQL的数据库管理系统,这些系统运行在从个人计算机到处理多用户计算机等各种计算机上。在市场的推动下SQL 得到了普及。同时IBM公司加快了对SQL的普及,并把DB2定位为九十年代数据管理的 解决方案。关系型数据库管理系统市场的激烈竞争导致出现了各种各样的SQL实现版本,
5、每一种 版本都代表了开发商在开发完整和高效关系模型表达语言方面所做的最大努力。1986年美 国国 家标准化学会(American National Standard Institute,ANSI)和国 际标准化组织(International Standard Organization,ISO)发布的 ANSI/ISO 标准正式确认 SQL 的标准地位,这是SQL在市场中确定地位最重要的一点。并且在1992年与1999年先后进行了修订,现 在的正式版本是SQL3版本。从九十年代初起,SQL性能便开始稳步提高,处理器速度明 显加快,使SQL成为事务处理程序的有效工具,随着网络的发展,SQL成为客
6、户机/服务 器结构的关键部分,通过网络实现数据库的连接与使用变得越来越普遍,现在已经可以基 于Web应用程序来实现远程访问数据库。1.1.2 SQL的功能与特性SQL是与DBMS进行通信的一种语言和工具,将DBMS的组件联系在一起。可以为 用户提供强大的功能,使用户可以方便地进行数据库的管理以及数据的操作。通过控制 DBMS,SQL能提供给用户如下的功能。数据定义:SQL能让用户自己定义所存储数据的结构,以及所存储数据各项之间 的关系。这样用户就可以按自己的需要方便地进行数据的组织。数据更新:SQL为用户和应用程序提供了添加、删除、修改等数据更新操作,使 用户或应用程序可以向数据库中增加新的数
7、据,删除旧的数据以及修改已有数据,有效地支持了数据库数据的更新。数据查询:SQL使用户或应用程序可以从数据库中按照自己的需要查询数据并组 织使用它们。其中SQL不仅支持简单条件的检索操作,而且支持子查询、查询的 嵌套、视图等复杂的检索,为用户和应用程序提供了很好的数据查询方法。数据安全:SQL能对用户和应用程序访问数据、添加数据等操作的权限进行限制,第1章关系数据库设计 3 以防止未经授权的访问,有效地保护数据库的安全。数据完整性:SQL使用户可以定义约束规则,定义的规则将存在数据库内部,可 以防止因数据库更新过程中的意外事件或系统错误导致的数据库崩溃。数据库结构的修改:SQL使用户或应用程序
8、可以修改数据库的结构。可见,SQL为用户提供了完整的数据库操作、安全及维护的各种操作,为用户提供了 很好的可操作性。SQL是一种易于理解的语言,同时又是综合管理数据的工具。作为现在数据库市场普 遍应用的语言,它具有以下一些特性。确定的标准:美国国家标准化学会(ANSI)和国际标准化组织(ISO)在1986年制订 了 SQL的标准,并在1989年、1992年与1999年进行了 3次扩展,使得所有生产 商都可以按照统一标准实现对SQL的支持,SQL语言在数据库厂家之间具有广泛 的适用性。虽然在不同厂家之间SQL语言的实现方式存在某些差异,但是通常情 况下无论选择何种数据库平台,SQL语言都保持相同
9、。这就是SQL的最大优点。软件提供商的独立性:现在所有主流的DBMS软件提供商均提供对SQL的支持,SQL标准的确立使不同的生产商可以独立地进行DBMS软件的设计,一个基于 SQL的数据库和使用该数据库的应用程序能很方便地从一种DBMS系统转向另一 种DBMS系统。查询、报表生成器等数据库工具能在许多不同类型的SQL数据库 中使用。跨计算机系统的移植性:基于SQL的数据库产品能够在大型计算机、个人计算机 等各种计算机上运行,也支持在不同的操作系统上运行,同时也可以通过网络进行 访问和管理。各大公司的支持:SQL最初由IBM研究人员发明,已经成为IBM数据库产品DB2 的战略性产品,同时也得到了
10、 Microsoft公司、Oracle公司等数据库市场各大软件 公司的支持,这就保证了 SQL今后的发展。程序化数据库访问:SQL语句既能用于交互式访问也能用于程序化访问,这样应 用程序就具有很大的灵活性,可以将这两种方式结合起来设计更好的程序。应用程序传送的支持:在数据库发展的最初时期,SQL支持基于主机的应用程序;随着计算机技术的发展,客户机/服务器体系结构随着PC革命的到来应运而生,SQL作为优化用户相互作用的前端计算机系统和专为数据库管理设计的后端系统 的桥梁,使每个系统处于最佳工作状态;随着Internet和WWW的迅速发展,SQL 作为Internet数据访问标准,在应用中充当了新
11、的角色,建立了以SQL作为应用程 序和数据库连接的标准;最新出现的Java也已经引入了 SQL,SQL在最新的编程 语言中也有了有效的应用。数据的多视化:可以通过使用SQL产生不同的报表和视图将数据库中的数据按用 户所需的角度显示在用户面前,供用户使用,具有很大的灵活性。同时,SQL的视图功能也能提高数据库的安全性并且能满足特定用户的需要。可扩展性和对象:面向对象编程技术的兴起,数据库市场也面临了对象技术的 入,各个SQL数据库生产商也正在扩展和提高SQL对对象的支持。SQL的以上特性,使得SQL在个人计算机、小型计算机和大型计算机上作为管理数 据的标准工具出现,占据了大部分的市场。1.1.3
12、 SQL3 简介SQL标准是为了在各个开发商之间达成高度的一致性来达到提高市场上所有数据库 产品的通用性而制定的一个国际标准,每次该标准的更新都为SQL添加了新的特征和新的 命令与功能。最新的ANSI/ISO的SQL-3即SQL99标准的特色就是提供了一系列可以处理 面向对象数据类型的扩展功能。可以通过简单地比较SQL-2和SQL-3的语句种类来感受SQL-3的新特色。在SQL-2 标准中,SQL语句可以大体分为:数据定义语句(Data De自nition Language,DDL)、数据操 作语句(Data Manipulation Language,DML)以及数据控制语句(Data Co
13、ntrol Language,DCL)O其中,DDL包括了处理数据库元素的命令,如CREATE和DROP;DML提供了 特定的数据操作命令,如SELECT、INSERT、UPDATE和DELETE;而DCL贝(J包括了处 理权限(Permission)的命令,如 GRANT 和 REVOKE。而SQL-3标准提出了一种新的语句分类方式,将它所现有的SQL语句分为7种核心 的类型,而这些SQL-3标准的语句类试图使每一个类型和那些语句能更加准确并且更有逻 辑性地结合在一起,在某种程度上也更易于理解。这样一套新的语句类型允许将来新产生 的且不适于任何已有类型的语句能够合理地进行单独分类,因此这种做
14、法非常有益于SQL 将来的发展。SQL-3包含的语句类如下。连接语句:使用该类语句可以开始和结束一个客户连接,如CONNECT语句和 DISCONNECT 语句。控制语句:该类语句用来控制一组SQL语句的执行,如CALL语句和RETURN 语句。数据语句:使用该类语句可以直接对数据产生持续的作用,如SELECT语句、INSERT语句、UPDATE语句和DELETE语句。诊断语句:该类语句可以提供诊断信息并指出异常或错误,如GET DIAGNOSTIC 语句。模式语句:该类语句可以操作数据库模式及其内部的元素,如ALTER语句、CREATE语句和DROP语句。会话语句:使用该类语句可以在一次会话
15、中控制默认操作和其他的参数,如SET 语句。事务语句:该语句用来设置一个事务处理的开始点和结束点,如COMMIT语句 和ROLLBACK语句。第1章关系数据库设计 5 从SQL-3标准的这些语句类可以明显看出,与以前的SQL标准相比,SQL-3标准更 适合对面向对象的数据类型进行处理。除了上述的语句分类方式的变化,使新的方式更适合处理面向对象的数据,SQL-3标 准还增加了一些新的数据库元素以增强SQL对面向对象数据类型的处理。这些新增数据库 元素有角色、触发器和用户定义类型。角色是指定的一种或一组权限,是一个单独的成分,是一个对象。角色具有的分组权限功能为数据库系统的安全性管理提供了许多便利
16、的条件;触发器是指当在指定的表上发生一个特定的操作事件时,将被调用的一个程序段;在以前 的SQL标准中,所有的数据类型都是预定义的,但是,在SQL-3标准中新增的CREATE TYPE、ALTER TYPE和DROP TYPE语句应用了对象/关系概念,可以使用它们来进行用 户定义类型(UDT)的操作。这3种新的数据元素将在本书的12.1.3小节中予以介绍。之前简单讲述了 SQL-3标准提供的一系列可以处理面向对象数据类型的扩展功能的 特色,下面来了解一下SQL-3相对SQL-2的最重要改变进一步阐述了 SQL-2的一致 性级别(level of conformance)。SQL-2 标准定义了
17、 3 类级别:Entry(入门)、Intermediate(中等)和Full(完全),此标准的每一个较高的级别都包括了其较低一致性级别的所有特征,而开 发商必须达到Entry级别才可以声明其产品符合ANSI/SQL标准。而SQL-3修订了关于一 致性的基本级别,不再使用SQL-2的3个级别,而使用核心SQL-3标准(CoreSQL-3)、增 强SQL-3标准(Enhanced SQL-3)。其中,Core SQL-3标准包括SQL-2中的Entry级的特征 集和其他级别中的一些特征以及其他一些全新的特征;而Enhanced SQL-3则对应于SQL-2 的Intermediate和Full级的
18、部分特征以及其他一些全新的特征。ANSI/SQL则要求开发商必 须实现SQL-3的一致性级别的Core SQL-3级,只要是支持Core SQL-3 一致性级别的数据 库产品再加上SQL-3 9个附加特征包中的任意一个或多个就可以说是满足增强SQL-3标 准。因为一致性级别只与开发商密切相关,不属于本书实用教程的讨论范围,所以书中不 进行详细讨论。除了上面讨论的SQL-3标准的特色,新的语句分类形式,新增的数据库元素和进一步 阐述的SQL 一致性级别以外,SQL-3还在多个细节上对SQL-2进行了改进。本书后面的 章节中所有的内容都是基于SQL-3标准的,为了说明SQL-3与旧标准的不同,在这
19、先举几 个不同的例子,如下。(1)在SQL-3中,空值NULL的使用方式不同于旧标准。在SQL-3中,约束检验时,NULL的值是UNKNOWN而不是旧标准的TRUE或FALSE(2)在SQL-2中,基于多表连接的视图和含有集合算符的查询的视图都不能作为 INSERT、UPDATE和DELETE语句的操作对象,但是在SQL-3中可以对这几类视图进行 有条件的更新操作,例如可以在两个表的UNION JOIN结果中进行这些数据的更新操作。举一个例子,假设有两个表,第一个表有5个字段,第二个表有6个字段,在它们的UNION JOIN结果中就有H歹U,下面进行如下操作:INSERT一个新记录行如果新行的
20、前5列为空,后6列非空,则该操作去掉前面5个NULL,将剩余的数据 存入第二个表中。如果新行的前5列非空,后6列为空,则该操作去掉后面6个NULL,将剩余的数据 存入第一个表中。新行的前5列非空,后6列也有非空值,则该操作不能进行。UPDATE 操作如果需要更新的行来自第一个表(后6列为空值),则该操作修改第一个表中的对应行 的数据。如果需要更新的行来自第二个表(前5列为空值),则该操作修改第二个表中的对应行 的数据。新行的前5列非空,后6列也有非空值,则该操作不能进行。DELETE 操作如果需要删除的行来自第一个表(后6列为空值),则该操作删除第一个表中的对应行。如果需要删除的行来自第二个表
21、(前5列为空值),则该操作删除第二个表中的对应行。新行的前5列非空,后6列也有非空值,则该操作不能进行。(3)下面举两条语句,在SQL-2中不合法,但是在SQL-3中是合法的。SELECT语句中使用的ORDER BY子句后的表列存在,但是不在SELECT清单中:SELECT nameFROM EmployeeORDER BY id在SELECT清单和ORDER BY子句中同时使用未命名的表达式:SELECT salary*12FROM EmployeeORDER BY salary*121.2 关系数据模型关系数据模型的设计是关系数据库设计中重要也是基础的一步。关系数据模型的设计 主要包含两个
22、方面:数据结构的设计以及键与外部键的定义。本节将介绍这两个方面设计 的定义与应用。1.2.1 数据结构每一个系统都有其自己的数据结构。关系数据库管理系统组织并构造数据,以使数据 能被用户或应用程序检索与更新。由DBMS提供的数据结构和访问方法被称为DBMS的 第1章关系数据库设计 7 数据模型。数据模型决定了 DBMS的性能及其适应的范围。在关系数据库系统中,关系是关系数据模型的核心。关系数据库系统中最主要的数据 结构就是关系。在实际表示中,关系可以用一个表来直观地表示,通常表是以一种矩形数 据行/列的形式表示。表的每一列表示关系的一个属性,每列的名字即为一个属性名,每一 行表示一个记录代表一
23、个物理实体。关系数据库中,所有的数据都是通过表来进行存储的,可以说如果没有表数据就无法进行存储和表示。表1-1给出了一个关系模式”工作人员(名字,职员ID,生日,性别,工资)”的实例。表的每一行表示一个物理实体工作人员。表中有6行,代表6个工作人员。例如,第 一行记录的是工作人员“林志千”的信息。工作人员表的每一列代表一个工作人员的一个 数据项,记录工作人员的一部分信息。例如,职员ID列用来存储每个工作人员的职员ID,生日列用来存储每个工作人员的生日。第一行的职员ID列记录了工作人员“林志千”的 职员ID1001,生日列记录了工作人员“林志千”的生日1962年H月25号。第二行记录 的是工作人
24、员“李明”的信息。第二行的职员ID列记录了工作人员“李明”的职员ID1002,生日列记录了工作人员“李明”的生日1976年5月23号。表1-1关系模式实例姓 名职员ID生 日性 别工 资林志千10011962-11-25男6000.00李明10021976-05-23男5000.00李大平10031978-12-20男3000.00林国荣10041977-06-14男4000.00刘燕20021971-12-26女3000.00魏箸30031977-05-17女4000.00关系数据模型中数据结构的核心规则是:所有数据都必须在表中所有关系模型中呈现 给用户。它提供了数据表达和存储之间的一级抽象
25、概念,使数据具有独立性,无论是用 哪种关系数据库产品,不论其采用的是什么物理存储方式,查询和处理数据的方式都是 相同的。具体来说,数据的独立性表现在两个重要的方面:物理独立性和逻辑独立性。各开发商之间,甚至同一开发商的不同版本之间的物理存储体系结构都是不相同的。物理独立性是指用户所看到的数据与数据的物理存储是完全独立的,即可以改变或重新安 排物理存储而不会影响到数据的使用和逻辑数据库的设计(逻辑数据库的设计将在1.6节中 详细介绍)。逻辑独立性指的是,可以改变表、行和列之间的相互关系,即对数据结构进行修改而 不会削弱应用程序特别是查询的功能。1.2.2 键与外部键每个表表示的是现实世界中的数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第1章 关系数据库设计 关系 数据库 设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。