資源描述:
《嵌套表和可變數(shù)組》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、嵌套表和可變數(shù)組本文出自:http://www.zhaoyang-db.com.cn作者:(2002-04-2608:02:00)?嵌套表一、嵌套表的定義: 嵌套表是表中之表。一個嵌套表是某些行的集合,它在主表中表示為其中的一列。對主表中的每一條記錄,嵌套表可以包含多個行。在某種意義上,它是在一個表中存儲一對多關系的一種方法。考查一個包含部門信息的表,在任何時間內(nèi)每個部門會有很多項目正在實施。在一個嚴格的關系模型中,將需要建立兩個獨立的表department和project?! ∏短妆碓试S在department表中存放關
2、于項目的信息。勿需執(zhí)行聯(lián)合操作,就可以通過department表直接訪問項目表中的記錄。這種不經(jīng)聯(lián)合而直接選擇數(shù)據(jù)的能力使得用戶對數(shù)據(jù)訪問更加容易。甚至在并沒有定義方法來訪問嵌套表的情況下,也能夠很清楚地把部門和項目中的數(shù)據(jù)聯(lián)系在一起。在嚴格的關系模型中,department和project兩個表的聯(lián)系需要通過外部關鍵字(外鍵)關系才能實現(xiàn)。二、舉例說明嵌套表的使用: 假設有一個關于動物飼養(yǎng)員的表,希望其中具有他們飼養(yǎng)的動物的信息。用一個嵌套表,就可以在同一個表中存儲飼養(yǎng)員和其飼養(yǎng)的全部動物的信息。1、創(chuàng)建類型anima
3、l_ty:此類型中,對于每個動物都包含有一個記錄,記載了其品種、名稱和出生日期信息。CREATETYPEanimal_tyASOBJECT(breedvarchar2(25),namevarchar2(25),birthdatedate);2、創(chuàng)建animals_nt:此類型將用作一個嵌套表的基礎類型。CREATETYPEanimals_ntastableofanimal_ty;3、創(chuàng)建表breeder:飼養(yǎng)員的信息表createtablebreeder(breedernamevarchar2(25),animalsani
4、mal_nt)nestedtableanimalsstoreasanimals_nt_tab;4、向嵌套表中插入記錄insertintobreedervalues('mary',animal_nt(animal_ty('dog','butch','31-MAR-97'),animal_ty('dog','rover','31-MAR-97'),animal_ty('dog','julio','31-MAR-97')));insertintobreedervalues('jane',animal_nt(animal_ty('
5、cat','an','31-MAR-97'),animal_ty('cat','jame','31-MAR-97'),animal_ty('cat','killer','31-MAR-97')));commit;5、查詢嵌套表selectname,birthdatefromtable(selectanimalsfrombreeder);selectname,birthdatefromtable(selectanimalsfrombreederwherebreedername=’mary’)wherename=’dog’;三
6、、嵌套表的特點:1、對象復用:如果編寫面向?qū)ο蟮拇a,就提高了重用以前編寫的代碼模塊的機會。同樣,如果創(chuàng)建面向?qū)ο蟮臄?shù)據(jù)庫對象,也就提高了數(shù)據(jù)庫對象能夠被重用的機會。2、標準支持:如果創(chuàng)建標準的對象,那么它們被重用的機會就會提高。如果有多個應用或多個表使用同一數(shù)據(jù)庫對象集合,那么它就是既成事實的數(shù)據(jù)庫對象標準。3、定義訪問路徑:對于每一個對象,用戶可定義在其上運行的過程和函數(shù),從而可以使數(shù)據(jù)和訪問此數(shù)據(jù)的方法聯(lián)合起來。有了用這種方式定義的訪問路徑,就可以標準化數(shù)據(jù)訪問的方法并提高對象的可復用性??勺償?shù)組一、可變數(shù)組的定義:
7、 可變數(shù)組與嵌套表相似,也是一種集合。一個可變數(shù)組是對象的一個集合,其中每個對象都具有相同的數(shù)據(jù)類型??勺償?shù)組的大小由創(chuàng)建時決定。在表中建立可變數(shù)組后,可變數(shù)組在主表中作為一個列對待。從概念上講,可變數(shù)組是一個限制了行集合的嵌套表?! 】勺償?shù)組,允許用戶在表中存儲重復的屬性。例如:假設用戶有一個project表,并在項目中指定了工作人員,一個項目可以有多個工人,而一個工人也可以為多個項目工作。在嚴格的關系模型中,用戶可以創(chuàng)建一個project表,一個worker表和存儲它們之間關系的交叉表project_worker?!?/p>
8、 用戶可使用可變數(shù)組在project表中存儲工人的名字。如果項目限定的工人數(shù)不超過10人,可以建立一個以10個數(shù)據(jù)項為限的可變數(shù)組。接下來就可處理此可變數(shù)組,從而對于每一個項目,可以選取其中所有工人的名字,而勿需查詢表worker。二、舉例說明可變數(shù)組的使用:1、創(chuàng)建類型comm_infoCREATET