亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > DB2 > 正文

用 IBM Rational XDE Developer for Java 為 DB2 UDB 數(shù)據(jù)

2024-09-06 23:58:04
字體:
供稿:網(wǎng)友
英文原文

用 ibm rational xde developer for java 為 db2 udb 數(shù)據(jù)庫建模

enter a subtitle
suita gupta([email protected]),developer technical support,ibm
nanda pilaka([email protected]),developer technical support,ibm

2004 年 6 月
  內(nèi)容  簡介 開始之前 為數(shù)據(jù)庫和表空間建模 表及其關(guān)系
視圖
存儲過程 觸發(fā)器 基于數(shù)據(jù)模型生成 ddl 腳本 連接數(shù)據(jù)庫 逆向工程 比較和同步模式 結(jié)束語
簡介


參與數(shù)據(jù)庫應(yīng)用程序開發(fā)的每一個人都遵循著某套方法。而您所選擇的方法將幫助您分析需求,以及開發(fā)和交付最終的產(chǎn)品。這套方法中最重要的部分就是,基于業(yè)務(wù)需求的數(shù)據(jù)庫設(shè)計和建模。在這篇文章中,我將談?wù)撌褂?#8220;rational® xde developer for java”進行的,專門針對“db2® universal database”的設(shè)計和建模!

統(tǒng)一建模語言(uml)是用于為業(yè)務(wù)和軟件應(yīng)用需求建模的標(biāo)準(zhǔn)的圖形化表示法。過去的幾年里,已經(jīng)開始廣泛地將 uml 用于面向?qū)ο蟮能浖_發(fā)中。除了適用于為對象建模之外,uml 還適用于設(shè)計和建立數(shù)據(jù)存儲模型,以供您的應(yīng)用程序使用。基本上,數(shù)據(jù)建模包括分析客戶需求,用以開發(fā)一個客戶的數(shù)據(jù)需求模型,然后,以該模型為藍圖或架構(gòu)為應(yīng)用程序構(gòu)建數(shù)據(jù)庫。

本文將向您展示基于已熟悉的 db2 sample 數(shù)據(jù)庫來生成一個數(shù)據(jù)庫模型是多么容易。在文章的末尾,您將看到如何為 db2 sample 數(shù)據(jù)庫及其中的一些數(shù)據(jù)對象建模。我們還將向您展示如何從已完成的模型生成 ddl 腳本,以及如何使用這些腳本來創(chuàng)建最終的 db2 數(shù)據(jù)庫。

我們將使用 rational xde developer for java(版本:2003.06.00)和 ibm db2 universal database v8.1 進行建模。rational xde 支持遵循 ansi sql 92 標(biāo)準(zhǔn)的從 v5.2 開始的所有 db2 udb 版本和 db2 for os/390® 5.x、6.x、7.x 的數(shù)據(jù)建模。rational xde 也可以用于為 oracle、sybase 和 sql server 數(shù)據(jù)庫建模。

數(shù)據(jù)建模的好處
數(shù)據(jù)建模有許多優(yōu)點,可以使開發(fā)小組中的數(shù)據(jù)設(shè)計師和管理員以及所涉及的程序員均從中受益。
數(shù)據(jù)庫設(shè)計師可以使用 rational xde 等工具來建立和可視化數(shù)據(jù)庫模型,確保數(shù)據(jù)庫規(guī)則,添加不同的數(shù)據(jù)庫對象,并設(shè)置關(guān)系。 數(shù)據(jù)庫管理員既可以為一個已經(jīng)存在的數(shù)據(jù)庫創(chuàng)建模型,也可以從模型生成 ddl 并為特定的實現(xiàn)創(chuàng)建數(shù)據(jù)庫。 數(shù)據(jù)模型有助于應(yīng)用程序開發(fā)人員更好地理解應(yīng)用程序的總體架構(gòu),盡管一般說來,他們不需要深入了解數(shù)據(jù)庫體系結(jié)構(gòu)的細節(jié)。他們可以用數(shù)據(jù)模型來建立類模型,例如由表結(jié)構(gòu)產(chǎn)生。 數(shù)據(jù)模型對于終端用戶也十分有用,可驗證是否已準(zhǔn)確地捕獲所有的數(shù)據(jù)需求。
如果項目中的所有建模都是用 uml 完成的,那么該數(shù)據(jù)模型將完全匹配其余的系統(tǒng)設(shè)計,并且?guī)椭麄€小組無縫地協(xié)同工作。

開始之前


