zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

《测试驱动数据库开发》——2.5 实现

2023-09-11 14:17:46 时间

本节书摘来自异步社区出版社《测试驱动数据库开发》一书中的第2章,第2.5节,作者:测试驱动数据库开发,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 实现

测试驱动数据库开发
至此,前面描述的方式能够让读者初步地刻画和实例化数据库的类。下面将介绍一些实现一个数据库的类的方法。本书先从总体需求入手,然后提供一个数据库类的伪代码实现,可以将其移植到任何平台上。

2.5.1 需求

让我们来看看一个良好的数据库的类的实例化机制应该是什么样子的。了解这些需求能够让你编写自己的机制,或者当你面对的需求明显不同于本书描述的情况时,可以调整本书建议的机制,从而适应你的具体情况。

我已经确定了4个需求,并用4个以字母C开头的单词来分别描述之,称其为“4C机制”,希望这个词儿能流行起来。

4C机制如下所述,数据库的类的实例化机制必须是完整的(Complete),对于一个特定的版本,该机制执行了所有必要的变更;该机制必须是正确的(Correct),同样的变更从不在数据库上施加两遍;该机制必须是一致的(Consistent),每一次变更的实施,都是以完全相同的顺序来执行;最后,该机制必须是可控的(Controllable),只要想构建一个特定的数据库,读者就一定能够规定一个目标版本来构建之。

2.5.2 数据库实例化机制的伪代码

用可重复的方式来可靠地更新数据库的算法其实出奇地简单。经过多年的完善,至少与开始时搞出的东西相比,我总是惊讶于它是如此地简单。

UpgradeDatabase( db , design , target version )

 current version = current version of db 

 required versions =

 versions from design after current version and up through

 target version 

 sort required versions in ascending order

 for each version in required versions 

 execute transition for version against db 

 update current version of db to version number of version 

上述伪代码的实现细节将留给读者来完成,但是本书通常用XML文档的形式来表达数据库的设计,并且把已经施加到数据库上的变更版本存储在一个数据库表中。这样,数据库的“当前”版本就能够通过选择该表最近插入的行来推断。

2.5.3 输入的伪代码

上述算法的输入可以是一个XML文件或一些其他格式的文本文件。只要数据库的每一个版本可以被确定下来,被适当地排序,并能在数据库实例进行实例化时声明其所需的步骤,任何格式的输入都是可以的。

为了说明这个问题,下面给读者一段简单的XML,包含了用于构建和升级一个小型数据库的脚本:

 database 

 version id="1" CREATE TABLE FOO(A I NT) /version 

 version id="3" CREATE TABLE BAR(C CHAR(30)) /version 

 version id="2" ALTER TABLE FOO ADD B NVARCHAR(20) /version 

 /database 

如上所示,XML文件包含了可用来排序、标识和执行SQL语句的所有信息,这些信息用来构建数据库或将数据库更新到任何特定的版本。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。


异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。