作者:Bert Scalzo
雖然TOAD提供了很多的功能,統常很多人花費大部分時間只是“瀏覽” 現有Table中的資料。即使在編寫SQL或PL/SQL程式碼來執行一些業務的功能,開發人員需要看到的執行出的的資料是否正確。對於這些需要的人可能利用”Schema Browser”或編輯器中的data grid。但往往跨越業務的數據表需要看到所有相關的數據作結合,以理解其真正意義。為此TOAD提供了 Master Detail瀏覽器 -在單一的畫面上看到所有相關的資料。以下我從我的新書 TOAD Handbook 2nd Edition摘錄部分出來。 (將在 Oracle Open World 2009之前出版)
Master-Detail Browser (主從瀏覽器)
主從瀏覽器100%顯然是在瀏覽資料。並且,在主從瀏覽器,你必須定義什麼是要被顯示的 - 多個tables間的連接是什麼(這些連接可能在資料庫中或由您來設定)。因此,主從瀏覽器是一個更為互動的視窗,你在基本操作上必須提供意見和指導。
只是,什麼是主從瀏覽器?是否你希望可以瀏覽特定table的資料,同時從其他相關的table看到所有相關的記錄?例如,你有沒有想瀏覽Order的table中的資料和特定的訂單中也看到LINEITEMS?這就是TOAD的主從瀏覽器提供智能化的資料瀏覽。它可以讓你“看到”不是以集中資料的方式而是以人可以看得懂的格式。商務/數據分析和資料庫程式開發人員已經發現這個視窗非常有用,因為它確實增加了業務資料的人性化和可讀性。
要啟動的主從瀏覽器,從TOAD的主選單中選擇 Database | Report | Master-Detail Browser。如圖1。請注意,第一次執行時此畫面將是空的。你必須定義什麼是要顯示 - 下面各小節會解釋使用過程。
圖1: 主從瀏覽器
在解釋我們是如何得到圖1的顯示訊息前,讓我們先看看這整個畫面。在左邊,TOAD的面板顯示一個父子關係的樹狀圖。在圖1中,我們可以看到,CUSTOMER這個table有個名為MOVIERENTAL的子table,其中又有一個子table稱為RENTALITEM。此外,所有子table都與他們的父母由資料庫以foreign key來關連(即以FK顯示)。但是,最好的部分就是畫面中所提供的資料。當您選擇在Data Grid中的任一行,針對父table即會更新子table的資料。因此,當我們選擇了”Troy Aikman”的CUSTOMER的記錄,MOVIERENTALS中和他相關的才會顯示。也是同樣的道理與MOVIERENTAL和 RENTALITEM的連結:當您選擇父行,子行和父行相關的才會顯示。
但我們如何得到這個特定的顯示訊息?回想一下,當您第一次啟動該畫面的左邊刻度導航列和中央顯示區域的Data Grid是空的。請記住,這是該畫面的關鍵區別 - 您必須為您的資料和瀏覽的需要進行設置。首先,你需要在畫面上顯示的基礎對象,如圖2。在這裡我們選擇CUSTOMER做為基礎對象。
圖2: 基礎對象的設定
當然,這結果顯示在單一的Data Grid與選定的table中的資料,這和Schema Browser和Editor的使用是不太會有什麼不同。然而,現在我們將設定在子table的自動同步資料。在圖3,請注意指標顯示在工具列的“Add Detail Under This Dataset”進行點擊。因為我們的資料庫有foreign key約束的定義為基本對象,所以子table會自動被增加。因此,MOVIERENTAL的table是系統自行增加“table(FK)”。我們不必做任何事情。如果我們為這個新的table重複點擊過程“Add detail …”選項,第三個Data Grid將被會在RENTALITEM這個table中新增,如圖1。
圖3: 增加子物件
在子Data Grid中,有三個工具欄圖示,你可以使用。點擊減號( - )將減少Data Grid的大小,而單擊加號(+)將增加。當您添加更多的子 table,您需要使用這些選項來管理畫面上有限的區域。點擊圖示中的X會將子table及其data gride和子TABLE下所有的TABLE從畫面移除,此功能允許您從左邊刻度導航的樹狀圖中移除畫面。請注意,您也可以在樹狀圖選擇移除的項目,以滑鼠右鍵按下之後顯示的選單,並選擇“Delete Current Node”。
但是,當我們的資料庫沒有定義foreign key時,如何自動產生“Add detail …”選項?我們如何獲得同樣的結果?許多開發人員和分析人員會使用到third-party的應用程式,如 ERP和CRM套裝軟體,我們也不能修改資料庫的設計來讓TOAD的功能來配合這些應用程式。不要擔心:TOAD也可以處理這種情況。當您選擇“Add detail …”,此時沒有存在的foreign key,TOAD會要求您使用“Define Master/Detail Relationship”的圖示,將其加入主從關係,如圖4。當你執行手動定義父子關係的步驟時,Data Grid仍然是空的(表示TOAD不知道如何初始Data Grid或是如何保持它在同步狀態)。
圖4: 加入空的子物件
當您點擊“Define Master/Detail Relationship”的圖示,會彈出手動定義的視窗,確定父子女的顯示連結,如圖5。當然,彈出視窗的頂端部分是預先填入您的基礎對象。在我們的例子,DEPT等沒有主鍵,所以只有左邊象限是預先填入資料。然後,我們在TOAD選擇了DEPTNO欄做為父鍵,選擇的EMP做為子表,選擇了DEPTNO列作為子鍵。TOAD沒有建立任何資料庫的項目及限制,相反,我們只是告訴TOAD如何自動同步這些table(即指示TOAD在相關的Data Grid的條件)。另外請注意,“Type”的子項將是“其他”而不是“Table(FK)”,這符號是使用在使用者選擇的基準,而這些基準是解釋如何聯結父與子的關係。
圖5: 自行定義連結
無論哪一種方法(自動與手動)用在建構主從瀏覽器的畫面,你如果相要保存您的工作,以便您以後可以重新打開視窗屏幕,並完全按照您的定義來顯示。可以單擊工具欄上的軟碟圖示,保存完整的定義為“.MD”文件。當您重新啟動主從瀏覽器,您可以選擇打開預設的畫面。另外,請注意您的畫面上你可以自己手動定義主/從table之間的關係(即鏈接)都儲存在此文件。