有 效 数 据 库设计的目标 借助现代数据库工具,几乎所有人都能够创建数据库。但是问题是,得到的数据是否有用? 如果不能从其中快速、可靠且一致地取出数据,那么数据库不会有多少用处。如果数据库里都是不正确的或自相矛盾的数据,那么将毫无用处。此外,如果数据库被窃取、丢失或者当系统崩溃时遭受到仅半写入的数据的破坏,那么它也是无用的。 现代数据库工具、好的数据库设计和一些常识可以解决所有这些潜在的问题。只要能够了解这些问题的实质,则可以避免它们。 获得有用数据库的第一步是了解数据库的目标。数据库应该完成哪些任务?怎么样能使数据库变得有用以及它能解决什么样的问题?使用一个强大的数据库工具但却没有制定目标就像驾驶飞机在云中飞行而没有罗盘:您拥有自己需要的工具但是却不知道方向。 本章将描述数据库设计的目标。通过研究诸如文件这样能够充当数据库的信息容器,则可以定义数据库应该具有的特性和它们应该避免的问题。 在本章将会学到如下内容: ● 好的数据库设计之所以重要的原因。 ● 可以充当数据库的各种不同的信息容器的优点和缺点。 ● 如何使计算机化的数据库受益于这些优点并避免那些缺点。 ● 好的数据库设计有助于达成数据库目标的方法。 ● CRUD 和 ACID 的概念以及它们和数据库设计相关的原因。 1 .1 理解数据库设计的重要性 请暂时忘记本书是有关数据库设计的,并考虑常规的软件设计。软件设计在软件开发中起着重要的作用。设计规划了今后开发将会采用的大体结构和方向,决定系统各部分之间的交互关系以及哪些子系统对应用程序的其他部分提供支持。 如果应用程序的基础设计是有缺陷的,那么系统整体上将存在危险。设计中错误的假定会渗入应用程序最低级的代码,导致子系统出现问题。构建在这些子系统上的高级系统将沿袭设计缺陷并且它们的代码很快也会受损坏。 有时,代码受到一点损坏便会弥散到整个系统并且直到项目进入到相对较晚的阶段才第 章 第 章 1 第I 部分 数据库和数据库设计介绍 4 会被注意到。项目持续的时间越长,不正确的假设越难更改,开发人员越不愿意舍弃整个设计并重新开始。问题在系统中存在的时间越长,越难消除它们。某些情况下抛弃所有事物并从头开始可能更为容易,但这是一个大多数人都不愿意向更高的管理层呈交的决定。 项目管理 我的一个朋友是工程师,参与了一个非常庞大的卫星项目。过了一段时间后,工程师们都意识到在当前的技...