国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

嵌套表和可變數(shù)組

2024-07-21 02:36:23
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  嵌套表
  
  一、嵌套表的定義:
  
    嵌套表是表中之表。一個(gè)嵌套表是某些行的集合,它在主表中表示為其中的一列。對(duì)主表中的每一條記錄,嵌套表可以包含多個(gè)行。在某種意義上,它是在一個(gè)表中存儲(chǔ)一對(duì)多關(guān)系的一種方法。考查一個(gè)包含部門(mén)信息的表,在任何時(shí)間內(nèi)每個(gè)部門(mén)會(huì)有很多項(xiàng)目正在實(shí)施。在一個(gè)嚴(yán)格的關(guān)系模型中,將需要建立兩個(gè)獨(dú)立的表department和PRoject。
  
    嵌套表答應(yīng)在department表中存放關(guān)于項(xiàng)目的信息。勿需執(zhí)行聯(lián)合操作,就可以通過(guò)department表直接訪問(wèn)項(xiàng)目表中的記錄。這種不經(jīng)聯(lián)合而直接選擇數(shù)據(jù)的能力使得用戶(hù)對(duì)數(shù)據(jù)訪問(wèn)更加輕易。甚至在并沒(méi)有定義方法來(lái)訪問(wèn)嵌套表的情況下,也能夠很清楚地把部門(mén)和項(xiàng)目中的數(shù)據(jù)聯(lián)系在一起。在嚴(yán)格的關(guān)系模型中,department和project兩個(gè)表的聯(lián)系需要通過(guò)外部要害字(外鍵)關(guān)系才能實(shí)現(xiàn)。
  
  
  二、舉例說(shuō)明嵌套表的使用:
  
    假設(shè)有一個(gè)關(guān)于動(dòng)物飼養(yǎng)員的表,希望其中具有他們飼養(yǎng)的動(dòng)物的信息。用一個(gè)嵌套表,就可以在同一個(gè)表中存儲(chǔ)飼養(yǎng)員和其飼養(yǎng)的全部動(dòng)物的信息。
  
  1、創(chuàng)建類(lèi)型animal_ty:此類(lèi)型中,對(duì)于每個(gè)動(dòng)物都包含有一個(gè)記錄,記載了其品種、名稱(chēng)和出生日期信息。
  
  CREATE TYPE animal_ty AS OBJECT (
  
  breed varchar2(25),
  
  name varchar2(25),
  
  birthdate date);
  
  2、創(chuàng)建animals_nt:此類(lèi)型將用作一個(gè)嵌套表的基礎(chǔ)類(lèi)型。
  
  CREATE TYPE animals_nt as table of animal_ty;
  
  3、創(chuàng)建表breeder:飼養(yǎng)員的信息表
  
  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、查詢(xún)嵌套表
  
  select name,birthdate from
  
  table(select animals from breeder);
  
  select name,birthdate from
  
  table(select animals from breeder
  
  where breedername=’mary’)
  
  where name=’dog’;
  
  三、嵌套表的特點(diǎn):
  
  1、對(duì)象復(fù)用:假如編寫(xiě)面向?qū)ο蟮拇a,就提高了重用以前編寫(xiě)的代碼模塊的機(jī)會(huì)。同樣,假如創(chuàng)建面向?qū)ο蟮臄?shù)據(jù)庫(kù)對(duì)象,也就提高了數(shù)據(jù)庫(kù)對(duì)象能夠被重用的機(jī)會(huì)。
  
  2、標(biāo)準(zhǔn)支持:假如創(chuàng)建標(biāo)準(zhǔn)的對(duì)象,那么它們被重用的機(jī)會(huì)就會(huì)提高。假如有多個(gè)應(yīng)用或多個(gè)表使用同一數(shù)據(jù)庫(kù)對(duì)象集合,那么它就是既成事實(shí)的數(shù)據(jù)庫(kù)對(duì)象標(biāo)準(zhǔn)。
  
  3、定義訪問(wèn)路徑:對(duì)于每一個(gè)對(duì)象,用戶(hù)可定義在其上運(yùn)行的過(guò)程和函數(shù),從而可以使數(shù)據(jù)和訪問(wèn)此數(shù)據(jù)的方法聯(lián)合起來(lái)。有了用這種方式定義的訪問(wèn)路徑,就可以標(biāo)準(zhǔn)化數(shù)據(jù)訪問(wèn)的方法并提高對(duì)象的可復(fù)用性。
  
  
  可變數(shù)組
  
  一、可變數(shù)組的定義:
  
    可變數(shù)組與嵌套表相似,也是一種集合。一個(gè)可變數(shù)組是對(duì)象的一個(gè)集合,其中每個(gè)對(duì)象都具有相同的數(shù)據(jù)類(lèi)型。可變數(shù)組的大小由創(chuàng)建時(shí)決定。在表中建立可變數(shù)組后,可變數(shù)組在主表中作為一個(gè)列對(duì)待。從概念上講,可變數(shù)組是一個(gè)限制了行集合的嵌套表。
  
    可變數(shù)組,答應(yīng)用戶(hù)在表中存儲(chǔ)重復(fù)的屬性。例如:假設(shè)用戶(hù)有一個(gè)project表,并在項(xiàng)目中指定了工作人員,一個(gè)項(xiàng)目可以有多個(gè)工人,而一個(gè)工人也可以為多個(gè)項(xiàng)目工作。在嚴(yán)格的關(guān)系模型中,用戶(hù)可以創(chuàng)建一個(gè)project表,一個(gè)worker表和存儲(chǔ)它們之間關(guān)系的交叉表project_worker。
  
    用戶(hù)可使用可變數(shù)組在project表中存儲(chǔ)工人的名字。假如項(xiàng)目限定的工人數(shù)不超過(guò)10人,可以建立一個(gè)以10個(gè)數(shù)據(jù)項(xiàng)為限的可變數(shù)組。接下來(lái)就可處理此可變數(shù)組,從而對(duì)于每一個(gè)項(xiàng)目,可以選取其中所有工人的名字,而勿需查詢(xún)表worker。
  
  
  二、舉例說(shuō)明可變數(shù)組的使用:
  
  1、創(chuàng)建類(lèi)型comm_info
  
  CREATE TYPE comm_info AS OBJECT ( /*此類(lèi)型為通訊方式的集合
  
  no number(3), /*通訊類(lèi)型號(hào)
  
  comm_type varchar2(20), /*通訊類(lèi)型
  
  comm_no varchar2(30)); /*號(hào)碼
  
  2、創(chuàng)建可變數(shù)組comm_info_list
  
  CREATE TYPE comm_info_list AS
  
  VARRAY(50) OF comm_info;
  
  3、創(chuàng)建表
  
  create table user_info
  
  (user_id number(6), /*用戶(hù)ID號(hào)
  
  user_name varchar2(20), /*用戶(hù)名稱(chēng)
  
  user_comm comm_info_list); /*與用戶(hù)聯(lián)系的通訊方式
  
  4、向可變數(shù)組插入記錄
  
  insert into user_info
  
  values(1,'mary',comm_info_list(comm_info(1,'手機(jī)','13651401919'),
  
  comm_info(2,'呼機(jī)','1281234567')));
  
  insert into user_info
  
  values(2,'carl',comm_info_list(comm_info(1,'手機(jī)','13901018888'),
  
  comm_info(2,'呼機(jī)','1281234567')));
  
  commit;
  
  5、查詢(xún)可變數(shù)組
  
  select user_comm from user_info
  
  where user_id=1;
  
  select comm_type,comm_no
  
  from table(select user_comm from user_info
  
  where user_id=1)
  
  where no=1;
  
    與一位用戶(hù)聯(lián)系的方式有很多種,比如:手機(jī)、呼機(jī)、座機(jī)等。
在一個(gè)嚴(yán)格的關(guān)系模型中,將需要兩個(gè)獨(dú)立的表:用戶(hù)信息和通訊方式,而在可變數(shù)組中,答應(yīng)在表user_info中直接訪問(wèn)用戶(hù)的聯(lián)系方式,這種不經(jīng)聯(lián)合而直接選擇數(shù)據(jù)的能力使得用戶(hù)對(duì)數(shù)據(jù)的訪問(wèn)更加輕易。
  
  三、可變數(shù)組的特點(diǎn):
  
  1、對(duì)象復(fù)用:假如編寫(xiě)面向?qū)ο蟮拇a,就提高了重用以前編寫(xiě)的代碼模塊的機(jī)會(huì)。同樣,假如創(chuàng)建面向?qū)ο蟮臄?shù)據(jù)庫(kù)對(duì)象,也就提高了數(shù)據(jù)庫(kù)對(duì)象能夠被重用的機(jī)會(huì)。
  
  2、標(biāo)準(zhǔn)支持:假如創(chuàng)建標(biāo)準(zhǔn)的對(duì)象,那么它們被重用的機(jī)會(huì)就會(huì)提高。假如有多個(gè)應(yīng)用或多個(gè)表使用同一數(shù)據(jù)庫(kù)對(duì)象集合,那么它就是既成事實(shí)的數(shù)據(jù)庫(kù)對(duì)象標(biāo)準(zhǔn)。
  
  3定義訪問(wèn)路徑:對(duì)于每一個(gè)對(duì)象,用戶(hù)可定義在其上運(yùn)行的過(guò)程和函數(shù),從而可以使數(shù)據(jù)和訪問(wèn)此數(shù)據(jù)的方法聯(lián)合起來(lái)。有了用這種方式定義的訪問(wèn)路徑,就可以標(biāo)準(zhǔn)化數(shù)據(jù)訪問(wèn)的方法并提高對(duì)象的可復(fù)用性。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 介休市| 宿松县| 平远县| 白水县| 休宁县| 随州市| 宜丰县| 福州市| 丰原市| 溆浦县| 乡宁县| 莱芜市| 石柱| 景德镇市| 尉氏县| 禹城市| 云阳县| 旅游| 澎湖县| 黄陵县| 攀枝花市| 和平县| 嘉善县| 佛山市| 台南市| 武功县| 沾益县| 南康市| 怀柔区| 虞城县| 宿迁市| 三穗县| 沭阳县| 桂林市| 靖远县| 翼城县| 海原县| 富平县| 西华县| 涞源县| 龙里县|