在開始創(chuàng)建數(shù)據(jù)庫模型之前,讓我們來看一個 rational xde 的屏幕快照,以及我們將用于建立數(shù)據(jù)庫模型的菜單和選項,如 圖 1 所示:

圖 1. 從 rational xde 開始


我們需要為數(shù)據(jù)模型創(chuàng)建一個項目。單擊 file -> new -> project。選擇創(chuàng)建 data modeling project 并命名為“data model”。一旦創(chuàng)建了該項目,您就可以在 model explorer 窗格上看到它了,如下面的 圖 2 所示。

其中,已經(jīng)為您創(chuàng)建了兩個模型 —— 一個物理數(shù)據(jù)模型和一個邏輯數(shù)據(jù)模型。數(shù)據(jù)架構(gòu)師和數(shù)據(jù)庫設(shè)計師通常使用邏輯數(shù)據(jù)模型,以一種獨立于特定數(shù)據(jù)庫實現(xiàn)的形式捕獲數(shù)據(jù)需求。邏輯模型是用于與業(yè)務(wù)風(fēng)險承擔(dān)者(stakeholder)進行通信以確保清晰地捕獲數(shù)據(jù)需求的好工具,因為它沒有牽扯到特定數(shù)據(jù)庫的細節(jié)。數(shù)據(jù)庫設(shè)計師通常將邏輯模型細化為一個或多個“范式”,以便消除數(shù)據(jù)重復(fù)和提高最終設(shè)計的質(zhì)量。一旦對邏輯數(shù)據(jù)需求的準(zhǔn)確性有了十足把握,您就可以將該邏輯模型轉(zhuǎn)換為物理數(shù)據(jù)模型,從而將該模型匹配特定的目標(biāo)數(shù)據(jù)庫。然后,可以針對特定的數(shù)據(jù)庫系統(tǒng)或應(yīng)用程序,改進和優(yōu)化該物理數(shù)據(jù)模型。

邏輯數(shù)據(jù)模型的使用不屬于本文的討論范疇。接下來,我們將關(guān)注物理數(shù)據(jù)模型層次上的數(shù)據(jù)庫設(shè)計。

圖 2. model explorer


為數(shù)據(jù)庫和表空間建模


首先,我們將創(chuàng)建數(shù)據(jù)庫模型。正如您將在下面 圖 3 中看到的,數(shù)據(jù)庫是可以進行建模以及在數(shù)據(jù)模型中用 uml 符號 <<database>> 表示的最大元素。rational xde 允許您選擇任何一種它所支持的 dbms 作為數(shù)據(jù)模型的實現(xiàn)數(shù)據(jù)庫。本文中,我們選擇了 db2 udb v8 來演示數(shù)據(jù)建模的過程。

創(chuàng)建數(shù)據(jù)庫組件
在 model explorer 中,右擊 main ->add data modeler ->database。

圖 3. 創(chuàng)建數(shù)據(jù)庫模型


然后,單擊 model explorer 中新創(chuàng)建的數(shù)據(jù)庫組件,輸入一個名稱。我們將 sampledb 作為我們數(shù)據(jù)庫的獨有名稱。

右擊 model explorer 中的 sampledb,并單擊 data modeler -> open specification。

圖 4. 打開 specification


在 database specification 對話框中,在 database 列表中選擇 ibm db2 8.x 作為目標(biāo)數(shù)據(jù)庫。

圖 5. 選擇目標(biāo)數(shù)據(jù)庫


單擊 ok,并將該數(shù)據(jù)庫組件拖放到 diagram 視圖上。

rational xde 允許您建立表空間模型,并將表指派到這一表空間。我們將看到如何建立一個名為 sample_tbsp 的、已分配一個容器的表空間模型。請注意,您在以下步驟中指定的容器路徑應(yīng)該已經(jīng)存在。

在進一步繼續(xù)之前,您可以通過右擊 model explorer 中的 logical data model 來選擇邏輯數(shù)據(jù)模型。您可以隨時使用熱鍵 ctrl+s 保存您的模型。

創(chuàng)建表空間
在 model explorer 中,右擊數(shù)據(jù)庫后單擊 add data modeler -> tablespace。

圖 6. 添加表空間


在 model explorer 中,右擊新的表空間并單擊 data modeler -> open specification。
在 general 選項卡中,輸入表空間的名稱,例如 sample_tbsp。您還可以指定其他細節(jié),例如表空間的類型、擴展塊大小、預(yù)取大小、頁面大小以及緩沖池名稱。

圖 7. 表空間的具體指定


