? 現(xiàn)今開發(fā)的軟件當(dāng)中,多數(shù)系統(tǒng)的數(shù)據(jù)都是基于數(shù)據(jù)庫存儲的,但是由于軟件變化的復(fù)雜性,相對于維護(hù)代碼,數(shù)據(jù)庫架構(gòu)的版本并不是那么好維護(hù)。
? 這里本人針對實(shí)際情況,理想化出一種可以清晰理解的數(shù)據(jù)庫架構(gòu)腳本的版本控制機(jī)制。
? 請先看目錄樹:
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
? 相信上面的目錄結(jié)構(gòu)還算明了,我們可以根據(jù)軟件的版本追溯數(shù)據(jù)庫,而不是通過版本控制工具來追溯原始數(shù)據(jù)庫,而數(shù)字序號的前綴,更指明了腳本執(zhí)行順序,再也不用因?yàn)樵诮?shù)據(jù)庫時(shí)受到依賴/外鍵關(guān)系的原因而運(yùn)行腳本失敗了。整個(gè)層次非常清晰,頭腦通透的 Coder 相信可以一看便明了。
? 版本目錄下有三個(gè)文件夾:Common, Professional, Enterprise,分別代表一個(gè)產(chǎn)品的三個(gè)定制化版本,因?yàn)檐浖锌赡苡羞@樣的需求,軟件基本結(jié)構(gòu)不變,但是使用提供者模式提供了多個(gè)定制化版本,每個(gè)提供者的數(shù)據(jù)庫結(jié)構(gòu)基本相同,但是又有極少的差異。通過上面的這種管理機(jī)制,可以避免在源代碼控制系統(tǒng)中開分支來維護(hù),從某種程度上來說,提高了一定的可維護(hù)性。
? 這種管理機(jī)制類似于 ROR,不過 ROR 更 OO 一些,還能夠隔離特定數(shù)據(jù);通過這種機(jī)制,我們可以結(jié)合 RikMigrations ?或 Migrator.NET ?進(jìn)行自動化的數(shù)據(jù)庫升級(需要編碼)。
?
2009-07-29 Zealic
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
