通用類庫和業務類庫的設計思想
在我們利用pb進行mis系統開發時,有很多業務是通用的,並且有很多元件是可以復用的。為了提高mis系統的開發效率,縮短開發周期,有必要把一些公用物件抽象出來,以便作二次開發。
這些通用的物件,一部分是針對基本功能進行擴充的,我叫它通用類庫,採用加ufc_字首的方式命名, 一部分是針對業務功能進行擴充的,採用加wfc_字首的方式命名。
以下先從整體上描述整個類庫的框架, 然後在從具體的類庫來描述各個模組。
一、資料庫框架
我們假定現在有兩個mis系統需要開發,分別是"應用系統1"和"應用系統2",其中應用系統1中有兩年的資料,分別是年份1和年份2。為了實現系統功能的同一管理和**在最大可能的重用,我們設計了整個系統的資料庫框架:
如上圖,我們分別對應用系統1的年份1和年份2以及應用系統2分別建立三個資料庫: a1、a2和b。如果還有更多的應用系統的話,我們都可以建立更多的資料庫與之對應。
這裡,為什麼應用系統1中年份1和年份2要建立兩個資料庫呢?由於很多mis系統中,每自然年或者邏輯年後,系統的資料庫都需要進行備份和封存,上一年的資料庫一般就不允許再進行修改操作。這樣,我們可以建立乙個新的資料庫來存放新一年的資料,應用軟體可以在不進行任何修改的情況下實現多年資料的管理,並且能保證資料量不會過分膨脹。
把應用系統的資料庫按年份來管理後,就產生了許可權管理、資料庫連線、資料庫結轉等問題,為了實現系統許可權、使用者等的統一管理,我們不在每乙個具體的和業務有關的資料庫中建立相關的表,而是再建立乙個系統資料庫s,通過它來對應用系統資料庫進行連線和管理。在這個資料庫中,一般包括以下表:系統使用者表(user)系統角色表(role),系統權力表(power),角色模組權力表(rolerpower),使用者模組權力表(userrpower),使用者角色表(userrrole),系統模組表(module),系統物件表(object),模組物件表(modulerobject)等許可權管理表,為了實現其它一些通用的系統管理功能,還有一些通用的表,主要是:系統參數列(sysparm),系統字典表(systypeinfo),系統序列號表(syssequence),表屬性表(systable),
列屬性表(syscolumn),系統訊息表(sy**sg) ,歷史表(histbl),事件日誌表(eventlog),書籤表(bookmark),系統程式表(program),帳套表(accountset)等等。
資料庫這樣一改造後,許可權管理分成了兩部分,資料庫許可權管理和應用系統許可權管理, 資料庫許可權管理通過資料庫管理系統本身提供的功能來設定,應用系統許可權通過應用程式來設定, 同時我們的應用程式也要改造了, 應用系統首先連線系統資料庫s, 根據其連線的身份決定是否進行資料庫管理(建立和維護帳套以及備份資料庫等)還是連線業務系統,如果連線使用者是系統資料庫s的管理員,則開啟資料庫管理介面。 如果只是系統資料庫s的普通操作員,則從s的帳套表中讀出帳套資訊,顯示業務系統登入對話方塊,根據輸入的業務系統連線身份以及選擇的帳套,連線業務資料庫a1或a2,連線成功後,根據其在業務系統中定義的許可權(userright表)來決定其下一步的方向, 是開啟業務系統管理介面,還是業務系統操作介面。 我們看看改造後的系統登入流程:
資料庫這樣改造後,系統的安全性獲得了極大的提高,對於資料庫管理員有至高無上的權力,它可以建立系統資料庫s的連線使用者,賦予其普通的資料庫連線許可權和對帳套表的select許可權, 它連線上系統資料庫s後,可以建立帳套(即業務資料庫),設定其資料庫連線引數:使用者名稱和密碼等, 這些連線引數可以不必透露給業務系統管理員,而只需把在系統資料庫s上建立的普通連線賬號告訴業務系統使用者就行了。 業務系統使用者利用此賬號來連線系統資料庫s,然後從帳套表中取出所有的有效帳套,彈出業務系統登入對話方塊, 選擇乙個帳套以及業務系統的登入使用者名稱與密碼,進行登入,系統首先必須根據帳套獲取此帳套實際連線的資料庫以及登入的使用者名稱與密碼,假如我們是選擇了a2, 利用表中設定的使用者名稱和密碼(當然是加過密的嘍),連線a2資料庫,然後從系統使用者表(user)中檢驗其系統使用者身份,通過後,才能登入到系統中。 這樣,系統就建立了對兩個資料庫的連線。
除此之外,如果考慮到業務系統的本地化、個性化,在c/s構架下,我們可以再在每個業務系統的本地自動建立乙個檔案型資料庫,一般可以採用access和sqlanywhere來實現,也可以採用自己的格式來定義。在其中可以建立一些通用表:個性化表(preference),方案表(scheme),語言表(language)等。
這樣構架後, 乙個mis系統的資料就由三個資料庫組成, 系統中必須保持對這三個資料庫的連線, 在pb中,我採用了三個事務連線來管理,分別為:sqlsys, sqlcom , sqlloc。
接下來,將在這個資料庫架構下,進行通用類庫搭建。
(待續)
C 類庫 OTL通用的資料庫連線類庫
from otl是乙個純c 的通用資料庫連線模板庫,可以支援各種當下流行的資料庫,如oracle,sybase,mysql,postgresql,enterprisedb,sqlite,ms access,firebird等等.它是乙個跨平台類庫,在ms windows,linux unix mac...
c 連線mysql 通用類 資料庫通用連線類
usingsystem usingsystem.data usingsystem.data.sqlclient namespacedataproviders sqldataprovider 的摘要說明。internal classsqldataprovider idataprovider priva...
C 通用類庫 匯出資料
類名 ecanoutputdata 作用 匯出資料 二進位製流的形式 using system using system.collections.generic using system.text using system.windows.forms using system.io using sy...