完成后,單擊 ok 并將這個表空間組件拖放到 diagram 視圖上。您一旦建立了數(shù)據(jù)庫模型和表空間模型,rational xde 就會自動地創(chuàng)建數(shù)據(jù)庫和表空間之間的依賴關(guān)系,如下面圖 8 所示:

圖 8. 依賴關(guān)系


創(chuàng)建容器
在 model explorer 中,右擊一個表空間后單擊 data modeler -> open specification。
在 container 選項卡中,單擊 new 圖標(biāo),并輸入新容器的路徑名稱。

圖 9. 定義容器


檢查點:您的模型現(xiàn)在應(yīng)該如 圖 10 所示:

圖 10. 此時的模型


表及其關(guān)系


我們將為原有的 sample 數(shù)據(jù)庫中的兩個表(employee 表和 department 表)建模。我們還將為這兩個表之間的參照完整性關(guān)系建模。

創(chuàng)建表組件的步驟:

在 model explorer 中,右擊數(shù)據(jù)模型,然后單擊 add data modeler ->table。 在 table specification 對話框的 general 選項卡中,指定表名稱,并在 columns 選項卡中添加該表的列。您還可以為該表指定主鍵。
圖 11. 給模型添加一個表

單擊 ok,您將在 model explorer 中看到這個表組件。將之拖放至 diagram 視圖上。
我們將分別為 employee 表和 department 表執(zhí)行以上步驟。對于 employee 表,我們將省略“workdept”列的創(chuàng)建。在我們建立 employee 表和 department 表之間的參照完整性時,將自動為我們創(chuàng)建該列。


現(xiàn)在,我們將建立 employee 表(外鍵:workdept)和 department 表(主鍵:deptno)之間的參照完整性。可以通過創(chuàng)建這兩個表之間的“identifying”關(guān)系來完成:
從工具箱的 data modeler 列表中選擇 identifying relationship 選項,然后先單擊 diagram 視圖上的父表 department 組件,再單擊子表 employee 組件。

圖 12. 設(shè)置參照完整性

在 relationship specification 對話框中,您可以指定子角色和父角色。

圖 13. 關(guān)系的具體指定

在 relationship specification 對話框的 migrated keys 選項卡中,您還可以修改 employee 表中的外鍵列名稱:

圖 14. migrated keys


您將看到 employee 表中添加了一個新的列。在 table specification 對話框的 column 選項卡中,您可以修改“workdept”列在 employee 表中的位置,如下面 圖 15 所示:

圖 15. table specification 對話框


您的模型應(yīng)該與下面 圖 16 所示相類似:

圖 16. 模型


視圖


rational xde 允許您基于表或 sql 查詢來創(chuàng)建視圖。這些查詢可以包括 where、group by 或 order by 子句。您既可以手工為視圖指定 sql 查詢,也可以在 view specification 對話框中為視圖選擇各個列。

以下是創(chuàng)建視圖組件的步驟:
在 model explorer 中,右擊模型后單擊 add data modeler -> view。一個新的視圖將顯示在 model explorer 中。 右擊這個新的視圖,然后單擊 data modeler > open specification。這將打開 view specification 對話框。 在 general 選項卡中,在 name 框中輸入“emp_view”作為視圖名稱。 單擊 ok 并將該視圖組件拖放至 diagram 視圖上。
為該視圖指定列:
從工具箱的 data modeler 列表中選擇 view dependency,然后先單擊圖(diagram)上的 view 組件(emp_view),再單擊源表組件(employee 表)。

圖 17. 創(chuàng)建視圖

源表中的所有列都將填充到您的視圖中。 此時,您可以通過啟用 view specification 對話框的 general 選項卡中的“user defined”復(fù)選框,為視圖指定定制的 sql 查詢:

圖 18. 視圖的具體指定

然后在同一對話框的 sql 選項卡中輸入定制的 sql 查詢。完成后單擊 ok。

圖 19. 視圖的具體指定


存儲過程


rational xde 還允許您為數(shù)據(jù)庫建立存儲過程的模型。所支持的 dbms 有:
ibm db2 udb 5.2、6.1、7.0 和 8.0 ibm db2 mvs 5.x、6.x 和 7.x oracle 7.3、8.x、和 9i for windows nt microsoft sql server 6.5、7.0 和 2000 sybase adaptive server 12.x
在 rational xde 中,術(shù)語“存儲過程”包括常規(guī)的存儲過程(返回多個結(jié)果)和存儲函數(shù)(返回標(biāo)量值)。這兩種存儲過程都可以用相應(yīng)的參數(shù)和一個動作體(action body)來進行定義和建模。


