一種版本化的資料庫指令碼管理機制

2021-09-05 21:24:06 字數 1807 閱讀 8161

現今開發的軟體當中,多數系統的資料都是基於資料庫儲存的,但是由於軟體變化的複雜性,相對於維護**,資料庫架構的版本並不是那麼好維護。

這裡本人針對實際情況,理想化出一種可以清晰理解的資料庫架構指令碼的版本控制機制。

請先看目錄樹:

example.dataschema

├─v1.0

│  ├─common

│  │      001.create.table.product.sql

│  │      002.create.table.user.sql

│  │      003.create.table.feedback.sql

│  │      004.create.table.role.sql

│  │      005.create.function.fn_getlproductcode.sql

│  │      006.create.function.usp_cleanfeedback.sql

│  │

│  ├─enterprise

│  │      001.create.table.highland.sql

│  │

│  └─professional

│          001.create.table.lowend.sql

│├─v1.1

│  ├─common

│  │      001.alter.table.user.sql

│  │      002.alter.function.fn_getlproductcode.sql

│  │      003.drop.function.usp_cleanfeedback.sql

│  │

│  ├─enterprise

│  │      001.alter.table.highland.sql

│  │

│  └─professional

│          001.alter.table.lowend.sql

│└─v2.0

├─common

│      001.alter.table.product.sql

│      002.alter.table.user.sql

│      003.create.function.usp_checkproduct.sql

│├─enterprise

│      001.create.table.overland.sql

│└─professional

001.alter.table.lowland.sql

002.create.table.notebook.sql

相信上面的目錄結構還算明了,我們可以根據軟體的版本追溯資料庫,而不是通過版本控制工具來追溯原始資料庫,而數字序號的字首,更指明了指令碼執行順序,再也不用因為在建立資料庫時受到依賴/外來鍵關係的原因而執行指令碼失敗了。整個層次非常清晰,頭腦通透的 coder 相信可以一看便明了。

版本目錄下有三個資料夾:common, professional, enterprise,分別代表乙個產品的三個定製化版本,因為軟體中可能有這樣的需求,軟體基本結構不變,但是使用提供者模式提供了多個定製化版本,每個提供者的資料庫結構基本相同,但是又有極少的差異。通過上面的這種管理機制,可以避免在源**控制系統中開分支來維護,從某種程度上來說,提高了一定的可維護性。

這種管理機制類似於 ror,不過 ror 更 oo 一些,還能夠隔離特定資料;通過這種機制,我們可以結合 rikmigrations 或 migrator.net 進行自動化的資料庫公升級(需要編碼)。

2009-07-29 zealic

資料庫中的一種條件查詢 case when

在最近的一場筆試中,遇到這樣一道sql的題目。有一張表如下 要通過查詢語句得到以下結果 知識點 case 搜尋函式 1 簡單的case函式 case clo name 列名 when value1 列值 then value1 value1 是我們賦予的值 when value2 列值 then v...

資料庫的另一種設計方法

最近參與了乙個專案的開發,在開發的過程中發現資料庫的設計有點意思,順便拿來給大家分享一下。對於乙個專案來說,資料庫無疑是很重要,如果資料庫設計不好,專案就很難開發的優秀,所以乙個資料庫的設計就顯得尤其重要。在我這個專案中,有乙個訂單表 orderform 乙個商品資訊表 googsinfo 乙個系統...

Redis 另一種資料庫

最近與同學聊天過程時,兩人聊到了redis,很詫異於該同學對redis方面知識的匱乏,便對redis做乙個簡略的總結 資料庫我們都知道,也都非常熟悉mysql資料庫的使用,於是會想當然的認為資料庫都是同源的,在這種想法下,會對redis不以為然,這樣,在工作時,將會對其手足無措,由於在工作中的需要,...