專利名稱:數(shù)據(jù)引用關系檢測裝置和數(shù)據(jù)引用關系檢測方法
技術領域:
本發(fā)明涉及數(shù)據(jù)檢測技術領域,具體而言,涉及一種數(shù)據(jù)引用關系檢測裝置和一種數(shù)據(jù)引用關系檢測方法。
背景技術:
當前的信息系統(tǒng)的功能日趨復雜,隨著功能的擴展各種業(yè)務對象在不斷增加,從而使得業(yè)務對象之間的關系也日趨復雜。目前大部分信息系統(tǒng)使用關系型數(shù)據(jù)庫對數(shù)據(jù)進行管理。隨著功能的增加,數(shù)據(jù)庫中的表關系及數(shù)據(jù)的記錄數(shù)量都在急劇增加。數(shù)據(jù)庫的性能直接影響系統(tǒng)的運行效率。在上述情況下需要通過一定方法保證數(shù)據(jù)記錄之間一致性及完整性。大多數(shù)系統(tǒng)中在刪除數(shù)據(jù)時均存在以下兩個問題,一是如何快速檢查數(shù)據(jù)庫中數(shù)據(jù)表的引用關系,以保證刪除數(shù)據(jù)未被其它數(shù)據(jù)表引用,避免在刪除后導致業(yè)務數(shù)據(jù)不完整而產(chǎn)生的錯誤;二是在數(shù)據(jù)被引用而無法刪除的情況下,如何將引用該數(shù)據(jù)的具體記錄定位出來并展現(xiàn)給最終用戶。而且還需要在完成上述兩種功能的情況下盡享減少用戶等待的時間在以往數(shù)據(jù)庫規(guī)模比較小下,數(shù)據(jù)表之間關系較為簡單的情況下,可通過數(shù)據(jù)庫外鍵關系保證數(shù)據(jù)的一致性及完整性,即指對引用字段建立外鍵約束。在刪除數(shù)據(jù)時,通過數(shù)據(jù)庫本身的機制保證被其它數(shù)據(jù)表引用的數(shù)據(jù)不會被刪除。但此方案在數(shù)據(jù)量比較大關系復雜的數(shù)據(jù)庫上并不可行。因為建立的外鍵數(shù)據(jù)量會直接影響數(shù)據(jù)庫的DML語句的執(zhí)行效率,外鍵新增越多,修改操作的數(shù)據(jù)庫執(zhí)行效率就會越慢。此外,數(shù)據(jù)庫外鍵約束校驗失敗信息會按數(shù)據(jù)庫不同而格式存在差異,無法直接提示給用戶,不便于用戶定位已引用待刪除數(shù)據(jù)的數(shù)據(jù)庫表及具體記錄。而且對于軟件系統(tǒng)的最終用戶希望得到的是業(yè)務上描述信息,而不僅僅是簡單的數(shù)據(jù)庫表信息。并且數(shù)據(jù)外鍵無法實現(xiàn)對同一張表內部分記錄檢查時的過濾,當存在比如當歷史數(shù)據(jù)或某些特定數(shù)據(jù)不想進行引用關系檢查時則無法實現(xiàn)。因此,需要一種新的數(shù)據(jù)引用關系檢測技術,能夠在刪除數(shù)據(jù)之前,檢測數(shù)據(jù)的引用關系,保障數(shù)據(jù)使用的一致性及完整性,并展現(xiàn)數(shù)據(jù)具體的引用關系。
發(fā)明內容
本發(fā)明正是基于上述問題,提出了一種數(shù)據(jù)引用關系檢測技術,能夠在刪除數(shù)據(jù)之前,檢測數(shù)據(jù)的引用關系,保障數(shù)據(jù)使用的一致性及完整性,并展現(xiàn)數(shù)據(jù)具體的引用關系O有鑒于此,本發(fā)明提出了一種數(shù)據(jù)引用關系檢測裝置,包括:設置單元,用于在將數(shù)據(jù)表存儲至數(shù)據(jù)庫時,為所述數(shù)據(jù)表設置主鍵;主鍵引用單元,用于在所述數(shù)據(jù)表中的第二數(shù)據(jù)表引用所述數(shù)據(jù)表中的第一數(shù)據(jù)表的數(shù)據(jù)時,控制所述第二數(shù)據(jù)表引用所述第一數(shù)據(jù)表中所述數(shù)據(jù)的主鍵;關聯(lián)存儲單元,用于將所述第二數(shù)據(jù)表的名稱、所述第一數(shù)據(jù)表的名稱、所述數(shù)據(jù)在所述第二數(shù)據(jù)表中所處的列的名稱、以及所述第一數(shù)據(jù)表中包含所述主鍵的列的名稱進行關聯(lián)存儲;查詢單元,用于在收到刪除目標數(shù)據(jù)的指令時,查詢所述目標數(shù)據(jù)所處的當前數(shù)據(jù)表的名稱,根據(jù)所述當前數(shù)據(jù)表的名稱,查詢引用所述目標數(shù)據(jù)的至少一個數(shù)據(jù)表,并查詢所述至少一個數(shù)據(jù)表中目標數(shù)據(jù)表的名稱,所述目標數(shù)據(jù)在所述目標數(shù)據(jù)表中所處的目標列的名稱,以及所述當前數(shù)據(jù)表中包含所述目標數(shù)據(jù)的主鍵的列的名稱;判斷單元,用于判斷所述目標列是否存在所述目標數(shù)據(jù)的主鍵;顯示單元,用于在所述判斷單元的判定結果為存在的情況下,顯示提示信息、以及所述目標數(shù)據(jù)表的名稱和所述目標列的名稱。在該技術方案中,將數(shù)據(jù)的引用關系性檢查和引用數(shù)據(jù)展現(xiàn)分開,減少了數(shù)據(jù)庫性能及時間消耗,提高系統(tǒng)的運行效率。通過確定目標數(shù)據(jù)表的名稱和目標列的名稱,使數(shù)據(jù)的引用關系得到完整的展現(xiàn),便于系統(tǒng)定位問題,確認具體引用數(shù)據(jù)記錄,以及后續(xù)對相關記錄進行處理。并且通過具體數(shù)據(jù)庫表注冊實現(xiàn),便于后續(xù)應用系統(tǒng)擴展時增加引用關系檢查,而不需影響原有的引用關系檢查。而且這種檢測并不依賴于數(shù)據(jù)庫本身提供的機制進行,可以在任何數(shù)據(jù)庫上使用,降低系統(tǒng)本身對數(shù)據(jù)庫的依賴。當確定目標數(shù)據(jù)被引用時,提示目標數(shù)據(jù)被引用,避免目標數(shù)據(jù)被刪除,保障了目標數(shù)據(jù)使用的一致性及完整性。在上述技術方案中,優(yōu)選地,所述判斷單元還用于,在所述目標列不存在所述目標數(shù)據(jù)的主鍵的情況下,進一步判斷所述至少一個數(shù)據(jù)表中是否只包含所述目標數(shù)據(jù)表,若是,則刪除所述目標數(shù)據(jù);所述查詢單元還用于,在所述至少一個數(shù)據(jù)表中不只包含所述目標數(shù)據(jù)表的情況下,依次查詢所述至少一個數(shù)據(jù)表中的其他數(shù)據(jù)表。在該技術方案中,目標數(shù)據(jù)可能被多個數(shù)據(jù)表所引用,但是在刪除目標數(shù)據(jù)時,只要檢測到目標數(shù)據(jù)被一個數(shù)據(jù)表所引用,那么就需要顯示提示信息,避免目標數(shù)據(jù)被刪除,因此,在檢測到目標數(shù)據(jù)被目標數(shù)據(jù)表引用時,即可停止查詢其他數(shù)據(jù)表,并發(fā)出提示信息,從而快速地確定了目標數(shù)據(jù)是否被引用,避免由于掃描所有數(shù)據(jù)表而消耗較長時間。并且,當目標數(shù)據(jù)被多個數(shù)據(jù)表引用時,可以在確定目標數(shù)據(jù)是否被引用之后,依次查詢每賬數(shù)據(jù)表,精確地確定目標數(shù)據(jù)被引用的信息。在上述技術方案中,優(yōu)選地,還包括:恢復單元,用于在所述判斷單元刪除所述目標數(shù)據(jù)之前,記錄所述目標數(shù)據(jù)的相關信息,當接收到恢復指令時,根據(jù)所述相關信息恢復所述目標數(shù)據(jù)。在該技術方案中,可以再刪除目標數(shù)據(jù)時,記錄歷史信息,然后在需要恢復目標數(shù)據(jù)的情況下,可以根據(jù)歷史信息恢復目標數(shù)據(jù)。在上述任一技術方案中,優(yōu)選地,所述設置單元還用于,在所述第二數(shù)據(jù)表引用所述第一數(shù)據(jù)表中的數(shù)據(jù)時,為所述第二數(shù)據(jù)表與所述第一數(shù)據(jù)表設置引用關系權值;以及所述數(shù)據(jù)引用關系檢測裝置還包括:分析單元,用于分析所述至少一個數(shù)據(jù)表中每個數(shù)據(jù)表與所述目標數(shù)據(jù)的引用關系權值,將所述引用關系權值最大的數(shù)據(jù)表作為所述目標數(shù)據(jù)表。在該技術方案中,通過分析數(shù)據(jù)表之間的關系權值,可以調整查詢數(shù)據(jù)表的順序,優(yōu)先查詢被引用可能性最大的數(shù)據(jù)表,從而盡快確定目標數(shù)據(jù)是否被引用,減少數(shù)據(jù)查詢的時間消耗。在上述任一技術方案中,優(yōu)選地,所述設置單元還用于根據(jù)接收到的過濾設置指令,設置數(shù)據(jù)表過濾條件,以及所述查詢單元用于在不符合所述過濾條件的數(shù)據(jù)表中查詢所述至少一個數(shù)據(jù)表。在該技術方案中,可以設置過濾條件,減少查詢的數(shù)據(jù)表的數(shù)量,避免一些不需要校驗的表被查詢,比如某一單據(jù)的子表數(shù)據(jù)是與主表數(shù)據(jù)一起被刪除的,那么在檢測單據(jù)是否被引用時,可不必檢測子表。本發(fā)明還提出了一種數(shù)據(jù)引用關系檢測方法,其特征在于,包括:步驟202,在將數(shù)據(jù)表存儲至數(shù)據(jù)庫時,為所述數(shù)據(jù)表設置主鍵,當所述數(shù)據(jù)表中的第二數(shù)據(jù)表引用所述數(shù)據(jù)表中的第一數(shù)據(jù)表的數(shù)據(jù)時,所述第二數(shù)據(jù)表引用所述第一數(shù)據(jù)表中所述數(shù)據(jù)的主鍵;步驟204,將所述第二數(shù)據(jù)表的名稱、所述第一數(shù)據(jù)表的名稱、所述數(shù)據(jù)在所述第二數(shù)據(jù)表中所處的列的名稱,和所述第一數(shù)據(jù)表中包含所述主鍵的列的名稱進行關聯(lián)存儲;步驟206,當接收到刪除目標數(shù)據(jù)的指令時,查詢所述目標數(shù)據(jù)所處的當前數(shù)據(jù)表的名稱,根據(jù)所述當前數(shù)據(jù)表的名稱,查詢引用所述目標數(shù)據(jù)的至少一個數(shù)據(jù)表;步驟208,查詢所述至少一個數(shù)據(jù)表中目標數(shù)據(jù)表的名稱,所述目標數(shù)據(jù)在所述目標數(shù)據(jù)表中所處的目標列的名稱,以及所述當前數(shù)據(jù)表中包含所述目標數(shù)據(jù)的主鍵的列的名稱;步驟210,判斷所述目標列是否存在所述目標數(shù)據(jù)的主鍵,若存在,則顯示提示信息、以及所述目標數(shù)據(jù)表的名稱和所述目標列的名稱。在該技術方案中,將數(shù)據(jù)的引用關系性檢查和引用數(shù)據(jù)展現(xiàn)分開,減少了數(shù)據(jù)庫性能及時間消耗,提高系統(tǒng)的運行效率。通過確定目標數(shù)據(jù)表的名稱和目標列的名稱,使數(shù)據(jù)的引用關系得到完整的展現(xiàn),便于系統(tǒng)定位問題,確認具體引用數(shù)據(jù)記錄,以及后續(xù)對相關記錄進行處理。并且通過具體數(shù)據(jù)庫表注冊實現(xiàn),便于后續(xù)應用系統(tǒng)擴展時增加引用關系檢查,而不需影響原有的引用關系檢查。而且這種檢測并不依賴于數(shù)據(jù)庫本身提供的機制進行,可以在任何數(shù)據(jù)庫上使用,降低系統(tǒng)本身對數(shù)據(jù)庫的依賴。當確定目標數(shù)據(jù)被引用時,提示目標數(shù)據(jù)被引用,避免目標數(shù)據(jù)被刪除,保障了目標數(shù)據(jù)使用的一致性及完整性。在上述技術方案中,優(yōu)選地,所述步驟210還包括:若不存在,則判斷所述至少一個數(shù)據(jù)表中是否只包含所述目標數(shù)據(jù)表,若是,則刪除所述目標數(shù)據(jù),若不是,則依次查詢所述至少一個數(shù)據(jù)表中的其他數(shù)據(jù)表,并返回步驟208。在該技術方案中,目標數(shù)據(jù)可能被多個數(shù)據(jù)表所引用,但是在刪除目標數(shù)據(jù)時,只要檢測到目標數(shù)據(jù)被一個數(shù)據(jù)表所引用,那么就需要顯示提示信息,避免目標數(shù)據(jù)被刪除,因此,在檢測到目標數(shù)據(jù)被目標數(shù)據(jù)表引用時,即可停止查詢其他數(shù)據(jù)表,并發(fā)出提示信息,從而快速地確定了目標數(shù)據(jù)是否被引用,避免由于掃描所有數(shù)據(jù)表而消耗較長時間。并且,當目標數(shù)據(jù)被多個數(shù)據(jù)表弓丨用時,可以在確定目標數(shù)據(jù)是否被弓I用之后,依次查詢每賬數(shù)據(jù)表,精確地確定目標數(shù)據(jù)被引用的信息。在上述技術方案中,優(yōu)選地,所述步驟210還包括:在刪除所述目標數(shù)據(jù)之前,記錄所述目標數(shù)據(jù)的相關信息,當接收到恢復指令時,根據(jù)所述相關信息恢復所述目標數(shù)據(jù)。在該技術方案中,可以再刪除目標數(shù)據(jù)時,記錄歷史信息,然后在需要恢復目標數(shù)據(jù)的情況下,可以根據(jù)歷史信息恢復目標數(shù)據(jù)。在上述任一技術方案中,優(yōu)選地,所述步驟202還包括:當所述第二數(shù)據(jù)表引用所述第一數(shù)據(jù)表中的數(shù)據(jù)時,為所述第二數(shù)據(jù)表與所述第一數(shù)據(jù)表設置引用關系權值,所述步驟208還包括:分析所述至少一個數(shù)據(jù)表中每個數(shù)據(jù)表與所述目標數(shù)據(jù)的引用關系權值,將所述引用權值最大的數(shù)據(jù)表作為所述目標數(shù)據(jù)表。在該技術方案中,通過分析數(shù)據(jù)表之間的關系權值,可以調整查詢數(shù)據(jù)表的順序,優(yōu)先查詢被引用可能性最大的數(shù)據(jù)表,從而盡快確定目標數(shù)據(jù)是否被引用,減少數(shù)據(jù)查詢的時間消耗。在上述任一技術方案中,優(yōu)選地,所述步驟202還包括:根據(jù)接收到的過濾設置指令,設置數(shù)據(jù)表過濾條件,則所述步驟206還包括:在不符合所述過濾條件的數(shù)據(jù)表中查詢所述至少一個數(shù)據(jù)表。在該技術方案中,可以設置過濾條件,減少查詢的數(shù)據(jù)表的數(shù)量,避免一些不需要校驗的表被查詢,比如某一單據(jù)的子表數(shù)據(jù)是與主表數(shù)據(jù)一起被刪除的,那么在檢測單據(jù)是否被引用時,可不必檢測子表。通過以上技術方案,可以在刪除數(shù)據(jù)之前,檢測數(shù)據(jù)的引用關系,保障數(shù)據(jù)使用的一致性及完整性,并展現(xiàn)數(shù)據(jù)具體的引用關系。
圖1示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)引用關系檢測裝置的框圖;圖2示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)引用關系檢測方法的流程圖;圖3示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)引用關系檢測方法的具體流程圖;圖4示出了根據(jù)本發(fā)明的實施例的檢測數(shù)據(jù)表之間引用關系的示意圖。
具體實施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結合附圖和具體實施方式
對本發(fā)明進行進一步的詳細描述。需要說明的是,在不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。在下面的描述中闡述了很多具體細節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實施,因此,本發(fā)明的保護范圍并不受下面公開的具體實施例的限制。圖1示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)引用關系檢測裝置的框圖。如圖1所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)引用關系檢測裝置100包括:設置單元102,用于在將數(shù)據(jù)表存儲至數(shù)據(jù)庫時,為數(shù)據(jù)表設置主鍵;主鍵引用單元104,用于在數(shù)據(jù)表中的第二數(shù)據(jù)表引用數(shù)據(jù)表中的第一數(shù)據(jù)表的數(shù)據(jù)時,控制第二數(shù)據(jù)表引用第一數(shù)據(jù)表中數(shù)據(jù)的主鍵;關聯(lián)存儲單元106,用于將第二數(shù)據(jù)表的名稱、第一數(shù)據(jù)表的名稱、數(shù)據(jù)在第二數(shù)據(jù)表中所處的列的名稱、以及第一數(shù)據(jù)表中包含主鍵的列的名稱進行關聯(lián)存儲;查詢單元108,用于在收到刪除目標數(shù)據(jù)的指令時,查詢目標數(shù)據(jù)所處的當前數(shù)據(jù)表的名稱,根據(jù)當前數(shù)據(jù)表的名稱,查詢引用目標數(shù)據(jù)的至少一個數(shù)據(jù)表,并查詢至少一個數(shù)據(jù)表中目標數(shù)據(jù)表的名稱,目標數(shù)據(jù)在目標數(shù)據(jù)表中所處的目標列的名稱,以及當前數(shù)據(jù)表中包含目標數(shù)據(jù)的主鍵的列的名稱;判斷單元110,用于判斷目標列是否存在目標數(shù)據(jù)的主鍵;顯示單元112,用于在判斷單元110的判定結果為存在的情況下,顯示提示信息、以及目標數(shù)據(jù)表的名稱和目標列的名稱。通過將數(shù)據(jù)的引用關系性檢查和引用數(shù)據(jù)展現(xiàn)分開,減少了數(shù)據(jù)庫性能及時間消耗,提高系統(tǒng)的運行效率。通過確定目標數(shù)據(jù)表的名稱和目標列的名稱,使數(shù)據(jù)的引用關系得到完整的展現(xiàn),便于系統(tǒng)定位問題,確認具體引用數(shù)據(jù)記錄,以及后續(xù)對相關記錄進行處理。并且通過具體數(shù)據(jù)庫表注冊實現(xiàn),便于后續(xù)應用系統(tǒng)擴展時增加引用關系檢查,而不需影響原有的引用關系檢查。而且這種檢測并不依賴于數(shù)據(jù)庫本身提供的機制進行,可以在任何數(shù)據(jù)庫上使用,降低系統(tǒng)本身對數(shù)據(jù)庫的依賴。當確定目標數(shù)據(jù)被引用時,提示目標數(shù)據(jù)被引用,避免目標數(shù)據(jù)被刪除,保障了目標數(shù)據(jù)使用的一致性及完整性。優(yōu)選地,判斷單元110還用于,在目標列不存在目標數(shù)據(jù)的主鍵的情況下,進一步判斷至少一個數(shù)據(jù)表中是否只包含目標數(shù)據(jù)表,若是,則刪除目標數(shù)據(jù);查詢單元108還用于,在至少一個數(shù)據(jù)表中不只包含目標數(shù)據(jù)表的情況下,依次查詢至少一個數(shù)據(jù)表中的其他數(shù)據(jù)表。目標數(shù)據(jù)可能被多個數(shù)據(jù)表所引用,但是在刪除目標數(shù)據(jù)時,只要檢測到目標數(shù)據(jù)被一個數(shù)據(jù)表所引用,那么就需要顯示提示信息,避免目標數(shù)據(jù)被刪除,因此,在檢測到目標數(shù)據(jù)被目標數(shù)據(jù)表引用時,即可停止查詢其他數(shù)據(jù)表,并發(fā)出提示信息,從而快速地確定了目標數(shù)據(jù)是否被引用,避免由于掃描所有數(shù)據(jù)表而消耗較長時間。并且,當目標數(shù)據(jù)被多個數(shù)據(jù)表引用時,可以在確定目標數(shù)據(jù)是否被引用之后,依次查詢每賬數(shù)據(jù)表,精確地確定目標數(shù)據(jù)被引用的信息。優(yōu)選地,還包括:恢復單元114,用于在判斷單元110刪除目標數(shù)據(jù)之前,記錄目標數(shù)據(jù)的相關信息,當接收到恢復指令時,根據(jù)相關信息恢復目標數(shù)據(jù)。可以再刪除目標數(shù)據(jù)時,記錄歷史信息,然后在需要恢復目標數(shù)據(jù)的情況下,可以根據(jù)歷史信息恢復目標數(shù)據(jù)。優(yōu)選地,設置單元102還用于,在第二數(shù)據(jù)表引用第一數(shù)據(jù)表中的數(shù)據(jù)時,為第二數(shù)據(jù)表與第一數(shù)據(jù)表設置引用關系權值;以及數(shù)據(jù)引用關系檢測裝置100還包括:分析單元116,用于分析至少一個數(shù)據(jù)表中每個數(shù)據(jù)表與目標數(shù)據(jù)的引用關系權值,將引用關系權值最大的數(shù)據(jù)表作為目標數(shù)據(jù)表。通過分析數(shù)據(jù)表之間的關系權值,可以調整查詢數(shù)據(jù)表的順序,優(yōu)先查詢被引用可能性最大的數(shù)據(jù)表,從而盡快確定目標數(shù)據(jù)是否被引用,減少數(shù)據(jù)查詢的時間消耗。優(yōu)選地,設置單元102還用于根據(jù)接收到的過濾設置指令,設置數(shù)據(jù)表過濾條件,以及查詢單元108用于在不符合過濾條件的數(shù)據(jù)表中查詢至少一個數(shù)據(jù)表??梢栽O置過濾條件,減少查詢的數(shù)據(jù)表的數(shù)量,避免一些不需要校驗的表被查詢,比如某一單據(jù)的子表數(shù)據(jù)是與主表數(shù)據(jù)一起被刪除的,那么在檢測單據(jù)是否被引用時,可不必檢測子表。圖2示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)引用關系檢測方法的流程圖。如圖2所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)引用關系檢測方法包括:步驟202,在將數(shù)據(jù)表存儲至數(shù)據(jù)庫時,為數(shù)據(jù)表設置主鍵,當數(shù)據(jù)表中的第二數(shù)據(jù)表引用數(shù)據(jù)表中的第一數(shù)據(jù)表的數(shù)據(jù)時,第二數(shù)據(jù)表引用第一數(shù)據(jù)表中數(shù)據(jù)的主鍵;步驟204,將第二數(shù)據(jù)表的名稱、第一數(shù)據(jù)表的名稱、數(shù)據(jù)在第二數(shù)據(jù)表中所處的列的名稱,和第一數(shù)據(jù)表中包含主鍵的列的名稱進行關聯(lián)存儲;步驟206,當接收到刪除目標數(shù)據(jù)的指令時,查詢目標數(shù)據(jù)所處的當前數(shù)據(jù)表的名稱,根據(jù)當前數(shù)據(jù)表的名稱,查詢引用目標數(shù)據(jù)的至少一個數(shù)據(jù)表;步驟208,查詢至少一個數(shù)據(jù)表中目標數(shù)據(jù)表的名稱,目標數(shù)據(jù)在目標數(shù)據(jù)表中所處的目標列的名稱,以及當前數(shù)據(jù)表中包含目標數(shù)據(jù)的主鍵的列的名稱;步驟210,判斷目標列是否存在目標數(shù)據(jù)的主鍵,若存在,則顯示提示信息、以及目標數(shù)據(jù)表的名稱和目標列的名稱。將數(shù)據(jù)的引用關系性檢查和引用數(shù)據(jù)展現(xiàn)分開,減少了數(shù)據(jù)庫性能及時間消耗,提高系統(tǒng)的運行效率。通過確定目標數(shù)據(jù)表的名稱和目標列的名稱,使數(shù)據(jù)的引用關系得到完整的展現(xiàn),便于系統(tǒng)定位問題,確認具體引用數(shù)據(jù)記錄,以及后續(xù)對相關記錄進行處理。并且通過具體數(shù)據(jù)庫表注冊實現(xiàn),便于后續(xù)應用系統(tǒng)擴展時增加引用關系檢查,而不需影響原有的引用關系檢查。而且這種檢測并不依賴于數(shù)據(jù)庫本身提供的機制進行,可以在任何數(shù)據(jù)庫上使用,降低系統(tǒng)本身對數(shù)據(jù)庫的依賴。當確定目標數(shù)據(jù)被引用時,提示目標數(shù)據(jù)被引用,避免目標數(shù)據(jù)被刪除,保障了目標數(shù)據(jù)使用的一致性及完整性。優(yōu)選地,步驟210還包括:若不存在,則判斷至少一個數(shù)據(jù)表中是否只包含目標數(shù)據(jù)表,若是,則刪除目標數(shù)據(jù),若不是,則依次查詢至少一個數(shù)據(jù)表中的其他數(shù)據(jù)表,并返回步驟208。目標數(shù)據(jù)可能被多個數(shù)據(jù)表所引用,但是在刪除目標數(shù)據(jù)時,只要檢測到目標數(shù)據(jù)被一個數(shù)據(jù)表所引用,那么就需要顯示提示信息,避免目標數(shù)據(jù)被刪除,因此,在檢測到目標數(shù)據(jù)被目標數(shù)據(jù)表引用時,即可停止查詢其他數(shù)據(jù)表,并發(fā)出提示信息,從而快速地確定了目標數(shù)據(jù)是否被引用,避免由于掃描所有數(shù)據(jù)表而消耗較長時間。并且,當目標數(shù)據(jù)被多個數(shù)據(jù)表弓丨用時,可以在確定目標數(shù)據(jù)是否被弓I用之后,依次查詢每賬數(shù)據(jù)表,精確地確定目標數(shù)據(jù)被引用的信息。優(yōu)選地,步驟210還包括:在刪除目標數(shù)據(jù)之前,記錄目標數(shù)據(jù)的相關信息,當接收到恢復指令時,根據(jù)相關信息恢復目標數(shù)據(jù)。可以再刪除目標數(shù)據(jù)時,記錄歷史信息,然后在需要恢復目標數(shù)據(jù)的情況下,可以根據(jù)歷史信息恢復目標數(shù)據(jù)。優(yōu)選地,步驟202還包括:當?shù)诙?shù)據(jù)表引用第一數(shù)據(jù)表中的數(shù)據(jù)時,為第二數(shù)據(jù)表與第一數(shù)據(jù)表設置引用關系權值,步驟208還包括:分析至少一個數(shù)據(jù)表中每個數(shù)據(jù)表與目標數(shù)據(jù)的引用關系權值,將引用權值最大的數(shù)據(jù)表作為目標數(shù)據(jù)表。通過分析數(shù)據(jù)表之間的關系權值,可以調整查詢數(shù)據(jù)表的順序,優(yōu)先查詢被引用可能性最大的數(shù)據(jù)表,從而盡快確定目標數(shù)據(jù)是否被引用,減少數(shù)據(jù)查詢的時間消耗。優(yōu)選地,步驟202還包括:根據(jù)接收到的過濾設置指令,設置數(shù)據(jù)表過濾條件,則步驟206還包括:在不符合過濾條件的數(shù)據(jù)表中查詢至少一個數(shù)據(jù)表??梢栽O置過濾條件,減少查詢的數(shù)據(jù)表的數(shù)量,避免一些不需要校驗的表被查詢,比如某一單據(jù)的子表數(shù)據(jù)是與主表數(shù)據(jù)一起被刪除的,那么在檢測單據(jù)是否被引用時,可不必檢測子表。圖3示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)引用關系檢測方法的具體流程圖。如圖3所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)引用關系檢測方法具體包括:步驟302,當用戶選擇刪除目標數(shù)據(jù)時,接收刪除目標數(shù)據(jù)的指令;步驟304,查詢目標數(shù)據(jù)所處的數(shù)據(jù)表,引用目標數(shù)據(jù)的數(shù)據(jù)表目標數(shù)據(jù)所處的數(shù)據(jù)列等引用信息;步驟306,根據(jù)預設的過濾條件過濾無需檢測的數(shù)據(jù)表;步驟308,檢測一張數(shù)據(jù)表是否存在目標數(shù)據(jù)的主鍵的列,當同一張表存在多個弓I用列時合并查詢,若不存在,則查詢下一個數(shù)據(jù)表,若每一個數(shù)據(jù)表中都不存在目標數(shù)據(jù)的主鍵的列,說明目標數(shù)據(jù)未被引用,刪除目標數(shù)據(jù);步驟310,若存在,則判定目標數(shù)據(jù)已經(jīng)被引用,顯示提示信息;步驟312,獲取目標數(shù)據(jù)的具體引用關系;步驟314,一次檢測目標數(shù)據(jù)被每個數(shù)據(jù)表引用的信息;步驟316,將引用信息返回進行顯示,以供用戶查看具體的引用關系。圖4示出了根據(jù)本發(fā)明的實施例的檢測數(shù)據(jù)表之間引用關系的示意圖。
如圖4所示,為數(shù)據(jù)庫中的數(shù)據(jù)結構,那么根據(jù)該數(shù)據(jù)結構生成的數(shù)據(jù)表為表1、表2和表3:
權利要求
1.一種數(shù)據(jù)引用關系檢測裝置,其特征在于,包括: 設置單元,用于在將數(shù)據(jù)表存儲至數(shù)據(jù)庫時,為所述數(shù)據(jù)表設置主鍵; 主鍵引用單元,用于在所述數(shù)據(jù)表中的第二數(shù)據(jù)表引用所述數(shù)據(jù)表中的第一數(shù)據(jù)表的數(shù)據(jù)時,控制所述第二數(shù)據(jù)表引用所述第一數(shù)據(jù)表中所述數(shù)據(jù)的主鍵; 關聯(lián)存儲單元,用于將所述第二數(shù)據(jù)表的名稱、所述第一數(shù)據(jù)表的名稱、所述數(shù)據(jù)在所述第二數(shù)據(jù)表中所處的列的名稱、以及所述第一數(shù)據(jù)表中包含所述主鍵的列的名稱進行關聯(lián)存儲; 查詢單元,用于在收到刪除目標數(shù)據(jù)的指令時,查詢所述目標數(shù)據(jù)所處的當前數(shù)據(jù)表的名稱,根據(jù)所述當前數(shù)據(jù)表的名稱,查詢引用所述目標數(shù)據(jù)的至少一個數(shù)據(jù)表,并查詢所述至少一個數(shù)據(jù)表中目標數(shù)據(jù)表的名稱,所述目標數(shù)據(jù)在所述目標數(shù)據(jù)表中所處的目標列的名稱,以及所述當前數(shù)據(jù)表中包含所述目標數(shù)據(jù)的主鍵的列的名稱; 判斷單元,用于判斷所述目標列是否存在所述目標數(shù)據(jù)的主鍵; 顯示單元,用于在所述判斷單元的判定結果為存在的情況下,顯示提示信息、以及所述目標數(shù)據(jù)表的名稱和所述目標列的名稱。
2.根據(jù)權利要求1所述的數(shù)據(jù)引用關系檢測裝置,其特征在于,所述判斷單元還用于,在所述目標列不存在所述目標數(shù)據(jù)的主鍵的情況下,進一步判斷所述至少一個數(shù)據(jù)表中是否只包含所述目標數(shù)據(jù)表,若是,則刪除所述目標數(shù)據(jù);所述查詢單元還用于,在所述至少一個數(shù)據(jù)表中不只包含所述目標數(shù)據(jù)表的情況下,依次查詢所述至少一個數(shù)據(jù)表中的其他數(shù)據(jù)表。
3.根據(jù)權利要求2所述的數(shù)據(jù)引用關系檢測裝置,其特征在于,還包括: 恢復單元,用于在所述判斷 單元刪除所述目標數(shù)據(jù)之前,記錄所述目標數(shù)據(jù)的相關信息,當接收到恢復指令時,根據(jù)所述相關信息恢復所述目標數(shù)據(jù)。
4.根據(jù)權利要求1至3中任一項所述的數(shù)據(jù)引用關系檢測裝置,其特征在于,所述設置單元還用于,在所述第二數(shù)據(jù)表引用所述第一數(shù)據(jù)表中的數(shù)據(jù)時,為所述第二數(shù)據(jù)表與所述第一數(shù)據(jù)表設置引用關系權值;以及所述數(shù)據(jù)引用關系檢測裝置還包括: 分析單元,用于分析所述至少一個數(shù)據(jù)表中每個數(shù)據(jù)表與所述目標數(shù)據(jù)的引用關系權值,將所述引用關系權值最大的數(shù)據(jù)表作為所述目標數(shù)據(jù)表。
5.根據(jù)權利要求1至3中任一項所述的數(shù)據(jù)引用關系檢測裝置,其特征在于,所述設置單元還用于根據(jù)接收到的過濾設置指令,設置數(shù)據(jù)表過濾條件,以及所述查詢單元用于在不符合所述過濾條件的數(shù)據(jù)表中查詢所述至少一個數(shù)據(jù)表。
6.一種數(shù)據(jù)引用關系檢測方法,其特征在于,包括: 步驟202,在將數(shù)據(jù)表存儲至數(shù)據(jù)庫時,為所述數(shù)據(jù)表設置主鍵,當所述數(shù)據(jù)表中的第二數(shù)據(jù)表引用所述數(shù)據(jù)表中的第一數(shù)據(jù)表的數(shù)據(jù)時,所述第二數(shù)據(jù)表引用所述第一數(shù)據(jù)表中所述數(shù)據(jù)的主鍵; 步驟204,將所述第二數(shù)據(jù)表的名稱、所述第一數(shù)據(jù)表的名稱、所述數(shù)據(jù)在所述第二數(shù)據(jù)表中所處的列的名稱,和所述第一數(shù)據(jù)表中包含所述主鍵的列的名稱進行關聯(lián)存儲; 步驟206,當接收到刪除目標數(shù)據(jù)的指令時,查詢所述目標數(shù)據(jù)所處的當前數(shù)據(jù)表的名稱,根據(jù)所述當前數(shù)據(jù)表的名稱,查詢引用所述目標數(shù)據(jù)的至少一個數(shù)據(jù)表; 步驟208,查詢所述至少一個數(shù)據(jù)表中目標數(shù)據(jù)表的名稱,所述目標數(shù)據(jù)在所述目標數(shù)據(jù)表中所處的目標列的名稱,以及所述當前數(shù)據(jù)表中包含所述目標數(shù)據(jù)的主鍵的列的名稱; 步驟210,判斷所述目標列是否存在所述目標數(shù)據(jù)的主鍵,若存在,則顯示提示信息、以及所述目標數(shù)據(jù)表的名稱和所述目標列的名稱。
7.根據(jù)權利要求6所述的數(shù)據(jù)引用關系檢測方法,其特征在于,所述步驟210還包括:若不存在,則判斷所述至少一個數(shù)據(jù)表中是否只包含所述目標數(shù)據(jù)表,若是,則刪除所述目標數(shù)據(jù),若不是,則依次查詢所述至少一個數(shù)據(jù)表中的其他數(shù)據(jù)表,并返回步驟208。
8.根據(jù)權利要求7所述的數(shù)據(jù)引用關系檢測方法,其特征在于,所述步驟210還包括:在刪除所述目標數(shù)據(jù)之前,記錄所述目標數(shù)據(jù)的相關信息,當接收到恢復指令時,根據(jù)所述相關信息恢復所述目標數(shù)據(jù)。
9.根據(jù)權利要求6至8中任一項所述的數(shù)據(jù)引用關系檢測方法,其特征在于,所述步驟202還包括:當所述第二數(shù)據(jù)表引用所述第一數(shù)據(jù)表中的數(shù)據(jù)時,為所述第二數(shù)據(jù)表與所述第一數(shù)據(jù)表設置引用關系權值,所述步驟208還包括:分析所述至少一個數(shù)據(jù)表中每個數(shù)據(jù)表與所述目標數(shù)據(jù)的引用關系權值,將所述引用權值最大的數(shù)據(jù)表作為所述目標數(shù)據(jù)表。
10.根據(jù)權利要求6至8中任 一項所述的數(shù)據(jù)引用關系檢測方法,其特征在于,所述步驟202還包括:根據(jù)接收到的過濾設置指令,設置數(shù)據(jù)表過濾條件,則所述步驟206還包括:在不符合所述過濾條件的數(shù)據(jù)表中查詢所述至少一個數(shù)據(jù)表。
全文摘要
本發(fā)明提供了一種數(shù)據(jù)引用關系檢測裝置,包括設置單元,為數(shù)據(jù)表設置主鍵;主鍵引用單元,在引用數(shù)據(jù)時,控制引用數(shù)據(jù)的主鍵;關聯(lián)存儲單元,將引用表的名稱、被引用表的名稱、數(shù)據(jù)在引用表中的列的名稱、以及被引用表中主鍵列的名稱關聯(lián)存儲;查詢單元,查詢當前數(shù)據(jù)表的名稱,查詢引用目標數(shù)據(jù)的目標數(shù)據(jù)表的名稱,所處的目標列的名稱,和包含主鍵的列的名稱;判斷單元,判斷目標列是否存在目標數(shù)據(jù)的主鍵;顯示單元,若存在,顯示提示信息、以及目標數(shù)據(jù)表的名稱和目標列的名稱。本發(fā)明還提出了一種數(shù)據(jù)引用關系檢測方法。通過本發(fā)明的技術方案,能夠在刪除數(shù)據(jù)時,保障數(shù)據(jù)使用的一致性及完整性,并展現(xiàn)數(shù)據(jù)具體的引用關系。
文檔編號G06F17/30GK103164514SQ20131005902
公開日2013年6月19日 申請日期2013年2月25日 優(yōu)先權日2013年2月25日
發(fā)明者姜軍 申請人:用友軟件股份有限公司