可是,請牢記數(shù)據(jù)庫和存儲過程之間必須存在 實現(xiàn)關(guān)系(realization relationship),才能對目標(biāo)數(shù)據(jù)庫執(zhí)行 ddl。在 rational xde 中,存儲過程在存儲過程容器中被分組。在為該模型生成 ddl 之前,需要通過實現(xiàn)關(guān)系將表、存儲過程和視圖指派給該數(shù)據(jù)庫。

創(chuàng)建存儲過程組件的步驟:
在 model explorer 窗口中,右擊 main。 選擇 add data modeler 并單擊 stored procedure container。這將在數(shù)據(jù)模型中創(chuàng)建一個默認名為“procedurecontainer1”的存儲過程容器。 您可以使用該容器默認的名稱,也可以通過位于 model explorer 窗口之下的 properties 窗口修改它。 右擊存儲過程容器“procedurecontainer1”,然后,選擇 add data modeler 并單擊 stored procedure。這將添加默認名為“procedure1”的存儲過程容器。同樣地,您可以使用這個默認名稱,如果希望,也可以通過 model explorer 窗口之下的 properties 窗口來提供另一名稱。 您還必須添加從數(shù)據(jù)庫到存儲過程的“數(shù)據(jù)庫實現(xiàn)”關(guān)系,用以為該存儲過程生成 ddl。 為了添加“數(shù)據(jù)庫實現(xiàn)”關(guān)系,單擊工具箱中的 data modeler,下滾該列表至“database realization”,單擊選擇它。 然后,先單擊數(shù)據(jù)庫組件,接著再單擊存儲過程容器組件以創(chuàng)建實現(xiàn)關(guān)系。該數(shù)據(jù)模型將如下面 圖 20 所示:

圖 20. 展示了實現(xiàn)關(guān)系的數(shù)據(jù)模型

此時或稍后,可以通過右擊 model explorer 中的存儲過程,選擇 data modeler 并單擊 open specification,來修改存儲過程的名稱和簽名(參數(shù)等等)。 這將打開 stored procedure specification 對話框。 在該對話框中,您可以通過 general 選項卡修改過程名、編寫語言等,通過 parameters 選項卡添加參數(shù),以及最后通過 action body 選項卡指定一個動作體,如下面圖 21 所示:



圖 21. 存儲過程的具體指定


觸發(fā)器


xde 允許您創(chuàng)建用戶定義的觸發(fā)器,用以在數(shù)據(jù)庫中實施業(yè)務(wù)規(guī)則。
為觸發(fā)器建模:
在 model explorer 中右擊所需的表。 選擇 data modeler 并單擊 open specification 以打開該表的具體指定(specification)。 在 specification 對話框中,單擊 triggers 選項卡,然后單擊 new,為該表建立一個新的觸發(fā)器模型。 您可以創(chuàng)建一個“after”或“before”觸發(fā)器,以及為該觸發(fā)器創(chuàng)建一個動作體。下面的 圖 22 說明了是如何進行的:



圖 22. 創(chuàng)建觸發(fā)器


基于數(shù)據(jù)模型生成 ddl 腳本


rational xde 提供了 forward engineering 向?qū)?,用以為整個數(shù)據(jù)庫或數(shù)據(jù)模型中的指定組件生成數(shù)據(jù)定義語言(ddl)腳本。rational xde 生成的 ddl 遵循 ansi sql 92 標(biāo)準(zhǔn)。xde 還允許您對目標(biāo)數(shù)據(jù)庫執(zhí)行所生成的 ddl,而目標(biāo)數(shù)據(jù)庫是您在啟動數(shù)據(jù)模型項目之前指定的。因此,要確保您已經(jīng)正確連接了該目標(biāo)數(shù)據(jù)庫。同時,該數(shù)據(jù)模型中的所有數(shù)據(jù)庫組件都必須利用前面小節(jié)中所闡明的關(guān)系連接該數(shù)據(jù)庫組件。如果沒有為任何組件進行該工作,那么就不會為特定的組件生成 ddl。

為了生成 ddl 腳本:
在 model explorer 中,右擊一個現(xiàn)有的數(shù)據(jù)庫、包或表,然后單擊 data modeler > forward engineer。這將打開用于數(shù)據(jù)建模的 forward engineering wizard 對話框。然后按照該向?qū)е械闹甘具M行。下面的圖 23 是通過 forward engineering 向?qū)檎麄€數(shù)據(jù)庫生成 ddl 的屏幕快照:

圖 23. forward engineering 向?qū)?br>

連接數(shù)據(jù)庫


rational xde 允許您連接一個 dbms,并且執(zhí)行所生成的 ddl 以創(chuàng)建數(shù)據(jù)庫對象。所支持的 dbms 有:
ibm db2 udb 5.2、6.1、7.0 和 8.0 ibm db2 mvs 5.x、6.x 和 7.x oracle 7.3、8.x 和 9i for windows nt microsoft sql server 6.5、7.0 和 2000 sybase adaptive server 12.x rational xde 支持下列用以連接以上數(shù)據(jù)庫系統(tǒng)的驅(qū)動程序:
ibm db2 app driver(odbc) ibm db2 udb jdbc driver oracle ole db provider oracle thin jdbc driver ole db provider ms ole db for odbc ms ole db for oracle(mdac) ms sql ole db provider sybase ase odbc driver為了連接目標(biāo)數(shù)據(jù)庫,您必須將之配置成 odbc 數(shù)據(jù)源,并提供正確的訪問信息以便能夠連接它。既可以將該數(shù)據(jù)庫配置為系統(tǒng) odbc 數(shù)據(jù)源,也可以配置為用戶 odbc 數(shù)據(jù)源。您既可以通過 forward engineering 或 reverse engineering 向?qū)Ы⑦B接,也可以在比較和同步(compare and sync)模式[rlk1]下進行。還請注意,如果選擇連接數(shù)據(jù)庫,您可能需要為所選擇的數(shù)據(jù)庫系統(tǒng)安裝運行時客戶機(對于 db2 udb)或等效的客戶機組件(對于其他的 dbms)。關(guān)于這方面的更多信息,請查看 rational xde 幫助??梢詼y試到目標(biāo)數(shù)據(jù)庫的連接,例如在 forward engineering 向?qū)е型ㄟ^ execute 復(fù)選框進行,如下面的圖 24 所示:


圖 24. 連接數(shù)據(jù)庫


逆向工程


我們已經(jīng)介紹了正向工程(forward engineering)。通過逆向工程(reverse engineering),我們可以為已經(jīng)存在的數(shù)據(jù)庫建立模型。這將允許我們修改該模型,例如添加表、存儲過程、觸發(fā)器等,然后通過生成和執(zhí)行被修改模型的 ddl 來進行正向工程(forward engineer)。

對數(shù)據(jù)庫進行逆向工程:
在 model explorer 中,右擊該數(shù)據(jù)模型并單擊 data modeler -> reverse engineer。這將打開 reverse engineering 向?qū)А?按照向?qū)е械闹甘具x擇數(shù)據(jù)庫以及逆向工程過程中所包含的所有元素。


比較和同步模式


rational xde 中的比較和同步(compare and sync)功能用于確保數(shù)據(jù)模型與所生成的 ddl 或目標(biāo)數(shù)據(jù)庫一致。比較和同步不包括圖和比較模型之間的關(guān)系。在比較數(shù)據(jù)模型和數(shù)據(jù)庫以及使之同步之前,請驗證已經(jīng)正確連接數(shù)據(jù)庫,并且正確登錄,口令無誤。

將數(shù)據(jù)模型與 ddl 文件或數(shù)據(jù)庫進行比較并使之同步
在 model explorer 或圖中,右擊一個現(xiàn)有的數(shù)據(jù)庫,然后單擊 data modeler > compare and sync。 這將打開數(shù)據(jù)模型的 database synchronization wizard。按照向?qū)е械闹甘具M行。 關(guān)于比較和同步功能,要記住以下幾點: 如果將逆向工程所生成的數(shù)據(jù)模型與 ddl 進行比較,您就必須將 owner/schema 屬性重新設(shè)置為您進行逆向工程的模式名。對于比較中包含的每個數(shù)據(jù)模型元素,您都必須完成該設(shè)置。 您應(yīng)將需要在比較和同步中包含的所有元素指派給數(shù)據(jù)模型數(shù)據(jù)庫。在比較過程中,xde 會忽略所有未指派給數(shù)據(jù)模型數(shù)據(jù)庫的元素。 您的數(shù)據(jù)模型數(shù)據(jù)庫必須使用與所比較的 ddl 或 dbms 數(shù)據(jù)庫相同的名稱和目標(biāo)數(shù)據(jù)庫。 如果將您數(shù)據(jù)模型中的視圖和 ddl 中的視圖進行比較,ddl 就必須使用全限定名,尤其是在該視圖的 sql 語句中。如果該 ddl 未使用全限定名,那么這些視圖在比較過程中看起來就不同,而您就必須手工查看每個視圖的 sql 語句,以發(fā)現(xiàn)真正的語法差別。
結(jié)束語


