999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

對非1NF關系查詢的探討

2013-04-15 06:46:44許俊
四川職業技術學院學報 2013年5期
關鍵詞:數據庫

許俊

(四川職業技術學院,四川遂寧 629000)

對非1NF關系查詢的探討

許俊

(四川職業技術學院,四川遂寧 629000)

當oracle表字符類型的列中存放多個值時,對這種非1NF關系的多表查詢,希望得到滿足1NF的結果,本文探討了拆分非1NF的列值,及改進設計的多種方法,并編碼實現得到1NF形式的查詢結果.

oracle數據庫;非1NF關系;查詢

1 問題提出

某項目采用oracle11g作為后臺數據庫,其中a、b二個表的設計如下.

b表結構:

提供的測試數據如下:

a表數據:

b表數據:

查詢a表和b表,期望得到如下所示的查詢結果:

即打散b表role_id列值,把逗號分隔的每一項單獨與a表內連接得到查詢結果的一行.

2 表的分析

由于b表role_id存放多個值,當它作為一個整體與a表role_id單值作連接時,是不會等值匹配,必須打散拆分b表role_id列值,使列值中逗號分隔的每個數字成為若干個單一值,以此單一值匹配a表的role_id作等值內連接,得到查詢結果記錄集.

具體思路:使用游標提取b表每一行,拆分非1NF的列值,拆分出每一項role_id與本行1NF的列值構成一條新的記錄,插入到全局臨時表.若某行的非1NF列值有逗號分隔的n項,則該行變成n條記錄暫存于全局臨時表.當b表所有行都提取、拆分、重構新記錄后,全局臨時表里的記錄就是b表所有列的1NF表示,再對a表和全局臨時表作等值內連接,匹配role_id得到所需結果.

3 實現代碼

根據以上思路,編寫實現代碼,為便于調用,把實現代碼封裝為存儲過程.

3.1 首先創建全局臨時表usr_type_temp:

createglobaltemporarytableusr_type_temp

拆分非1NF列role_id中的數字:用循環取b表role_id列的每一字符,如果該字符不是逗號,則作字符連接并暫存到變量s中,并繼續取出下一個字符;若該字符是逗號,則表示拆分到了一項,即一個單獨的role_id.流程圖如下:

上述是拆分字符串的傳統方法,若一個char類型非1NF列的長度為n,則循環n次,判斷n次,全列掃描的時間復雜度較大,代碼不夠簡潔,但這種方法適宜于oracle任何版本.

3.3 使用函數regexp_substr改寫

Oracle10g引進了正則表達式函數regexp_su bstr,它擴展了函數substr的功能,能按正則表達式的匹配要求返回字符串的子串.

語法:regexp_substr(srcstr,pattern[,position[,occurrence[,match_option]]])

srcstr:源字符串

pattern:正則表達式

position:搜索的開始位置

occurrence:返回第幾個匹配的字符串

match_option:匹配選項

對包體xjpackage_cf提取字符串中數字的for循環改寫為使用函數regexp_substr.

此方法效率較高、形式簡潔,只能在10g及以上版本使用.

4 改進的設計

上述的代碼是在不改變b表結構的基礎上實現的,但要滿足b表role_id列既要存儲多個值,又要方便查詢,結合oracle集合的特征改進設計,修改b表role_id列的類型為嵌套表.

創建嵌套表類型t_nested_roleid的語句:createorreplacetypet_nested_roleidastable ofnumber;把b表role_id列的類型改為t_nest ed_roleid.對a、b表連接查詢得到期望結果,語句如下:selecta.roleid,a.description,subquery. *fromainnerjoin(selectb.typeid,typename, c.column_valueasrole_idfromb,table(b. roleid)corderbyb.typeid,column_value)subqueryona.roleid=subqueryb.role_id;改進結構后查詢極其簡單,不需要全局臨時表了,由于使用集合緩存了數據,查詢效率提高了,但要對前臺程序增加、修改記錄的語句稍作修改.

