《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > Oracle內(nèi)嵌表及應(yīng)用
Oracle內(nèi)嵌表及應(yīng)用
來源:微型機(jī)與應(yīng)用2014年第3期
蔣 楠1,于紅業(yè)1,葛利俊1,但石泉2,馮 昊3,徐 浩1等
(1.渤海石油裝備承德石油機(jī)械公司,河北 承德 067000; 2.中國石油四川石化南充煉油化工總廠
摘要: 范式是關(guān)系數(shù)據(jù)庫設(shè)計(jì)的理論基礎(chǔ),也是設(shè)計(jì)數(shù)據(jù)庫中所要遵循的規(guī)則和指導(dǎo)方法。但在實(shí)際情況中,經(jīng)常出現(xiàn)某條記錄中某個(gè)值必須是集合類型,通常情況會(huì)建立新表,然后再通過關(guān)系來實(shí)現(xiàn)多值的保存。但連接查詢會(huì)嚴(yán)重影響數(shù)據(jù)庫性能。Oracle數(shù)據(jù)庫中通過內(nèi)嵌表實(shí)現(xiàn)了不符合第一范式的數(shù)據(jù)庫設(shè)計(jì),詳細(xì)研究了Oracle中內(nèi)嵌表的創(chuàng)建、查詢以及修改的過程。
關(guān)鍵詞: 軟件 Oracle 內(nèi)嵌表 范式
Abstract:
Key words :

摘  要: 范式是關(guān)系數(shù)據(jù)庫設(shè)計(jì)的理論基礎(chǔ),也是設(shè)計(jì)數(shù)據(jù)庫中所要遵循的規(guī)則和指導(dǎo)方法。但在實(shí)際情況中,經(jīng)常出現(xiàn)某條記錄中某個(gè)值必須是集合類型,通常情況會(huì)建立新表,然后再通過關(guān)系來實(shí)現(xiàn)多值的保存。但連接查詢會(huì)嚴(yán)重影響數(shù)據(jù)庫性能。Oracle數(shù)據(jù)庫中通過內(nèi)嵌表實(shí)現(xiàn)了不符合第一范式的數(shù)據(jù)庫設(shè)計(jì),詳細(xì)研究了Oracle中內(nèi)嵌表的創(chuàng)建、查詢以及修改的過程。
關(guān)鍵詞: Oracle;內(nèi)嵌表;范式

 在關(guān)系數(shù)據(jù)庫中,存在以下定義:“在任何一個(gè)關(guān)系數(shù)據(jù)庫中,第一范式1NF(1 Normal Form)是對(duì)關(guān)系模式的基本要求,不滿足第一范式的數(shù)據(jù)庫就不是關(guān)系數(shù)據(jù)庫”[1]。
 第一范式是指數(shù)據(jù)庫表的每一列都是不可分割的基本數(shù)據(jù)項(xiàng),同一列中不能有多個(gè)值,即實(shí)體中的某個(gè)屬性不能有多個(gè)值或者不能有重復(fù)的屬性。如果出現(xiàn)重復(fù)的屬性,就可能需要定義一個(gè)新的實(shí)體,新的實(shí)體由重復(fù)的屬性構(gòu)成,新實(shí)體與原實(shí)體之間為一對(duì)多關(guān)系。在第一范式中表的每一行只包含一個(gè)實(shí)例的信息。例如,對(duì)于員工信息表,不能將員工信息都放在一列中顯示,也不能將其中的兩列或多列在一列中顯示;員工信息表的每一行只表示一個(gè)員工的信息,一個(gè)員工的信息在表中只出現(xiàn)一次。簡(jiǎn)而言之,第一范式就是無重復(fù)的列。
 實(shí)際情況中,卻常常出現(xiàn)某條記錄中某個(gè)值必須是集合類型(多值),通常情況會(huì)通過新建一張新表,然后再通過關(guān)系(一對(duì)一,一對(duì)多,多對(duì)多)來實(shí)現(xiàn)多值的保存。但是,這樣也同樣存在一個(gè)問題:查詢速度會(huì)變慢。由于涉及不同的兩個(gè)表,查詢時(shí)就會(huì)涉及連接(JOIN)操作,連接操作是最為耗費(fèi)資源(時(shí)間,空間)的操作,當(dāng)查詢量一旦增加超過某個(gè)閾值,數(shù)據(jù)庫就可能會(huì)因?yàn)橘Y源被耗盡而拒絕服務(wù)。為了減少連接操作的次數(shù),Oracle有一種這樣的特性,可以將某一列的類型設(shè)置為一個(gè)集合類型(數(shù)組—VARRAY,內(nèi)嵌表—Nested Table),這樣就可以在一個(gè)單元格中存放多個(gè)結(jié)構(gòu)相同的數(shù)據(jù)[2-5]。
 在使用內(nèi)嵌表的時(shí)候,需要先建立一個(gè)數(shù)據(jù)類型(Type),然后設(shè)置對(duì)應(yīng)列的類型為之前新建的類型。建立完成后,則對(duì)應(yīng)列的數(shù)據(jù)會(huì)變?yōu)楸眍愋?,?duì)其操作需要使用table函數(shù)將其轉(zhuǎn)為表后才可操作。具體實(shí)現(xiàn)過程如下文所述。