最后,下面的 圖 25 展示了我們的測試項目“data model1”現(xiàn)在的數(shù)據(jù)庫模型。



圖 25. 數(shù)據(jù)庫模型


最后,我們概述了使用 rational xde 進行數(shù)據(jù)庫建模的過程,但沒有討論太多細節(jié),以免使初級用戶無法承受。這個簡單示例已經(jīng)為您開了個頭,您可以開始使用該工具來滿足您自己的數(shù)據(jù)庫設(shè)計和建模需求。要獲得該產(chǎn)品的更多信息,請從 help 菜單查看 rational xde 的在線幫助。

注意
forward engineering 向?qū)丛?ddl 文件中插入或生成數(shù)據(jù)庫 ddl(create database 命令)。這意味著在對目標(biāo)數(shù)據(jù)庫執(zhí)行 ddl 腳本之前,需要手工創(chuàng)建目標(biāo)數(shù)據(jù)庫。 本文采用的 rational xde 版本為 2003.06.00。在建立存儲過程模型時,您可能會發(fā)現(xiàn)如果在存儲過程具體指定的 action body 選項卡中指定了一個動作體,該存儲過程的 ddl 中卻沒有這個動作體。該缺陷在 2004 年 4 月 9 日發(fā)布的 service release 2(fixpack 2)中得到了修復(fù)。關(guān)于當(dāng)前修正版的更多信息,請查看 www.rational.com。 在為 db2 存儲過程指定動作體時,必須使用非傳統(tǒng)的 sql 語句終止字符,例如“@”等,因為分號在存儲過程體中用于終止存儲過程動作語句。然而,在通過 forward engineering 向?qū)纱鎯^程 ddl 時,會在“@”后面額外生成一個分號,所以“@”是不需要的,否則 db2 的 sql 編譯器會發(fā)出錯誤。 可能需要編輯所生成的 ddl 腳本,以確保所使用的語句終止字符是正確的。
到頁首

resources
subgroup of resourcesexplanation of what the resources will provide for the developer. and then list the resources: title of resource title of resource -->
關(guān)于作者

suita gupta 是 websphere competency center 小組的技術(shù)支持代表。她具有應(yīng)用程序開發(fā)和管理方面的 db2 認證。在 websphere 支持小組工作之前,她在 developer relations db2 technical support 小組中研究各種 db2 應(yīng)用程序的開發(fā)和管理問題。您可以通過 [email protected] 與 suita 聯(lián)系。


