亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        對非1NF關(guān)系查詢的探討

        2013-04-15 06:46:44許俊
        關(guān)鍵詞:字符串逗號字符

        許俊

        (四川職業(yè)技術(shù)學(xué)院,四川遂寧 629000)

        對非1NF關(guān)系查詢的探討

        許俊

        (四川職業(yè)技術(shù)學(xué)院,四川遂寧 629000)

        當(dāng)oracle表字符類型的列中存放多個(gè)值時(shí),對這種非1NF關(guān)系的多表查詢,希望得到滿足1NF的結(jié)果,本文探討了拆分非1NF的列值,及改進(jìn)設(shè)計(jì)的多種方法,并編碼實(shí)現(xiàn)得到1NF形式的查詢結(jié)果.

        oracle數(shù)據(jù)庫;非1NF關(guān)系;查詢

        1 問題提出

        某項(xiàng)目采用oracle11g作為后臺(tái)數(shù)據(jù)庫,其中a、b二個(gè)表的設(shè)計(jì)如下.

        b表結(jié)構(gòu):

        提供的測試數(shù)據(jù)如下:

        a表數(shù)據(jù):

        b表數(shù)據(jù):

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

        即打散b表role_id列值,把逗號分隔的每一項(xiàng)單獨(dú)與a表內(nèi)連接得到查詢結(jié)果的一行.

        2 表的分析

        由于b表role_id存放多個(gè)值,當(dāng)它作為一個(gè)整體與a表role_id單值作連接時(shí),是不會(huì)等值匹配,必須打散拆分b表role_id列值,使列值中逗號分隔的每個(gè)數(shù)字成為若干個(gè)單一值,以此單一值匹配a表的role_id作等值內(nèi)連接,得到查詢結(jié)果記錄集.

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

        3 實(shí)現(xiàn)代碼

        根據(jù)以上思路,編寫實(shí)現(xiàn)代碼,為便于調(diào)用,把實(shí)現(xiàn)代碼封裝為存儲(chǔ)過程.

        3.1 首先創(chuàng)建全局臨時(shí)表usr_type_temp:

        createglobaltemporarytableusr_type_temp

        拆分非1NF列role_id中的數(shù)字:用循環(huán)取b表role_id列的每一字符,如果該字符不是逗號,則作字符連接并暫存到變量s中,并繼續(xù)取出下一個(gè)字符;若該字符是逗號,則表示拆分到了一項(xiàng),即一個(gè)單獨(dú)的role_id.流程圖如下:

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

        3.3 使用函數(shù)regexp_substr改寫

        Oracle10g引進(jìn)了正則表達(dá)式函數(shù)regexp_su bstr,它擴(kuò)展了函數(shù)substr的功能,能按正則表達(dá)式的匹配要求返回字符串的子串.

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

        srcstr:源字符串

        pattern:正則表達(dá)式

        position:搜索的開始位置

        occurrence:返回第幾個(gè)匹配的字符串

        match_option:匹配選項(xiàng)

        對包體xjpackage_cf提取字符串中數(shù)字的for循環(huán)改寫為使用函數(shù)regexp_substr.

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

        4 改進(jìn)的設(shè)計(jì)

        上述的代碼是在不改變b表結(jié)構(gòu)的基礎(chǔ)上實(shí)現(xiàn)的,但要滿足b表role_id列既要存儲(chǔ)多個(gè)值,又要方便查詢,結(jié)合oracle集合的特征改進(jìn)設(shè)計(jì),修改b表role_id列的類型為嵌套表.

        創(chuàng)建嵌套表類型t_nested_roleid的語句:createorreplacetypet_nested_roleidastable ofnumber;把b表role_id列的類型改為t_nest ed_roleid.對a、b表連接查詢得到期望結(jié)果,語句如下: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;改進(jìn)結(jié)構(gòu)后查詢極其簡單,不需要全局臨時(shí)表了,由于使用集合緩存了數(shù)據(jù),查詢效率提高了,但要對前臺(tái)程序增加、修改記錄的語句稍作修改.

        [1]楊小艷.Oracle數(shù)據(jù)庫查詢優(yōu)化方法研究[J].計(jì)算機(jī)與現(xiàn)代化,2008,(4).

        [2]馮亞麗.基于表結(jié)構(gòu)及索引的Oracle查詢優(yōu)化研究[J].哈爾濱商業(yè)大學(xué)學(xué)報(bào),2011,(6).

        [3]楊俊杰.Oracle數(shù)據(jù)庫設(shè)計(jì)開發(fā)階段性能優(yōu)化策略[J].計(jì)算機(jī)與信息技術(shù),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

        責(zé)任編輯:張隆輝

        2013-04-24

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

        許俊(1969-),男,四川蓬溪人,四川職業(yè)技術(shù)學(xué)院計(jì)算機(jī)科學(xué)系副教授,碩士。

        猜你喜歡
        字符串逗號字符
        逗號
        我是逗號
        尋找更強(qiáng)的字符映射管理器
        逗號
        字符代表幾
        一種USB接口字符液晶控制器設(shè)計(jì)
        電子制作(2019年19期)2019-11-23 08:41:50
        消失的殖民村莊和神秘字符
        一種新的基于對稱性的字符串相似性處理算法
        依據(jù)字符串匹配的中文分詞模型研究
        一種針對Java中字符串的內(nèi)存管理方案
        国产乱码一区二区三区爽爽爽| 日本久久黄色高清视频| 亚洲男人的天堂av一区| 国产后入清纯学生妹| 熟妇人妻无码中文字幕| 亚洲精品一区网站在线观看| 成a人片亚洲日本久久| 一 级做人爱全视频在线看| 中年熟妇的大黑p| 欧美 亚洲 国产 日韩 综AⅤ | 91久久青青草原免费| 一片内射视频在线观看| 伊人青青草综合在线视频免费播放| 精品无码国产自产拍在线观看蜜| 男女真实有遮挡xx00动态图| 伊人色综合九久久天天蜜桃| 在教室轮流澡到高潮h免费视| 久久久久久久综合综合狠狠| 亚洲 欧美 综合 另类 中字| 亚洲av毛片成人精品| 日本一区二区精品高清| 精品日产卡一卡二卡国色天香| 亚洲人成精品久久久久| 国产av三级精品车模| 日韩精品人妻中文字幕有码| 2019最新国产不卡a| 国产在线观看免费一级| 嫩呦国产一区二区三区av| 真人做爰片免费观看播放 | 国产精品国产午夜免费看福利| av成人一区二区三区| 国产激情视频一区二区三区| 久久精品伊人无码二区| 中文字幕色一区二区三区页不卡| 日日噜噜夜夜狠狠va视频v| 日本亚洲国产一区二区三区| 开心五月婷婷综合网站| 国产人妖网站在线视频| 中国农村熟妇性视频| 亚洲综合伦理| 中文字幕在线乱码亚洲|