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

摘  要: 范式是關系數據庫設計的理論基礎,也是設計數據庫中所要遵循的規則和指導方法。但在實際情況中,經常出現某條記錄中某個值必須是集合類型,通常情況會建立新表,然后再通過關系來實現多值的保存。但連接查詢會嚴重影響數據庫性能。Oracle數據庫中通過內嵌表實現了不符合第一范式的數據庫設計,詳細研究了Oracle中內嵌表的創建、查詢以及修改的過程。
關鍵詞: Oracle;內嵌表;范式

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

 ②創建表類型
create or replace
TYPE
  TP_ENC_TBL
AS
  TABLE OF T_ENC_TYP
2 創建一個表,其中COL列為內嵌表類型
 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()
 可以看出,列的類型已經是一個復雜的類型TP_ENC_TBL,至此,內嵌表新建成功。
4 對內嵌表的操作
4.1 向內嵌表列增加數據

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

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲一区三区电影在线观看| 亚洲精品三级| 伊人精品视频| 国产亚洲精品久久久久婷婷瑜伽| 欧美日韩一区二区视频在线观看| 免费不卡在线观看av| 久久天天综合| 久久久爽爽爽美女图片| 久久久美女艺术照精彩视频福利播放| 久久av一区二区三区| 欧美在线视频免费观看| 欧美一区二区三区免费看| 亚洲欧美视频在线| 羞羞漫画18久久大片| 欧美一级一区| 久久精品一区二区三区不卡牛牛| 久久国产精品毛片| 久久久7777| 老司机免费视频久久| 免费日韩一区二区| 欧美成人免费在线观看| 欧美刺激性大交免费视频| 欧美国内亚洲| 欧美日韩在线视频一区| 国产精品高潮呻吟久久| 国产精品一区二区你懂得 | 欧美日韩免费网站| 欧美视频在线一区| 国产精品日韩精品| 国产偷自视频区视频一区二区| 国产亚洲女人久久久久毛片| 激情久久综艺| 亚洲日本理论电影| 亚洲午夜极品| 欧美综合国产精品久久丁香| 亚洲国产日日夜夜| 一区二区三区四区五区在线| 在线视频亚洲一区| 午夜精品在线| 久久综合久久综合久久| 欧美黄色免费网站| 欧美亚州一区二区三区 | 性欧美videos另类喷潮| 欧美一区二区三区免费视频| 久久久久九九九| 免费美女久久99| 欧美三区免费完整视频在线观看| 国产精品日本一区二区| 加勒比av一区二区| 99成人在线| 欧美一区二区三区免费视频| 亚洲人成在线免费观看| 亚洲图片在区色| 久久久精品一区| 欧美日本精品一区二区三区| 国产精品一区在线观看| 黄色精品一二区| 99精品视频免费观看| 欧美一区二区福利在线| 亚洲精品在线看| 欧美中文字幕视频| 欧美精品一区二区久久婷婷| 国产乱理伦片在线观看夜一区| 伊人色综合久久天天五月婷| 在线一区欧美| 亚洲高清不卡在线| 亚洲一区二区三区视频| 久久婷婷国产综合精品青草| 欧美视频一区在线观看| 狠狠色丁香婷婷综合| 一本大道av伊人久久综合| 久久福利电影| 亚洲欧美国产视频| 欧美国内亚洲| 国产一区日韩二区欧美三区| 亚洲精品国产精品国自产在线| 午夜精品视频在线| 一本色道久久| 看片网站欧美日韩| 国产目拍亚洲精品99久久精品| 亚洲欧洲一区| 久久成人精品视频| 亚洲欧美日韩一区在线| 欧美国产日韩在线| 国内精品视频666| 亚洲性线免费观看视频成熟| 亚洲免费观看高清完整版在线观看熊 | 久久精品亚洲精品国产欧美kt∨| 欧美日韩日日夜夜| 亚洲高清一区二区三区| 欧美一区成人| 欧美一区二区三区免费观看视频| 欧美日韩国产欧| 在线日韩日本国产亚洲| 欧美一区二区三区免费视| 亚洲欧美视频在线观看视频| 欧美美女喷水视频| 亚洲二区免费| 亚洲国产日韩一级| 久久天天狠狠| 国产一区二区成人久久免费影院| 亚洲一区二区三区免费观看| 一区二区三区欧美日韩| 欧美成人资源网| 永久免费视频成人| 久久精品国产综合精品| 欧美综合第一页| 国产精品一卡二| 亚洲制服av| 亚洲欧美在线观看| 欧美三级午夜理伦三级中文幕 | 欧美一区二区高清在线观看| 亚洲欧美美女| 国产精品久久波多野结衣| 日韩视频精品| 99视频精品全部免费在线| 欧美高清视频免费观看| 亚洲高清免费| 亚洲精品国精品久久99热| 老司机精品视频网站| 好吊色欧美一区二区三区四区| 午夜久久tv| 久久av最新网址| 国产午夜精品福利| 欧美一区二区视频在线| 久久久精品网| 在线观看成人网| 亚洲精品综合| 欧美久久久久免费| 99国产精品私拍| 亚洲欧美日韩区| 国产精品一区二区三区免费观看 | 国产欧美日韩精品丝袜高跟鞋| 亚洲制服欧美中文字幕中文字幕| 午夜综合激情| 国产一区亚洲一区| 亚洲成在人线av| 欧美成人午夜免费视在线看片| 亚洲国产精品123| aⅴ色国产欧美| 国产精品白丝jk黑袜喷水| 亚洲在线播放| 久久手机精品视频| 亚洲国产天堂久久综合网| 日韩视频免费观看高清在线视频| 欧美日韩亚洲综合一区| 国产精品99久久久久久白浆小说 | 亚洲一区二区在线播放| 欧美在线播放视频| 一区二区在线视频| 一区二区国产精品| 国产精品卡一卡二| 欧美一区二区私人影院日本 | 亚洲伊人第一页| 久久九九热免费视频| 亚洲国产精品v| 亚洲一区国产视频| 国产日韩亚洲欧美精品| 亚洲高清资源综合久久精品| 欧美大片在线看免费观看| 99在线热播精品免费| 欧美一区二区黄色| 精品成人一区二区| 亚洲图片欧美日产| 国产一区二区成人| 99视频精品免费观看| 国产精品亚洲综合天堂夜夜| 亚洲福利视频专区| 欧美日韩综合另类| 欧美一区午夜精品| 欧美日韩精品一区| 欧美一区二区三区四区在线观看地址| 欧美高清免费| 午夜精品福利视频| 欧美精品电影在线| 性欧美18~19sex高清播放| 美日韩精品免费| 亚洲午夜av在线| 男人的天堂亚洲| 亚洲欧美国产精品va在线观看 | 国产毛片一区| 亚洲美女在线看| 国产日本欧美一区二区三区在线 | 欧美经典一区二区| 欧美亚洲在线播放| 欧美视频精品一区| 亚洲国产精品第一区二区| 欧美性猛交xxxx乱大交退制版| 亚洲成人在线视频播放 | 亚洲茄子视频| 久久久久久久999精品视频| 99精品国产在热久久| 美女精品自拍一二三四| 亚洲一品av免费观看| 欧美激情一区在线| 欧美在线亚洲在线| 国产精品理论片在线观看| 亚洲欧洲午夜| 国产中文一区二区| 亚洲欧美日韩一区|