天天看點

《測試驅動資料庫開發》—第2章2.5節實作

本節書摘來自異步社群《測試驅動資料庫開發》一書中的第2章2.5節實作,作者【美】max guernsey, iii,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

2.5 實作

測試驅動資料庫開發

至此,前面描述的方式能夠讓讀者初步地刻畫和執行個體化資料庫的類。下面将介紹一些實作一個資料庫的類的方法。本書先從總體需求入手,然後提供一個資料庫類的僞代碼實作,可以将其移植到任何平台上。

2.5.1 需求

讓我們來看看一個良好的資料庫的類的執行個體化機制應該是什麼樣子的。了解這些需求能夠讓你編寫自己的機制,或者當你面對的需求明顯不同于本書描述的情況時,可以調整本書建議的機制,進而适應你的具體情況。

我已經确定了4個需求,并用4個以字母c開頭的單詞來分别描述之,稱其為“4c機制”,希望這個詞兒能流行起來。

4c機制如下所述,資料庫的類的執行個體化機制必須是完整的(complete),對于一個特定的版本,該機制執行了所有必要的變更;該機制必須是正确的(correct),同樣的變更從不在資料庫上施加兩遍;該機制必須是一緻的(consistent),每一次變更的實施,都是以完全相同的順序來執行;最後,該機制必須是可控的(controllable),隻要想建構一個特定的資料庫,讀者就一定能夠規定一個目标版本來建構之。

2.5.2 資料庫執行個體化機制的僞代碼

用可重複的方式來可靠地更新資料庫的算法其實出奇地簡單。經過多年的完善,至少與開始時搞出的東西相比,我總是驚訝于它是如此地簡單。

上述僞代碼的實作細節将留給讀者來完成,但是本書通常用xml文檔的形式來表達資料庫的設計,并且把已經施加到資料庫上的變更版本存儲在一個資料庫表中。這樣,資料庫的“目前”版本就能夠通過選擇該表最近插入的行來推斷。

2.5.3 輸入的僞代碼

上述算法的輸入可以是一個xml檔案或一些其他格式的文本檔案。隻要資料庫的每一個版本可以被确定下來,被适當地排序,并能在資料庫執行個體進行執行個體化時聲明其所需的步驟,任何格式的輸入都是可以的。

為了說明這個問題,下面給讀者一段簡單的xml,包含了用于建構和更新一個小型資料庫的腳本:

如上所示,xml檔案包含了可用來排序、辨別和執行sql語句的所有資訊,這些資訊用來建構資料庫或将資料庫更新到任何特定的版本。

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。