有效数据库设计的目标

上传人:鲁** 文档编号:487917928 上传时间:2023-06-09 格式:DOCX 页数:17 大小:43.68KB
返回 下载 相关 举报
有效数据库设计的目标_第1页
第1页 / 共17页
有效数据库设计的目标_第2页
第2页 / 共17页
有效数据库设计的目标_第3页
第3页 / 共17页
有效数据库设计的目标_第4页
第4页 / 共17页
有效数据库设计的目标_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《有效数据库设计的目标》由会员分享,可在线阅读,更多相关《有效数据库设计的目标(17页珍藏版)》请在金锄头文库上搜索。

1、/r/r第有效数据库设计的目标借助现代数据库工具,几乎所有人都能够创建数据库。但是问题是,得到的数据是否 有用?如果不能从其中快速、可靠且一致地取出数据,那么数据库不会有多少用处。如果数 据库里都是不正确的或自相矛盾的数据,那么将毫无用处。此外,如果数据库被窃取、丢 失或者当系统崩溃时遭受到仅半写入的数据的破坏,那么它也是无用的。现代数据库工具、好的数据库设计和一些常识可以解决所有这些潜在的问题。只要能 够了解这些问题的实质,则可以避免它们。获得有用数据库的第一步是了解数据库的目标。数据库应该完成哪些任务?怎么样能 使数据库变得有用以及它能解决什么样的问题?使用一个强大的数据库工具但却没有制定

2、 目标就像驾驶飞机在云中飞行而没有罗盘:您拥有自己需要的工具但是却不知道方向。本章将描述数据库设计的目标。通过研究诸如文件这样能够充当数据库的信息容器, 则可以定义数据库应该具有的特性和它们应该避免的问题。在本章将会学到如下内容: 好的数据库设计之所以重要的原因。 可以充当数据库的各种不同的信息容器的优点和缺点。 如何使计算机化的数据库受益于这些优点并避免那些缺点。 好的数据库设计有助于达成数据库目标的方法。 CRUD 和 ACID 的概念以及它们和数据库设计相关的原因。1.1 理解数据库设计的重要性请暂时忘记本书是有关数据库设计的,并考虑常规的软件设计。软件设计在软件开发 中起着重要的作用。

3、设计规划了今后开发将会采用的大体结构和方向,决定系统各部分之 间的交互关系以及哪些子系统对应用程序的其他部分提供支持。如果应用程序的基础设计是有缺陷的,那么系统整体上将存在危险。设计中错误的假 定会渗入应用程序最低级的代码,导致子系统出现问题。构建在这些子系统上的高级系统 将沿袭设计缺陷并且它们的代码很快也会受损坏。有时,代码受到一点损坏便会弥散到整个系统并且直到项目进入到相对较晚的阶段才 会被注意到。项目持续的时间越长,不正确的假设越难更改,开发人员越不愿意舍弃整个 设计并重新开始。问题在系统中存在的时间越长,越难消除它们。某些情况下抛弃所有事 物并从头开始可能更为容易,但这是一个大多数人都

4、不愿意向更高的管理层呈交的决定。项目管理我的一个朋友是工程师,参与了一个非常庞大的卫星项目。过了一段时间后,工程师 们都意识到在当前的技术条件和设计状况下,该项目是不可行的。最终项目经理被迫向高 层主管汇报此情况,他本人因此被解雇了。新的项目经理坚持了一段时间后也被迫向高层 主管承认此项目不可行,当然他也被解雇了。此项目在新的项目经理接手后又继续进行了一段时间,但是他后来也认识到该项目是 无希望的,并且直到最后上层主管也不得不承认项目是没有结果时他也被解聘,最终整个 项目彻底失败。如果他们前期在项目设计上花费更多的时间并即时修正问题或立刻认识到项目不可 能完成并在一开始就废弃项目,那么便可以节

5、省大量时间、金钱和人力。构建一个项目往往与建造一座房屋或摩天大楼相似。在没有经过基于完善的建筑原则 而深思熟虑的设计之前,完全不可能建造一个造价高达几十亿美元的摩天大楼。但是,软 件开发人员往往在还末确定肯定能完成软件开发时就匆忙开始编写代码。编码比设计更有 意思、更令人感兴趣。编写代码还允许开发人员告知管理层和客户他们已经写了多少行代 码,这样看似开发人员正在实施软件开发,即使这些代码由于错误的假设而毫无用处。只 有到了后期,他们才认识到基础设计有缺陷,编写的代码没有意义,而项目此时已经陷入 了巨大的麻烦之中。现在回到项目设计。应用程序设计中数据库设计是最为关键的一项任务。数据库是信 息的存

