複製鏈接
請複製以下鏈接發送給好友

嵌套表

鎖定
嵌套表是某些行的集合,它在主表中表示為其中的一列。對主表中的每一條記錄,嵌套表可以包含多個行。在某種意義上,它是在一個表中存儲一對多關係的一種方法。考查一個包含部門信息的表,在任何時間內每個部門會有很多項目正在實施。在一個嚴格的關係模型中,將需要建立兩個獨立的表
中文名
嵌套表
含    義
是表中之表
性    質
一個嵌套表是某些行的集合
訪    問
department表

嵌套表項目信息

嵌套表允許在department表中存放關於項目的信息。勿需執行聯合操作,就可以通過department表直接訪問項目表中的記錄。這種不經聯合而直接選擇數據的能力使得用户對數據訪問更加容易。甚至在並沒有定義方法來訪問嵌套表的情況下,也能夠很清楚地把部門和項目中的數據聯繫在一起。在嚴格的關係模型中,department和project兩個表的聯繫需要通過外部關鍵字外鍵)關係才能實現。

嵌套表使用方法

假設有一個關於動物飼養員的表,希望其中具有他們飼養的動物的信息。用一個嵌套表,就可以在同一個表中存儲飼養員和其飼養的全部動物的信息。
1、創建類型animal_ty:此類型中,對於每個動物都包含有一個記錄,記載了其品種、名稱和出生日期信息。
CREATE TYPE animal_ty AS OBJECT (breed varchar2(25),name varchar2(25),birthdate date);
2、創建animals_nt:此類型將用作一個嵌套表的基礎類型。
CREATE TYPE animal_nt as table of animal_ty;
3、創建表breeder:飼養員的信息表
create table breeder(breedername varchar2(25),animals animal_nt)nested table animals store as animals_nt_tab;
4、向嵌套表中插入記錄
insert into breeder values('mary',animal_nt(animal_ty('dog','butch','31-MAR-97'),animal_ty('dog','rover','31-MAR-97'),animal_ty('dog','julio','31-MAR-97')));
insert into breeder values('jane',animal_nt(animal_ty('cat','an','31-MAR-97'),animal_ty('cat','jame','31-MAR-97'),animal_ty('cat','killer','31-MAR-97')));commit;
5、查詢嵌套表
select name,birthdate from table(select animals from breeder);
當嵌套表中存在多行數據時,必須加上where條件,否則會查詢失敗提示
select name,birthdate from table(select animals from breeder where breedername=’mary’)where name=’dog’;

嵌套表特點介紹

1、對象複用:如果編寫面向對象的代碼,就提高了重用以前編寫的代碼模塊的機會。同樣,如果創建面向對象數據庫對象,也就提高了數據庫對象能夠被重用的機會。
2、標準支持:如果創建標準的對象,那麼它們被重用的機會就會提高。如果有多個應用或多個表使用同一數據庫對象集合,那麼它就是既成事實的數據庫對象標準。
3、定義訪問路徑:對於每一個對象,用户可定義在其上運行的過程和函數,從而可以使數據和訪問此數據的方法聯合起來。有了用這種方式定義的訪問路徑,就可以標準化數據訪問的方法並提高對象的可複用性。