本發(fā)明專利技術(shù)公開了一種數(shù)據(jù)查詢方法和系統(tǒng),首先抽取業(yè)務系統(tǒng)中的各項維度,建立描述所述業(yè)務系統(tǒng)的業(yè)務數(shù)據(jù)的若干邏輯表,并建立各邏輯表與所述的維度之間的關(guān)聯(lián)關(guān)系;然后根據(jù)業(yè)務系統(tǒng)的物理表,建立物理表與各邏輯表之間的映射關(guān)系,并根據(jù)邏輯表以及按規(guī)則定義的邏輯數(shù)據(jù)查詢語法,編寫邏輯查詢語句,最后依據(jù)物理表與邏輯表之間的映射關(guān)系,將邏輯查詢語句轉(zhuǎn)化為結(jié)構(gòu)化查詢語句,并將結(jié)構(gòu)化查詢語句在數(shù)據(jù)庫中執(zhí)行完成業(yè)務數(shù)據(jù)的查詢。通過本發(fā)明專利技術(shù)所述的方法和系統(tǒng),能夠降低數(shù)據(jù)表理解及書寫的復雜度,改善業(yè)務系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)的可理解性。
【技術(shù)實現(xiàn)步驟摘要】
一種數(shù)據(jù)查詢方法和系統(tǒng)
本專利技術(shù)涉及數(shù)據(jù)存儲及查詢
,具體涉及一種新的數(shù)據(jù)查詢方法和系統(tǒng)。
技術(shù)介紹
RDB (Relational Database,關(guān)系數(shù)據(jù)庫)及其上的 SQL (Structured QueryLanguage,結(jié)構(gòu)化查詢語言)是當前信息系統(tǒng)中應用最廣泛的數(shù)據(jù)存儲與查詢方案。RDB將數(shù)據(jù)存儲于若干物理表(關(guān)系數(shù)據(jù)庫中存放數(shù)據(jù)的基本單元,有若干數(shù)據(jù)結(jié)構(gòu)相同的記錄構(gòu)成,上下文清晰時將簡稱表)中,每個表由若干數(shù)據(jù)結(jié)構(gòu)相同的記錄構(gòu)成,記錄的屬性稱為字段。其中某些字段并指定為表的主鍵,要求這些字段(組)的取值在表內(nèi)記錄中唯一(即沒有兩條記錄在這些字段上的取值相同),這樣可以用這組字段值為唯一確定一條記錄。當某個表的記錄要引用另一個表的記錄時(如員工表的所在部門字段將引用部門表中的記錄),則建立引用表到被引用表的外鍵,引用表中每條記錄的某些稱為外鍵的字段取值為被引用表的某記錄的主鍵。一個表可以建立多個引用其它表的外鍵,還可以建立引用本表的外鍵(如人員表中的配偶字段仍然引用人員表中的記錄),也可能針對同一個被引用表建立多個關(guān)聯(lián)(如人員表中的出生地區(qū)和工作地區(qū)均引用地區(qū)表)。一個業(yè)務系統(tǒng)的數(shù)據(jù)可能有多個表構(gòu)成,這些表之間均可能有關(guān)聯(lián),有時關(guān)聯(lián)還不止一個,甚至還有與本表自己的關(guān)聯(lián)。這樣,在RDB中,這些表將構(gòu)成一個網(wǎng)狀結(jié)構(gòu),N個表之間的關(guān)聯(lián)數(shù)量是N2級別的,很不利于應用開發(fā)人員理解業(yè)務數(shù)據(jù)的體系結(jié)構(gòu)。同時,表與表之間的耦合度也非常高,導致應用程序的局部維護修改都很困難。當要取出多個有關(guān)聯(lián)表中的記錄時,SQL采用連接語法來書寫,其基本原理可以理解為將多個表中的記錄先做完全叉乘(即笛卡爾積),再使用引用表的外鍵與被引用表的外鍵相等的過濾條件將叉乘出來的不必要的記錄去除,從而得到最后的結(jié)果。如果有涉及N個表,則兩兩之間均有可能有關(guān)聯(lián),則可能書寫出來的連接過濾條件會有N* (N-1) /2個,復雜度也是N2級別的,導致書寫非常困難。
技術(shù)實現(xiàn)思路
針對現(xiàn)有技術(shù)中存在的缺陷,本專利技術(shù)的目的在于提供一種數(shù)據(jù)查詢方法及系統(tǒng),降低數(shù)據(jù)表理解及書寫的復雜度,改善業(yè)務系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)的可理解性。為實現(xiàn)上述目的,本專利技術(shù)采用的技術(shù)方案如下:一種數(shù)據(jù)查詢方法,包括以下步驟:( I)抽取業(yè)務系統(tǒng)中的各項維度;(2)建立所述業(yè)務系統(tǒng)的若干邏輯表,并建立各邏輯表與所述的維度之間的關(guān)聯(lián)關(guān)系;所述的邏輯表用于描述業(yè)務系統(tǒng)的業(yè)務數(shù)據(jù);(3)根據(jù)業(yè)務系統(tǒng)的物理表,建立物理表與各邏輯表之間的映射關(guān)系;所述的物理表用于存儲業(yè)務系統(tǒng)的業(yè)務數(shù)據(jù);(4)根據(jù)邏輯表以及按規(guī)則定義的邏輯數(shù)據(jù)查詢語法,編寫邏輯查詢語句LSQL ;(5)依據(jù)物理表與邏輯表之間的映射關(guān)系,將邏輯查詢語句LSQL轉(zhuǎn)化為結(jié)構(gòu)化查詢語句SQL,并將SQL語句在數(shù)據(jù)庫中執(zhí)行完成業(yè)務數(shù)據(jù)的查詢。進一步,如上所述的一種數(shù)據(jù)查詢方法,步驟(I)中,在抽取業(yè)務系統(tǒng)中的各項維度時,還包括抽取各項維度所包含的層次,并確定各項維度的層次之間的計算關(guān)系;所述的各項維度的層次包括基礎(chǔ)層和匯總層;所述的匯總層是指該層次能夠由其它一個或多個基礎(chǔ)層次計算出來。進一步,如上所述的一種數(shù)據(jù)查詢方法,步驟(2)中,所述的邏輯表包括若干邏輯字段,建立邏輯表與所述的維度之間的關(guān)聯(lián)關(guān)系的具體方式為:將邏輯表的外鍵設(shè)置為指向某個維度或者某個維度的層次的字段,邏輯表的主鍵為邏輯表中一個取值唯一的字段或者多個取值唯一的字段組。進一步,如上所述的一種數(shù)據(jù)查詢方法,建立物理表與邏輯表之間的映射關(guān)系的具體方式為:a)在物理表中選擇與每個邏輯表相對應的基表,邏輯表中的每個邏輯字段都能夠由所述的基表計算而來;b)建立邏輯表的主鍵與基表主鍵之間的映射關(guān)系;c)建立邏輯表中非主鍵邏輯字段與基表字段之間的計算關(guān)系。進一步,如上所述的一種數(shù)據(jù)查詢方法,步驟a)中,根據(jù)邏輯表所描述的業(yè)務數(shù)據(jù)的數(shù)據(jù)范圍確定與其對應的基表。再進一步,如上所述的一種數(shù)據(jù)查詢方法,步驟c)中,所述的邏輯表中非主鍵邏輯字段與基表字段之間的計算關(guān)系是指邏輯表中的每個邏輯字段由基表字段構(gòu)成的表達式表不。更進一步,如上所述的一種數(shù)據(jù)查詢方法,步驟(5)中,將LSQL查詢語句轉(zhuǎn)化為SQL語句的具體方式為:根據(jù)所述的邏輯數(shù)據(jù)查詢語句LSQL獲取語句中的業(yè)務數(shù)據(jù)項,根據(jù)所述的業(yè)務數(shù)據(jù)項以及邏輯表與物理表之間的映射關(guān)系,將LSQL語句轉(zhuǎn)化成基于物理表的SQL查詢語句。一種數(shù)據(jù)查詢系統(tǒng),包括:維度抽取模塊,用于抽取業(yè)務系統(tǒng)中的各項維度;邏輯表建立模塊,建立所述業(yè)務系統(tǒng)的若干邏輯表,并建立各邏輯表與所述的維度之間的關(guān)聯(lián)關(guān)系;所述的邏輯表用于描述業(yè)務系統(tǒng)的業(yè)務數(shù)據(jù);映射關(guān)系建立模塊,用于根據(jù)業(yè)務系統(tǒng)的物理表,建立物理表與各邏輯表之間的映射關(guān)系;邏輯查詢語句設(shè)計模塊,用于根據(jù)邏輯表以及按規(guī)則定義的邏輯數(shù)據(jù)查詢語法,編寫邏輯查詢語句LSQL ;數(shù)據(jù)查詢模塊,用于依據(jù)物理表與邏輯表之間的映射關(guān)系將邏輯查詢語句LSQL語句轉(zhuǎn)化為結(jié)構(gòu)化查詢語句SQL,并將SQL語句在數(shù)據(jù)庫中執(zhí)行以完成業(yè)務數(shù)據(jù)的查詢。進一步,如上所述的一種數(shù)據(jù)查詢系統(tǒng),所述的維度抽取模塊還用于抽取各項維度所包含的層次,并確定各項維度的層次之間的計算關(guān)系;所述的各項維度的層次包括基礎(chǔ)層和匯總層;所述的匯總層是指該層次能夠由其它一個或多個基礎(chǔ)層次計算出來。進一步,如上所述的一種數(shù)據(jù)查詢系統(tǒng),所述的邏輯表建立模塊包括:外鍵設(shè)置單元,用于設(shè)置邏輯表的外鍵,邏輯表的外鍵設(shè)置為指向某個維度或者某個維度的層次的字段;主鍵設(shè)置單元,用于設(shè)置邏輯表的主鍵,邏輯表的主鍵為邏輯表中一個取值唯一的字段或者多個取值唯一的字段組。再進一步,如上所述的一種數(shù)據(jù)查詢系統(tǒng),所述的映射關(guān)系建立模塊包括:基表選擇單兀,用于在物理表中選擇與每個邏輯表相對應的基表,邏輯表中的每個邏輯字段都能夠由所述的基表計算而來;主鍵關(guān)系建立單兀,用于建立邏輯表的主鍵與基表主鍵之間的映射關(guān)系;字段關(guān)系建立單元,用于建立邏輯表中非主鍵邏輯字段與基表字段之間的計算關(guān)系O更進一步,如上所述的一種數(shù)據(jù)查詢系統(tǒng),所述的數(shù)據(jù)查詢模塊包括:語句轉(zhuǎn)換單元,用于依據(jù)物理表與邏輯表之間的映射關(guān)系將邏輯查詢語句LSQL語句轉(zhuǎn)化為結(jié)構(gòu)化查詢語句SQL語句,轉(zhuǎn)換的具體方式為:根據(jù)所述的邏輯數(shù)據(jù)查詢語句LSQL獲取語句中的業(yè)務數(shù)據(jù)項,根據(jù)所述的業(yè)務數(shù)據(jù)項以及邏輯表與物理表之間的映射關(guān)系,將LSQL語句轉(zhuǎn)化成基于物理表的SQL查詢語句;查詢單元,用于將SQL語句在數(shù)據(jù)庫中執(zhí)行完成業(yè)務數(shù)據(jù)的查詢。本專利技術(shù)的有益效果在于:I)將關(guān)系數(shù)據(jù)庫RDB中網(wǎng)狀的數(shù)據(jù)模型改造成總線結(jié)構(gòu),即每個邏輯表均與事先抽取出來的維度關(guān)聯(lián),而邏輯表之間不再有關(guān)聯(lián)。關(guān)聯(lián)數(shù)量與邏輯表數(shù)量匹配,復雜度是N級別的。這將極大改善業(yè)務系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)可理解性。2 )由于邏輯表之間不再有關(guān)聯(lián),從而降低表之間的耦合度,這樣可以很方便地進行系統(tǒng)的局部修改和升級及添加、刪除某個子系統(tǒng)。3)可以通過在邏輯模型的基礎(chǔ)上設(shè)計LSQL語法(基于本專利技術(shù)所述方法及系統(tǒng)的邏輯數(shù)據(jù)查詢語言),在書寫多表關(guān)聯(lián)查詢時也只需要針對匯總維度對齊,而無須關(guān)心表之間的關(guān)聯(lián),使書寫復雜度也降成N級別。4)對于單外鍵指向的附表引用,LSQL可以簡單地使用對象方式引用,將這種本文檔來自技高網(wǎng)...
【技術(shù)保護點】
一種數(shù)據(jù)查詢方法,包括以下步驟:(1)抽取業(yè)務系統(tǒng)中的各項維度;(2)建立所述業(yè)務系統(tǒng)的若干邏輯表,并建立各邏輯表與所述的維度之間的關(guān)聯(lián)關(guān)系;所述的邏輯表用于描述業(yè)務系統(tǒng)的業(yè)務數(shù)據(jù);(3)根據(jù)業(yè)務系統(tǒng)的物理表,建立物理表與各邏輯表之間的映射關(guān)系;所述的物理表用于存儲業(yè)務系統(tǒng)的業(yè)務數(shù)據(jù);(4)根據(jù)邏輯表以及按規(guī)則定義的邏輯數(shù)據(jù)查詢語法,編寫邏輯查詢語句LSQL;(5)依據(jù)物理表與邏輯表之間的映射關(guān)系,將邏輯查詢語句LSQL轉(zhuǎn)化為結(jié)構(gòu)化查詢語句SQL,并將SQL語句在數(shù)據(jù)庫中執(zhí)行完成業(yè)務數(shù)據(jù)的查詢。
【技術(shù)特征摘要】
1.一種數(shù)據(jù)查詢方法,包括以下步驟: (1)抽取業(yè)務系統(tǒng)中的各項維度; (2)建立所述業(yè)務系統(tǒng)的若干邏輯表,并建立各邏輯表與所述的維度之間的關(guān)聯(lián)關(guān)系;所述的邏輯表用于描述業(yè)務系統(tǒng)的業(yè)務數(shù)據(jù); (3)根據(jù)業(yè)務系統(tǒng)的物理表,建立物理表與各邏輯表之間的映射關(guān)系;所述的物理表用于存儲業(yè)務系統(tǒng)的業(yè)務數(shù)據(jù); (4)根據(jù)邏輯表以及按規(guī)則定義的邏輯數(shù)據(jù)查詢語法,編寫邏輯查詢語句LSQL; (5)依據(jù)物理表與邏輯表之間的映射關(guān)系,將邏輯查詢語句LSQL轉(zhuǎn)化為結(jié)構(gòu)化查詢語句SQL,并將SQL語句在數(shù)據(jù)庫中執(zhí)行完成業(yè)務數(shù)據(jù)的查詢。2.如權(quán)利要求1所述的一種數(shù)據(jù)查詢方法,其特征在于,步驟(1)中,在抽取業(yè)務系統(tǒng)中的各項維度時,還包括抽取各項維度所包含的層次,并確定各項維度的層次之間的計算關(guān)系;所述的各項維度的層次包括基礎(chǔ)層和匯總層;所述的匯總層是指該層次能夠由其它一個或多個基礎(chǔ)層次計算出來。3.如權(quán)利要求1或2所述的一種數(shù)據(jù)查詢方法,其特征在于,步驟(2)中,所述的邏輯表包括若干邏輯字段,建立邏輯表與所述的維度之間的關(guān)聯(lián)關(guān)系的具體方式為: 將邏輯表的外鍵設(shè)置為指向某個維度或者某個維度的層次的字段,邏輯表的主鍵為邏輯表中一個取值唯一的字段或者多個取值唯一的字段組。4.如權(quán)利要求3所述的一種數(shù)據(jù)查詢方法,其特征在于,建立物理表與邏輯表之間的映射關(guān)系的具體方式為: a)在物理表中選擇與每個邏輯表相對應的基表,邏輯表中的每個邏輯字段都能夠由所述的基表計算而來; b)建立邏輯表的主鍵與基表主鍵之間的映射關(guān)系; c)建立邏輯表中非主鍵邏輯字段與基表字段之間的計算關(guān)系。5.如權(quán)利要求4所述的一種數(shù)據(jù)查詢方法,其特征在于,步驟a)中,根據(jù)邏輯表所描述的業(yè)務數(shù)據(jù)的數(shù)據(jù)范圍確定與其對應的基表。6.如權(quán)利要求5所述的一種數(shù)據(jù)查詢方法,其特征在于,步驟c)中,所述的邏輯表中非主鍵邏輯字段與基表字段之間的計算關(guān)系是指邏輯表中的每個邏輯字段由基表字段構(gòu)成的表達式表不。7.如權(quán)利要求1至6之一所述的一種數(shù)據(jù)查詢方法,其特征在于,步驟(5)中,將LSQL查詢語句轉(zhuǎn)化為SQL語句的具體方式為: 根據(jù)所述的邏輯數(shù)據(jù)查詢語句LSQL獲取語句中的業(yè)務數(shù)據(jù)項,根據(jù)所述的業(yè)務數(shù)據(jù)項以及邏輯表與物理表之間的映射關(guān)系,將...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:蔣步星,
申請(專利權(quán))人:北京潤乾信息系統(tǒng)技術(shù)有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。