国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng)的制作方法

      文檔序號:6369719閱讀:226來源:國知局
      專利名稱:一種基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于電子記錄和數(shù)據(jù)庫技術(shù)領(lǐng)域,特別地,是ー種基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng)。
      背景技術(shù)
      關(guān)系數(shù)據(jù)庫(relational database)被廣泛用于存儲各種應(yīng)用數(shù)據(jù)。一個(gè)關(guān)系數(shù)據(jù)庫由ー張或多張數(shù)據(jù)庫表(database tab I e )組成,其中數(shù)據(jù)庫表又由行(array )組成,而行又由多個(gè)字段(field)或列(column)組成,應(yīng)用數(shù)據(jù)被最終保存在(ー張或多張)數(shù)據(jù)庫表的相應(yīng)行的相應(yīng)字段中。保存在數(shù)據(jù)庫表中的數(shù)據(jù)也稱為記錄(record)。保存在不同數(shù)據(jù)庫表中的數(shù)據(jù)記錄可通過一定的方式關(guān)聯(lián)起來構(gòu)成ー個(gè)更大的數(shù)據(jù)記錄,或者形成具有一定關(guān)聯(lián)關(guān)系的記錄,前者對應(yīng)于將一條記錄保存在多張不同表中的情形,后者對應(yīng)于不 同數(shù)據(jù)記錄之間存在關(guān)聯(lián)關(guān)系的情形(如,ー個(gè)病人的電子病歷記錄與其電子化驗(yàn)單記錄之間的關(guān)聯(lián)關(guān)系)。相同或者不同種類的記錄之間的關(guān)聯(lián)關(guān)系稱為記錄關(guān)系。關(guān)系數(shù)據(jù)庫系統(tǒng)對保存在數(shù)據(jù)庫中的滿足一定條件或關(guān)系的記錄數(shù)據(jù)的查詢采用的是SQL (Structured Query Language)語句,使用SQL語句查詢數(shù)據(jù)記錄存在如下局限性或缺點(diǎn)I)需直接使用數(shù)據(jù)庫表及其字段進(jìn)行查詢,需知道數(shù)據(jù)庫表的結(jié)構(gòu),不適合于普通人群SQL直接使用數(shù)據(jù)庫表、數(shù)據(jù)表字段表示查詢條件,直接使用表的字段之間的相互關(guān)系(如〉,く,=等)來表示數(shù)據(jù)記錄之間的關(guān)系;當(dāng)記錄數(shù)據(jù)保存在多張不同數(shù)據(jù)庫表中時(shí),需要將這些數(shù)據(jù)庫表連接(join)起來查詢并將來自不同數(shù)據(jù)庫表的查詢結(jié)果組合(SP將針對不同數(shù)據(jù)庫表的記錄字段的查詢結(jié)果整合)。這種記錄查詢條件、記錄關(guān)系的表達(dá)方式和查詢結(jié)果組合方式,用戶使用時(shí)需要知道數(shù)據(jù)庫表的結(jié)構(gòu),且僅適合于熟悉數(shù)據(jù)庫技術(shù)、具有相關(guān)專業(yè)知識的專業(yè)技術(shù)人員,普通用戶根本無法使用。實(shí)際上,對普通人群來說,他們關(guān)心的往往是邏輯層面或者抽象層面表示的記錄數(shù)據(jù)(稱為邏輯記錄),如某人的姓名、年齡、工作単位等信息,他們不關(guān)心記錄數(shù)據(jù)在數(shù)據(jù)庫的具體存放形式(數(shù)據(jù)庫中的具體記錄數(shù)據(jù));使用記錄數(shù)據(jù)的普通用戶在表達(dá)滿足某些條件或關(guān)系的記錄時(shí),往往用邏輯層面或抽象層面的記錄信息(數(shù)據(jù))來表達(dá)相關(guān)條件(如年齡大于20歲的人的身份信息、具有同一父母的人的身份信息),而不是用數(shù)據(jù)庫表中的具體記錄(因?yàn)樗麄兩踔粮静欢裁词菙?shù)據(jù)庫!)。2)通過人機(jī)界面只能針對固定的記錄數(shù)據(jù)內(nèi)容進(jìn)行查詢,缺乏靈活性由于SQL不適合普通用戶使用,因此,普通用戶只能通過數(shù)據(jù)應(yīng)用系統(tǒng)提供的專門的人機(jī)交互界面、按給定的方式對固定的記錄數(shù)據(jù)內(nèi)容進(jìn)行查詢,不能根據(jù)自己需要自定義查詢對象、查詢方式,缺乏靈活性。3)不能通過命名關(guān)系(named relation)查詢相互關(guān)聯(lián)的記錄基于SQL語句,只能通過數(shù)據(jù)庫表的記錄字段之間的數(shù)值關(guān)系來表示記錄(兩條或更多)之間的關(guān)系,并查詢、獲取滿足給定關(guān)系的記錄,如表I和表2中滿足表I中的字段A的值與表2中的字段B的值相等的A中記錄數(shù)據(jù)與B中記錄數(shù)據(jù)的組合,或者滿足此關(guān)系的來自表I和表2的關(guān)聯(lián)記錄,不能通過直觀的關(guān)系名稱表示多條記錄之間的關(guān)系,并查詢、獲取滿足該種關(guān)系的記錄,如電子病歷記錄和抽血化驗(yàn)單中滿足“同一人”關(guān)系的電子記錄組合等。本發(fā)明的目的就是要解決以上問題。邏輯表示是知識表示的ー種基本方式,能在此基礎(chǔ)表示復(fù)雜的知識、進(jìn)行邏輯推理,本發(fā)明的方案借用了知識表示的某些思路,如通過規(guī)則定義關(guān)系,但本發(fā)明所采用的邏輯表示與通常的邏輯表示(即知識表示)理論和方法不同,主要體現(xiàn)在如下幾點(diǎn)I)數(shù)據(jù)庫中的數(shù)據(jù)記錄不是作為知識對象的描述信息,而是將其本身作為知識對象,記錄數(shù)據(jù)的每個(gè)數(shù)據(jù)字段是其描述信息;
      2)不同知識對象具體的實(shí)例之間的關(guān)系不作為知識保存在數(shù)據(jù)庫中;3)所涉及的知識對象(記錄類及其實(shí)例)不是預(yù)定的、固定的,而是數(shù)據(jù)庫用戶根據(jù)自己的需要針對數(shù)據(jù)庫中的數(shù)據(jù)自己定義的;4)對關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)沒有特別的格式、存放方式要求,適合于通常的關(guān)系數(shù)據(jù)庫數(shù)據(jù),保存在關(guān)系數(shù)據(jù)庫中的應(yīng)用數(shù)據(jù)不需要為了使用本方法和系統(tǒng)而做改變。5)最后在技術(shù)實(shí)現(xiàn)上,本發(fā)明的技術(shù)方案并沒有使用邏輯表示/知識表示的復(fù)雜技術(shù)(如 Web Ontology/Resource Description Framework, 0WL/RDF),也沒有使用相關(guān)的技木工具(如0WL/RDF工具);而是通過簡單的記錄關(guān)系定義和展開過程、抽象記錄數(shù)據(jù)與數(shù)據(jù)庫記錄數(shù)據(jù)間的映射實(shí)現(xiàn)記錄數(shù)據(jù)(知識)的查詢、捜索。

      發(fā)明內(nèi)容
      本發(fā)明的目的是提出一種數(shù)據(jù)庫數(shù)據(jù)記錄的用戶可根據(jù)應(yīng)用需要自定義數(shù)據(jù)庫數(shù)據(jù)記錄對象的抽象分類、且普通用戶可據(jù)此通過人機(jī)界面自定義記錄關(guān)系包括命名關(guān)系并以此作為記錄查詢條件查詢所需記錄數(shù)據(jù)而無需關(guān)心記錄數(shù)據(jù)在數(shù)據(jù)庫中具體存放形式和方式的基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),所述命名關(guān)系即具有名稱的記錄關(guān)系O為了實(shí)現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案是ー種基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),所述記錄邏輯表示是ー種只與記錄包含的信息內(nèi)容有關(guān)而與記錄數(shù)據(jù)的具體存儲形式、方式和位置無關(guān)的一種記錄數(shù)據(jù)表示形式或表達(dá)方式,用這種形式或方式表示的記錄稱為邏輯記錄;在邏輯記錄中,一條包含具體數(shù)據(jù)的記錄稱為邏輯記錄實(shí)例,簡稱記錄實(shí)例;針對同一目的、具有相同屬性的邏輯記錄實(shí)例的集合稱為ー個(gè)邏輯記錄類;與邏輯記錄對應(yīng)的、保存在數(shù)據(jù)庫中的具體記錄數(shù)據(jù)稱為具體記錄;記錄類的記錄實(shí)例集合中滿足某種限定關(guān)系的記錄實(shí)例的集合(子集)構(gòu)成ー個(gè)新的記錄類,稱為原記錄類的限定類,或記錄限定類或限定記錄類或簡稱限定類(除非特別指明,以下所述記錄類、記錄實(shí)例、記錄關(guān)系指邏輯記錄類、邏輯記錄實(shí)例、邏輯記錄關(guān)系)。所述系統(tǒng)包括邏輯記錄定義與映射組件、命名關(guān)系與限定類定義組件、邏輯記錄查詢組件、記錄關(guān)系展開子過程、記錄數(shù)據(jù)庫,其中
      邏輯記錄定義與映射組件ー個(gè)具有人機(jī)交互界面的功能模塊,數(shù)據(jù)管理員通過該組件對保存在關(guān)系數(shù)據(jù)庫中的記錄數(shù)據(jù)進(jìn)行抽象的邏輯表示,定義相應(yīng)的邏輯記錄類,以及邏輯記錄數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)之間的對應(yīng)關(guān)系或映射關(guān)系;命名關(guān)系與限定類定義組件ー個(gè)具有人機(jī)交互界面的功能模塊,普通用戶通過該組件輸入邏輯記錄命名關(guān)系定義規(guī)則,定義記錄命名關(guān)系,以及通過該組件定義已有邏輯記錄類的限定類;邏輯記錄查詢組件ー個(gè)具有人機(jī)交互界面的功能模塊,普通用戶通過該組件輸入用邏輯記錄關(guān)系表示的記錄查詢條件,查詢、獲取滿足條件的邏輯記錄數(shù)據(jù);記錄關(guān)系展開子過程在記錄數(shù)據(jù)查詢過程中被邏輯記錄查詢組件調(diào)用,基于邏輯記錄命名關(guān)系定義規(guī)則或限定類定義規(guī)則,展開、替換記錄關(guān)系表達(dá)式中的命名關(guān)系和/ 或記錄限定類,使得最終的作為記錄查詢條件的記錄關(guān)系表達(dá)式中不包含命名關(guān)系和/記錄限定類;記錄數(shù)據(jù)庫存放具體記錄數(shù)據(jù)的關(guān)系數(shù)據(jù)庫系統(tǒng)。所述邏輯記錄定義與映射組件按如下步驟定義邏輯記錄,以及邏輯記錄數(shù)據(jù)與數(shù)據(jù)庫具體記錄數(shù)據(jù)之間的對應(yīng)關(guān)系第I步定義ー個(gè)邏輯記錄類及其唯一名稱和/或標(biāo)識(ID);第2步定義所述邏輯記錄類的記錄實(shí)例所包含的記錄字段及每個(gè)字段的類型(如字串、文本、字節(jié)、整數(shù)、日期、時(shí)間等);第3步定義所述邏輯記錄類與數(shù)據(jù)庫表的對應(yīng)關(guān)系,包括所述邏輯記錄類對應(yīng)的一張或多張數(shù)據(jù)庫表的名稱;第4步定義所述邏輯記錄類的記錄實(shí)例的記錄字段與所述對應(yīng)的數(shù)據(jù)庫表的字段之間的對應(yīng)關(guān)系或映射關(guān)系;第5步定義相關(guān)數(shù)據(jù)庫表之間的關(guān)聯(lián)方式(如通過數(shù)據(jù)庫表的哪些字段相互關(guān)聯(lián))。 不同的邏輯記錄類及其記錄實(shí)例所對應(yīng)的數(shù)據(jù)庫表以及數(shù)據(jù)表字段可以相同,也可以不同;所述邏輯記錄實(shí)例有ー個(gè)在所屬記錄類中唯一的名稱或標(biāo)識來代表自己;邏輯記錄實(shí)例可以用其記錄數(shù)據(jù)中的某個(gè)記錄字段的值(如對應(yīng)的記錄主體的名稱、身份號碼)作為其名稱或標(biāo)識,或者用記錄字段的導(dǎo)出值作為其名稱或標(biāo)識;對于ー個(gè)確定的或已知的邏輯記錄實(shí)例,其名稱是ー個(gè)由字串組成的確定的常量,稱為邏輯記錄實(shí)例名稱常量(或常量名稱、確定名稱),相應(yīng)的邏輯記錄實(shí)例稱為常量邏輯記錄實(shí)例,在記錄查詢條件中,邏輯記錄實(shí)例名稱常量即代表這個(gè)確定的、已知的邏輯記錄實(shí)例;對于不確定的或待定的邏輯記錄實(shí)例,其名稱是ー個(gè)不定量(即名稱的內(nèi)容或值是不確定),用一個(gè)變量名代替,稱為邏輯記錄實(shí)例名稱變量,相應(yīng)的邏輯記錄實(shí)例稱為變量邏輯記錄實(shí)例,在進(jìn)行記錄數(shù)據(jù)查詢時(shí),邏輯記錄實(shí)例名稱變量即代表需要查詢獲取的、滿足查詢條件的ー個(gè)或多個(gè)邏輯記錄實(shí)例。所述記錄關(guān)系或者是邏輯記錄實(shí)例的記錄字段與常數(shù)值之間關(guān)系,或者是兩個(gè)邏輯記錄實(shí)例之間的字段關(guān)系,或者是兩個(gè)邏輯記錄實(shí)例之間的命名關(guān)系,或者是這些關(guān)系的邏輯“與”運(yùn)算組合;其中,所述邏輯記錄實(shí)例的記錄字段與常數(shù)值之間關(guān)系,即記錄字段與常數(shù)值之間的數(shù)值關(guān)系(如>、〈、=、!=),其表達(dá)式中包含如下信息邏輯記錄實(shí)例的記錄類名、邏輯記錄實(shí)例的名稱、邏輯記錄實(shí)例的相關(guān)字段名及該字段與常數(shù)值之間的數(shù)值關(guān)系(如,邏輯記錄類A的記錄實(shí)例X的字段a的值等于123);所述兩個(gè)邏輯記錄實(shí)例之間的字段關(guān)系,即兩個(gè)邏輯記錄實(shí)例的記錄字段之間的數(shù)值關(guān)系,其表達(dá)式中包含如下信息相關(guān)邏輯記錄實(shí)例的記錄類名、相關(guān)邏輯記錄實(shí)例的名稱、相關(guān)邏輯記錄實(shí)例的相關(guān)字段名,以及相關(guān)邏輯記錄實(shí)例的記錄字段之間的數(shù)值關(guān)系(如邏輯記錄類A的記錄實(shí)例X的字段a的值等于邏輯記錄類B的記錄實(shí)例Y的字段b的值);邏輯記錄實(shí)例的記錄字段與常數(shù)值之間關(guān)系和兩個(gè)邏輯記錄實(shí)例之間的字段關(guān)系統(tǒng)稱為邏輯記錄實(shí)例字段關(guān)系;兩個(gè)邏輯記錄實(shí)例之間的命名關(guān)系,即用命名關(guān)系表示的兩個(gè)記錄實(shí)例之間的關(guān)系,其表達(dá)式包含如下信息相關(guān)邏輯記錄實(shí)例的記錄類名,相關(guān)邏輯記錄實(shí)例的名稱,以及相關(guān)邏輯記錄實(shí)例之間命名關(guān)系的名稱;出現(xiàn)在記錄關(guān)系中的邏輯記錄實(shí)例或者是常量邏輯記錄實(shí)例,或者是變量邏輯記錄實(shí)例;若出現(xiàn)在記錄關(guān)系中的邏輯記錄實(shí)例是常量邏輯記錄實(shí)例,則其名稱使用名稱常量;若出現(xiàn)在記錄關(guān)系中的邏輯記錄實(shí)例是變量邏輯記錄實(shí)例,則其名稱使用名稱變量;在記錄關(guān)系表達(dá)式中,通過相應(yīng)的方式區(qū)分名稱常量和名稱變量(如在名稱變量的變量名前面加ー個(gè)問號?);所述記錄關(guān)系的邏輯運(yùn)算組合中的每個(gè)組成因子(Element),即變量邏輯記錄實(shí)例的記錄字段與常數(shù)值之間關(guān)系或者兩個(gè)記錄實(shí)例之間的字段關(guān)系或者兩個(gè)記錄實(shí)例之間的命名關(guān)系,稱為記錄關(guān)系表達(dá)式的關(guān)系因子;所述關(guān)系因子的邏輯 評估值是“真”或“假”。命名關(guān)系與限定類定義組件使用如下命名關(guān)系定義規(guī)則定義邏輯記錄實(shí)例之間的命名關(guān)系如果兩個(gè)邏輯記錄實(shí)例并通過相關(guān)的中間邏輯記錄實(shí)例滿足給定的記錄關(guān)系,那么這兩個(gè)邏輯記錄實(shí)例間存在所定義的命名關(guān)系。所述關(guān)系定義規(guī)則中的“如果”語句對應(yīng)于規(guī)則條件,即結(jié)果成立需要滿足的前堤;所述關(guān)系定義規(guī)則中的“那么”語句對應(yīng)于規(guī)則的結(jié)果,即要定義的命名關(guān)系;所述規(guī)則的條件中出現(xiàn)的兩個(gè)邏輯記錄實(shí)例并通過相關(guān)的中間邏輯記錄實(shí)例需要滿足的給定的記錄關(guān)系(即“如果”中的記錄關(guān)系)稱為命名關(guān)系定義規(guī)則的條件關(guān)系(簡稱規(guī)則條件關(guān)系);所述命名關(guān)系定義規(guī)則的結(jié)果(即“那么”)中的兩個(gè)邏輯記錄實(shí)例至少ー個(gè)是變量邏輯記錄實(shí)例;所述命名關(guān)系定義規(guī)則的條件關(guān)系中的中間邏輯記錄實(shí)例,指在規(guī)則條件關(guān)系中出現(xiàn)的而在規(guī)則結(jié)果中不出現(xiàn)的常數(shù)或變量邏輯記錄實(shí)例(比如關(guān)系規(guī)則如果邏輯記錄類A的記錄實(shí)例X的字段a的值等于邏輯記錄類B的記錄實(shí)例Y的字段b的值,并且,記錄類B的記錄實(shí)例Y的字段c的值等于記錄類C的記錄實(shí)例Z的字段e的值,那么邏輯記錄類A的記錄實(shí)例X與記錄類C的記錄實(shí)例Z之間存在關(guān)系R ;這里的Y就是定義記錄實(shí)例X和記錄實(shí)例Z之間關(guān)系時(shí)引入的額外的、中間變量邏輯記錄實(shí)例的名稱變量);記錄關(guān)系定義規(guī)則中出現(xiàn)的邏輯記錄實(shí)例的名稱變量,包括額外的、中間變量記錄實(shí)例的名稱變量,對于記錄關(guān)系的定義和表達(dá)是無關(guān)緊要的;ー個(gè)命名關(guān)系的定義規(guī)則的條件關(guān)系中可以使用其他已定義的命名關(guān)系,但不能直接或間接使用規(guī)則要定義的命名關(guān)系本身,即不能遞歸定義;ー個(gè)命名關(guān)系可用多條所述命名關(guān)系定義規(guī)則定義,多條規(guī)則之間是邏輯“或”的關(guān)系,即只要一條規(guī)則被滿足,則兩個(gè)記錄實(shí)例之間存在相應(yīng)的命名關(guān)系。所述命名關(guān)系與限定類定義組件內(nèi)部通過如下特別的邏輯記錄命名關(guān)系定義規(guī)則提供記錄限定類的定義功能
      如果某個(gè)已存在的邏輯記錄類的變量記錄實(shí)例并通過其他中間邏輯記錄實(shí)例滿足給定的記錄關(guān)系,那么這個(gè)變量邏輯記錄實(shí)例與要定義的記錄限定類中的任意實(shí)例具有預(yù)定的命名關(guān)系屬于同一記錄類;其中,給定的記錄關(guān)系即是對所述邏輯記錄類中記錄實(shí)例的限定關(guān)系;所述記錄限定類的任意記錄實(shí)例用ー個(gè)具有特別名稱變量的變量邏輯記錄實(shí)例表示(如使用名稱變量?ANY表示);所述表示任意記錄實(shí)例的變量邏輯記錄實(shí)例的名稱變量(如?ANY)不出現(xiàn)在規(guī)則條件關(guān)系的表達(dá)式中;基于所述特別的記錄命名關(guān)系定義規(guī)則,所有滿足這個(gè)“屬于同一記錄類”記錄關(guān)系的變量記錄實(shí)例所對應(yīng)的記錄實(shí)例即構(gòu)成了要定義的已存在的記錄類的限定類;限定類定義可以嵌套,即在已定義的限定記錄類的基礎(chǔ)上進(jìn)ー步定義記錄限定類;但限定類定義不能遞歸,即定義規(guī)則的規(guī)則條件中不能直接或間接地包含要定義的限定類本身。以上所述特別的關(guān)系定義規(guī)則,僅在命名關(guān)系與限定類定義組件內(nèi)部使用;在命名關(guān)系與限定類定義組件外部,即用戶界面層,不宣接使用,用戶在定義記錄限定類時(shí)只需 通過專門的界面輸入如下信息要定義限定類的原記錄類的類名、要定義的限定類名、表示原記錄類中變量邏輯記錄實(shí)例的名稱變量及其需要滿足的給定記錄關(guān)系。所述邏輯記錄查詢組件根據(jù)用記錄關(guān)系表示的記錄查詢條件查詢、獲取所需的記錄包括単獨(dú)或存在關(guān)聯(lián)關(guān)系的記錄,即查詢獲取用變量邏輯記錄實(shí)例代表的、能使得所述記錄關(guān)系成立的,即使得記錄關(guān)系的邏輯組合運(yùn)算的結(jié)果為“真”的所有邏輯記錄實(shí)例。所述邏輯記錄查詢組件按如下步驟根據(jù)用記錄關(guān)系表示的記錄查詢條件,查詢獲取所需的記錄數(shù)據(jù)步驟I :通過調(diào)用一個(gè)記錄關(guān)系展開子過程(子程序、函數(shù))將表示記錄查詢條件的記錄關(guān)系中包含的命名關(guān)系或記錄限定類記錄實(shí)例表達(dá)式展開,獲得一展開的記錄關(guān)系集,關(guān)系集中的每ー項(xiàng)都是由非限定類的邏輯記錄實(shí)例的字段關(guān)系表示的關(guān)系因子的邏輯“與”運(yùn)算組合所形成的記錄關(guān)系,即記錄關(guān)系的關(guān)系因子或者是變量邏輯記錄實(shí)例的記錄字段與常數(shù)值之間的關(guān)系或者是兩個(gè)邏輯記錄實(shí)例之間的字段關(guān)系,且關(guān)系因子中不存在記錄限定類表示的邏輯記錄實(shí)例;步驟II :依次將步驟I中的所述展開的記錄關(guān)系集中的每ー項(xiàng)記錄關(guān)系作為記錄查詢條件執(zhí)行步驟III到步驟IV的操作,完成處理后返回結(jié)果;步驟III :根據(jù)邏輯記錄的記錄數(shù)據(jù)與數(shù)據(jù)庫中具體記錄數(shù)據(jù)之間的對應(yīng)關(guān)系或映射關(guān)系,將僅包含邏輯記錄字段關(guān)系的、作為記錄查詢條件的記錄關(guān)系轉(zhuǎn)化成數(shù)據(jù)庫中用數(shù)據(jù)庫表字段表示的記錄查詢條件并生成對應(yīng)SQL語句;步驟IV :基于第III步轉(zhuǎn)化生成的SQL語句查詢數(shù)據(jù)庫,然后將數(shù)據(jù)庫查詢獲得的具體記錄數(shù)據(jù)結(jié)果轉(zhuǎn)化成邏輯記錄數(shù)據(jù),并將得到的邏輯記錄數(shù)據(jù)合并到最終的、需要返回的查詢結(jié)果中。所述邏輯記錄查詢組件在步驟I調(diào)用的所述記錄關(guān)系展開子過程具有如下入口參數(shù)輸入?yún)?shù)I)待展開的記錄關(guān)系;2)中間名稱變量計(jì)數(shù)對象,ー個(gè)包含整數(shù)計(jì)數(shù)值的數(shù)據(jù)對象,該計(jì)數(shù)值對應(yīng)的字串值被插加到記錄關(guān)系展開過程中引入的額外的、中間變量邏輯記錄實(shí)例的名稱變量中,以區(qū)分不同的中間名稱變量或中間變量邏輯記錄實(shí)例;輸出參數(shù)I)已展開的記錄關(guān)系集,將輸入的待展開的記錄關(guān)系展開后得到的“相當(dāng)?shù)摹薄鄠€(gè)記錄關(guān)系的記錄關(guān)系集合。所述記錄關(guān)系展開子過程按如下步驟進(jìn)行操作步驟I :依次掃描輸入的待展開的記錄關(guān)系中的每個(gè)關(guān)系因子,一旦掃面遇到一個(gè)用命名關(guān)系表示或包含記錄限定類記錄實(shí)例的關(guān)系因子,則轉(zhuǎn)入步驟2;若掃描完成未遇到用命名關(guān)系表示或包含記錄限定類記錄實(shí)例的關(guān)系因子,則直接將輸入的待展開的記錄關(guān)系加入到輸出參數(shù)已展開的記錄關(guān)系集中,然后返回結(jié)果(輸出結(jié)果僅包含一個(gè)記錄關(guān)系,即輸入的待展開的記錄關(guān)系); 步驟2 :若步驟I掃描遇的需要處理的關(guān)系因子是用命名關(guān)系表示的兩個(gè)記錄實(shí)例間的記錄關(guān)系,則將該命名關(guān)系用其命名關(guān)系定義規(guī)則的條件關(guān)系替換,否則對包含記錄限定類記錄實(shí)例的關(guān)系因子作如下處理先將出現(xiàn)在關(guān)系因子表達(dá)式中的限定類邏輯記錄實(shí)例的記錄限定類用對應(yīng)的原記錄類替代,然后將記錄限定類定義規(guī)則中的條件關(guān)系通過邏輯“與”加入到被替代處理的關(guān)系因子中;在替代處理過程中,作替代用的規(guī)則條件關(guān)系中的相關(guān)變量邏輯記錄實(shí)例的名稱變量被正在處理的關(guān)系因子中的對應(yīng)的邏輯記錄實(shí)例的名稱常量或名稱變量替代;對于替換展開過程中引入的規(guī)則條件關(guān)系中的額外的、中間變量邏輯記錄實(shí)例的名稱變量,根據(jù)預(yù)定的方式將中間名稱變量計(jì)數(shù)對象的計(jì)數(shù)值對應(yīng)的字串值加入到該額外的、中間變量邏輯記錄實(shí)例的名稱變量的變量名中;若要替代展開的所述命名關(guān)系或記錄限定類邏輯記錄實(shí)例對應(yīng)多個(gè)命名關(guān)系定義規(guī)則,則分別用每個(gè)關(guān)系定義規(guī)則的條件關(guān)系替代,得到多個(gè)替代展開后的關(guān)系因子;步驟3 :將步驟2替代處理后得到的一個(gè)或多個(gè)展開后的關(guān)系因子分別和余下的尚未掃描到的關(guān)系因子按邏輯“與”組合,得到一個(gè)或多個(gè)臨時(shí)的、中間的待展開的記錄關(guān)系;以所有經(jīng)此處理得到的臨時(shí)的、中間的待展開的記錄關(guān)系生成ー個(gè)集合;步驟4 :將中間名稱變量計(jì)數(shù)對象中的計(jì)數(shù)值加I ;步驟5 :依次取出步驟3產(chǎn)生的臨時(shí)的、中間的待展開的記錄關(guān)系集中的每ー項(xiàng)記錄關(guān)系,執(zhí)行步驟6-7的處理;完成處理后返回結(jié)果;步驟6:調(diào)用記錄關(guān)系展開子過程自身(即遞歸調(diào)用自身),調(diào)用時(shí)的輸入?yún)?shù)待展開的記錄關(guān)系為步驟5中從臨時(shí)的、中間記錄關(guān)系集中取出的ー項(xiàng)記錄關(guān)系,輸入?yún)?shù)中間名稱變量計(jì)數(shù)對象為當(dāng)前執(zhí)行過程的中間名稱變量計(jì)數(shù)對象;步驟7 :對步驟6中調(diào)用記錄關(guān)系展開子過程返回的輸出參數(shù)展開的記錄關(guān)系集作如下處理將當(dāng)前執(zhí)行過程步驟I中已掃描過的非命名關(guān)系表示的或不包含限定類記錄實(shí)例的所有關(guān)系因子與返回的展開的記錄關(guān)系集中的每ー項(xiàng)記錄關(guān)系按邏輯“與”運(yùn)算進(jìn)行合并形成相應(yīng)的新的記錄關(guān)系,并將所有合并后的新的記錄關(guān)系加入到當(dāng)前執(zhí)行過程的輸出參數(shù)已展開的記錄關(guān)系集中。若在所述步驟I中掃描到的需要處理的關(guān)系因子既是ー個(gè)用命名關(guān)系表示的關(guān)系因子同時(shí)又是ー個(gè)包含記錄限定類記錄實(shí)例的關(guān)系因子,則在所述步驟2僅按命名關(guān)系表示的關(guān)系因子處理。
      在所述記錄關(guān)系展開子過程展開記錄關(guān)系的過程中,對于能確定其邏輯評估值是“真”的關(guān)系因子(如兩個(gè)常量邏輯記錄實(shí)例的字段關(guān)系),用邏輯值“真”替換;對于包含邏輯評估值是“假”的關(guān)系因子的記錄關(guān)系,直接用邏輯值“假”替換。所述邏輯記錄查詢組件在步驟I調(diào)用所述記錄關(guān)系展開子過程吋,輸入?yún)?shù)待展開的記錄關(guān)系即是作為記錄查詢條件的記錄關(guān)系,輸入?yún)?shù)中間名稱變量計(jì)數(shù)對象的計(jì)數(shù)值為預(yù)定的初值(如O或I等)。在所述記錄關(guān)系展開子過程的遞歸調(diào)用過程中,傳遞的輸入?yún)?shù)中間名稱變量計(jì)數(shù)對象是同一個(gè)數(shù)據(jù)對象(如通過數(shù)據(jù)指針指向的同一個(gè)C/C++數(shù)據(jù)對象或通過對象引用指向的同一個(gè)Java對象)。所述步驟2中所述的將中間名稱變量計(jì)數(shù)對象的計(jì)數(shù)值對應(yīng)的字串值加入到替換展開過程中引入的規(guī)則條件關(guān)系中的額外的、中間的變量邏輯記錄實(shí)例的名稱變量中的所述預(yù)定的方式無特別的規(guī)定,只要使得展開過程中引入的額外、中間變量邏輯記錄實(shí)例的名稱變量不與其他變量邏輯記錄實(shí)例的名稱變量重復(fù)即可。 所述記錄關(guān)系展開子過程通過如下功能擴(kuò)展,允許邏輯記錄查詢組件調(diào)用所述子過程時(shí)輸入的作為記錄查詢條件的所述待展開的記錄關(guān)系中,或者命名關(guān)系的定義規(guī)則的條件關(guān)系中,出現(xiàn)關(guān)系因子的邏輯“或”和/或“非”運(yùn)算組合若作為查詢條件的記錄關(guān)系中存在關(guān)系因子的邏輯“或”運(yùn)算,則將該記錄關(guān)系分解為多個(gè)不包含邏輯“或”運(yùn)算的記錄關(guān)系(然后分別以分解得到每個(gè)記錄關(guān)系作為查詢條件查詢獲取數(shù)據(jù),最后將查詢獲得結(jié)果合并);若作為查詢條件的記錄關(guān)系中存在針對邏輯記錄實(shí)例字段關(guān)系的邏輯評估值的邏輯“非”運(yùn)算,則將該邏輯“非”運(yùn)算所針對的邏輯記錄實(shí)例字段關(guān)系連同“非”運(yùn)算邏輯算子用等價(jià)的不包含“非”運(yùn)算邏輯算子的邏輯記錄實(shí)例字段關(guān)系替代(如將記錄實(shí)例的字段關(guān)系“等干”變成“不等干”,“小干”變成“不小干”);若作為命名關(guān)系定義規(guī)則的規(guī)則條件關(guān)系中存在關(guān)系因子的邏輯“或”運(yùn)算,則將該規(guī)則條件關(guān)系分解為多個(gè)不包含邏輯“或”運(yùn)算的記錄關(guān)系,然后以分解得到每個(gè)記錄關(guān)系作為命名關(guān)系定義規(guī)則的規(guī)則條件關(guān)系,得到多個(gè)相互之間是“或”關(guān)系的命名關(guān)系定義規(guī)則;若作為命名關(guān)系定義規(guī)則的規(guī)則條件關(guān)系中存在邏輯記錄實(shí)例字段關(guān)系的邏輯“非”運(yùn)算,則將該邏輯“非”運(yùn)算所針對的邏輯記錄實(shí)例字段關(guān)系連同“非”運(yùn)算邏輯算子用等價(jià)的不包含“非”運(yùn)算邏輯算子的邏輯記錄實(shí)例字段關(guān)系替代。所述邏輯記錄查詢組件根據(jù)相應(yīng)的查詢命令設(shè)定,不但能查詢獲取使得記錄關(guān)系成立的變量邏輯記錄實(shí)例所對應(yīng)的所有邏輯記錄實(shí)例,而且能夠返回使得記錄關(guān)系成立所需的所有中間邏輯記錄實(shí)例。本發(fā)明的創(chuàng)新之處在于將邏輯表示的一些思路和方法用于數(shù)據(jù)庫記錄數(shù)據(jù)的查詢,提出了基于記錄邏輯表示的關(guān)系數(shù)據(jù)庫記錄數(shù)據(jù)查詢的ー種通用方法和系統(tǒng);該方法和系統(tǒng)通過用邏輯記錄表示記錄查詢條件和定義邏輯記錄數(shù)據(jù)與數(shù)據(jù)庫具體記錄數(shù)據(jù)之間的對應(yīng)關(guān)系,使得記錄查詢條件或命令的表示能被普通用戶所用;通過記錄命名關(guān)系、記錄限定類的引入,使得記錄查詢條件的表達(dá)更加簡單;該方法和系統(tǒng)雖然使用了邏輯表示的部分思路和方法,但未采用邏輯表示的復(fù)雜技木。


      圖I為本發(fā)明的整體結(jié)構(gòu)圖。圖2為本發(fā)明的邏輯記錄查詢組件的實(shí)現(xiàn)流程圖。圖3A-圖3B為本發(fā)明的記錄關(guān)系展開子過程的實(shí)現(xiàn)流程圖。
      具體實(shí)施例方式下面結(jié)合附圖對本發(fā)明作進(jìn)ー步的詳細(xì)描述。本發(fā)明是ー種基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢方法和系統(tǒng),本發(fā)明系統(tǒng)的整體結(jié)構(gòu)如圖I所示,實(shí)心箭頭表示使用方向,空心箭頭表示數(shù)據(jù)生成方向,其中,邏輯記錄定義與映射組件SI、命名關(guān)系與限定類定義組件S2、邏輯記錄查詢組件S3、記錄關(guān)系 展開子過程S4、數(shù)據(jù)庫S5是功能組件,其他為相關(guān)數(shù)據(jù)。圖中各組成要素的作用和功能在前面發(fā)明內(nèi)容中已論述,在此不重復(fù),各要素之間的相互關(guān)系簡單描述如下數(shù)據(jù)管理員通過使用(Tl)邏輯記錄定義與映射組件SI,針對數(shù)據(jù)庫S5中的記錄數(shù)據(jù)(具體記錄)S6進(jìn)行抽象表示(T2),產(chǎn)生(Gl)邏輯記錄S7 (包括邏輯記錄類及其實(shí)例),產(chǎn)生(G2)邏輯記錄與數(shù)據(jù)庫記錄之間的映射關(guān)系S8 ;邏輯記錄實(shí)例字段與常數(shù)值間關(guān)系S9使用(T3)邏輯記錄S7 ;兩個(gè)邏輯記錄記錄實(shí)例之間的字段關(guān)系SlO使用(T4)邏輯記錄S7 ;用戶使用(T5)命名關(guān)系與限定類定義組件S3輸入(G3)命名關(guān)系定義規(guī)則Sll ;命名關(guān)系定義規(guī)則Sll使用(T6、T7、T8)邏輯記錄實(shí)例字段與常數(shù)值間關(guān)系S9、兩個(gè)邏輯記錄記錄實(shí)例之間的字段關(guān)系SlO和已定義的邏輯記錄實(shí)例命名關(guān)系S12,或者定義、產(chǎn)生(G4)新的邏輯記錄實(shí)例命名關(guān)系S12,或者定義、產(chǎn)生(G5)已有邏輯記錄類的限定類(新的記錄類);邏輯記錄實(shí)例的記錄關(guān)系S13用(T9、T10、T11)邏輯記錄實(shí)例字段與常數(shù)值間關(guān)系S9、兩個(gè)邏輯記錄實(shí)例之間的字段關(guān)系S10、邏輯記錄實(shí)例命名關(guān)系S12的邏輯運(yùn)算組合表示;用戶通過(Τ12)邏輯記錄查詢組件S3,使用(Τ13)記錄關(guān)系S13作為查詢條件查詢記錄數(shù)據(jù);邏輯記錄查詢組件S3基于記錄關(guān)系查詢記錄數(shù)據(jù)時(shí),調(diào)用(Τ14)關(guān)系展開子過程S4 ;關(guān)系展開子過程S4使用(Τ15 )記錄關(guān)系定義規(guī)則SI I,或者對記錄關(guān)系中的命名關(guān)系進(jìn)行替換、展開處理,或者對記錄關(guān)系中的限定類進(jìn)行替換、展開處理,使得替換、展開后的作為記錄查詢條件的記錄關(guān)系僅包含邏輯記錄實(shí)例的字段關(guān)系;之后,邏輯記錄查詢組件S3利用(Τ16)邏輯記錄與具體記錄映射關(guān)系S8,將僅包含邏輯記錄實(shí)例字段關(guān)系的記錄查詢條件和命名進(jìn)行轉(zhuǎn)換,生成(G5)數(shù)據(jù)庫查詢SQL語句S14 ;然后使用數(shù)據(jù)庫查詢SQL語句S14查詢、獲取(Τ18)數(shù)據(jù)庫S5中的具體記錄數(shù)據(jù)S6,然后將查詢的記錄數(shù)據(jù)用(Τ19)邏輯記錄的形式展現(xiàn)給用戶。有了以上關(guān)系描述后,本發(fā)明內(nèi)容的具體實(shí)施主要涉及各類數(shù)據(jù)的表示,以及邏輯記錄定義與映射組件SI、命名關(guān)系與限定類定義組件S2、邏輯記錄查詢組件S3、記錄關(guān)系展開子過程S4的實(shí)施實(shí)現(xiàn),下面就它們的具體實(shí)施分別描述。所述各類數(shù)據(jù)主要包括邏輯記錄(包括記錄類、記錄實(shí)例)定義數(shù)據(jù),邏輯記錄數(shù)據(jù)(邏輯記錄實(shí)例的字段)與數(shù)據(jù)庫記錄數(shù)據(jù)(數(shù)據(jù)庫表及字段)對應(yīng)關(guān)系的描述數(shù)據(jù),邏輯記錄實(shí)例數(shù)據(jù),記錄關(guān)系表示數(shù)據(jù),記錄關(guān)系定義規(guī)則表示數(shù)據(jù)。所有這些數(shù)據(jù)表示分兩個(gè)層面系統(tǒng)處理層面,用戶界面層面。所述系統(tǒng)處理層面的數(shù)據(jù)表示指保存在內(nèi)存、文件和/或數(shù)據(jù)庫中能被計(jì)算機(jī)系統(tǒng)處理的數(shù)據(jù)表示形式;所述用戶界面表層面的數(shù)據(jù)表示指通過計(jì)算機(jī)的人機(jī)交互界面看到的或者寫在紙質(zhì)介質(zhì)上面的數(shù)據(jù)表示形式。對于所述邏輯記錄的定義數(shù)據(jù)、邏輯記錄數(shù)據(jù)與數(shù)據(jù)庫記錄數(shù)據(jù)對應(yīng)關(guān)系的描述數(shù)據(jù),無論在系統(tǒng)處理層面,還是在用戶界層面,其具體實(shí)施沒有特別的限定,只要具體實(shí)施方案能反映出表I、表2中所描述的內(nèi)容和表達(dá)的信息即可表I舉例說明了定義ー個(gè)邏輯記錄類、記錄實(shí)例字段、及描述記錄字段與數(shù)據(jù)庫表對應(yīng)關(guān)系所需的內(nèi)容;表2舉例說明了將兩個(gè)數(shù)據(jù)庫表關(guān)聯(lián)起來所需的內(nèi)容和信息(數(shù)據(jù)庫中的User表和數(shù)據(jù)庫中的AddressTable表通過它們的字段WD關(guān)聯(lián),當(dāng)然兩個(gè)表中的字段可以不同名)。表I邏輯記錄(類、實(shí)例)定義及與數(shù)據(jù)庫記錄數(shù)據(jù)的映射關(guān)系描述
      記錄類名或標(biāo)識
      記錄字段名記錄字段數(shù)記錄字段對應(yīng)的數(shù)據(jù)記錄字段對應(yīng)的
      _據(jù)類型_庫表_數(shù)據(jù)庫表字段名
      Name字串UserName
      UserID 字串UserUID
      Address 字串AddressTabIeMai IAddress
      OOO表2數(shù)據(jù)庫表的關(guān)聯(lián)關(guān)系
      數(shù)據(jù)庫表I~I表I關(guān)聯(lián)字段I數(shù)據(jù)庫表2 I表2關(guān)聯(lián)字段 UserUIDAddressTable UID同樣地,對于邏輯記錄實(shí)例數(shù)據(jù)的表示,無論在系統(tǒng)處理層面,還是在用戶界層面,其具體實(shí)施沒有特別的限定,只要具體實(shí)施方案對邏輯記錄實(shí)例數(shù)據(jù)的表示包含如下信息記錄實(shí)例所屬的記錄類、記錄實(shí)例名稱、所包含的記錄字段及字段的對應(yīng)數(shù)據(jù)。邏輯記錄實(shí)例的數(shù)據(jù)表示中,需要通過一定的方式區(qū)分?jǐn)?shù)據(jù)內(nèi)容已知的、確定的記錄實(shí)例(常量記錄實(shí)例)和內(nèi)容未知的、不確定的記錄實(shí)例(變量記錄實(shí)例),比如在內(nèi)存中表示記錄實(shí)例的數(shù)據(jù)結(jié)構(gòu)中可以用ー個(gè)標(biāo)志表示、區(qū)分這兩種不同的邏輯記錄實(shí)例;在用戶界面層,可在記錄實(shí)例的名稱變量的變量名前面加ー個(gè)?表示內(nèi)容未知的、不缺定的記錄實(shí)例。類似地,對于記錄關(guān)系表示數(shù)據(jù)、記錄關(guān)系定義規(guī)則表示數(shù)據(jù),無論在系統(tǒng)處理層面,還是在用戶界層面,其具體實(shí)施沒有特別的限定,只要具體實(shí)施方案對邏輯記錄實(shí)例數(shù)據(jù)的表示包含發(fā)明內(nèi)容中所述信息即可。對于以上數(shù)據(jù)的用戶界面層面表示,下面給出ー種實(shí)施方案。用“記錄類名邏輯記錄實(shí)例名稱常量”表示ー個(gè)內(nèi)容已知的、確定的邏輯記錄實(shí)例,如ClassA:ID230871 ;用“記錄類名?邏輯記錄實(shí)例名稱變量”表示內(nèi)容未知的、不確定性的記錄實(shí)例,如ClassA: X;用“記錄類名邏輯記錄實(shí)例名稱常量.字段名”表示某個(gè)內(nèi)容已知、確定的邏輯記錄實(shí)例的字段,如ClassA: ID230871. name ;用“記錄類名?邏輯記錄實(shí)例名稱變量.字段名”表示某個(gè)內(nèi)容未知、不確定的記錄實(shí)例 的字段,如ClassA: X.name。對于變量記錄實(shí)例的字段與常數(shù)值間的關(guān)系可用如下方式表示記錄類名?邏輯記錄實(shí)例名稱常量.字段名r常數(shù)值,其中,!·表示數(shù)值關(guān)系,如〉(大于)、>=(大于等干)、=(等干)等。對于兩個(gè)記錄實(shí)例之間的字段關(guān)系可用如下方式表示記錄類名?邏輯記錄實(shí)例名稱變量.字段名r記錄類名邏輯記錄實(shí)例名稱常量.字段名,或者,記錄類名?邏輯記錄實(shí)例名稱變量.字段名r記錄類名?邏輯記錄實(shí)例名稱變量.字段名,其中,!·同前表示數(shù)值關(guān)系。對于邏輯記錄實(shí)例的命名關(guān)系,可用如下方式表示記錄類名?邏輯記錄實(shí)例名稱變量R記錄類名邏輯記錄實(shí)例名稱常量,或者,記錄類名?邏輯記錄實(shí)例名稱變量R記錄類名?邏輯記錄實(shí)例名稱變量,其中,R表不關(guān)系的名稱,如“有化驗(yàn)單”。對于用記錄關(guān)系表示的查詢條件可用如下方式表示Cl AND C2 AND …AND Cn,其中,AND表示邏輯“與”,Cl、C2-Cn為用前述方式表示的變量邏輯記錄實(shí)例與常數(shù)值之間的關(guān)系,或者兩個(gè)邏輯記錄實(shí)例之間的字段關(guān)系,或者邏輯記錄實(shí)例的命名關(guān)系。對于命名關(guān)系定義規(guī)則可用如下方式表示IF Cl AND C2 AND …AND CnTHEN記錄類名?邏輯記錄實(shí)例名稱變量R記錄類名?邏輯記錄實(shí)例名稱變量,或者,IF Cl AND C2 AND …AND CnTHEN記錄類名?邏輯記錄實(shí)例名稱變量R記錄類名邏輯記錄實(shí)例名稱常量,其中,R是要定義的關(guān)系名,AND表示邏輯“與”,Cl、C2…Cn為用前述方式表示的變量邏輯記錄實(shí)例與常數(shù)值之間的關(guān)系,或者兩個(gè)邏輯記錄實(shí)例之間間的字段關(guān)系,或者邏輯記錄實(shí)例的命名關(guān)系。ー種將中間名稱變量計(jì)數(shù)對象的計(jì)數(shù)值加入到替換展開過程中引入的規(guī)則條件關(guān)系中的額外的、中間的變量邏輯記錄實(shí)例的名稱變量的變量名的實(shí)施方式是將_xxx_作為名稱前綴前綴加入到所述額外的、中間的變量邏輯記錄實(shí)例的名稱變量的變量名中,其中XXX是所述計(jì)數(shù)值對應(yīng)的字串值。若采用這種加入方式,則用戶在進(jìn)行記錄查詢時(shí)輸入的作為查詢條件的記錄關(guān)系中的變量邏輯記錄實(shí)例的名稱變量的變量名不能以此類前綴開頭。下面舉例說明這種命名關(guān)系定義規(guī)則和額外的、中間的變量邏輯記錄實(shí)例的名稱變量的變量名的處理方案的應(yīng)用。假設(shè)有如下命名關(guān)系定義規(guī)則IF Classl: X. a = Class2: Y. b AND Class2: Y Rl Class3: ZTHEN Classl: X R Class3: Z;假設(shè)某記錄關(guān)系中有關(guān)系因子Classl: U R Class2: V,則記錄關(guān)系展開子過程 對該關(guān)系因子進(jìn)行一次替換、展開后,得到的記錄關(guān)系如下Classl: U. a = Class2: _χχχ_Υ· b AND Class2: _xxx_Y Rl Class3: V,這里,U、V分別替代了規(guī)則條件關(guān)系中的對應(yīng)的名稱變量X、Z ;XXX是中間名稱變量計(jì)數(shù)對象的計(jì)數(shù)值的字串值。當(dāng)然,記錄關(guān)系展開子過程需要對替代展開過程中引入的命名關(guān)系Class2: _xxx_Y Rl Class3: V進(jìn)行進(jìn)一步的替代、展開。對于邏輯記錄記錄限定類的定義規(guī)則可用如下方式表示IF Cl AND C2 AND …AND CnTHEN原記錄類名?邏輯記錄實(shí)例名稱變量isOfSameClassAs記錄限定類名?ANY,其中, ANY是特別的名稱變量,表示任何記錄實(shí)例,isOfSameClassAs表示預(yù)定的記錄關(guān)系屬于同一記錄類。有了以上限定類定義后,凡是記錄關(guān)系中出現(xiàn)記錄限定類名邏輯記錄實(shí)例名稱常量,的地方,在進(jìn)行關(guān)系展開時(shí)都用原記錄類名邏輯記錄實(shí)例名稱常量,替代;凡是記錄記錄關(guān)系中出現(xiàn)記錄限定類名變量邏輯記錄實(shí)例名稱變量,的地方,都用原記錄類名變量邏輯記錄實(shí)例名稱變量,替代,并在查詢條件中加入相應(yīng)的限定類定義規(guī)則的條件關(guān)系A(chǔ)ND Cl AND C2 AND …AND Cn。下面舉例說明這種限定類的應(yīng)用。假設(shè)有如下限定類定義規(guī)則IF Classl: X. a >20 AND Classl: X R Class3:ZZZTHEN Classl: X isOfSameClassAs SubClassl: ANY,這里ZZZ是名稱常量;假設(shè)某記錄關(guān)系中有關(guān)系因子SubClassl : U. b = “Zhang Shan”,則記錄關(guān)系展開子過程對該關(guān)系因子進(jìn)行一次替換、展開后,得到的記錄關(guān)系如下Classl: U. b = “Male” AND Classl: U. a >20 AND Classl: U R Class3:ZZZ,這里,U替代了限定類規(guī)則條件關(guān)系中的對應(yīng)名稱變量X。為了便于處理,在具體實(shí)施時(shí),對于記錄限定類及其記錄實(shí)例的數(shù)據(jù)表示在系統(tǒng)處理層面可以用某個(gè)特別的標(biāo)志表示其是ー個(gè)記錄限定類或限定類記錄實(shí)例,并通過相應(yīng)的數(shù)據(jù)信息指向、弓丨用其原記錄類。以上所述各類數(shù)據(jù)的用戶界面層表示方案,只是ー種可選的方法,在具體實(shí)施中,這些數(shù)據(jù)的用戶界面層表現(xiàn)形式可結(jié)合用戶的使用習(xí)慣、方便性、數(shù)據(jù)表達(dá)能力和系統(tǒng)表示層中的數(shù)據(jù)表示方案綜合考慮、設(shè)計(jì),只要能滿足發(fā)明內(nèi)容中所述要求和提供相關(guān)的信息內(nèi)容即可。
      有了以上各類數(shù)據(jù)表示的具體實(shí)施,邏輯記錄定義與映射組件SI、命名關(guān)系與限定類定義組件S2、邏輯記錄查詢組件S3、記錄展開子過程S4的具體實(shí)施可通過選擇適合的信息系統(tǒng)開發(fā)技術(shù)(如ASP. NET、J2EE、C/C++等),并通過相應(yīng)的流程實(shí)現(xiàn)。圖2是邏輯記錄查詢組件實(shí)現(xiàn)的參考流程圖,圖3A-圖3B是記錄關(guān)系展開子過程實(shí)現(xiàn)的參考流程圖。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技木。
      權(quán)利要求
      1.ー種基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),所述記錄邏輯表示是ー種只與記錄包含的信息內(nèi)容有關(guān)而與記錄數(shù)據(jù)的具體存儲形式、方式和位置無關(guān)的ー種記錄數(shù)據(jù)表示形式或表達(dá)方式,用這種形式或方式表示的記錄稱為邏輯記錄;在邏輯記錄中,一條包含具體數(shù)據(jù)的記錄稱為邏輯記錄實(shí)例,簡稱記錄實(shí)例;針對同一目的、具有相同屬性的邏輯記錄實(shí)例的集合稱為ー個(gè)邏輯記錄類;與邏輯記錄對應(yīng)的、保存在數(shù)據(jù)庫中的具體記錄數(shù)據(jù)稱為具體記錄;記錄類的記錄實(shí)例集合中滿足某種限定關(guān)系的記錄實(shí)例的集合構(gòu)成ー個(gè)新的記錄類,稱為原記錄類的限定類,或記錄限定類或限定記錄類或簡稱限定類; 所述系統(tǒng)包括邏輯記錄定義與映射組件、命名關(guān)系與限定類定義組件、邏輯記錄查詢組件、記錄關(guān)系展開子過程以及記錄數(shù)據(jù)庫,其中 邏輯記錄定義與映射組件ー個(gè)具有人機(jī)交互界面的功能模塊,數(shù)據(jù)管理員通過該組件對保存在關(guān)系數(shù)據(jù)庫中的記錄數(shù)據(jù)進(jìn)行抽象的邏輯表示,定義相應(yīng)的邏輯記錄類,以及邏輯記錄數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)之間的對應(yīng)關(guān)系或映射關(guān)系; 命名關(guān)系與限定類定義組件一個(gè)具有人機(jī)交互界面的功能模塊,普通用戶通過該組件輸入邏輯記錄命名關(guān)系定義規(guī)則,定義記錄命名關(guān)系,以及通過該組件定義已有邏輯記錄類的限定類;所述命名關(guān)系為具有名稱的記錄關(guān)系; 邏輯記錄查詢組件ー個(gè)具有人機(jī)交互界面的功能模塊,普通用戶通過該組件輸入用邏輯記錄關(guān)系表示的記錄查詢條件,查詢、獲取滿足條件的邏輯記錄數(shù)據(jù);所述邏輯記錄關(guān)系簡稱記錄關(guān)系; 記錄關(guān)系展開子過程在記錄數(shù)據(jù)查詢過程中被邏輯記錄查詢組件調(diào)用,基于邏輯記錄命名關(guān)系定義規(guī)則或限定類定義規(guī)則,展開、替換記錄關(guān)系表達(dá)式中的命名關(guān)系和/或記錄限定類,使得最終的作為記錄查詢條件的記錄關(guān)系表達(dá)式中不包含命名關(guān)系和/記錄限定類; 記錄數(shù)據(jù)庫存放具體記錄數(shù)據(jù)的關(guān)系數(shù)據(jù)庫系統(tǒng)。
      2.根據(jù)權(quán)利要求I所述的基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),其特征在于 所述邏輯記錄定義與映射組件按如下步驟定義邏輯記錄以及邏輯記錄數(shù)據(jù)與數(shù)據(jù)庫具體記錄數(shù)據(jù)之間的對應(yīng)關(guān)系 第I步定義ー個(gè)邏輯記錄類及其唯一名稱和/或標(biāo)識; 第2步定義所述邏輯記錄類的記錄實(shí)例所包含的記錄字段及每個(gè)字段的類型; 第3步定義所述邏輯記錄類與數(shù)據(jù)庫表的對應(yīng)關(guān)系,包括所述邏輯記錄類對應(yīng)的一張或多張數(shù)據(jù)庫表的名稱; 第4步定義所述邏輯記錄類的記錄實(shí)例的記錄字段與所述對應(yīng)的數(shù)據(jù)庫表的字段之間的對應(yīng)關(guān)系或映射關(guān)系; 第5步定義相關(guān)數(shù)據(jù)庫表之間的關(guān)聯(lián)方式; 不同的邏輯記錄類及其記錄實(shí)例所對應(yīng)的數(shù)據(jù)庫表以及數(shù)據(jù)表字段既可以相同,也可以不同;所述邏輯記錄實(shí)例有ー個(gè)在所屬記錄類中唯一的名稱或標(biāo)識來代表自己;邏輯記錄實(shí)例用其記錄數(shù)據(jù)中的某個(gè)記錄字段的值作為其名稱或標(biāo)識,或者用記錄字段的導(dǎo)出值作為其名稱或標(biāo)識;對于ー個(gè)確定的或已知的邏輯記錄實(shí)例,其名稱是ー個(gè)由字串組成的確定的常量,稱為邏輯記錄實(shí)例名稱常量或常量名稱或確定名稱,相應(yīng)的邏輯記錄實(shí)例稱為常量邏輯記錄實(shí)例,在記錄查詢條件中,邏輯記錄實(shí)例名稱常量即代表這個(gè)確定的、已知的邏輯記錄實(shí)例;對于不確定的或待定的邏輯記錄實(shí)例,其名稱是ー個(gè)不定量,即名稱的內(nèi)容或值是不確定,用一個(gè)變量名代替,稱為邏輯記錄實(shí)例名稱變量,相應(yīng)的邏輯記錄實(shí)例稱為變量邏輯記錄實(shí)例,在進(jìn)行記錄數(shù)據(jù)查詢時(shí),邏輯記錄實(shí)例名稱變量即代表需要查詢獲取的、滿足查詢條件的一個(gè)或多個(gè)邏輯記錄實(shí)例。
      3.根據(jù)權(quán)利要求I或2所述的基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),其特征在于 所述記錄關(guān)系或者是邏輯記錄實(shí)例的記錄字段與常數(shù)值之間關(guān)系,或者是兩個(gè)邏輯記錄實(shí)例之間的字段關(guān)系,或者是兩個(gè)邏輯記錄實(shí)例之間的命名關(guān)系,或者是這些關(guān)系的邏輯“與”運(yùn)算組合;其中,所述邏輯記錄實(shí)例的記錄字段與常數(shù)值之間關(guān)系,即記錄字段與常數(shù)值之間的數(shù)值關(guān)系,其表達(dá)式中包含如下信息邏輯記錄實(shí)例的記錄類名、邏輯記錄實(shí)例的名稱、邏輯記錄實(shí)例的相關(guān)字段名及該字段與常數(shù)值之間的數(shù)值關(guān)系;所述兩個(gè)邏輯記錄實(shí)例之間的字段關(guān)系,即兩個(gè)邏輯記錄實(shí)例的記錄字段之間的數(shù)值關(guān)系,其表達(dá)式中包含如下信息相關(guān)邏輯記錄實(shí)例的記錄類名、相關(guān)邏輯記錄實(shí)例的名稱、相關(guān)邏輯記錄實(shí)例的相關(guān)字段名,以及相關(guān)邏輯記錄實(shí)例的記錄字段之間的數(shù)值關(guān)系;邏輯記錄實(shí)例的記錄字段與常數(shù)值之間關(guān)系和兩個(gè)邏輯記錄實(shí)例之間的字段關(guān)系統(tǒng)稱為邏輯記錄實(shí)例字段關(guān)系;兩個(gè)邏輯記錄實(shí)例之間的命名關(guān)系,即用命名關(guān)系表示的兩個(gè)記錄實(shí)例之間的關(guān)系,其表達(dá)式包含如下信息相關(guān)邏輯記錄實(shí)例的記錄類名,相關(guān)邏輯記錄實(shí)例的名稱,以及相關(guān)邏輯記錄實(shí)例之間命名關(guān)系的名稱;出現(xiàn)在記錄關(guān)系中的邏輯記錄實(shí)例或者是常量邏輯記錄實(shí)例,或者是變量邏輯記錄實(shí)例;若出現(xiàn)在記錄關(guān)系中的邏輯記錄實(shí)例是常量邏輯記錄實(shí)例,則其名稱使用名稱常量;若出現(xiàn)在記錄關(guān)系中的邏輯記錄實(shí)例是變量邏輯記錄實(shí)例,則其名稱使用名稱變量;在記錄關(guān)系表達(dá)式中,通過相應(yīng)的方式區(qū)分名稱常量和名稱變量;所述記錄關(guān)系的邏輯運(yùn)算組合中的每個(gè)組成因子,即變量邏輯記錄實(shí)例的記錄字段與常數(shù)值之間關(guān)系或者兩個(gè)記錄實(shí)例之間的字段關(guān)系或者兩個(gè)記錄實(shí)例之間的命名關(guān)系,稱為記錄關(guān)系表達(dá)式的關(guān)系因子;所述關(guān)系因子的邏輯評估值是“真”或“假”。
      4.根據(jù)權(quán)利要求I或2所述的基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),其特征在于 所述命名關(guān)系與限定類定義組件使用如下命名關(guān)系定義規(guī)則定義邏輯記錄實(shí)例之間的命名關(guān)系 如果兩個(gè)邏輯記錄實(shí)例并通過相關(guān)的中間邏輯記錄實(shí)例滿足給定的記錄關(guān)系,那么這兩個(gè)邏輯記錄實(shí)例間存在所定義的命名關(guān)系; 所述關(guān)系定義規(guī)則中的如果語句對應(yīng)于規(guī)則條件,即結(jié)果成立需要滿足的前提;所述關(guān)系定義規(guī)則中的那么語句對應(yīng)于規(guī)則的結(jié)果,即要定義的命名關(guān)系;所述規(guī)則的條件中出現(xiàn)的兩個(gè)邏輯記錄實(shí)例并通過相關(guān)的中間邏輯記錄實(shí)例需要滿足的給定的記錄關(guān)系稱為命名關(guān)系定義規(guī)則的條件關(guān)系,簡稱規(guī)則條件關(guān)系;所述命名關(guān)系定義規(guī)則的結(jié)果中的兩個(gè)邏輯記錄實(shí)例至少ー個(gè)是變量邏輯記錄實(shí)例;所述命名關(guān)系定義規(guī)則的條件關(guān)系中的中間邏輯記錄實(shí)例,指在規(guī)則條件關(guān)系中出現(xiàn)的而在規(guī)則結(jié)果中不出現(xiàn)的常數(shù)或變量邏輯記錄實(shí)例;記錄關(guān)系定義規(guī)則中出現(xiàn)的邏輯記錄實(shí)例的名稱變量,包括額外的、中間變量記錄實(shí)例的名稱變量,對于記錄關(guān)系的定義和表達(dá)是無關(guān)緊要的;ー個(gè)命名關(guān)系的定義規(guī)則的條件關(guān)系中可以使用其他已定義的命名關(guān)系,但不能直接或間接使用規(guī)則要定義的命名關(guān)系本身,即不能遞歸定義;ー個(gè)命名關(guān)系可用多條所述命名關(guān)系定義規(guī)則定義,多條規(guī)則之間是邏輯“或”的關(guān)系,即只要一條規(guī)則被滿足,則兩個(gè)記錄實(shí)例之間存在相應(yīng)的命名關(guān)系O
      5.根據(jù)權(quán)利要求I或2所述的基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),其特征在于 所述命名關(guān)系與限定類定義組件內(nèi)部通過如下特別的邏輯記錄命名關(guān)系定義規(guī)則提供記錄限定類的定義功能 如果某個(gè)已存在的邏輯記錄類的變量記錄實(shí)例并通過其他中間邏輯記錄實(shí)例滿足給定的記錄關(guān)系,那么這個(gè)變量邏輯記錄實(shí)例與要定義的記錄限定類中的任意實(shí)例具有預(yù)定的命名關(guān)系屬于同一記錄類; 其中,給定的記錄關(guān)系即是對所述邏輯記錄類中記錄實(shí)例的限定關(guān)系;所述記錄限定類的任意記錄實(shí)例用ー個(gè)具有特別的名稱變量變量名的變量邏輯記錄實(shí)例表示;所述表示任意記錄實(shí)例的變量邏輯記錄實(shí)例的名稱變量不出現(xiàn)在規(guī)則條件關(guān)系的表達(dá)式中;基于所述特別的記錄命名關(guān)系定義規(guī)則,所有滿足這個(gè)屬于同一記錄類記錄關(guān)系的變量記錄實(shí)例所對應(yīng)的記錄實(shí)例即構(gòu)成了要定義的已存在的記錄類的限定類;限定類定義可以嵌套,即在已定義的限定記錄類的基礎(chǔ)上進(jìn)ー步定義記錄限定類;但限定類定義不能遞歸,即定義規(guī)則的規(guī)則條件中不能直接或間接地包含要定義的限定類本身; 所述特別的關(guān)系定義規(guī)則,僅在命名關(guān)系與限定類定義組件內(nèi)部使用;在命名關(guān)系與限定類定義組件外部,即用戶界面層,不宣接使用,用戶在定義記錄限定類時(shí)只需通過專門的界面輸入如下信息要定義限定類的原記錄類的類名、要定義的限定類名、表示原記錄類中變量邏輯記錄實(shí)例的名稱變量及其需要滿足的給定記錄關(guān)系。
      6.根據(jù)權(quán)利要求I或3所述的基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),其特征在于 所述邏輯記錄查詢組件根據(jù)用記錄關(guān)系表示的記錄查詢條件查詢、獲取所需的記錄包括単獨(dú)或存在關(guān)聯(lián)關(guān)系的記錄,即查詢獲取用變量邏輯記錄實(shí)例代表的、能使得所述記錄關(guān)系成立的,即使得記錄關(guān)系的邏輯組合運(yùn)算的結(jié)果為“真”的所有邏輯記錄實(shí)例; 所述邏輯記錄查詢組件按如下步驟根據(jù)用記錄關(guān)系表示的記錄查詢條件,查詢獲取所需的記錄數(shù)據(jù) 步驟I :通過調(diào)用ー個(gè)記錄關(guān)系展開子過程將表示記錄查詢條件的記錄關(guān)系中包含的命名關(guān)系或記錄限定類記錄實(shí)例表達(dá)式展開,獲得一展開的記錄關(guān)系集,關(guān)系集中的每ー項(xiàng)都是由非限定類的邏輯記錄實(shí)例的字段關(guān)系表示的所述關(guān)系因子的邏輯“與”運(yùn)算組合所形成的記錄關(guān)系,即記錄關(guān)系的關(guān)系因子或者是變量邏輯記錄實(shí)例的記錄字段與常數(shù)值之間的關(guān)系或者是兩個(gè)邏輯記錄實(shí)例之間的字段關(guān)系,且關(guān)系因子中不存在記錄限定類表示的邏輯記錄實(shí)例; 步驟II:依次將步驟I中的所述展開的記錄關(guān)系集中的每ー項(xiàng)記錄關(guān)系作為記錄查詢條件執(zhí)行步驟III到步驟IV的操作,完成處理后返回結(jié)果; 步驟III :根據(jù)邏輯記錄的記錄數(shù)據(jù)與數(shù)據(jù)庫中具體記錄數(shù)據(jù)之間的對應(yīng)關(guān)系或映射關(guān)系,將僅包含邏輯記錄字段關(guān)系的、作為記錄查詢條件的記錄關(guān)系轉(zhuǎn)化成數(shù)據(jù)庫中用數(shù)據(jù)庫表字段表示的記錄查詢條件并生成對應(yīng)SQL語句; 步驟IV :基于第III步轉(zhuǎn)化生成的SQL語句查詢數(shù)據(jù)庫,然后將數(shù)據(jù)庫查詢獲得的具體記錄數(shù)據(jù)結(jié)果轉(zhuǎn)化成邏輯記錄數(shù)據(jù),并將得到的邏輯記錄數(shù)據(jù)合并到最終的、需要返回的查詢結(jié)果中。
      7.根據(jù)權(quán)利要求6所述的基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),其特征在于 所述邏輯記錄查詢組件在步驟I調(diào)用的所述記錄關(guān)系展開子過程具有如下入口參數(shù) 輸入?yún)?shù) 1)待展開的記錄關(guān)系; 2)中間名稱變量計(jì)數(shù)對象,ー個(gè)包含整數(shù)計(jì)數(shù)值的數(shù)據(jù)對象,該計(jì)數(shù)值對應(yīng)的字串值被加入到記錄關(guān)系展開過程中引入的額外的、中間變量邏輯記錄實(shí)例的名稱變量中,以區(qū)分不同的中間名稱變量或中間變量邏輯記錄實(shí)例; 輸出參數(shù) O已展開的記錄關(guān)系集,將輸入的待展開的記錄關(guān)系展開后得到的相當(dāng)?shù)?、包含多個(gè)記錄關(guān)系的記錄關(guān)系集合; 所述記錄關(guān)系展開子過程按如下步驟進(jìn)行操作 步驟I :依次掃描輸入的待展開的記錄關(guān)系中的每個(gè)關(guān)系因子,一旦掃面遇到ー個(gè)用命名關(guān)系表示或包含記錄限定類記錄實(shí)例的關(guān)系因子,則轉(zhuǎn)入步驟2;若掃描完成未遇到用命名關(guān)系表示或包含記錄限定類記錄實(shí)例的關(guān)系因子,則直接將輸入的待展開的記錄關(guān)系加入到輸出參數(shù)已展開的記錄關(guān)系集中,然后返回結(jié)果; 步驟2 :若步驟I掃描遇的需要處理的關(guān)系因子是用命名關(guān)系表示的兩個(gè)記錄實(shí)例間的記錄關(guān)系,則將該命名關(guān)系用其命名關(guān)系定義規(guī)則的條件關(guān)系替換,否則對包含記錄限定類記錄實(shí)例的關(guān)系因子作如下處理先將出現(xiàn)在關(guān)系因子表達(dá)式中的限定類邏輯記錄實(shí)例的記錄限定類用對應(yīng)的原記錄類替代,然后將記錄限定類定義規(guī)則中的條件關(guān)系通過邏輯“與”加入到被替代處理的關(guān)系因子中;在替代處理過程中,作替代用的規(guī)則條件關(guān)系中的相關(guān)變量邏輯記錄實(shí)例的名稱變量被正在處理的關(guān)系因子中的對應(yīng)的邏輯記錄實(shí)例的名稱常量或名稱變量替代;對于替換展開過程中引入的規(guī)則條件關(guān)系中的額外的、中間變量邏輯記錄實(shí)例的名稱變量,根據(jù)預(yù)定的方式將中間名稱變量計(jì)數(shù)對象的計(jì)數(shù)值對應(yīng)的字串值加入到該額外的、中間變量邏輯記錄實(shí)例的名稱變量的變量名中;若要替代展開的所述命名關(guān)系或記錄限定類邏輯記錄實(shí)例對應(yīng)多個(gè)命名關(guān)系定義規(guī)則,則分別用每個(gè)關(guān)系定義規(guī)則的條件關(guān)系替代,得到多個(gè)替代展開后的關(guān)系因子; 步驟3 :將步驟2替代處理后得到的一個(gè)或多個(gè)展開后的關(guān)系因子分別和余下的尚未掃描到的關(guān)系因子按邏輯“與”組合,得到一個(gè)或多個(gè)臨時(shí)的、中間的待展開的記錄關(guān)系;以所有經(jīng)此處理得到的臨時(shí)的、中間的待展開的記錄關(guān)系生成ー個(gè)集合; 步驟4 :將中間名稱變量計(jì)數(shù)對象中的計(jì)數(shù)值加I ; 步驟5:依次取出步驟3產(chǎn)生的臨時(shí)的、中間的待展開的記錄關(guān)系集中的每ー項(xiàng)記錄關(guān)系,執(zhí)行步驟6-7的處理;完成處理后返回結(jié)果; 步驟6:調(diào)用記錄關(guān)系展開子過程自身,即遞歸調(diào)用自身,調(diào)用時(shí)的輸入?yún)?shù)待展開的記錄關(guān)系為步驟5中從臨時(shí)的、中間記錄關(guān)系集中取出的ー項(xiàng)記錄關(guān)系,輸入?yún)?shù)中間名稱變量計(jì)數(shù)對象為當(dāng)前執(zhí)行過程的中間名稱變量計(jì)數(shù)對象; 步驟7 :對步驟6中調(diào)用記錄關(guān)系展開子過程返回的輸出參數(shù)展開的記錄關(guān)系集作如下處理將當(dāng)前執(zhí)行過程步驟I中已掃描過的非命名關(guān)系表示的或不包含限定類記錄實(shí)例的所有關(guān)系因子與返回的展開的記錄關(guān)系集中的每ー項(xiàng)記錄關(guān)系按邏輯“與”運(yùn)算進(jìn)行合并形成相應(yīng)的新的記錄關(guān)系,并將所有合并后的新的記錄關(guān)系加入到當(dāng)前執(zhí)行過程的輸出參數(shù)已展開的記錄關(guān)系集中; 若在所述步驟I中掃描到的需要處理的關(guān)系因子既是ー個(gè)用命名關(guān)系表示的關(guān)系因子同時(shí)又是ー個(gè)包含記錄限定類記錄實(shí)例的關(guān)系因子,則在所述步驟2僅按命名關(guān)系表示的關(guān)系因子處理; 在所述記錄關(guān)系展開子過程展開記錄關(guān)系的過程中,對于能確定其邏輯評估值是“真”的關(guān)系因子,用邏輯值“真”替換;對于包含邏輯評估值是“假”的關(guān)系因子的記錄關(guān)系,直接用邏輯值“假”替換; 所述邏輯記錄查詢組件在步驟I調(diào)用所述記錄關(guān)系展開子過程吋,輸入?yún)?shù)待展開的記錄關(guān)系即是作為記錄查詢條件的記錄關(guān)系,輸入?yún)?shù)中間名稱變量計(jì)數(shù)對象的計(jì)數(shù)值為預(yù)定的初值;在所述記錄關(guān)系展開子過程的遞歸調(diào)用過程中,傳遞的輸入?yún)?shù)中間名稱變量計(jì)數(shù)對象是同一個(gè)數(shù)據(jù)對象。
      8.根據(jù)權(quán)利要求7所述的基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),其特征在于 所述步驟2中所述的將中間名稱變量計(jì)數(shù)對象的計(jì)數(shù)值對應(yīng)的字串值加入到替換展開過程中引入的規(guī)則條件關(guān)系中的額外、中間的變量邏輯記錄實(shí)例的名稱變量中的所述預(yù)定的方式無特別的規(guī)定,只要使得展開過程中引入的額外、中間變量邏輯記錄實(shí)例的名稱變量不與其他變量邏輯記錄實(shí)例的名稱變量重復(fù)即可。
      9.根據(jù)權(quán)利要求I或4或7所述的基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),其特征在于 所述記錄關(guān)系展開子過程通過如下功能擴(kuò)展,允許邏輯記錄查詢組件調(diào)用所述子過程時(shí)輸入的作為記錄查詢條件的所述待展開的記錄關(guān)系中,或者命名關(guān)系的定義規(guī)則的條件關(guān)系中,出現(xiàn)關(guān)系因子的邏輯“或”和/或“非”運(yùn)算組合 若待展開的記錄關(guān)系中存在關(guān)系因子的邏輯“或”運(yùn)算,則將該記錄關(guān)系分解為多個(gè)不包含邏輯“或”運(yùn)算的記錄關(guān)系; 若待展開的記錄關(guān)系中存在針對邏輯記錄實(shí)例字段關(guān)系的邏輯評估值的邏輯“非”運(yùn)算,則將該邏輯“非”運(yùn)算所針對的邏輯記錄實(shí)例字段關(guān)系連同“非”運(yùn)算邏輯算子用等價(jià)的不包含“非”運(yùn)算邏輯算子的邏輯記錄實(shí)例字段關(guān)系替代; 若作為命名關(guān)系定義規(guī)則的規(guī)則條件關(guān)系中存在關(guān)系因子的邏輯“或”運(yùn)算,則將該規(guī)則條件關(guān)系分解為多個(gè)不包含邏輯“或”運(yùn)算的記錄關(guān)系,然后以分解得到每個(gè)記錄關(guān)系作為命名關(guān)系定義規(guī)則的規(guī)則條件關(guān)系,得到多個(gè)相互之間是“或”關(guān)系的命名關(guān)系定義規(guī)則; 若作為命名關(guān)系定義規(guī)則的規(guī)則條件關(guān)系中存在邏輯記錄實(shí)例字段關(guān)系的邏輯“非”運(yùn)算,則將該邏輯“非”運(yùn)算所針對的邏輯記錄實(shí)例字段關(guān)系連同“非”運(yùn)算邏輯算子用等價(jià)的不包含“非”運(yùn)算邏輯算子的邏輯記錄實(shí)例字段關(guān)系替代。
      10.根據(jù)權(quán)利要求I或6所述的基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),其特征在于 所述邏輯記錄查詢組件根據(jù)相應(yīng)的查詢命名設(shè)定,不但查詢返回使得記錄關(guān)系成立的變量邏輯記錄實(shí)例所對應(yīng)的所有邏輯記錄實(shí)例,而且返回使得記錄關(guān)系成立所需的所有中間邏輯記錄實(shí)例。
      全文摘要
      本發(fā)明涉及一種基于記錄邏輯表示的數(shù)據(jù)庫記錄數(shù)據(jù)查詢系統(tǒng),該系統(tǒng)包括邏輯記錄定義與映射組件、命名關(guān)系與限定類定義組件、邏輯記錄查詢組件、記錄關(guān)系展開子過程、記錄數(shù)據(jù)庫。本發(fā)明將邏輯表示的一些思路和方法用于普通數(shù)據(jù)庫數(shù)據(jù)的查詢,但無需使用其復(fù)雜的實(shí)現(xiàn)技術(shù);數(shù)據(jù)用戶可針對數(shù)據(jù)庫中的數(shù)據(jù)根據(jù)自己的需要定義邏輯記錄,并通過邏輯記錄與數(shù)據(jù)庫記錄之間的對應(yīng)關(guān)系,將用邏輯記錄表示記錄查詢條件或命令轉(zhuǎn)化成數(shù)據(jù)庫查詢SQL語句;用戶可通過記錄命名關(guān)系定義規(guī)則自定義記錄命名關(guān)系、記錄限定類,并將記錄命名、記錄限定類用于記錄查詢條件表達(dá)式或命令中,使得記錄查詢條件的表達(dá)更加簡單。
      文檔編號G06F17/30GK102693295SQ20121015128
      公開日2012年9月26日 申請日期2012年5月15日 優(yōu)先權(quán)日2012年5月15日
      發(fā)明者劉旭, 唐志紅, 楊浩, 白波, 肖凡, 龍毅宏 申請人:北京天威誠信電子商務(wù)服務(wù)有限公司, 武漢理工大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1