6、储库,供应用程序的其他部分进行管理并显示给用户。如果数据库没有存储正确的 数据,没有安全地保存数据,或者应用程序无法找到所需的数据,那么应用程序很少有成 功的机会。在这里,无用输入无用输出(GIGO)原则完全适用。如果底层的数据不可靠,那 么无论使用这些数据的应用程序完成什么任务,结果充其量也将是不可信的。例如,假想构建了一个订单跟踪系统用以快速获取客户以往订单的信息。遗憾的是, 每次要求程序提取某个客户的记录,但它返回的结果却略有出入。尽管程序能够快速找到 数据,但是结果并不足够可信赖而被使用。设想已经构建了一个令人吃惊的程序,该程序能够跟踪完成一个复杂任务的数千道工 序,如建造一艘游轮或载

7、客喷气式飞机。该程序能够跟踪每道工序的完成状况,确定何时 需要订购新的零件以便为后续建造阶段做好准备,甚至还能确定今后采购的现行价格从而 决定是现在购买还是等到需要时再购买零件。但是,程序将花费数个小时重新计算复杂的 任务进度安排和价格详情。尽管计算结果是正确的,但是计算过程太慢使得用户无法有效 地做出任何更改。更改飞机座椅织布的颜色或游轮走廊上使用的瓷砖都会延误整个项目。假设构建了一个有效的订阅应用程序,该程序允许客户订阅公司每季的资讯和数据服 务。该程序能够快速查找并更新客户的订阅并且总能一致地为特定的客户显示同样的订价。 但是,当更改了某个发行刊物的价格时会发现并非所有客户的记录都显示更

8、新的价格。一 些客户是按照新价格订阅的,另一些客户是按照旧价格订阅的,还有一些客户看似是按照 从没见过的价格订阅的(本示例并不像看起来的那样牵强。一些系统允许向客户群提供廉价 订阅或特殊的奖励或者允许销售代表向特殊用户提供特价。如果希望能够完成诸如更改标 准价格而不干扰定制价格这样的操作,那么这种系统便要求特殊的设计)。拙劣的数据库设计会导致上述这些问题和其他令人烦恼的问题以及付出潜在的昂贵 代价。良好的设计则可为完成应用程序其余部分打下坚实的基础。有经验的开发人员知道错误在系统中停留的时间越长,则越难以查找和修正。基于此 逻辑,在开始构建应用程序之间实施正确的设计是非常重要的一环。数据库设计

9、也不例外。在开始确定软件体系结构构思拙劣、实现拙劣或程序不合格之 前,有缺陷的数据库设计注定项目会失败。1.2 信息容器数据库是什么?这个问题看似很简单,但是如果认真对待它,结果可能很有启发作用。 通过调研满足数据库定义的一些物理对象的优点和缺点,可以了解理想计算机化数据库具 有的特性。数据库是一种存储数据的工具,允许以某种方式创建、阅读、更新和删除数据。这是一个非常宽泛的定义并且涵盖许多不为大多数人看做是现代数据库的物理对象。 例如,装满名片的信封、笔记本、装满客户档案的档案柜和人的大脑都符合此定义。这些 数据库都有各自的优缺点,从中可以洞察计算机数据库具有的理想特性。只要不装过多的名片,名

10、片盒就是有用的。通过浏览所有名片可以查找一条特定的数 据(例如一个人的电话号码)。通过将更多的名片装进名片盒至少在一定程度上可以方便地 扩展数据库。如果名片的数量超过一打,找到特定的名片将是耗时的。甚至还可以略微重 新安排一下名片来方便查找经常使用的名片。每次使用一张名片,就将其放在名片堆的前 面,这样一段时间以后使用最多的名片会放在最前面。笔记本是一种小型、便于使用和携带的数据库,不需要供电,也不要求在使用之前引 导它。另外,笔记本数据库也非常容易扩展,因为当第一本笔记本写满时可以买另一本笔 记本加入到收集物中。但是,笔记本的内容是按顺序安排的。如果希望查找有关特定主题 的信息,必须一次浏览