nanda pilaka 是德克薩斯州達拉斯 content manager business partner support 小組的軟件工程師。他具有應(yīng)用程序開發(fā)和管理方面的 db2 認證。在 content manager 支持小組工作之前,他在 ibm 達拉斯的 developer relations db2 technical support 小組中研究各種 db2 應(yīng)用程序的開發(fā)和管理問題。您可以通過 [email protected] 與 nanda 聯(lián)系。
菜鳥學(xué)堂:
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产精品乱人伦一区二区| 男人天堂视频在线观看| 国产一区二区毛片| 日韩精品视频在线免费观看| 国产精品wwwww| 国产无遮挡又黄又爽免费网站| 99久久99| 国产乱叫456在线| 无码国产69精品久久久久网站| 亚洲国产精品成人va在线观看| 一级黄色在线观看| 国产精品黄页网站在线播放免费| 大桥未久一区二区| 色婷婷久久99综合精品jk白丝| 91成人精品| 久草视频在线资源| 在线观看精品视频一区二区三区| 99久久免费精品高清特色大片| 日本精品在线观看视频| 日韩精品久久久久久久电影99爱| 99视频在线精品国自产拍免费观看| 成人在线精品| 97netav| 91视频一区| 亚洲第一视频在线观看| 伊人网在线免费观看| 亚洲国产精品va在线看黑人| 中文字幕日本不卡| 国产激情一区二区三区四区| 9久久9毛片又大又硬又粗| 免费中文字幕视频| 成人久久久精品国产乱码一区二区| 五月天最新网址| 国产一区 二区| 欧美激情性爽国产精品17p| 久久久久久久久久久久91| 国产日韩精品suv| 久久久久久亚洲精品不卡| 天天鲁一鲁摸一摸爽一爽| 国产丝袜视频在线播放| 国产成人精品免费看视频| 久热精品在线视频| 在线欧美小视频| 亚洲欧美精品| 无套内谢大学处破女www小说| 91色婷婷久久久久合中文| 国产对白叫床清晰在线播放| 亚洲国产成人精品激情在线| 91夜夜未满十八勿入爽爽影院| 精品国产一区二区三区久久影院| 精品国产18久久久久久二百| 国产午夜精品在线| 亚洲欧美一区二区三区国产精品| 午夜精品影视国产一区在线麻豆| 精品国产一区二区三区av片| 久久只精品国产| 日韩欧美在线免费观看视频| 日韩欧美卡一卡二| 中文官网资源新版中文第二页在线观看| 国产精品成人aaaa在线| 欧美在线网址| 亚洲一区二区三区在线看| 国产亚洲一区二区三区不卡| 久久影视电视剧免费网站| 国产福利一区在线| 国产片在线观看| 国产毛片毛片毛片毛片毛片| 欧美不卡在线一区二区三区| 欧美一级片在线| 亚洲国产精品成人一区二区在线| 69国产精品视频| 亚洲国产成人av好男人在线观看| 五月天一区二区三区| 麻豆网在线观看| 欧美极品少妇videossex| 成人欧美一区二区三区1314| 青娱乐国产盛宴| 欧美日韩中文不卡| 欧美激情精品久久久久久小说| 中文在线播放一区二区| 国产精品一区二区三区免费视频| 国产寡妇树林野战在线播放| 波多野结衣毛片| 国产在线乱码一区二区三区| av免费观看久久| japanese日本护士撒尿| 精品日韩中文字幕| 亚洲视频1区| 亚洲男人在线天堂| 91超碰国产在线| 欧美激情精品久久久六区热门| 日本在线成人一区二区| 黄色网页在线看| 97久久综合精品久久久综合| 亚洲青青久久| 在线观看日韩av电影| 污污的网站18| 亚洲一区区二区| 国产原创中文在线观看| 色婷婷综合久久久中文一区二区| 国产精品天天干| 人妻av无码专区| 国产精品无码午夜福利| 黄色网战在线观看| 蜜桃视频一区| 国产一区二区美女| 伊人av在线播放| 久久三级福利| 苍井空浴缸大战猛男120分钟| 黑人精品一区| 亚洲免费av电影| 日本黄色入口| 国产成人精品在线| 在线中文字幕观看| 国产欧美 在线欧美| 国产精品爽黄69| 亚洲人久久久| 天堂在线第六区| 中国女人一级毛片| 九色视频九色自拍| 91日韩精品一区| 牛夜精品久久久久久久| 精品久久久久一区二区三区| 国产欧美1区2区3区| √天堂中文官网8在线| 久久精品国产一区二区| 99国产精品久久久久久久久久| 日韩激情一区二区| 色噜噜狠狠色综合欧洲selulu| 国产精品中文在线| 一个人看的免费网站www视频| 毛片手机在线观看| 欧美日韩1234| 色尼玛亚洲综合影院| 欧美熟妇精品一区二区蜜桃视频| 日韩电影免费观看在| 国产精品久久久久久久久免费相片| 成在线人视频免费视频| 欧洲美女日日| 色喇叭免费久久综合| 亚洲人妻一区二区| 日韩中文字幕视频在线| 在线观看欧美精品| 超碰在线网站| 三级影片在线看| 一区二区日韩电影| 日本视频不卡| 26uuu精品一区二区| 羞羞免费视频| 日本道免费精品一区二区三区| tube国产麻豆| 美腿丝袜在线亚洲一区| 国产福利精品一区| 999在线观看免费大全电视剧| 精品在线欧美视频| 婷婷国产在线| 品天堂xxxx高清| 一区二区三区伦理| 亚洲中文字幕无码一区| 秋霞国产午夜精品免费视频| 十八禁视频网站在线观看| 日韩高清中文字幕一区| 久久精品国产在热久久| 在线观看福利电影| 激情网站五月天| 国产字幕视频一区二区| 欧美亚洲色图校园春色| 综合久久国产| 黄色手机在线视频| 美女视频第一区二区三区免费观看网站| 中国女人一级毛片| 久久丫精品久久丫| 免费的av在线| 奇米成人av国产一区二区三区| 国产精品三区在线观看| 中文一区二区在线观看| 91成人天堂久久成人| 日韩av免费播放| 成人在线免费观看一区| 国产视频欧美视频| bdsm在线观看播放视频| 老司机精品视频在线观看6| 国产日韩换脸av一区在线观看| 一区二区欧美亚洲| 欧美成人一区二区在线观看| 亚洲影院在线看| 91视频地址| 这里只有精品电影| 色妞一区二区三区| 亚洲天堂黄色片| ckplayer中文字幕| 黄色成人精品网站| 日本三级中文字幕在线观看| 国产日韩精品久久久| 91精品国产自产在线观看永久∴| 在线视频播放大全| 五月天网站亚洲| 欧美人牲a欧美精品| 2019天天干夜夜操| 久久影院朴妮唛| 岛国av在线播放| 欧美日韩国产精品一区| 中国一级大黄大黄大色毛片| 色中文字幕在线观看| 五月天丁香花婷婷| 6080亚洲理论片在线观看| 欧美华人在线视频| 一区二区三区日本| 中文字幕久热在线精品| 色94色欧美sute亚洲线路一久| 亚洲精品狠狠操| 亚洲3atv精品一区二区三区| 国产亚洲欧美日韩日本| 国产成人免费网站| 日韩欧美三级一区二区| 成人妖精视频yjsp地址| 男男激情在线| 97欧美精品一区二区三区| 午夜一区二区三视频在线观看| 奇米777在线| 亚洲第一网站在线观看| 亚洲在线www| 欧美日韩亚洲第一| 欧美精品久久96人妻无码| 免费在线观看黄视频| 97人摸人人澡人人人超一碰| a级在线免费观看| 国产福利短视频| 亚洲欧洲av另类| 亚洲人成毛片在线播放女女| 国产成人免费av一区二区午夜| 国产成人亚洲欧洲在线| 日韩欧美亚洲另类制服综合在线| 亚洲一区久久久| 五月网丁香网| 高清成人免费视频| 国产一区二区在线观看免费| 人人妻人人澡人人爽久久av| 久久成人18免费观看| 色哟哟网站在线观看| 成人蜜臀av电影| 国产三级在线看| 久久不射中文字幕| www.国产91| 日韩欧美激情四射| 天天看天天操| 在线手机中文字幕| 中文字幕 自拍偷拍| www成人免费观看| 一区二区三区欧美在线观看| 亚洲国产成人精品女人| 中文字幕在线观看一区二区| 欧美成人资源| 欧美一级爱爱视频| 91免费视频网| 国产成人福利网站| av动漫在线看| 伊人精品成人久久综合软件| 在线免费观看黄色小视频| 亚洲视频欧美在线| 自拍偷拍一区二区三区| 91亚洲国产成人精品一区二区三| 五月花成人网| 日韩免费视频一区| 欧美精品中文字幕一区| 精品国产制服丝袜高跟| 日韩一区二区三区四区五区| 国产精品有限公司| 国产精品丝袜久久久久久app| 午夜影院在线视频| 日本在线免费观看视频| 无人区在线高清完整免费版 一区二| 日本aaa在线观看| 亚洲精品123区| 国产精品久久久久久久泡妞| 黄色成人av网站| 人妻无码一区二区三区免费| 祥仔av免费一区二区三区四区| 3d动漫成人在线| 可以在线观看的黄色网址| 日韩一级网站| 国精产品一区一区三区mba桃花| 最新二区三区av| 影音先锋成人在线电影| 中文字幕免费在线观看视频| 亚洲国产另类 国产精品国产免费| 性欧美gay| 亚洲男人天堂av在线| 成年网站免费| 亚洲一区在线直播| 国产99精品视频| 久久精品国产第一区二区三区最新章节| 欧美福利一区二区三区| 一级全黄裸体片| 欧美xxxx性猛交bbbb| 成人免费区一区二区三区| 亚洲欧美久久| 亚洲精品在线播放视频| 性欧美videos白嫩| 国产综合色在线视频区| www.青草| 99av国产精品欲麻豆| av影音在线| 精品高清一区二区三区| 黑人巨大精品| 国产精久久一区二区| 偷拍国模大尺度视频在线播放| 久久久精品久久久久特色影视| 1区2区3区在线视频| 黄页免费观看| 无颜之月在线看| 国产精品zjzjzj在线观看| 亚洲一区二区三区四区五区午夜| 男女视频免费网站| 成黄免费在线| 妺妺窝人体色www看人体| 综合视频在线观看| 免费观看一区二区三区毛片| 91亚洲午夜精品久久久久久| 自拍偷拍亚洲激情| 成人免费看aa片| www视频在线免费观看| 亚洲bt欧美bt日本bt| 欧美专区在线播放| 日本一区二区三区四区五区六区| 午夜视频福利在线观看| 国产a级片免费看| 国新精品乱码一区二区三区18|