[1]楊小艷.Oracle數據庫查詢優化方法研究[J].計算機與現代化,2008,(4).

[2]馮亞麗.基于表結構及索引的Oracle查詢優化研究[J].哈爾濱商業大學學報,2011,(6).

[3]楊俊杰.Oracle數據庫設計開發階段性能優化策略[J].計算機與信息技術,2006,(11).

Researchon Non-1NF Relation Inquiries

XU Jun
(Sichuan Vocational and Technical, Suining Sichuan 629000)

When there are many numbers in the character type column of the oracle table, by inquiring such non-1NF relations multi-table, 1NF result is hoped to meet. This paper explores column values of non-1NF relations, a variety of methods to improve the design and encoding to achieve 1NF forms query results.

Oracle Database; Non-1NF Relations; Inquiries

TP31

A

1672-2094(2013)05-0158-03

責任編輯:張隆輝

2013-04-24

四川省教育廳科研項目《基于混合算法的物流配送路徑優化方案研究》(編號:13ZB0031)成果之一。

許俊(1969-),男,四川蓬溪人,四川職業技術學院計算機科學系副教授,碩士。

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 在线观看无码av免费不卡网站 | 成人在线观看一区| 国产一级毛片高清完整视频版| 找国产毛片看| 亚洲人成网站观看在线观看| 99热这里只有精品国产99| 欧美日韩一区二区在线播放| 波多野结衣亚洲一区| 欧美色图久久| 激情無極限的亚洲一区免费| 毛片手机在线看| 国产欧美精品午夜在线播放| 丰满的熟女一区二区三区l| 在线人成精品免费视频| 亚洲欧洲自拍拍偷午夜色| 日韩精品免费一线在线观看| 日韩 欧美 小说 综合网 另类| 亚洲伊人久久精品影院| av在线无码浏览| 玩两个丰满老熟女久久网| 91综合色区亚洲熟妇p| 亚洲侵犯无码网址在线观看| 女人av社区男人的天堂| 亚洲国产综合自在线另类| 99爱视频精品免视看| 亚洲国产黄色| 欧美a在线看| 欧美性天天| 99久久精品国产自免费| 无码内射在线| 国产成人高清精品免费软件| 国产精品亚洲精品爽爽| 久久亚洲国产一区二区| 欧美激情成人网| 欧美一区二区三区香蕉视| 无码aⅴ精品一区二区三区| 国产地址二永久伊甸园| 最近最新中文字幕在线第一页| 91网红精品在线观看| 一区二区日韩国产精久久| 欧美人与性动交a欧美精品| 国产99精品久久| 在线观看国产黄色| 亚洲va在线观看| 亚洲另类第一页| 国产国产人在线成免费视频狼人色| 91亚洲免费视频| 成人亚洲国产| 福利视频一区| 国产成人艳妇AA视频在线| 人妻丰满熟妇αv无码| 无码在线激情片| 在线观看亚洲成人| 国产99在线观看| 久久6免费视频| 久久综合亚洲色一区二区三区| 在线观看视频一区二区| 91精品专区国产盗摄| 99久久精品国产麻豆婷婷| 亚洲最大情网站在线观看 | 亚洲欧洲自拍拍偷午夜色无码| a级毛片免费播放| 国产91在线|日本| 一级毛片在线免费看| 亚洲国产成人麻豆精品| 亚洲av无码人妻| 亚洲国产精品无码AV| 四虎成人在线视频| 成人欧美在线观看| 免费看美女自慰的网站| 久久久久亚洲AV成人网站软件| 91精品网站| 亚洲资源站av无码网址| 精品色综合| 国产亚洲精| 国产国拍精品视频免费看| 国产免费精彩视频| 国产在线精品香蕉麻豆| 亚洲清纯自偷自拍另类专区| 国产噜噜噜| 国产人免费人成免费视频| 国产农村1级毛片|