專利名稱:一種在實時數據庫中實現更新數據的方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及數據庫技術,特別是涉及一種在實時數據庫中實現更新數據的方法和系統(tǒng)。
背景技術:
目前,為實現快速訪問數據以便進行數據的快速處理,實時數據庫應運而生。與其它常用的數據庫一樣,實時數據庫也采用了“關系”來作為數據的表達方式,所述的關系就是通常描述的一張表。為便于表達,以下將數據的表達方式“關系”均稱為關系表。在實時數據庫中,關系表表示了一種業(yè)務功能的所有屬性集合,而業(yè)務功能之間在數據本質上是不能完全獨立而是存在普遍關聯關系的,相應地,各關系表之間也存在普遍的關聯關系。關聯關系可能存在于兩張關系表之間,也可能存在于一張關系表與其它多張關系表之間。比如,如下所示的關系表S表示了學生關系,
關系表S如下所示的關系表C為表示了課程關系,
關系表C如下所示的關系表SC表示了學習關系。
關系表SC由上述關系表S、關系表C和關系表SC可以看出,由于關系表S與關系表C之間不存在關聯字段,也就是說,關系表S與關系表C之間沒有描述相同信息或相互依賴的字段,所以關系表S與關系表C之間不存在關聯關系,由于關系表SC與關系表S之間存在關聯字段“學號”,且關系表SC與關系表C之間存在關聯字段“課程號”,因此,關系表SC分別與關系表S和關系表SC存在關聯關系。
圖1是現有技術對實時數據庫關系表中的數據進行更新的流程圖。參見圖1,在現有技術中,對實時數據庫關系表中的數據進行更新的過程主要包括以下步驟步驟101預先針對一個關系表,設置一段固定代碼,通過所設置的固定代碼記錄該關系表與實時數據庫中其它關系表之間的關聯關系信息及針對該關系表所需執(zhí)行的關聯關系檢查的信息。
步驟102重復執(zhí)行步驟101的過程,直至針對每一個關系表均設置出一段固定代碼來記錄該關系表與實時數據庫中其它關系表之間的關聯關系信息及針對該關系表所需執(zhí)行的關聯關系檢查的信息。
步驟103根據所設置的固定代碼完成關聯關系檢查,并實現對實時數據庫中的數據進行更新的過程。
這里,所述的數據更新可以是在關系表中增加、刪除或修改數據。
步驟104對關聯關系發(fā)生變化的關系表的固定代碼進行修改。
這里,由于在進行數據更新后,比如,刪除或修改一個關系表中的數據后,則很可能會導致該關系表的關聯關系發(fā)生變化,這樣,則必須執(zhí)行本步驟中的對其對應的固定代碼進行修改的過程,從而記錄該關系表當前的關聯關系及針對該關系表所需執(zhí)行的關聯關系檢查。
由以上描述可以看出,在現有技術實現數據更新的過程中,由于一個關系表與其它關系表之間的關聯關系信息是寫死在該關系表所對應的固定代碼中,所以,系統(tǒng)每當執(zhí)行數據更新過程后,則必須針對關聯關系發(fā)生變化的關系表的固定代碼進行修改,由于是對系統(tǒng)的固定代碼進行修改,因此,會導致系統(tǒng)運行的不穩(wěn)定。另外,在現有技術實現數據更新的過程中,必須針對每一個關系表分別設置固定代碼,也就是說,所設置的每一段固定代碼完全依賴于具體的關系表,關系表不同,其對應的固定代碼則不相同,這樣,則導致了代碼數量較多,從而大大增加了系統(tǒng)的出錯幾率,降低了系統(tǒng)的性能。
發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提供一種在實時數據庫中實現更新數據的方法,本發(fā)明的另一目的在于提供一種在實時數據庫中實現更新數據的系統(tǒng),以避免修改系統(tǒng)中的固定代碼,增加系統(tǒng)運行的穩(wěn)定性。
為了達到上述目的,本發(fā)明的技術方案是這樣實現的一種在實時數據庫中實現更新數據的方法,包括以下步驟A、針對數據庫中所有關系表設置一段固定代碼,該固定代碼記錄所需執(zhí)行的關聯關系檢查的信息;B、針對每一個目標關系表分別設置一條用于表示該目標關系表與其它關系表之間關聯關系的記錄;C、接收外部輸入的需更新數據和更新所涉及關系表的信息,根據所設置的固定代碼和更新所涉及關系表對應的記錄,進行關聯關系檢查,并根據關聯關系檢查的結果在更新所涉及關系表中對所述需更新數據進行更新;D、對關聯關系發(fā)生變化的關系表所對應的記錄進行修正。
在步驟B中,所述設置記錄的步驟包括B1、設置目標關系表標識字段和關聯字段區(qū);B2、將目標關系表的標識寫入所設置的目標關系表標識字段中,并將目標關系表的關聯關系信息寫入所設置的關聯字段區(qū)中。
在步驟B1中,所設置的關聯字段區(qū)中包括主鍵字段區(qū);所述目標關系表的關鍵字段為目標關系表的主鍵;在步驟B2中,所述將目標關系表的關聯關系信息寫入關聯字段區(qū)的步驟包括將目標關系表的主鍵在該目標關系表中的信息寫入所設置的主鍵字段區(qū)中。
所述主鍵字段區(qū)中包括依賴關系表標識字段、關聯位置字段、起始位置字段和關聯長度字段;所述將目標關系表的主鍵在該目標關系表中的信息寫入主鍵字段區(qū)的步驟包括將目標關系表的標識寫入主鍵字段區(qū)中的依賴關系表標識字段,將目標關系表的主鍵在目標關系表中所處字段位置寫入主鍵字段區(qū)中的關聯位置字段,將目標關系表的主鍵在目標關系表中所處的字段起始位置寫入主鍵字段區(qū)中的起始位置字段中,并將目標關系表的主鍵在目標關系表中占用的字段長度寫入主鍵字段區(qū)中的關聯長度字段中。
在步驟B1中,所設置的關聯字段區(qū)中包括主鍵字段區(qū);所述目標關系表的關鍵字段為目標關系表的外鍵;在步驟B2中,所述將目標關系表的關聯關系信息寫入關聯字段區(qū)的步驟包括將目標關系表的外鍵在該目標關系表中的信息和在目標關系表所依賴關系表中的信息寫入所述主鍵字段區(qū)中。
所述主鍵字段區(qū)中包括依賴關系表標識字段、關聯位置字段、起始位置字段和關聯長度字段;所述將目標關系表的外鍵在該目標關系表及其所依賴關系表中的信息寫入主鍵字段區(qū)的步驟包括將目標關系表所依賴關系表的標識寫入主鍵字段區(qū)中的依賴關系表標識字段,將目標關系表的外鍵在目標關系表所依賴關系表中所處的字段位置寫入主鍵字段區(qū)中的關聯位置字段,將目標關系表的外鍵在目標關系表中所處的字段起始位置寫入主鍵字段區(qū)中的起始位置字段中,并將目標關系表的外鍵在目標關系表中占用的字段長度寫入主鍵字段區(qū)中的關聯長度字段中。
在步驟B1中,所設置的關聯字段區(qū)中包括主鍵字段區(qū);所述目標關系表的關鍵字段中包括目標關系表的主鍵和外鍵;在步驟B2中,所述將目標關系表的關聯關系信息寫入關聯字段區(qū)的步驟包括將目標關系表的主鍵在該目標關系表中的信息、目標關系表的外鍵在該目標關系表和在目標關系表所依賴關系表中的信息分別寫入所設置的主鍵字段區(qū)中。
所述主鍵字段區(qū)的個數大于1;所述主鍵字段區(qū)中包括依賴關系表標識字段、關聯位置字段、起始位置字段和關聯長度字段;所述將目標關系表的主鍵和外鍵分別寫入主鍵字段區(qū)的步驟包括將目標關系表的標識寫入第一主鍵字段區(qū)中的依賴關系表標識字段,將目標關系表的主鍵在目標關系表中所處字段位置寫入第一主鍵字段區(qū)中的關聯位置字段,將目標關系表的主鍵在目標關系表中所處的字段起始位置寫入第一主鍵字段區(qū)中的起始位置字段中,并將目標關系表的主鍵在目標關系表中占用的字段長度寫入第一主鍵字段區(qū)中的關聯長度字段中;將目標關系表所依賴關系表的標識寫入第二主鍵字段區(qū)中的依賴關系表標識字段,將目標關系表的外鍵在目標關系表所依賴關系表中所處的字段位置寫入第二主鍵字段區(qū)中的關聯位置字段,將目標關系表的外鍵在目標關系表中所處的字段起始位置寫入第二主鍵字段區(qū)中的起始位置字段中,并將目標關系表的外鍵在目標關系表中占用的字段長度寫入第二主鍵字段區(qū)中的關聯長度字段中。
所述主鍵字段區(qū)中包括主鍵數目字段;所述步驟B2進一步包括將目標關系表的關鍵字段的數目寫入所述的主鍵數目字段中。
在步驟B1中,所設置的關聯字段區(qū)中包括引用字段區(qū);
所述目標關系表通過引用的關聯字段與其它關系表之間產生關聯關系;在步驟B2中,所述將目標關系表的關聯關系信息寫入關聯字段區(qū)的步驟包括將所述關聯字段在目標關系表及其所依賴關系表中的信息寫入所設置的引用字段區(qū)中。
所述引用字段區(qū)中包括依賴關系表標識字段、關聯位置字段、起始位置字段和關聯長度字段;所述將關聯字段在目標關系表及其所依賴關系表中的信息寫入引用字段區(qū)的步驟包括將目標關系表所依賴關系表的標識寫入引用字段區(qū)中的依賴關系表標識字段,將關聯字段在目標關系表所依賴關系表中所處的字段位置寫入引用字段區(qū)中的關聯位置字段,將關聯字段在目標關系表中所處的字段起始位置寫入引用字段區(qū)中的起始位置字段中,并將關聯字段在目標關系表中占用的字段長度寫入引用字段區(qū)中的關聯長度字段中。
所述引用字段區(qū)中包括引用數目字段;所述步驟B2進一步包括將目標關系表所依賴關系表的數目寫入所述的引用數目字段中。
當更新數據為在一個目標關系表中增加數據時,在步驟C中,所述進行關聯關系檢查及數據更新的步驟包括根據所設置的固定代碼,執(zhí)行從所設置的各個記錄中獲取對應于數據更新所涉及關系表的記錄;根據所設置的固定代碼,執(zhí)行從所獲取的記錄中查找到關鍵字段信息,判斷所需增加數據的關鍵字段的數值在數據更新所涉及的關系表中是否已存在,如果是,則返回失敗結果;否則,根據所設置的固定代碼,執(zhí)行利用所獲取記錄中依賴關系表標識字段查找到數據更新所涉及關系表依賴的關系表,并判斷所增加的數據在所查找到的關系表中是否已存在,如果存在,則在數據更新所涉及的關系表中增加該數據,否則,返回失敗結果。
當更新數據為在一個目標關系表中刪除數據時,在步驟C中,所述進行關聯關系檢查及數據更新的步驟包括C1、根據所設置的固定代碼,執(zhí)行從所設置的各個記錄中獲取對應于數據更新所涉及關系表的記錄;C2、根據所設置的固定代碼,執(zhí)行在所獲取的記錄中,根據依賴關系表標識字段得到數據更新所涉及關系表的關鍵字段中包括自身的主鍵;C3、根據在其它記錄中依賴關系表標識字段,判斷是否存在引用數據更新所涉及關系表主鍵的其它關系表,如果存在,則執(zhí)行步驟C4,如果不存在,則執(zhí)行步驟C5;C4、在該其它關系表中刪除所述數據,結束當前流程;C5、在數據更新所涉及的關系表中刪除所述數據。
當更新數據為在一個目標關系表中刪除數據時,在步驟C中,所述進行關聯關系檢查及數據更新的步驟包括根據所設置的固定代碼,執(zhí)行從所設置的各個記錄中獲取對應于數據更新所涉及關系表的記錄;根據所設置的固定代碼,執(zhí)行在所獲取的記錄中,根據依賴關系表標識字段得到數據更新所涉及關系表的關鍵字段為自身的外鍵,在數據更新所涉及的關系表中刪除所述數據。
當更新數據為在一個目標關系表中修改數據時,在步驟C中,所述進行關聯關系檢查及數據更新的步驟包括根據所設置的固定代碼,執(zhí)行從所設置的各個記錄中獲取對應于數據更新所涉及關系表的記錄;根據所設置的固定代碼,執(zhí)行在所獲取的記錄中,根據依賴關系表標識字段查找到數據更新所涉及的關系表所依賴的關系表,并判斷所修改的數據是否在所查找到關系表中的值域范圍內,如果是,則在數據更新所涉及的關系表中修改所述數據,否則,返回失敗結果。
所述步驟D包括在數據更新所涉及關系表對應的記錄中,根據數據更新所涉及關系表與其它關系表當前的關聯關系修正所設置的各個字段的值。
一種在實時數據庫中實現更新數據的系統(tǒng),該系統(tǒng)包括應用單元以及實時數據庫中的數據操縱單元和存儲單元,其中,應用單元,用于接收管理人員輸入的需更新數據和更新所涉及關系表的信息,將需更新數據的信息和更新所涉及關系表的信息發(fā)送至數據操縱單元;數據操縱單元,用于保存針對實時數據庫中所有關系表所設置的、記錄所需執(zhí)行關聯關系檢查信息的固定代碼,在接收到更新所涉及關系表的信息后,根據所保存的固定代碼執(zhí)行從存儲模塊中各對應于不同關系表的記錄中,查找到與更新所涉及關系表對應的記錄,并從存儲模塊中的各關系表中,查找到更新所涉及的關系表,然后根據所保存的固定代碼和所查找到的記錄對更新所涉及的關系表執(zhí)行關聯關系檢查,根據關聯關系檢查結果在更新所涉及的關系表中進行數據更新,以及對存儲單元中關聯關系發(fā)生變化的關系表所對應的記錄進行修正;存儲單元,用于保存實時數據庫中的各個關系表和針對每一個關系表所設置的、表示該關系表與其它關系表之間關聯關系信息的各個記錄。
所述數據操縱單元進一步用于在數據更新失敗時,將更新失敗信息發(fā)送至應用單元;所述應用單元進一步用于在接收到數據操縱單元發(fā)來的失敗信息時,將更新失敗信息顯示給管理人員。
由此可見,由于為所有關系表執(zhí)行的關聯關系檢查操作都是相同的,因此,本發(fā)明為所有的關系表只設置了一段通用的固定代碼,通過該固定代碼記錄所需執(zhí)行的關聯關系檢查;而對于互不相同的具體的關聯關系,則通過分別為每一個關系表設置一條記錄來實現。這樣,每當系統(tǒng)執(zhí)行數據更新過程后,本發(fā)明只需對相應的記錄進行修正即可,而無需修改所設置的固定代碼,因此,大大提高了系統(tǒng)運行的穩(wěn)定性和升級的平滑性。另外,在本發(fā)明中,由于為所有的關系表只設置了一段通用的固定代碼,因此,代碼數量較少,從而大大降低了系統(tǒng)的出錯幾率,提高了系統(tǒng)的性能。
圖1是現有技術對實時數據庫關系表中的數據進行更新的流程圖。
圖2是本發(fā)明系統(tǒng)的結構示意圖。
圖3是本發(fā)明實施例的流程圖。
圖4是在本發(fā)明實施例中針對每一個關系表設置記錄的流程圖。
圖5是在本發(fā)明實施例中執(zhí)行增加數據的流程圖。
圖6是在本發(fā)明實施例中執(zhí)行刪除數據的流程圖。
圖7是在本發(fā)明實施例中執(zhí)行修改數據的流程圖。
具體實施例方式
本發(fā)明提出了一種在實時數據庫中更新數據的方法,其核心思想是針對數據庫中所有關系表設置一段固定代碼,該固定代碼記錄所需執(zhí)行的關聯關系檢查的信息;對每一個目標關系表分別設置一條用于表示該目標關系表與其它關系表之間關聯關系的記錄;接收外部輸入的需更新數據和更新所涉及關系表的信息,根據所設置的固定代碼和更新所涉及關系表對應的記錄,進行關聯關系檢查,并根據關聯關系檢查的結果在更新所涉及關系表中對所述需更新數據進行更新;對關聯關系發(fā)生變化的關系表所對應的記錄進行修正。
本發(fā)明相應地還提出了一種在實時數據庫中更新數據的系統(tǒng)。圖2是本發(fā)明系統(tǒng)的結構示意圖。參見圖2,本發(fā)明系統(tǒng)包括應用單元以及實時數據庫中的數據操縱單元和存儲單元,其中,應用單元,用于接收管理人員輸入的需更新數據和更新所涉及關系表的信息,將需更新數據的信息和更新所涉及關系表的信息發(fā)送至數據操縱單元;數據操縱單元,用于保存針對實時數據庫中所有關系表所設置的、記錄所需執(zhí)行關聯關系檢查信息的固定代碼,在接收到更新所涉及關系表的信息后,根據所保存的固定代碼執(zhí)行從存儲模塊中各對應于不同關系表的記錄中,查找到與更新所涉及關系表對應的記錄,并從存儲模塊中的各關系表中,查找到更新所涉及的關系表,然后根據所保存的固定代碼和所查找到的記錄對更新所涉及的關系表執(zhí)行關聯關系檢查,根據關聯關系檢查結果在更新所涉及的關系表中進行數據更新,以及對存儲單元中關聯關系發(fā)生變化的關系表所對應的記錄進行修改;
存儲單元,用于保存實時數據庫中的各個關系表和針對每一個關系表所設置的、表示該關系表與其它關系表之間關聯關系信息的各個記錄。
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖及具體實施例對本發(fā)明作進一步地詳細描述。
圖3是本發(fā)明實施例的流程圖。參見圖2和圖3,在本發(fā)明中,實現對實時數據庫關系表中的數據進行更新的過程具體包括以下步驟步驟301預先針對實時數據庫中所有關系表設置一段固定代碼,并將所設置的固定代碼保存在數據操縱單元中,其中,所設置的固定代碼記錄所需執(zhí)行的關聯關系檢查的信息。
步驟302預先在實時數據庫中,針對每一個關系表分別設置一條用于表示該關系表與其它關系表之間關聯關系的記錄,并將所設置的每一條記錄保存在用于保存實時數據庫中各個關系表的存儲模塊中。
這里,圖4是在本發(fā)明實施例中針對每一個關系表設置記錄的流程圖。參見圖4,在本發(fā)明中,步驟302中所述的針對每一個關系表分別設置一條記錄的過程具體包括以下步驟步驟401在實時數據庫中,增加用于記載關聯關系的表Keylist。
步驟402在Keylist表中,設置目標關系表標識(ID)字段。
這里,設置目標關系表ID字段是為了在后續(xù)過程中能夠通過該字段表明其所在的記錄對應的關系表,即目標關系表。
步驟403在Keylist表中,設置主鍵字段區(qū)。
這里,所設置的主鍵字段區(qū)包括主鍵數目字段和主鍵關聯字段區(qū)。其中,主鍵數目字段表明主鍵的數目。為便于描述,以下將所設置的主鍵數目字段對應為參數KeyFldNum。主鍵關聯字段區(qū)具體包括以下字段一、主鍵依賴關系表ID字段。為便于描述,以下將所設置的主鍵依賴關系表ID字段對應為參數RelationID。
二、主鍵關聯位置字段。為便于描述,以下將主鍵關聯字段對應為參數KeyFld。
三、主鍵起始位置字段。為便于描述,以下將主鍵起始位置字段對應為參數FldBgnPos。
四、主鍵關聯長度字段。為便于描述,以下將主鍵關聯長度字段對應為參數FldLen。
需要說明的是,由于一個關系表往往與其它多個關系表之間存在關聯關系,因此,在本步驟中,可以在Keylist表中設置多個主鍵關聯字段區(qū),比如包括4個主鍵關聯字段區(qū)。
步驟404在Keylist表中,設置引用字段區(qū)。
這里,由于目標關系表可能不是通過自身的關鍵字段與其它關系表產生關聯關系,也就是說,所述的關聯字段不是目標關系表的關鍵字段而僅僅作為目標關系表的引用,因此,本步驟設置引用字段區(qū)。所設置的引用字段區(qū)包括引用數目字段和引用關聯字段區(qū)。其中,引用數目字段表明引用的數目,也就是目標關系表所依賴的關系表的數目,為便于描述,以下將所設置的引用數目字段對應為參數RefFldNum。引用關聯字段區(qū)具體包括以下字段一、引用依賴關系表ID字段。
這里,引用依賴關系表ID字段表明目標關系表所依賴的關系表的ID。為便于描述,以下將所設置的引用依賴關系表ID字段對應為參數RefRelationID。
二、引用關聯位置字段。
這里,引用關聯位置字段表明關聯字段在目標關系表所依賴關系表中所處的字段位置。為便于描述,以下將引用關聯字段對應為參數RefFld。
三、引用起始位置字段。
這里,引用起始位置字段表明關聯字段在目標關系表中的字段起始位置。為便于描述,以下將引用起始位置字段對應為參數RefFldBgnPos。
四、引用關聯長度字段。
這里,引用關聯長度字段表明關聯字段在目標關系表中占用的字段長度。為便于描述,以下將引用關聯長度字段對應為參數RefFldLen。
需要說明的是,由于一個關系表往往與其它多個關系表之間存在關聯關系,因此,在本步驟中,可以在Keylist表中設置多個引用關聯字段區(qū),比如包括4個引用關聯字段區(qū),第1個至第4個分別記載的是關聯字段在目標關系表所依賴的第1個至第4個關系表中的位置信息。
根據以上描述,本發(fā)明在實時數據庫中所設置完成的記載關聯關系的Keylist表可如下所示
Keylist表上述步驟402至步驟404所設置的內容即為一條記錄中所應包括的內容。
步驟405在所增加的Keylist表中,在目標關系表ID字段寫入當前所針對的目標關系表的ID。
這里,比如當前需要針對如上所述的目標關系表SC進行記錄,也就是說,當前需要記錄關系表SC與其它關系表之間的關聯關系,則在目標關系表ID字段寫入目標關系表的ID,即SC,也就是說,在上述Keylist表中的參數RelationID所對應的字段寫入SC。
步驟406在主鍵字段區(qū),將目標關系表的關鍵字段的數目寫入主鍵字段區(qū)中的主鍵數目字段。
步驟407判斷目標關系表的關鍵字段中是否僅包括該目標關系表的主鍵,如果僅包括主鍵,則執(zhí)行步驟408,如果僅包括外鍵,則執(zhí)行步驟409,如果即包括主鍵也包括外鍵,則執(zhí)行步驟410。
這里,如果目標關系表的關鍵字段為自身的主鍵,則表明目標關系表的關鍵字段不是其它關系表的主鍵,所以,應在所設置的主鍵字段區(qū)中寫入關鍵字段在目標關系表中的信息,即執(zhí)行后續(xù)步驟408,如果目標關系表的關鍵字段為自身的外鍵,則表明目標關系表的關鍵字段是其它關系表的主鍵,所以,應在所設置的主鍵字段區(qū)中寫入關鍵字段在目標關系表和所依賴關系表中的信息,即執(zhí)行后續(xù)步驟409。
步驟408在主鍵字段區(qū)中,在主鍵關聯字段區(qū)內的各個字段內寫入關鍵字段在目標關系表中的位置信息,轉向執(zhí)行步驟411。
執(zhí)行到本步驟時,由于目標關系表的關鍵字段為該目標關系表的主鍵,所以寫入的只是關鍵字段在目標關系表中的位置信息,其具體實現過程為將目標關系表的ID寫入主鍵依賴關系表ID字段;將關鍵字段在目標關系表中所處的字段位置寫入主鍵關聯位置字段;將關鍵字段在目標關系表中所處的字段起始位置寫入主鍵起始位置字段;將關鍵字段在目標關系表中占用的字段長度寫入主鍵關聯長度字段。
步驟409在主鍵字段區(qū)中,在主鍵關聯字段區(qū)內的各個字段內寫入關鍵字段在目標關系表和所依賴關系表中的位置信息,轉向執(zhí)行步驟411。
執(zhí)行到本步驟時,由于目標關系表的關鍵字段為該目標關系表的外鍵,也就是說,所述的關鍵字段為目標關系表與其它關系表的關聯字段,所以寫入的是關鍵字段也就是關聯字段在目標關系表和所依賴關系表中的位置信息,其具體實現過程為將目標關系表所依賴關系表的ID寫入主鍵依賴關系表ID字段;將關聯字段在目標關系表所依賴關系表中所處的字段位置寫入主鍵關聯位置字段;將關聯字段在目標關系表中所處的字段起始位置寫入主鍵起始位置字段;將關聯字段在目標關系表中占用的字段長度寫入主鍵關聯長度字段。
步驟410在主鍵字段區(qū)中,在第一主鍵關聯字段區(qū)內的各個字段內寫入關鍵字段中目標關系表的主鍵在目標關系表中的位置信息,并在第二主鍵關聯字段區(qū)內的各個字段內寫入關鍵字段中目標關系表的外鍵在目標關系表和所依賴關系表中的位置信息。
本步驟的具體實現過程為將目標關系表的標識寫入第一主鍵字段區(qū)中的主鍵依賴關系表標識字段,將目標關系表的主鍵在目標關系表中所處字段位置寫入第一主鍵字段區(qū)中的主鍵關聯位置字段,將目標關系表的主鍵在目標關系表中所處的字段起始位置寫入第一主鍵字段區(qū)中的主鍵起始位置字段中,并將目標關系表的主鍵在目標關系表中占用的字段長度寫入第一主鍵字段區(qū)中的主鍵關聯長度字段中;將目標關系表所依賴關系表的標識寫入第二主鍵字段區(qū)中的主鍵依賴關系表標識字段,將目標關系表的外鍵在目標關系表所依賴關系表中所處的字段位置寫入第二主鍵字段區(qū)中的主鍵關聯位置字段,將目標關系表的外鍵在目標關系表中所處的字段起始位置寫入第二主鍵字段區(qū)中的主鍵起始位置字段中,并將目標關系表的外鍵在目標關系表中占用的字段長度寫入第二主鍵字段區(qū)中的主鍵關聯長度字段中。
步驟411判斷目標關系表與其它關系表之間是否存在關聯字段作為目標關系表的引用,如果是,則執(zhí)行步驟412,否則,結束當前流程。
這里,如果關聯字段在目標關系表SC中不是關鍵字段,而僅僅是引用,則執(zhí)行后續(xù)步驟412至后續(xù)步驟413的過程。
步驟412在引用字段區(qū)中,將目標關系表所依賴的關系表的數目寫入引用字段區(qū)中的引用數目字段。
步驟413在引用字段區(qū)中,在引用關聯字段區(qū)內的各個字段內寫入關聯字段的位置信息。
本步驟的具體實現過程為將與目標關系表存在關聯關系的關系表的ID寫入引用依賴關系表ID字段;將關聯字段在目標關系表所依賴關系表中所處的字段位置寫入引用關聯位置字段;將關聯字段在目標關系表中所處的字段起始位置寫入引用起始位置字段;將關聯字段在目標關系表中占用的字段長度寫入引用關聯長度字段。
上述步驟405至步驟413則實現了針對實時數據庫中的一個關系表設置用于記載該關系表與其它關系表之間關聯關系的記錄的過程。
步驟414重復執(zhí)行步驟405至步驟413,直至針對實時數據庫中的每一個關系表均設置完用于記載該關系表與其它關系表之間關聯關系的記錄。
步驟303當管理人員需要對實時數據庫中一個關系表中的數據進行更新時,管理人員將需更新數據和更新所涉及關系表的信息輸入應用單元。
步驟304應用單元將所接收到的需更新數據的信息和更新所涉及關系表的信息發(fā)送至數據操縱單元。
步驟305數據操縱單元在接收到更新所涉及關系表的信息后,根據所保存的固定代碼執(zhí)行從存儲模塊中各對應于不同關系表的記錄中,查找到與更新所涉及關系表對應的記錄。
步驟306數據操縱單元根據所保存的固定代碼執(zhí)行從存儲模塊中的各關系表中,查找到更新所涉及的關系表。
步驟307數據操縱單元根據所保存的固定代碼和所查找到的記錄,對更新所涉及的關系表執(zhí)行關聯關系檢查。
步驟308數據操縱單元根據所保存的固定代碼執(zhí)行根據關聯關系檢查結果在更新所涉及的關系表中進行數據更新。
步驟309數據操縱單元根據所保存的固定代碼執(zhí)行對存儲單元中關聯關系發(fā)生變化的關系表所對應的記錄進行修正。
在步驟308中,所述的更新可以是在實時數據庫的已有關系表中增加、刪除或修改數據。這樣,在步驟309中,則是對更新所導致的關聯關系變化的關系表所對應的記錄進行修改,也就是說,在關聯關系變化的關系表所對應的記錄中,修正所設置的各個字段的值。
需要說明的是,以Keylist表的形式來保存記載關系表與其它關系表之間關聯關系的記錄只是本發(fā)明的一種實現方式,本發(fā)明也可通過其它形式來實現。
圖5是在本發(fā)明實施例中執(zhí)行增加數據的流程圖。參見圖5,在本發(fā)明中,當更新數據為在更新所涉及的關系表以下稱為目標關系表,比如目標關系表SC中增加數據時,上述步驟307至步驟308的實現過程具體包括步驟501數據操縱單元根據所保存的固定代碼,執(zhí)行對存儲單元中的目標關系表SC進行唯一性檢查,判斷所增加的數據是否合法,如果是,則執(zhí)行步驟502,否則,執(zhí)行步驟505。
本步驟的具體實現過程為數據操縱單元判斷所需增加數據的關鍵字段的數值在目標關系表SC中是否已存在,如果是,則認為所增加的數據不合法,否則,認為所增加的數據合法。
步驟502數據操縱單元根據所保存的固定代碼,執(zhí)行在存儲單元中在所查找到的記錄中,在依賴關系表ID字段獲取目標關系表SC所依賴的各個關系表的信息。
此處所述的依賴關系表ID字段為主鍵依賴關系表ID字段和引用依賴關系表ID字段。
步驟503數據操縱單元根據所設置的固定代碼,執(zhí)行在存儲單元中利用所獲取的目標關系表SC所依賴的各個關系表的信息,到目標關系表SC所依賴的各個關系表中進行檢查,判斷目標關系表SC所依賴的各個關系表中的被依賴字段是否存在所需增加的數據,如果是,則執(zhí)行步驟504,否則,執(zhí)行步驟505。
步驟504數據操縱單元根據所設置的固定代碼,執(zhí)行在存儲單元中在目標關系表SC中增加該數據,結束當前流程。
上述步驟502至步驟504的具體實現過程可以舉例為根據Keylist表中主鍵字段區(qū)中的RelationID1和RelationID2,獲取目標關系表所依賴的關系表為關系表S和關系表C,且根據關系表S和關系表C分別在Keylist表中主鍵字段區(qū)中的主鍵關聯位置字段KeyFld1和KeyFld2分別獲取關聯字段在關系表S和關系表C中所處的字段位置信息,然后根據所獲取的各信息在關系表S和關系表C中進行關聯關系檢查,如果所增加的數據在關系表S且在關系表C中存在,則在目標關系表SC中增加該數據,如果所增加的數據在關系表S或關系表C中不存在,則失敗。
步驟505數據操縱單元將更新失敗信息發(fā)送給應用單元,應用單元將更新失敗信息顯示給管理人員。
圖6是在本發(fā)明實施例中執(zhí)行刪除數據的流程圖。參見圖6,在本發(fā)明中,當更新數據為在更新所涉及的關系表以下稱為目標關系表,比如目標關系表SC中刪除數據時,上述步驟307至步驟308的實現過程具體包括步驟601數據操縱單元根據所保存的固定代碼,執(zhí)行在存儲單元中對目標關系表SC進行唯一性檢查,判斷所刪除的數據是否合法,如果是,則執(zhí)行步驟602,否則,執(zhí)行步驟606。
本步驟的具體實現過程為數據操縱單元判斷所需刪除的數據在目標關系表SC中是否已存在,如果不存在,則認為不合法,如果存在,則認為合法。
步驟602數據操縱單元根據所保存的固定代碼,判斷目標關系表SC的關鍵字段中包括自身的主鍵還是外鍵,如果僅包括外鍵,則執(zhí)行步驟603,如果包括有主鍵,則執(zhí)行步驟604。
這里,如果目標關系表SC的關鍵字段中包括有主鍵所對應的情況可以是目標關系表SC的關鍵字段為自身的主鍵,或,目標關系表SC的關鍵字段為自身的主鍵和外鍵。
步驟603數據操縱單元根據所保存的固定代碼,執(zhí)行在存儲單元中直接在目標關系表SC中刪除該所需刪除的數據,結束當前流程。
步驟604數據操縱單元根據所保存的固定代碼,執(zhí)行在存儲單元中在所查找到的記錄中,根據依賴關系表ID字段,判斷是否存在引用目標關系表主鍵的其它關系表,如果是,則執(zhí)行步驟605,否則,返回步驟603。
此處所述的依賴關系表ID字段為主鍵依賴關系表ID字段和引用依賴關系表ID字段。
步驟605數據操縱單元根據所保存的固定代碼,執(zhí)行在存儲單元中在該引用目標關系表主鍵的其它關系表中刪除引用該關鍵字數值的所有數據,結束當前流程。
步驟606數據操縱單元將更新失敗信息發(fā)送給應用單元,應用單元將更新失敗信息顯示給管理人員。
圖7是在本發(fā)明實施例中執(zhí)行修改數據的流程圖。參見圖7,在本發(fā)明中,當更新數據為在更新所涉及的關系表以下稱為目標關系表,比如目標關系表SC中修改數據時,上述步驟307至步驟308的實現過程具體包括步驟701數據操縱單元根據所保存的固定代碼,執(zhí)行在存儲單元中對目標關系表SC進行唯一性檢查,判斷所修改的數據是否合法,如果是,則執(zhí)行步驟702,否則,執(zhí)行步驟706。
本步驟的具體實現過程為判斷所需修改的數據在目標關系表SC中是否已存在,如果不存在,則認為不合法,否則,認為合法。
步驟702數據操縱單元根據所保存的固定代碼,執(zhí)行在存儲單元中在所查找到的記錄中,判斷所修改的數據是否在引用字段區(qū),如果是,則執(zhí)行步驟703,否則,直接執(zhí)行步驟705。
步驟703數據操縱單元根據所保存的固定代碼,執(zhí)行在存儲單元中在所查找到的記錄中,根據依賴關系表ID字段,獲取目標關系表SC所依賴的各個關系表的信息。
此處所述的依賴關系表ID字段為主鍵依賴關系表ID字段和引用依賴關系表ID字段。
步驟704數據操縱單元根據所保存的固定代碼,執(zhí)行在存儲單元中根據所獲取的目標關系表SC所依賴的各個關系表的信息,到目標關系表SC所依賴的各個關系表中進行檢查,判斷所需修改的數據是否在目標關系表SC所依賴的各個關系表中的值域范圍內,如果是,則執(zhí)行步驟705,否則,執(zhí)行步驟706。
步驟705數據操縱單元根據所保存的固定代碼,執(zhí)行在存儲單元中在目標關系表SC中對所需修改的數據進行修改,結束當前流程。
步驟706數據操縱單元將更新失敗信息發(fā)送給應用單元,應用單元將更新失敗信息顯示給管理人員。
總之,以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種在實時數據庫中實現更新數據的方法,其特征在于,該方法包括以下步驟A、針對數據庫中所有關系表設置一段固定代碼,該固定代碼記錄所需執(zhí)行的關聯關系檢查的信息;B、針對每一個目標關系表分別設置一條用于表示該目標關系表與其它關系表之間關聯關系的記錄;C、接收外部輸入的需更新數據和更新所涉及關系表的信息,根據所設置的固定代碼和更新所涉及關系表對應的記錄,進行關聯關系檢查,并根據關聯關系檢查的結果在更新所涉及關系表中對所述需更新數據進行更新;D、對關聯關系發(fā)生變化的關系表所對應的記錄進行修正。
2.根據權利要求1所述的方法,其特征在于,在步驟B中,所述設置記錄的步驟包括B1、設置目標關系表標識字段和關聯字段區(qū);B2、將目標關系表的標識寫入所設置的目標關系表標識字段中,并將目標關系表的關聯關系信息寫入所設置的關聯字段區(qū)中。
3.根據權利要求2所述的方法,其特征在于,在步驟B1中,所設置的關聯字段區(qū)中包括主鍵字段區(qū);所述目標關系表的關鍵字段為目標關系表的主鍵;在步驟B2中,所述將目標關系表的關聯關系信息寫入關聯字段區(qū)的步驟包括將目標關系表的主鍵在該目標關系表中的信息寫入所設置的主鍵字段區(qū)中。
4.根據權利要求3所述的方法,其特征在于,所述主鍵字段區(qū)中包括依賴關系表標識字段、關聯位置字段、起始位置字段和關聯長度字段;所述將目標關系表的主鍵在該目標關系表中的信息寫入主鍵字段區(qū)的步驟包括將目標關系表的標識寫入主鍵字段區(qū)中的依賴關系表標識字段,將目標關系表的主鍵在目標關系表中所處字段位置寫入主鍵字段區(qū)中的關聯位置字段,將目標關系表的主鍵在目標關系表中所處的字段起始位置寫入主鍵字段區(qū)中的起始位置字段中,并將目標關系表的主鍵在目標關系表中占用的字段長度寫入主鍵字段區(qū)中的關聯長度字段中。
5.根據權利要求2所述的方法,其特征在于,在步驟B1中,所設置的關聯字段區(qū)中包括主鍵字段區(qū);所述目標關系表的關鍵字段為目標關系表的外鍵;在步驟B2中,所述將目標關系表的關聯關系信息寫入關聯字段區(qū)的步驟包括將目標關系表的外鍵在該目標關系表中的信息和在目標關系表所依賴關系表中的信息寫入所述主鍵字段區(qū)中。
6.根據權利要求5所述的方法,其特征在于,所述主鍵字段區(qū)中包括依賴關系表標識字段、關聯位置字段、起始位置字段和關聯長度字段;所述將目標關系表的外鍵在該目標關系表及其所依賴關系表中的信息寫入主鍵字段區(qū)的步驟包括將目標關系表所依賴關系表的標識寫入主鍵字段區(qū)中的依賴關系表標識字段,將目標關系表的外鍵在目標關系表所依賴關系表中所處的字段位置寫入主鍵字段區(qū)中的關聯位置字段,將目標關系表的外鍵在目標關系表中所處的字段起始位置寫入主鍵字段區(qū)中的起始位置字段中,并將目標關系表的外鍵在目標關系表中占用的字段長度寫入主鍵字段區(qū)中的關聯長度字段中。
7.根據權利要求2所述的方法,其特征在于,在步驟B1中,所設置的關聯字段區(qū)中包括主鍵字段區(qū);所述目標關系表的關鍵字段中包括目標關系表的主鍵和外鍵;在步驟B2中,所述將目標關系表的關聯關系信息寫入關聯字段區(qū)的步驟包括將目標關系表的主鍵在該目標關系表中的信息、目標關系表的外鍵在該目標關系表和在目標關系表所依賴關系表中的信息分別寫入所設置的主鍵字段區(qū)中。
8.根據權利要求7所述的方法,其特征在于,所述主鍵字段區(qū)的個數大于1;所述主鍵字段區(qū)中包括依賴關系表標識字段、關聯位置字段、起始位置字段和關聯長度字段;所述將目標關系表的主鍵和外鍵分別寫入主鍵字段區(qū)的步驟包括將目標關系表的標識寫入第一主鍵字段區(qū)中的依賴關系表標識字段,將目標關系表的主鍵在目標關系表中所處字段位置寫入第一主鍵字段區(qū)中的關聯位置字段,將目標關系表的主鍵在目標關系表中所處的字段起始位置寫入第一主鍵字段區(qū)中的起始位置字段中,并將目標關系表的主鍵在目標關系表中占用的字段長度寫入第一主鍵字段區(qū)中的關聯長度字段中;將目標關系表所依賴關系表的標識寫入第二主鍵字段區(qū)中的依賴關系表標識字段,將目標關系表的外鍵在目標關系表所依賴關系表中所處的字段位置寫入第二主鍵字段區(qū)中的關聯位置字段,將目標關系表的外鍵在目標關系表中所處的字段起始位置寫入第二主鍵字段區(qū)中的起始位置字段中,并將目標關系表的外鍵在目標關系表中占用的字段長度寫入第二主鍵字段區(qū)中的關聯長度字段中。
9.根據權利要求3所述的方法,其特征在于,所述主鍵字段區(qū)中包括主鍵數目字段;所述步驟B2進一步包括將目標關系表的關鍵字段的數目寫入所述的主鍵數目字段中。
10.根據權利要求2所述的方法,其特征在于,在步驟B1中,所設置的關聯字段區(qū)中包括引用字段區(qū);所述目標關系表通過引用的關聯字段與其它關系表之間產生關聯關系;在步驟B2中,所述將目標關系表的關聯關系信息寫入關聯字段區(qū)的步驟包括將所述關聯字段在目標關系表及其所依賴關系表中的信息寫入所設置的引用字段區(qū)中。
11.根據權利要求10所述的方法,其特征在于,所述引用字段區(qū)中包括依賴關系表標識字段、關聯位置字段、起始位置字段和關聯長度字段;所述將關聯字段在目標關系表及其所依賴關系表中的信息寫入引用字段區(qū)的步驟包括將目標關系表所依賴關系表的標識寫入引用字段區(qū)中的依賴關系表標識字段,將關聯字段在目標關系表所依賴關系表中所處的字段位置寫入引用字段區(qū)中的關聯位置字段,將關聯字段在目標關系表中所處的字段起始位置寫入引用字段區(qū)中的起始位置字段中,并將關聯字段在目標關系表中占用的字段長度寫入引用字段區(qū)中的關聯長度字段中。
12.根據權利要求11所述的方法,其特征在于,所述引用字段區(qū)中包括引用數目字段;所述步驟B2進一步包括將目標關系表所依賴關系表的數目寫入所述的引用數目字段中。
13.根據權利要求4、6、8或11所述的方法,其特征在于,當更新數據為在一個目標關系表中增加數據時,在步驟C中,所述進行關聯關系檢查及數據更新的步驟包括根據所設置的固定代碼,執(zhí)行從所設置的各個記錄中獲取對應于數據更新所涉及關系表的記錄;根據所設置的固定代碼,執(zhí)行從所獲取的記錄中查找到關鍵字段信息,判斷所需增加數據的關鍵字段的數值在數據更新所涉及的關系表中是否已存在,如果是,則返回失敗結果;否則,根據所設置的固定代碼,執(zhí)行利用所獲取記錄中依賴關系表標識字段查找到數據更新所涉及關系表依賴的關系表,并判斷所增加的數據在所查找到的關系表中是否已存在,如果存在,則在數據更新所涉及的關系表中增加該數據,否則,返回失敗結果。
14.根據權利要求4、6、8或11所述的方法,其特征在于,當更新數據為在一個目標關系表中刪除數據時,在步驟C中,所述進行關聯關系檢查及數據更新的步驟包括C1、根據所設置的固定代碼,執(zhí)行從所設置的各個記錄中獲取對應于數據更新所涉及關系表的記錄;C2、根據所設置的固定代碼,執(zhí)行在所獲取的記錄中,根據依賴關系表標識字段得到數據更新所涉及關系表的關鍵字段中包括自身的主鍵;C3、根據在其它記錄中依賴關系表標識字段,判斷是否存在引用數據更新所涉及關系表主鍵的其它關系表,如果存在,則執(zhí)行步驟C4,如果不存在,則執(zhí)行步驟C5;C4、在該其它關系表中刪除所述數據,結束當前流程;C5、在數據更新所涉及的關系表中刪除所述數據。
15.根據權利要求4、6、8或11所述的方法,其特征在于,當更新數據為在一個目標關系表中刪除數據時,在步驟C中,所述進行關聯關系檢查及數據更新的步驟包括根據所設置的固定代碼,執(zhí)行從所設置的各個記錄中獲取對應于數據更新所涉及關系表的記錄;根據所設置的固定代碼,執(zhí)行在所獲取的記錄中,根據依賴關系表標識字段得到數據更新所涉及關系表的關鍵字段為自身的外鍵,在數據更新所涉及的關系表中刪除所述數據。
16.根據權利要求4、6、8或11所述的方法,其特征在于,當更新數據為在一個目標關系表中修改數據時,在步驟C中,所述進行關聯關系檢查及數據更新的步驟包括根據所設置的固定代碼,執(zhí)行從所設置的各個記錄中獲取對應于數據更新所涉及關系表的記錄;根據所設置的固定代碼,執(zhí)行在所獲取的記錄中,根據依賴關系表標識字段查找到數據更新所涉及的關系表所依賴的關系表,并判斷所修改的數據是否在所查找到關系表中的值域范圍內,如果是,則在數據更新所涉及的關系表中修改所述數據,否則,返回失敗結果。
17.根據權利要求4、6、8、11或12所述的方法,其特征在于,所述步驟D包括在數據更新所涉及關系表對應的記錄中,根據數據更新所涉及關系表與其它關系表當前的關聯關系修正所設置的各個字段的值。
18.一種在實時數據庫中實現更新數據的系統(tǒng),其特征在于,該系統(tǒng)包括應用單元以及實時數據庫中的數據操縱單元和存儲單元,其中,應用單元,用于接收管理人員輸入的需更新數據和更新所涉及關系表的信息,將該需更新數據的信息和更新所涉及關系表的信息發(fā)送至數據操縱單元;數據操縱單元,用于保存針對實時數據庫中所有關系表所設置的、記錄所需執(zhí)行關聯關系檢查信息的固定代碼,在接收到更新所涉及關系表的信息后,根據所保存的固定代碼執(zhí)行從存儲模塊中各對應于不同關系表的記錄中,查找到與更新所涉及關系表對應的記錄,并從存儲模塊中的各關系表中,查找到更新所涉及的關系表,然后根據所保存的固定代碼和所查找到的記錄對更新所涉及的關系表執(zhí)行關聯關系檢查,根據關聯關系檢查結果在更新所涉及的關系表中進行數據更新,以及對存儲單元中關聯關系發(fā)生變化的關系表所對應的記錄進行修正;存儲單元,用于保存實時數據庫中的各個關系表和針對每一個關系表所設置的、表示該關系表與其它關系表之間關聯關系信息的各個記錄。
19.根據權利要求18所述的系統(tǒng),其特征在于,所述數據操縱單元進一步用于在數據更新失敗時,將更新失敗信息發(fā)送至應用單元;所述應用單元進一步用于在接收到數據操縱單元發(fā)來的失敗信息時,將更新失敗信息顯示給管理人員。
全文摘要
本發(fā)明公開了一種在實時數據庫中實現更新數據的方法和系統(tǒng),該系統(tǒng)包括應用單元、數據操縱單元和存儲單元。該方法包括針對數據庫中所有關系表設置一段固定代碼,該固定代碼記錄所需執(zhí)行的關聯關系檢查的信息;針對每一個目標關系表分別設置一條用于表示該目標關系表與其它關系表之間關聯關系的記錄;根據所設置的代碼和數據更新所涉及關系表對應的記錄進行關聯關系檢查,根據關聯關系檢查結果進行數據更新;對數據更新所涉及關系表對應的記錄進行修正。本發(fā)明在數據更新過程中無需修改所設置的固定代碼,因此,大大提高了系統(tǒng)升級的平滑性和運行的穩(wěn)定性。
文檔編號G06F17/30GK1858742SQ200610057099
公開日2006年11月8日 申請日期2006年3月17日 優(yōu)先權日2006年3月17日
發(fā)明者季小俊 申請人:華為技術有限公司