11、一个页面直到找到想要的内容。拥有的数据越多,这种搜索就会变 得越困难。档案柜存储的信息要比笔记本多很多,可以通过添加更多的文件或柜子来扩展这种数 据库。只要是根据用于安排档案的数据类型进行搜索的,在档案柜中查找某条特定的信息 要比在笔记本中查找更为容易。如果档案柜装满按照客户名整理排列的客户信息,并且希 望找到某个特定的客户数据,那么这样是幸运的。如果希望找到住在某个城市中的所有客 户,则必须逐个遍历所有文件。人的大脑是迄今创建的最为复杂的数据库。它可以存储难以置信的数据量并允许采用 多种不同的方式检索特定的数据块。例如,现在您很可能可以轻易地回答如下有关您经常 光顾的饭店的问题: 哪家饭店距

12、离您当前的位置最近? 哪家饭店的甜点最好? 哪家饭店的服务最好? 哪家饭店的价格最便宜? 哪家饭店最适合用商务午餐? 总体来说您最喜欢哪家饭店?人的大脑提供了多种不同的方式来获取相同的有关饭店的信息。可以基于多种关键词 (位置、甜点质量、费用等)来搜索相同的信息库。若要使用名片盒(或饭店宣传册)、笔记本 或档案柜来回答上述这些问题,则需要较长的时间和费力的搜索。然而大脑也有缺点,至少作为数据库是这样的。最明显的缺点是它会遗忘信息。尽管 可以记忆的信息量难以置信,但是随着时间的推移,其中一些信息将变得不可靠甚至会完 全消失。您还能记起小学老师的所有名字吗?我就不能(我连自己老师的名字都记不得,更

13、 不用说您的老师)。此外,大脑还会出现疲倦,此时它的准确性会降低。尽管人的大脑擅长完成某些任务,如识别人脸或挑选饭店,它并不擅长其他任务,如 提供去年某个特定的顾客购买的所有项目的准确清单。相比于配偶的姓名,这些项目缺少 情感意义,因此它们更难记忆。所有这些信息容器(名片、笔记本、档案柜和大脑)都会因为令人误解的、不正确的和 矛盾的信息而受到损坏。如果在笔记本中写下不同形式的相同信息,那么数据将会不一致。 随后当您设法查找数据时,可能会先找到任一种形式的信息,而没有认识到还有其他形式 的信息(存储不一致和自相矛盾的信息会使大脑变得非常混乱,特别是在大选年中收听政客 们的演说时更是如此)。下面各

14、节总结了这些信息容器的优点和缺点。1.3 信息容器的优缺点通过了解上一节描述的这些信息容器的优点和缺点,可以了解对于计算机化数据库有 用的特性。那么这些优点和缺点到底有哪些呢?下面的列表汇总了一些信息容器的优点: 上述这些数据库都不要求供电并且它们不会受到电源故障的影响。 这些数据库能够相当安全和持久地保存数据( 但要防火) ,数据基本不会消失。 这些数据库 ( 除了大脑 ) 价格便宜且容易购买。 这些数据库具有简单的用户界面,因此几乎任何人都会使用它们。 使用这些数据库可以非常方便地添加、编辑和删除数据。 若按照与整理档案柜相同的方式搜索数据,那么使用档案柜可方便地找到数据。 大脑允许通过使

15、用不同的关键字来查找数据( 例如按照位置、价钱或服务质量)。 所有这些数据库都允许查找它们包含的每条信息,尽管可能花费一段时间遍历所有信息。 只要存储的实际数据是一致的,那么所有这些数据库 (除了大脑 )都提供一致的结 果。例如,使用相同笔记本的两个人会查找到相同的数据。类似地,如果随后查 看同一个笔记本,它将显示与以前看到的数据相同的数据(前提是没有修改它)。 所有这些数据库 (除了档案柜)都是便携的。 大脑可以执行复杂的计算,至少对于有限的类型和数字是这样的。 所有这些数据库都提供原子事务处理( 或交易 ) 。最后一个优点比其他优点更为抽象一些,因此需要进行更多的说明。原子事务处理可 能是

16、一系列较为复杂的行动,那些不直接参与执行事务的人将它们看做是单一操作。最典型的示例是从一个银行账户向另一个账户转账。假定 Alice 向 Bob 开了一张价值 100 美元的支票,并且需要在他们的账户之间转移这笔钱。您拿起记账本从 Alice 的记录上 扣除 100 美元并将 100 美元添加到 Bob 的记录上,然后放下笔记本。其他使用笔记本的人 可能在事务处理之前(此时Alice有100美元)或事务处理之后(此时Bob有100美元)查看它, 但是不能在从 Alice 账户上扣除 100 美元但还没有转给 Bob 的事务处理过程中查看它。当 处理进行到一半时绝不允许办公室里粗鲁的同事从您的手中抢走笔记本,它是一种要么全 做要么不做的事务处理。除了上述优点以外,诸如笔

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号