1 創(chuàng)建內(nèi)嵌表類型
?。?)簡(jiǎn)單類型內(nèi)嵌表,這樣會(huì)創(chuàng)建出一個(gè)有且只有一列的內(nèi)嵌表(可看作數(shù)組)
 create or replace
TYPE
  TP_ENC_TBL
AS
  TABLE OF NUMBER
(2)復(fù)雜類型內(nèi)嵌表
①創(chuàng)建表結(jié)構(gòu)
create or replace
TYPE
  TP_ENC_TYP
AS
  OBJECT(
    SN VARCHAR2(32),
    C VARCHAR2(512),
    N VARCHAR2(512)

 ②創(chuàng)建表類型
create or replace
TYPE
  TP_ENC_TBL
AS
  TABLE OF T_ENC_TYP
2 創(chuàng)建一個(gè)表,其中COL列為內(nèi)嵌表類型
 CREATE TABLE
T_NESTED_TABLE(
   ID INTEGER PRIMARY KEY,
   COL TP_ENC_TBL DEFAULT TP_ENC_TBL()

NESTED TABLE
  COL
STORE AS
  NT_COL
RETURN AS VALUE;
3 查看T_NESTED_TABLE表
 desc t_nested_table
 名稱 空值    類型
 ID NOT NULL NUMBER(38)
 COL          T_ENC_TBL()
 可以看出,列的類型已經(jīng)是一個(gè)復(fù)雜的類型TP_ENC_TBL,至此,內(nèi)嵌表新建成功。
4 對(duì)內(nèi)嵌表的操作
4.1 向內(nèi)嵌表列增加數(shù)據(jù)

 INSERT INTO
TABLE(SELECT nt.col FROM t_nested_table nt WHERE nt.ID=1)
VALUES
(′val′,′val′,′val′)
首先必須選擇向內(nèi)嵌表插入數(shù)據(jù),由于表是內(nèi)嵌的,所以必須先從某個(gè)單元格中將內(nèi)嵌表選擇出來,然后使用table函數(shù)進(jìn)行轉(zhuǎn)換。
4.2 修改內(nèi)嵌表中的數(shù)據(jù)
 UPDATE
 TABLE(SELECT nt.col FROM t_nested_table nt WHERE nt.ID=1)t
 SET
 t.sn=′new_val′,
 t.c=′new_val′,
 t.n=′new_val′
 首先必須選擇需要修改的內(nèi)嵌表,由于表是內(nèi)嵌的,所以必須先從某個(gè)單元格中將內(nèi)嵌表選擇出來,然后使用table函數(shù)進(jìn)行轉(zhuǎn)換。
4.3 查詢內(nèi)嵌表中的數(shù)據(jù)
 SELECT
t.*
FROM
TABLE(SELECT nt.col FROM t_nested_table nt WHERE nt.ID=1)t
SN         C          N
new_val     new_val    new_val
4.4 刪除內(nèi)嵌表中的數(shù)據(jù)
DELETE FROM
TABLE(SELECT nt.col FROM t_nested_table nt WHERE nt.ID=1)t
WHERE
t.SN=′new_val′
 嵌套表是表中之表。一個(gè)嵌套表是某些行的集合,它在主表中表示為其中的一列。對(duì)主表中的每一條記錄,嵌套表可以包含多個(gè)行。在某種意義上,它是在一個(gè)表中存儲(chǔ)一對(duì)多關(guān)系的一種方法。通過嵌套表,在不影響數(shù)據(jù)庫性能的情況下,通過Oracle實(shí)現(xiàn)不遵循范式的存儲(chǔ)。
參考文獻(xiàn)
[1] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論.第四版[M].北京:高等教育出版社,2006.
[2] THOMAS KYTE(美).Oracle高級(jí)專家編程[M].美國加州:Wrox Press,2001.
[3] 吳孝麗,周焱,耿驚濤.ORACLE數(shù)據(jù)庫安全策略和方法[J].煤炭技術(shù),2011,30(5):113-115.
[4] 俞盤祥.Oracle數(shù)據(jù)庫系統(tǒng)基礎(chǔ)[M].北京:清華大學(xué)出版社,1995.
[5] 余以勝.Oracle數(shù)據(jù)庫備份解決方案的研究[J].計(jì)算機(jī)與數(shù)字工程,2006,34(1):118-121.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久久人成影片一区二区三区| 国产精品久久久亚洲一区 | 亚洲国产日韩欧美一区二区三区| 国产欧美综合在线| 国产精品亚发布| 国产精品卡一卡二| 国产精品视频xxx| 国产精品一区二区男女羞羞无遮挡| 欧美日韩高清在线播放| 欧美破处大片在线视频| 欧美极品在线播放| 欧美日本在线观看| 欧美日韩一区二区视频在线观看| 欧美精品一区二区三区蜜桃| 欧美国产一区视频在线观看| 欧美丰满少妇xxxbbb| 欧美大色视频| 欧美久久视频| 欧美性理论片在线观看片免费| 国产精品成人一区二区三区夜夜夜| 欧美母乳在线| 国产精品白丝jk黑袜喷水| 国产精品久久久久久亚洲调教| 国产精品乱码久久久久久| 国产精品网站在线| 国产欧美日韩综合一区在线播放| 国产亚洲精品久久久久久| 国产一区二区三区在线免费观看| 一区二区亚洲欧洲国产日韩| 亚洲激情影院| 日韩亚洲综合在线| 亚洲欧美大片| 欧美在线一二三四区| 亚洲精品欧美日韩专区| 夜夜爽夜夜爽精品视频| 亚洲一区日韩在线| 亚洲免费一在线| 久久久综合网站| 欧美电影打屁股sp| 欧美日韩另类一区| 国产欧美日韩一区二区三区在线观看| 黄色影院成人| 日韩亚洲国产欧美| 西西人体一区二区| 91久久午夜| 一区二区三区精密机械公司 | 久久在线免费视频| 欧美国产亚洲视频| 国产精品毛片a∨一区二区三区| 国产丝袜美腿一区二区三区| 尤物精品在线| 日韩一二三在线视频播| 欧美一级片久久久久久久| 亚洲片区在线| 亚洲综合欧美| 麻豆精品在线视频| 国产精品yjizz| 一区二区三区在线不卡| 日韩网站在线观看| 欧美一区深夜视频| 一本色道久久| 欧美在线视频日韩| 欧美精品一区在线| 国产亚洲欧美激情| 亚洲精品一区二区三区99| 午夜国产一区| 99v久久综合狠狠综合久久| 新67194成人永久网站| 欧美不卡激情三级在线观看| 国产精品久久久久久久久免费桃花 | 欧美91大片| 国产酒店精品激情| 亚洲毛片av| 亚洲国产欧美不卡在线观看 | 久久av二区| 欧美区高清在线| 精品96久久久久久中文字幕无| 一区二区三区国产精华| 亚洲国产视频一区二区| 亚洲专区一区二区三区| 欧美夫妇交换俱乐部在线观看| 国产嫩草影院久久久久| 亚洲免费高清视频| 亚洲国产一成人久久精品| 性伦欧美刺激片在线观看| 欧美理论在线| 亚洲成人在线视频播放| 亚洲男人影院| 中文亚洲字幕| 欧美顶级大胆免费视频| 黄色成人av在线| 亚洲综合电影| 亚洲欧美日本伦理| 欧美日韩在线视频一区| 亚洲国产一区视频| 亚洲高清免费| 久久久99精品免费观看不卡| 国产精品亚洲片夜色在线| 99国产精品99久久久久久粉嫩| 亚洲韩国日本中文字幕| 久久久久久精| 国产欧美日韩91| 亚洲综合久久久久| 亚洲免费在线观看| 欧美三区在线视频| 日韩午夜黄色| 99av国产精品欲麻豆| 欧美88av| 亚洲国产日韩欧美在线图片| 91久久精品美女高潮| 蜜桃伊人久久| 一区视频在线播放| 亚洲国产精品久久久久秋霞蜜臀 | 国产精品乱码人人做人人爱| 中文在线一区| 亚洲——在线| 国产精品久久久久久久第一福利| 一本大道久久a久久精二百| 一区二区三区鲁丝不卡| 欧美美女操人视频| 日韩性生活视频| 亚洲在线观看视频| 国产精品久久久久久模特| 宅男精品视频| 午夜精品福利在线观看| 国产精品一区二区久久久| 亚洲免费小视频| 久久高清福利视频| 国产伪娘ts一区| 久久国产99| 免费不卡视频| 亚洲国产欧美一区| 夜夜躁日日躁狠狠久久88av| 欧美三级电影大全| 亚洲一区二区三区国产| 欧美一级大片在线观看| 国产亚洲欧美一区| 亚洲高清不卡在线观看| 欧美国产成人在线| 99在线精品视频在线观看| 亚洲男女自偷自拍| 国产欧美一区二区精品忘忧草| 欧美尤物一区| 欧美成人激情视频免费观看| 亚洲精品国偷自产在线99热| 亚洲一区视频| 国产午夜亚洲精品羞羞网站| 亚洲第一网站免费视频| 欧美成人官网二区| 一本色道久久综合一区 | 久久精品视频免费播放| 一区二区三区在线看| 一区二区三区视频观看| 国产精品黄视频| 欧美一区二区网站| 欧美aⅴ一区二区三区视频| 亚洲乱码国产乱码精品精| 亚洲欧美日韩综合国产aⅴ| 国产在线观看91精品一区| 亚洲精品久久久久久久久久久久久| 欧美日韩精品一区二区| 亚洲永久免费精品| 蜜臀久久99精品久久久久久9| 日韩一级黄色av| 久久久久久久成人| 亚洲青色在线| 西瓜成人精品人成网站| 伊人天天综合| 亚洲综合日韩中文字幕v在线| 国产自产高清不卡| 一本色道久久综合狠狠躁的推荐| 国产精品香蕉在线观看| 亚洲精品乱码久久久久久按摩观| 国产精品久久国产三级国电话系列| 亚洲福利小视频| 国产精品久久国产精品99gif| 亚洲娇小video精品| 国产精品久久久久高潮| 91久久线看在观草草青青| 国产精品视频99| 日韩视频免费| 国产一级久久| 亚洲一二三区视频在线观看| 黑丝一区二区| 亚洲欧美日韩国产另类专区| 曰韩精品一区二区| 香蕉久久夜色精品| 最新亚洲一区| 久久免费国产精品1| 一区二区三区视频在线播放| 老司机免费视频一区二区| 亚洲午夜国产一区99re久久 | 国产偷久久久精品专区| 亚洲网站在线看| 伊甸园精品99久久久久久| 午夜日韩激情| 亚洲看片网站| 欧美a级一区二区| 欧美一区二区三区在线| 国产精品国产三级国产|