一種可將數據庫中的外鍵關系生成圖像的系統(tǒng)及方法
【技術領域】
[0001]本發(fā)明涉及數據庫的管理技術領域,尤其涉及一種可將數據庫中的外鍵關系生成圖像的系統(tǒng)及方法。
【背景技術】
[0002]在關系數據庫中,可以使用主鍵和外鍵將多個數據庫表關聯(lián)在一起,這樣的多個數據庫表可被認為具有主鍵-外鍵約束。當外鍵增多,表數量增多時,關系級聯(lián)變得非常復雜,往往查詢會涉及到很多的表。
[0003]—般為了查找表與表之間的主外鍵關系,通常采用如下方式:
[0004]I)直接通過CLI (命令行界面)進入,查詢數據字典(或者叫“系統(tǒng)數據庫”、“元數據庫”);
[0005]2)通過 RDBMS (Relat1nal Database Management System,即關系數據庫管理系統(tǒng))的客戶端查詢系統(tǒng)表、逐個切換查詢下拉;
[0006]3)使用數據庫原型設計工具,例如數據建模(Power Designer)或可視化建模(Rat1nal Rose)連接數據庫,直接在軟件視圖界面中查看;
[0007]4)自行開發(fā)應用程序,查詢報錯,根據錯誤信息提示,即可知道當前表依賴的是哪張表;
[0008]上述四種查詢表與表之間的主外鍵關系存在明顯的缺陷:1)CLI為字符界面,無法友好直觀的顯示表與表之間的主外鍵關系;2)RDBMS客戶端如連接甲骨文公司(oracle)的集成開發(fā)環(huán)境(PL/SQL Developer)、快速訪問(TOAD)或關系型數據庫管理系統(tǒng)(mysql)的導航貓(Navicat for MySQL)等,均須要不斷選擇表、選擇下拉,尤其是針對主外鍵關系較多的表需要人為記憶,并不直觀;3)現有的Power Designer和Rat1nal Rose,顯示的信息比較雜亂,工具本身往往比較笨重,而且需要授權碼,專門為了查看表關系而分配一個數據庫管理員(Database Administrator,DBA)用戶給開發(fā)者,過程繁瑣,也存在安全隱患;4)根據報錯信息查找主外鍵關系只能被動顯示,且無法顯示全局主外鍵關系圖,并不直觀。
[0009]綜上所述,現有的主外鍵關系查詢方式存不能直觀的展示全局主外鍵關系的問題。
【發(fā)明內容】
[0010]針對現有的主外鍵關系查詢方法存在的上述問題,現提供一種旨在實現可直觀的展示全局主外鍵關系的外鍵關系生成圖像的系統(tǒng)及方法。
[0011]具體技術方案如下:
[0012]—種可將數據庫中的外鍵關系生成圖像的系統(tǒng),應用于關系數據庫管理系統(tǒng),包括:
[0013]—讀取單元,用于讀取所述關系數據庫管理系統(tǒng)中的所有表與表之間的關聯(lián)數據;
[0014]—存儲單元,連接所述讀取單元,用以存儲所述關聯(lián)數據;
[0015]—圖像生成單元,連接所述存儲單元,用以根據所述關聯(lián)數據及預設規(guī)則生成所述關系數據庫管理系統(tǒng)中所有表與表之間關聯(lián)的網圖。
[0016]優(yōu)選的,還包括:
[0017]—顯示單元,連接所述圖像生成單元,所述顯示單元提供一預設顯示模板,所述顯示單元用以在顯示模板顯示所述網圖。
[0018]優(yōu)選的,所述存取單元用以提取所述關系數據庫管理系統(tǒng)中的所有表的表名,并獲取表名與表名之間的關聯(lián)數據;
[0019]所述存儲單元用以存儲表名與表名之間的關聯(lián)數據。
[0020]優(yōu)選的,所述預設規(guī)則為:
[0021]al.遍歷所述關聯(lián)數據,獲取一未引用任一表的表名,將所述表名作為主表;
[0022]a2.獲取引用所述主表的復數個子表的表名,分別建立所述主表的表名與所述復數個子表的表名之間的連接;
[0023]a3.逐一以所述子表的表名作為主表,獲取每個引用所述主表的復數個子表的表名,及獲取未被任一表所引用的所述主表的表名,分別建立所述主表的表名與所述復數個子表的表名之間的連接;
[0024]a4.判斷是否獲取了所有未被任一表所引用的所述主表的表名,若是,則結束;若否,則返回執(zhí)行所述步驟a3;
[0025]所述圖像生成單元根據所述主表的表名與所述復數個子表的表名之間的連接生成所述網圖。
[0026]—種可將數據庫中的外鍵關系生成圖像的方法,應用于關系數據庫管理系統(tǒng),包括下述步驟:
[0027]S1.讀取所述關系數據庫管理系統(tǒng)中的所有表與表之間的關聯(lián)數據,并存儲所述關聯(lián)數據;
[0028]S2.根據所述關聯(lián)數據及預設規(guī)則生成所述關系數據庫管理系統(tǒng)中所有表與表之間關聯(lián)的網圖。
[0029]優(yōu)選的,提供一預設顯示模板,執(zhí)行完所述步驟S2后,在顯示模板顯示所述網圖。
[0030]優(yōu)選的,在所述步驟SI中,提取所述關系數據庫管理系統(tǒng)中的所有表的表名,獲取表名與表名之間的關聯(lián)數據,并存儲表名與表名之間的關聯(lián)數據。
[0031]優(yōu)選的,所述預設規(guī)則為:
[0032]al.遍歷所述關聯(lián)數據,獲取一未引用任一表的表名,將所述表名作為主表;
[0033]a2.獲取引用所述主表的復數個子表的表名,分別建立所述主表的表名與所述復數個子表的表名之間的連接;
[0034]a3.逐一以所述子表的表名作為主表,獲取每個引用所述主表的復數個子表的表名,及獲取未被任一表所引用的所述主表的表名,分別建立所述主表的表名與所述復數個子表的表名之間的連接;
[0035]a4.判斷是否獲取了所有未被任一表所引用的所述主表的表名,若是,則結束;若否,則返回執(zhí)行所述步驟a3。
[0036]上述技術方案的有益效果:
[0037]本技術方案中,可將數據庫中的外鍵關系生成圖像的系統(tǒng)通過讀取單元讀取關系數據庫管理系統(tǒng)中所有表與表的關聯(lián)數據,通過圖像生成單元根據關聯(lián)數據生成全局的表與表之間的關聯(lián)網圖,可直觀的展示關系數據庫管理系統(tǒng)中的主外鍵關系??蓪祿熘械耐怄I關系生成圖像的方法可獲取關系數據庫管理系統(tǒng)的表與表的關聯(lián)數據,并生成全局的表與表之間的關聯(lián)網圖,從而直觀的展示全局的主外鍵關系。
【附圖說明】
[0038]圖1為本發(fā)明所述的可將數據庫中的外鍵關系生成圖像的系統(tǒng)的一種實施例的豐吳塊圖;
[0039]圖2為當前表被一張表應用的網圖示意圖;
[0040]圖3為當前表被兩張表應用的網圖示意圖;
[0041]圖4為當前表被三張表應用的網圖示意圖;
[0042]圖5為本發(fā)明所述的可將數據庫中的外鍵關系生成圖像的方法的一種實施例的方法流程圖。
【具體實施方式】
[0043]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0044]需要說明的是,在不沖突的情況下,本發(fā)明中的實施例及實施例中的特征可以相互組合。
[0045]下面結合附圖和具體實施例對本發(fā)明作進一步說明,但不作為本發(fā)明的限定。
[0046]如圖1所示,一種可將數據庫中的外鍵關系生成圖像的系統(tǒng),應用于關系數據庫管理系統(tǒng),包括:
[0047]—讀取單元1,用于讀取關系數據庫管理系統(tǒng)中的所有表與表之間的關聯(lián)數據;
[0048]—存儲單元2,連接讀取單元1,用以存儲關聯(lián)數據;
[0049]—圖像生成單元4,連接存儲單元2,用以根據關聯(lián)數據及預設規(guī)則生成關系數據庫管理系統(tǒng)中所有表與表之間關聯(lián)的網圖。
[0050]在本實施例中,通過讀取單元I讀取關系數據庫管理系統(tǒng)中所有表與表的關聯(lián)數據,通過圖像生成單元4根據關聯(lián)數據自動生成全局的表與表之間的關聯(lián)網圖,可直觀的展示關系數據庫管理系統(tǒng)中的主外鍵關系。
[0051 ] 在優(yōu)選的實施例中,還包括:
[0052]—顯示單元3,連接圖像生成單元4,顯示單元3提供一預設顯示模板,顯示單元3用以在顯示模板顯示網圖。
[0053]進步一地,還可包括一輸出單元,連接顯示單元3,用以將顯示的網圖導出。
[0054]在本實施例中,通過顯示單元3對網圖進行顯示,以使用戶直觀的觀察網圖。
[0055]在優(yōu)選的實施例中,存取單元用以提取關系數據庫管理系統(tǒng)中的所有表的表名,并獲取表名與表名之間的關聯(lián)數據;
[0056]存儲單元2用以存儲表名與表名之間的關聯(lián)數據。
[0057]在優(yōu)選的實施例中,預設規(guī)則為:
[0058]al.遍歷關聯(lián)數據,獲取一未引用任一表的表名,將表名作為主表;
[0059]a2.獲取引用主表的復數個子表的表名,分別建立主表的表名與復數個子表的表名之間的連接;
[0060]a3.逐一以子表的表名作為主表,獲取每個引用主表的復數個子表的表名,及獲取未被任一表所引用的主表的表名,分別建立主表的表名與復數個子表的表名之間的連接;
[0061]a4.判斷是否獲取了所有未被任一表所引用的主表的表名,若是,則結束;若否,則返回執(zhí)行步驟a3 ;
[0062]圖像生成單元4根據主表的表名與復數個子表的表名之間的連接生成網圖。
[0063