專利名稱:電子產(chǎn)品碼信息服務(wù)數(shù)據(jù)的存儲方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及無線射頻識別(RFID,Radio Frequency Identified)領(lǐng)域,尤其涉及 存儲電子產(chǎn)品碼信息服務(wù)(EPCIS,EPC Information Service)數(shù)據(jù)的存儲方法及裝置。
背景技術(shù):
RFID技術(shù)作為一種新興技術(shù),在商業(yè)領(lǐng)域特別是在物流領(lǐng)域中正得到快速應(yīng)用。 電子產(chǎn)品碼全球(EPCglobal)組織作為RFID領(lǐng)域的標(biāo)準(zhǔn)組織,致力于推廣RFID技術(shù)的廣 泛應(yīng)用,其相繼推出了 RFID技術(shù)應(yīng)用系統(tǒng)的標(biāo)準(zhǔn)框架、應(yīng)用級別事件(ALE,Application Level Event)標(biāo)準(zhǔn)、EPCIS標(biāo)準(zhǔn)等,極大地推動了 RFID技術(shù)的商業(yè)進(jìn)程。其中,EPCIS標(biāo)準(zhǔn)的目標(biāo)是物聯(lián)網(wǎng)上共享EPCIS數(shù)據(jù)。為了使數(shù)據(jù)提供者和使用者 都能夠理解這些EPCIS數(shù)據(jù),就必須采用統(tǒng)一的、標(biāo)準(zhǔn)的數(shù)據(jù)格式來描述EPCIS數(shù)據(jù)。EPCIS 標(biāo)準(zhǔn)采用可擴(kuò)展標(biāo)記語言(XML,Extensible Markup Language)模式(Schema)文檔來描 述數(shù)據(jù)模型,也采用XML來承載數(shù)據(jù)實體,并通過網(wǎng)絡(luò)服務(wù)描述語言(WSDL,Web Service Description Language)的方式在數(shù)據(jù)提供者和數(shù)據(jù)使用者之間進(jìn)行傳遞。EPCIS標(biāo)準(zhǔn)中,有兩類重要的抽象數(shù)據(jù)模型事件模型和主數(shù)據(jù)模型。事件模型包 括如下概念事件類型、事件實體、事件域類型和事件域?qū)嶓w。主數(shù)據(jù)模型包括如下概念 主數(shù)據(jù)類型、主數(shù)據(jù)實體、詞匯類型、詞匯實體、詞匯屬性類型和詞匯屬性實體。為了理解這 些概念,首先要理解信息模型與信息實體的概念。另外,由于EPCIS標(biāo)準(zhǔn)采用XML Schema 文檔來描述所有的數(shù)據(jù)模型,因此對于XML中的一些概念如元素、屬性、簡單類型和復(fù)雜 類型等請參見XML相關(guān)說明,這里不再贅述。以下介紹本文中涉及到的概念信息模型,指描述信息實體結(jié)構(gòu)的數(shù)據(jù)信息。信息實體,指依照某種信息模型,有具體取值的數(shù)據(jù)信息。元數(shù)據(jù),指描述信息模型的數(shù)據(jù)。實體數(shù)據(jù),指描述信息實體的數(shù)據(jù)。事件類型,指描述事件實體結(jié)構(gòu)的信息模型。事件實體,指依照某種事件類型,有具體取值的信息實體,本文提到的事件等同于事件實體。事件域類型,指描述事件域結(jié)構(gòu)的信息模型;事件域類型在XML schema文檔中描述為一種元素,既然是元素,就有簡單和復(fù)雜兩種類型,如果是復(fù)雜類型的元素,則元素中還會含有子元素,也稱為子事件域類型;并且, 事件域類型還可以有自己的屬性。事件域?qū)嶓w,指依照某種事件域類型,有具體取值的信息實體;事件域?qū)嶓w在XML Schema文檔中也描述為一種元素,也有簡單和復(fù)雜兩種類型; 并且,事件域?qū)嶓w還可以有自己的屬性。主數(shù)據(jù)類型,指描述主數(shù)據(jù)實體結(jié)構(gòu)的信息模型。主數(shù)據(jù)實體,指依照某種主數(shù)據(jù)類型,有具體取值的信息實體,本文提到的主數(shù)據(jù)等同于主數(shù)據(jù)實體。詞匯類型,指描述詞匯實體結(jié)構(gòu)的信息模型;詞匯類型在XML Schema文檔中也描述為一種元素,但沒有子詞匯類型的說法,一 種詞匯類型含有多個詞匯屬性類型。詞匯實體,指依照某種詞匯類型,有具體取值的信息實體;詞匯實體在XML Schema文檔中也描述為一種元素,也有簡單和復(fù)雜兩種類型;并 且,詞匯實體還可以有自己的屬性。詞匯屬性類型,指描述詞匯屬性實體結(jié)構(gòu)的信息模型;詞匯屬性類型在XML schema文檔中也描述為一種元素,與事件域類型一樣,也有 簡單類型和復(fù)雜類型之分,因此也就有子詞匯屬性類型或子元素一說,并且,詞匯屬性類型 還可以有自己的屬性。詞匯屬性實體指依照某種詞匯屬性類型,有具體取值的信息實體。其中,事件實體與事件域?qū)嶓w之間是整體與部分的關(guān)系,一個事件實體由多個事 件域?qū)嶓w組成。主數(shù)據(jù)實體與詞匯實體之間也是整體與部分的關(guān)系。另外,詞匯實體與詞匯 屬性實體之間也是整體與部分的關(guān)系,一個詞匯實體除了有自己的通用資源標(biāo)志符(URI, Unified Resource Identity)取值之外,還包含有多個詞匯屬性實體。事件實體與事件域 實體之間的關(guān)系通過事件類型來體現(xiàn);主數(shù)據(jù)實體與詞匯實體之間的關(guān)系通過主數(shù)據(jù)類型 來體現(xiàn);詞匯實體與詞匯屬性實體之間的關(guān)系通過詞匯類型來體現(xiàn)。另外,事件域類型與詞匯類型之間還可以有對應(yīng)關(guān)系,有些事件域類型就是某種 詞匯類型,其取值就是該詞匯類型的某一詞匯實體的URI。EPCIS標(biāo)準(zhǔn)采用XML定義了這兩類數(shù)據(jù)模型。EPCIS系統(tǒng)中存在大量事件和主數(shù)據(jù) 需要分析處理,首先必須把這些事件和主數(shù)據(jù)存儲到關(guān)系數(shù)據(jù)庫中,因此需要設(shè)計基于數(shù) 據(jù)庫技術(shù)的XML存儲和查詢方案。當(dāng)前商業(yè)系統(tǒng)中的存儲方案基本都是把每個XML Schema 文檔中定義的每個實體對應(yīng)地生成一張關(guān)系表,有多少種實體類型的定義就存在多少張這 樣的關(guān)系表;同時把標(biāo)志索引(IDREF)引用、元素次序、映射關(guān)系等元數(shù)據(jù)存儲到一張?zhí)厥?關(guān)系表即文檔類型定義(DTD)字典中,通過該DTD字典的結(jié)構(gòu)來保證XML-關(guān)系映射的無損 性。這種復(fù)雜結(jié)構(gòu)的優(yōu)點在于可以保證XML中的所有信息都保存到了關(guān)系數(shù)據(jù)庫中,具有 很好的通用性,但同時也有如下缺點1、EPCIS系統(tǒng)的表結(jié)構(gòu)復(fù)雜,存儲邏輯實現(xiàn)困難,效率低,這種問題在事件定義的 層次結(jié)構(gòu)很深的情況下,表現(xiàn)尤為突出。2、數(shù)據(jù)冗余度大,每一類事件和主數(shù)據(jù)需要定義一個單獨的存儲表,實體中的域 存在大量重復(fù)取值,相應(yīng)的表中也就存在大量冗余數(shù)據(jù);例如XML Schema片段中定義了三種事件類型集合事件類型 (AggregationEventType)、數(shù)量事件類型(QuantityEventType)禾口交易事件類 型(TransactionEventType),若采用當(dāng)前商業(yè)系統(tǒng)通用的存儲方法,則將至少在關(guān) 系數(shù)據(jù)庫中定義三張關(guān)系表集合事件表(AggregationEventTable)、數(shù)量事件表 (QuantityEventTable)和交易事件表(TransactionEventTable),每張關(guān)系表用來保存對 應(yīng)的EPCIS事件,不同類型的EPCIS事件中取值相同的事件域?qū)嶓w,將分別被存儲到三張關(guān) 系表中,因而導(dǎo)致在關(guān)系數(shù)據(jù)庫中出現(xiàn)多份冗余數(shù)據(jù);如果進(jìn)一步增加新的事件類型,就需要定義新的關(guān)系表,這樣冗余數(shù)據(jù)會越來越多。3、DTD字典設(shè)計復(fù)雜,維護(hù)、擴(kuò)充也比較困難。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種表結(jié)構(gòu)簡單、且表之間的關(guān)系清晰明了的EPCIS數(shù)據(jù)的存儲方法及裝置。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的一種EPCIS數(shù)據(jù)的存儲方法,包括在EPCIS系統(tǒng)的數(shù)據(jù)庫中設(shè)置元素表、屬性表、元素屬性關(guān)系表、事件表及主數(shù)據(jù) 表;接收EPCIS數(shù)據(jù);初始化數(shù)據(jù)庫連接,并判斷EPCIS數(shù)據(jù)的類型,如果EPCIS數(shù)據(jù)為事件,則執(zhí)行過 程A將事件存儲到數(shù)據(jù)庫中;否則,如果EPCIS數(shù)據(jù)為主數(shù)據(jù),則執(zhí)行過程B將主數(shù)據(jù)存儲 到數(shù)據(jù)庫中;過程A 獲取組成事件的所有事件域?qū)嶓w;將各事件域?qū)嶓w的名稱和取值成對地存儲到元素表中,且對應(yīng)每對存儲的事件域 實體的名稱和取值,在元素表中生成表示該事件域?qū)嶓w的名稱和取值對應(yīng)關(guān)系的元素標(biāo) 志;將各事件域?qū)嶓w的所有屬性的名稱和取值成對地存儲到屬性表中,且對應(yīng)每對存 儲的事件域?qū)嶓w的屬性的名稱和取值,在屬性表中生成表示該事件域?qū)嶓w的屬性的名稱和 取值對應(yīng)關(guān)系的屬性標(biāo)志;將元素表中與事件域?qū)嶓w對應(yīng)的元素標(biāo)志以及屬性表中與事件域?qū)嶓w的屬性對 應(yīng)的屬性標(biāo)志成對地存儲到元素屬性關(guān)系表中;將各事件域?qū)嶓w的路徑以及元素表中與事件域?qū)嶓w對應(yīng)的元素標(biāo)志成對地存儲 到事件表中;過程B 獲取組成主數(shù)據(jù)的所有詞匯實體;將各詞匯實體的名稱和取值成對地存儲到元素表中,且對應(yīng)每對存儲的詞匯實體 的名稱和取值,在元素表中生成表示該詞匯實體的名稱和取值對應(yīng)關(guān)系的元素標(biāo)志;將各詞匯實體的所有屬性的名稱和取值成對地存儲到屬性表中,且對應(yīng)每對存儲 的詞匯實體的屬性的名稱和取值,在屬性表中生成表示該詞匯實體的屬性的名稱和取值對 應(yīng)關(guān)系的屬性標(biāo)志;將元素表中與詞匯實體對應(yīng)的元素標(biāo)志以及屬性表中與詞匯實體的屬性對應(yīng)的 屬性標(biāo)志成對地存儲到元素屬性關(guān)系表中;將各詞匯實體的路徑以及元素表中與詞匯實體對應(yīng)的元素標(biāo)志成對地存儲到主 數(shù)據(jù)表中。其中,所述將事件域?qū)嶓w的名稱和取值成對地存儲到元素表中之前,所述存儲方 法還包括以下步驟
查找元素表中是否存在該對事件域?qū)嶓w的名稱和取值的記錄,如果存在,則不再存儲該對事件域?qū)嶓w的名稱和取值;否則,將該事件域?qū)嶓w的名稱和取值成對地存儲到元 素表中。其中,所述將事件域?qū)嶓w的屬性的名稱和取值成對地存儲到屬性表中之前,所述 存儲方法還包括以下步驟查找屬性表中是否存在該對事件域?qū)嶓w的屬性的名稱和取值的記錄,如果存在, 則不再存儲該對事件域?qū)嶓w的屬性的名稱和取值;否則,將該事件域?qū)嶓w的屬性的名稱和 取值成對地存儲到屬性表中。其中,所述將詞匯實體的名稱和取值成對地存儲到元素表中之前,所述存儲方法 還包括以下步驟查找元素表中是否存在該對詞匯實體的名稱和取值的記錄,如果存在,則不再存 儲該對詞匯實體的名稱和取值;否則,將該詞匯實體的名稱和取值成對地存儲到元素表中。其中,所述將詞匯實體的屬性的名稱和取值成對地存儲到屬性表中之前,所述存 儲方法還包括以下步驟查找屬性表中是否存在該對詞匯實體的屬性的名稱和取值的記錄,如果存在,則 不再存儲該對詞匯實體的屬性的名稱和取值;否則,將該詞匯實體的屬性的名稱和取值成 對地存儲到屬性表中。其中,所述初始化數(shù)據(jù)庫連接之前,所述存儲方法還包括以下步驟對收到的EPCIS數(shù)據(jù)進(jìn)行語法分析,如果存在語法錯誤,則結(jié)束對當(dāng)前EPCIS數(shù)據(jù) 的處理并繼續(xù)接收EPCIS數(shù)據(jù);否則,初始化數(shù)據(jù)庫連接。一種EPCIS數(shù)據(jù)的存儲裝置,包括數(shù)據(jù)表設(shè)置模塊、EPCIS數(shù)據(jù)接收模塊、EPCIS 數(shù)據(jù)類型判斷模塊、事件存儲模塊及主數(shù)據(jù)存儲模塊;其中,數(shù)據(jù)表設(shè)置模塊,用于在EPCIS系統(tǒng)的數(shù)據(jù)庫中設(shè)置元素表、屬性表、元素屬性關(guān) 系表、事件表及主數(shù)據(jù)表;EPCIS數(shù)據(jù)接收模塊,用于接收EPCIS數(shù)據(jù);EPCIS數(shù)據(jù)類型判斷模塊,用于在初始化數(shù)據(jù)連接之后,判斷EPCIS數(shù)據(jù)為事件還 是主數(shù)據(jù);事件存儲模塊,用于當(dāng)EPCIS數(shù)據(jù)為事件時,將事件存儲到數(shù)據(jù)庫中;主數(shù)據(jù)存儲模塊,用于當(dāng)EPCIS數(shù)據(jù)為主數(shù)據(jù)時,將主數(shù)據(jù)存儲到數(shù)據(jù)庫中;其中,事件存儲模塊包括事件域?qū)嶓w獲取模塊、事件域?qū)嶓w存儲模塊、事件域?qū)?體的屬性存儲模塊、事件域?qū)嶓w及其屬性關(guān)系存儲模塊及事件域?qū)嶓w路徑存儲模塊;事件域?qū)嶓w獲取模塊,用于獲取組成事件的所有事件域?qū)嶓w;事件域?qū)嶓w存儲模塊,用于將各事件域?qū)嶓w的名稱和取值成對地存儲到元素表 中,且對應(yīng)每對存儲的事件域?qū)嶓w的名稱和取值,在元素表中生成表示該事件域?qū)嶓w的名 稱和取值對應(yīng)關(guān)系的元素標(biāo)志;事件域?qū)嶓w的屬性存儲模塊,用于將各事件域?qū)嶓w的所有屬性的名稱和取值成對 地存儲到屬性表中,且對應(yīng)每對存儲的事件域?qū)嶓w的屬性的名稱和取值,在屬性表中生成 表示該事件域?qū)嶓w的屬性的名稱和取值對應(yīng)關(guān)系的屬性標(biāo)志;事件域?qū)嶓w及其屬性關(guān)系存儲模塊,用于將元素表中與事件域?qū)嶓w對應(yīng)的元素標(biāo)志以及屬性表中與事件域?qū)嶓w的屬性對應(yīng)的屬性標(biāo)志成對地存儲到元素屬性關(guān)系表中;事件域?qū)嶓w路徑存儲模塊,用于將各事件域?qū)嶓w的路徑以及元素表中與事件域?qū)?體對應(yīng)的元素標(biāo)志成對地存儲到事件表中;其中,主數(shù)據(jù)存儲模塊包括詞匯實體獲取模塊、詞匯實體存儲模塊、詞匯實體的 屬性存儲模塊、詞匯實體及其屬性關(guān)系存儲模塊及詞匯實體路徑存儲模塊;詞匯實體獲取模塊,用于獲取組成主數(shù)據(jù)的所有詞匯實體;詞匯實體存儲模塊,用于將各詞匯實體的名稱和取值成對地存儲到元素表中,且對應(yīng)每對存儲的詞匯實體的名稱和取值,在元素表中生成表示該詞匯實體的名稱和取值對 應(yīng)關(guān)系的元素標(biāo)志;詞匯實體的屬性存儲模塊,用于將各詞匯實體的所有屬性的名稱和取值成對地存 儲到屬性表中,且對應(yīng)每對存儲的詞匯實體的屬性的名稱和取值,在屬性表中生成表示該 詞匯實體的屬性的名稱和取值對應(yīng)關(guān)系的屬性標(biāo)志;詞匯實體及其屬性關(guān)系存儲模塊,用于將元素表中與詞匯實體對應(yīng)的元素標(biāo)志以 及屬性表中與詞匯實體的屬性對應(yīng)的屬性標(biāo)志成對地存儲到元素屬性關(guān)系表中;詞匯實體路徑存儲模塊,用于將各詞匯實體的路徑以及元素表中與詞匯實體對應(yīng) 的元素標(biāo)志成對地存儲到主數(shù)據(jù)表中。其中,所述事件存儲模塊還包括事件域?qū)嶓w查找模塊、或事件域?qū)嶓w的屬性查找 模塊,或這二者的組合;其中,事件域?qū)嶓w查找模塊,用于將事件域?qū)嶓w的名稱和取值成對地存儲到元素表中之 前,查找元素表中是否存在該對事件域?qū)嶓w的名稱和取值的記錄,如果存在,則不再存儲該 對事件域?qū)嶓w的名稱和取值;否則,利用事件域?qū)嶓w存儲模塊將該事件域?qū)嶓w的名稱和取 值成對地存儲到元素表中;事件域?qū)嶓w的屬性查找模塊,用于將事件域?qū)嶓w的屬性的名稱和取值成對地存儲 到元素表中之前,查找元素表中是否存在該對事件域?qū)嶓w的屬性的名稱和取值的記錄,如 果存在,則不再存儲該對事件域?qū)嶓w的名稱和取值;否則,利用事件域?qū)嶓w的屬性存儲模塊 將該事件域?qū)嶓w的名稱和取值成對地存儲到元素表中。其中,所述主數(shù)據(jù)存儲模塊還包括詞匯實體查找模塊,或詞匯實體的屬性查找模 塊,或這兩者的組合;其中,詞匯實體查找模塊,用于將詞匯實體的名稱和取值成對地存儲到元素表中之前, 查找元素表中是否存在該對詞匯實體的名稱和取值的記錄,如果存在,則不再存儲該對詞 匯實體的名稱和取值;否則,利用詞匯實體存儲模塊將該詞匯實體的名稱和取值成對地存 儲到元素表中;詞匯實體的屬性查找模塊,用于將詞匯實體的屬性的名稱和取值成對地存儲到屬 性表中之前,查找屬性表中是否存在該對詞匯實體的屬性的名稱和取值的記錄,如果存在, 則不再存儲該對詞匯實體的屬性的名稱和取值;否則,利用詞匯實體的屬性存儲模塊將該 詞匯實體的屬性的名稱和取值成對地存儲到屬性表中。其中,所述存儲裝置還包括EPCIS數(shù)據(jù)處理模塊,用于對收到的EPCIS數(shù)據(jù)進(jìn)行 語法分析,如果存在語法錯誤,則結(jié)束對當(dāng)前EPCIS數(shù)據(jù)的處理并繼續(xù)接收EPCIS數(shù)據(jù);否 貝U,初始化數(shù)據(jù)庫連接。
由以上技術(shù)方案可以看出,本發(fā)明僅用五張表即事件表、主數(shù)據(jù)表、元素表、屬性 表及元素屬性關(guān)系表就能存儲所有的事件和主數(shù)據(jù),表的結(jié)構(gòu)簡單清楚;并且,通過事件表 和主數(shù)據(jù)表分別存儲元素表中相應(yīng)的標(biāo)志以及元素屬性關(guān)系表存儲元素及其屬性的關(guān)系 就能將所有的表關(guān)聯(lián)起來,使得表之間的關(guān)系清晰明了,進(jìn)而使已存儲的數(shù)據(jù)讀取起來也 很方便。進(jìn)一步地,本發(fā)明對于名稱相同、取值也相同的元素在元素表中僅記錄一次,對于 名稱相同、取值也相同的屬性在屬性表中也僅記錄一次,這樣就解決了元素和屬性存儲時 的冗余問題。
圖1為本發(fā)明存儲EPCIS數(shù)據(jù)的各表關(guān)系示意圖;圖2為本發(fā)明存儲EPCIS數(shù)據(jù)的流程圖;圖3為本發(fā)明存儲事件的子流程圖;圖4為本發(fā)明存儲主數(shù)據(jù)的子流程圖;圖5為本發(fā)明EPCIS數(shù)據(jù)的存儲裝置的示意圖。
具體實施例方式以下對本發(fā)明作進(jìn)一步詳細(xì)的說明。本發(fā)明中事件和主數(shù)據(jù)仍采用XML格式進(jìn)行定義。在數(shù)據(jù)庫中首先 定義元素表(ElementTable)、屬性表(AttributeTable)及元素屬性關(guān)系表 (ElemAttriRelationTable),再在這三個表的基礎(chǔ)上定義出事件表(EventTable)和主數(shù) ■■ (MasterDataTable)。如圖1所示,本發(fā)明存儲EPCIS數(shù)據(jù)的數(shù)據(jù)庫包括事件表1、主數(shù)據(jù)表2、元素表3、 屬性表4及元素屬性關(guān)系表5。事件表1由標(biāo)志(ID)、元素路徑(ElementPath)和元素ID(ElementID)組成。其中,ElementPath表示事件域?qū)嶓w在事件實體層次結(jié)構(gòu)中的路徑,元素路徑記錄 的格式為“x,y”,“x”表示第“X”層的子元素,“y”表示第“X”層的第“y”個子元素;ElementID 是事件表1的外鍵(Π0,存儲元素表3中的ID,需要說明的是,事件表1并不存儲元素表 3中所有的ID,而是僅存儲元素為事件域?qū)嶓w時對應(yīng)的ID ;每存儲一對ElementPath和 ElementID,就生成一個表示ElementPath和ElementID對應(yīng)關(guān)系的唯一 ID,ID是事件表1 中的主鍵(PK)。為了區(qū)分各個數(shù)據(jù)表中的ID,將事件表1中的ID稱為事件ID,將元素表3 中的ID稱為元素ID。主數(shù)據(jù)表2 由 ID、ElementPath 和 ElementID 組成。其中,ElementPath表示詞匯實體在主數(shù)據(jù)實體層次結(jié)構(gòu)中的路徑,元素路徑記 錄的格式為“X,y”,“x”表示第“χ”層的子元素,“y”表示第“χ”層的第“y”個子元素; ElementID是主數(shù)據(jù)表2的Π(,記錄元素表3中的ID,需要說明的是,主數(shù)據(jù)表1并不存儲 元素表3中所有的ID,而是僅存儲元素為詞匯實體時對應(yīng)的ID ;每存儲一對ElementPath 和ElementID,就生成一個表示ElementPath和ElementID對應(yīng)關(guān)系的唯一 ID,ID是主數(shù) 據(jù)表2中的PK。同樣,將主數(shù)據(jù)表2中的ID稱為主數(shù)據(jù)ID。元素表3由ID、元素名稱(ElementName)、元素取值(ElementValue)組成。
在這里首先需要說明的是,本發(fā)明中涉及的元素僅指組成事件實體的事件域?qū)嶓w 或組成主數(shù)據(jù)實體的詞匯實體。因此,元素表3中存儲的ElementName指事件域?qū)嶓w的名 稱或詞匯實體的名稱,ElementValue指事件域?qū)嶓w的取值或詞匯實體的取值。元素表3中 每存ii者——對 ElementName 禾口 ElementValue,就生成——個表示 ElementName 禾口 ElementValue 對應(yīng)關(guān)系的唯一 ID,ID是元素表3中的PK。上文已提到將元素表3中的ID稱為元素ID。當(dāng)元素為復(fù)雜元素時,則ElementValue取值為空,當(dāng)元素為簡單元素時,則直接 記錄元素的值。對于名稱相同、取值也相同的元素,在元素表3中只記錄一次;同時,在元素 屬性關(guān)系表5中只需存儲該記錄對應(yīng)的元素表3中的ID即可,并且,如果該元素為事件域 實體,則在事件表1中只需存儲該記錄對應(yīng)的元素表3中的ID即可;如果該元素為詞匯實 體,則在主數(shù)據(jù)表2中只需存儲該記錄對應(yīng)的元素表3中的ID即可,這樣就解決了元素存 儲時的冗余問題。屬性表4由ID、屬性名稱(AttributeName)和屬性取值(AttributeValue)組成。屬性表4中存儲的AttributeName指事件域?qū)嶓w的屬性的名稱或詞匯實體的屬 性的名稱,AttributeValue指事件域?qū)嶓w的屬性的取值或詞匯實體的屬性的取值,屬性表 4 中每存儲一對 AttributeName 禾口 AttributeValue,就生成一個表示 AttributeName 禾口 AttributeValue對應(yīng)關(guān)系的唯一 ID,ID是屬性表4中的PK。同樣,將屬性表4中的ID稱 為屬性ID。
對于名稱相同、取值也相同的屬性,在屬性表4中只記錄一次;并且,在元素屬性 關(guān)系表5中只需存儲該記錄對應(yīng)的屬性表4中的ID即可,這樣就解決了屬性存儲時的冗余 問題。元素屬性關(guān)系表5由ID、ElementID、屬性ID(AttributeID)組成。ElementID表示存儲元素表3中的元素ID,AttributeID表示存儲與ELmentID對 應(yīng)的屬性表4中的屬性ID,ElementID與AttributeID均為元素屬性關(guān)系表5中的Π(。元 素屬性關(guān)系表5中每存儲一對ElementID和AttributelD,就生成一個表示ElementID和 AttributeID對應(yīng)關(guān)系的唯一 ID,ID是元素屬性關(guān)系表5中的PK。同樣,將元素屬性關(guān)系 表5中的ID稱為關(guān)系ID。除了事件和主數(shù)據(jù)外,EPCIS系統(tǒng)中還存在其他類型的XML數(shù)據(jù),如果業(yè)務(wù)需要還 需存儲這些其他類型的XML數(shù)據(jù),則可以參照事件表和主數(shù)據(jù)表的方式來定義其他的XML 數(shù)據(jù)表,用于存儲其他類型的EPCIS數(shù)據(jù)實體。根據(jù)具體項目開發(fā)的需求,本發(fā)明數(shù)據(jù)庫中的這些表可以在EPCIS系統(tǒng)構(gòu)建過程 中創(chuàng)建,也可以在EPCIS系統(tǒng)運行過程中創(chuàng)建,但優(yōu)選后者,因為后者可以給EPCIS系統(tǒng)運 行過程中替換數(shù)據(jù)庫提供更大的便利。以下結(jié)合圖2說明本發(fā)明根據(jù)存儲EPCIS數(shù)據(jù)的算法(EPCISToDB)存儲EPCIS數(shù) 據(jù)的方法,該方法包括以下步驟步驟201,在EPCIS系統(tǒng)的數(shù)據(jù)庫中設(shè)置元素表、屬性表、元素屬性關(guān)系表、事件表 及主數(shù)據(jù)表。步驟202 203,啟動EPCIS系統(tǒng),接收EPCIS數(shù)據(jù)。其中,接收EPCIS數(shù)據(jù)是由消息監(jiān)聽模塊實現(xiàn)的,具體為消息監(jiān)聽模塊自動監(jiān)聽 EPCIS消息并從EPCIS消息中獲取EPCIS數(shù)據(jù)。
步驟204,對收到的EPCIS數(shù)據(jù)進(jìn)行語法分析,如果存在語法錯誤,則結(jié)束對當(dāng)前EPCIS數(shù)據(jù)的處理,并返回步驟203,繼續(xù)接收下一個EPCIS數(shù)據(jù);否則,執(zhí)行步驟205。其中,進(jìn)行語法分析采用的標(biāo)準(zhǔn)語法分析器包括用于XML的簡單應(yīng)用程序接口 (SAX, Simple API for XML)、微軟 XML 核心服務(wù)(MSXML)、Java 文檔對象模型(JDOM)等。步驟205,初始化數(shù)據(jù)庫連接。步驟206 208,判斷EPCIS數(shù)據(jù)的類型,如果EPCIS數(shù)據(jù)為事件,則調(diào)用過程A根 據(jù)存儲事件的算法(EventToDB)將事件存儲到數(shù)據(jù)庫中;否則,如果EPCIS數(shù)據(jù)為主數(shù)據(jù), 則調(diào)用過程B根據(jù)存儲主數(shù)據(jù)的算法(MasterDataToDB)將主數(shù)據(jù)存儲到數(shù)據(jù)庫中。步驟209,存儲完當(dāng)前EPCIS數(shù)據(jù)之后,關(guān)閉數(shù)據(jù)庫連接,并返回步驟203,繼續(xù)接 收下一個EPCIS數(shù)據(jù)。如果不再接收EPCIS數(shù)據(jù),則退出EPCIS系統(tǒng)。其中,如圖3所示,調(diào)用過程A根據(jù)存儲事件的算法(EventToDB)存儲事件的流程 包括以下步驟步驟301,由語法分析獲取組成事件的所有事件域?qū)嶓w,將各事件域?qū)嶓w的名 稱(ElementName)和取值(ElementName)成對地存儲到元素表中,相應(yīng)地,每存儲一對 ElementName 禾口 ElementValue,就在元素表中生成——個表示 ElementName 禾口 ElementValue 對應(yīng)關(guān)系的元素ID。由于本發(fā)明的事件采用XML格式進(jìn)行定義,因此此處的事件域?qū)嶓w也稱為 Element。步驟302,將各事件域?qū)嶓w的所有屬性的名稱(AttributeName)和取值 (AttributeValue)成對地存儲到屬性表中,相應(yīng)地,每存儲一對AttributeName和 AttributeValue,就在屬性表中生成一個表示AttributeName和 AttributeValue對應(yīng)關(guān)系 的屬性ID。步驟303,將各事件域?qū)嶓w和其屬性的關(guān)系存儲到元素屬性關(guān)系表中。具體是將元素表中與事件域?qū)嶓w對應(yīng)的元素ID和屬性表中與事件域?qū)嶓w的屬 性對應(yīng)的屬性ID成對地存儲到元素屬性關(guān)系表中,相應(yīng)地,每存儲一對ElementID和 AttributeID,就在元素屬性關(guān)系表中生成一個表示ElementID和AttributeID對應(yīng)關(guān)系的 關(guān)系ID。例如,存在一個元素且該元素包含兩個屬性,假設(shè)將該元素的名稱和取值表示為 (a,l);將該元素的屬性的名稱和取值分別表示為(al,2)、(a2,3);元素表中對應(yīng)(a,1)的 元素ID為IDa,屬性表中對應(yīng)(al,2)、(a2,3)的屬性ID分別為IDal和IDa2 ;則在元素屬性 關(guān)系表中分別存儲(IDa,IDal)、(IDa, IDa2),并對應(yīng)(IDa,IDal)、(IDa, IDa2)分別生成ID1和 ID2。步驟304,將各事件域?qū)嶓w的路徑(ElementPath)和元素表中與事件域?qū)嶓w對應(yīng) 的元素ID成對地存儲到事件表中,相應(yīng)地,每存儲一對ElementPath和ElementID,就在事 件表中生成一個表示ElementPath和ElementID對應(yīng)關(guān)系的事件ID。其中,為了解決事件域?qū)嶓w存儲時的冗余問題,在將事件域?qū)嶓w的名稱和取值成 對地存儲到元素表中之前,首先查找元素表中是否存在該對事件域?qū)嶓w的名稱和取值的記 錄,如果存在,則不再存儲該對事件域?qū)嶓w的名稱和取值,然后只將該事件域?qū)嶓w的路徑以及元素表中與該事件域?qū)嶓w對應(yīng)的元素ID成對地存儲到事件表中,并只將元素表中與該 事件域?qū)嶓w對應(yīng)的元素ID以及屬性表中與該事件域?qū)嶓w的屬性對應(yīng)的屬性ID成對地存儲 到元素屬性關(guān)系表中。同理,為了解決事件域?qū)嶓w的屬性存儲時的冗余問題,在將事件域?qū)嶓w的屬性的 名稱和取值成對地存儲到元素表中之前,首先查找屬性表中是否存在該對事件域?qū)嶓w的屬 性的名稱和取值的記錄,如果存在,則不再存儲該對事件域?qū)嶓w的屬性的名稱和取值,并只 將屬性表中與該事件域?qū)嶓w的屬性對應(yīng)的屬性ID存儲到元素屬性關(guān)系表中。本發(fā)明存儲主數(shù)據(jù)的流程與存儲事件的流程基本相同,如圖4所示,根據(jù)存儲主 數(shù)據(jù)的算法(MasterDataToDB)存儲主數(shù)據(jù)的過程包括以下步驟步驟401,由語法分析獲取組成主數(shù)據(jù)的所有詞匯實體,將各詞匯實體的名稱 (ElementName)和取值(ElementValue)成對地存儲到元素表中,相應(yīng)地,每存儲一對 ElementName 禾口 ElementValue,就在元素表中生成表示——個 ElementName 禾口 ElementValue 對應(yīng)關(guān)系的元素ID。由于本發(fā)明的主數(shù)據(jù)采用XML格式進(jìn)行定義,因此此處的詞匯實體也稱為 Element。步驟402,將各詞匯實體的所有屬性的名稱(AttributeName)和取值 (AttributeValue)成對地存儲到屬性表中,相應(yīng)地,每存儲一對AttributeName和 AttributeValue,就在屬性表中生成一個表示AttributeName禾口 AttributeValue對應(yīng)關(guān)系 的屬性ID。步驟403,將各詞匯實體和其屬性的關(guān)系存儲到元素屬性關(guān)系表中。具體是將元素表中與詞匯實體對應(yīng)的元素ID和屬性表中與詞匯實體的屬性 對應(yīng)的屬性ID成對地存儲到元素屬性關(guān)系表中,相應(yīng)地,每存儲一對ElementID和 AttributelD,就在元素屬性關(guān)系表中生成一個表示ElementID和AttributeID對應(yīng)關(guān)系的 關(guān)系ID。步驟404,將各詞匯實體的路徑和元素表中與詞匯實體對應(yīng)的元素ID成對地存儲 到主數(shù)據(jù)表中,相應(yīng)地,每存儲一對ElementPath和ElementID,就在主數(shù)據(jù)表中生成一個 表示ElementPath和ElementID對應(yīng)關(guān)系的主數(shù)據(jù)ID。其中,為了解決詞匯實體存儲時的冗余問題,在將詞匯實體的名稱和取值成對地 存儲到元素表中之前,首先查找元素表中是否存在該對詞匯實體的名稱和取值的記錄,如 果存在,則不再存儲該對詞匯實體的名稱和取值,然后只將該詞匯實體的路徑以及元素表 中與該詞匯實體對應(yīng)的元素ID成對地存儲到主數(shù)據(jù)表中,并只將元素表中與該詞匯實體 對應(yīng)的元素ID以及屬性表中與該詞匯實體的屬性對應(yīng)的屬性ID成對地存儲到元素屬性關(guān) 系表中。同理,為了解決詞匯實體的屬性存儲時的冗余問題,在將詞匯實體的屬性的名稱 和取值成對地存儲到元素表中之前,首先查找屬性表中是否存在該對詞匯實體的屬性的名 稱和取值的記錄,如果存在,則不再存儲該對詞匯實體的屬性的名稱和取值,并只將屬性表 中與該詞匯實體的屬性對應(yīng)的屬性ID存儲到元素屬性關(guān)系表中。為實現(xiàn)EPCIS數(shù)據(jù)的存儲方法,本發(fā)明相應(yīng)提供一種EPCIS數(shù)據(jù)的存儲裝置。如 圖5所示,該存儲裝置包括數(shù)據(jù)表設(shè)置模塊501、EPCIS數(shù)據(jù)接收模塊502、EPCIS數(shù)據(jù)類型判斷模塊504、事件存儲模塊505及主數(shù)據(jù)存儲模塊506 ;其中,數(shù)據(jù)表設(shè)置模塊501,用于在EPCIS系統(tǒng)的數(shù)據(jù)庫中設(shè)置元素表、屬性表、元素屬 性關(guān)系表、事件表及主數(shù)據(jù)表;EPCIS數(shù)據(jù)接收模塊502,用于在EPCIS系統(tǒng)啟動后,接收EPCIS數(shù)據(jù);EPCIS數(shù)據(jù)類型判斷模塊504,用于在初始化數(shù)據(jù)連接之后,判斷EPCIS數(shù)據(jù)為事 件還是主數(shù)據(jù);事件存儲模塊505,用于當(dāng)EPCIS數(shù)據(jù)為事件時,將事件存儲到數(shù)據(jù)庫中;主數(shù)據(jù)存儲模塊506,用于當(dāng)EPCIS數(shù)據(jù)為主數(shù)據(jù)時,將主數(shù)據(jù)存儲到數(shù)據(jù)庫中;其中,事件存儲模塊505包括事件域?qū)嶓w獲取模塊515、事件域?qū)嶓w存儲模塊 525、事件域?qū)嶓w的屬性存儲模塊535、事件域?qū)嶓w及其屬性關(guān)系存儲模塊545及事件域?qū)?體路徑存儲模塊555 ;
事件域?qū)嶓w獲取模塊515,用于獲取組成事件的所有事件域?qū)嶓w;事件域?qū)嶓w存儲模塊525,用于將各事件域?qū)嶓w的名稱和取值成對地存儲到元素 表中,且對應(yīng)每對存儲的事件域?qū)嶓w的名稱和取值,在元素表中生成表示該事件域?qū)嶓w的 名稱和取值對應(yīng)關(guān)系的元素標(biāo)志;事件域?qū)嶓w的屬性存儲模塊535,用于將各事件域?qū)嶓w的所有屬性的名稱和取值 成對地存儲到屬性表中,且對應(yīng)每對存儲的事件域?qū)嶓w的屬性的名稱和取值,在屬性表中 生成表示該事件域?qū)嶓w的屬性的名稱和取值對應(yīng)關(guān)系的屬性標(biāo)志;事件域?qū)嶓w及其屬性關(guān)系存儲模塊545,用于將元素表中與事件域?qū)嶓w對應(yīng)的元 素標(biāo)志以及屬性表中與事件域?qū)嶓w的屬性對應(yīng)的屬性標(biāo)志成對地存儲到元素屬性關(guān)系表 中;事件域?qū)嶓w路徑存儲模塊555,用于將各事件域?qū)嶓w的路徑以及元素表中與事件 域?qū)嶓w對應(yīng)的元素標(biāo)志成對地存儲到事件表中;其中,主數(shù)據(jù)存儲模塊506包括詞匯實體獲取模塊516、詞匯實體存儲模塊526、 詞匯實體的屬性存儲模塊536、詞匯實體及其屬性關(guān)系存儲模塊546及詞匯實體路徑存儲 模塊556 ;詞匯實體獲取模塊516,用于獲取組成主數(shù)據(jù)的所有詞匯實體;詞匯實體存儲模塊526,用于將各詞匯實體的名稱和取值成對地存儲到元素表中, 且對應(yīng)每對存儲的詞匯實體的名稱和取值,在元素表中生成表示該詞匯實體的名稱和取值 對應(yīng)關(guān)系的元素標(biāo)志;詞匯實體的屬性存儲模塊536,用于將各詞匯實體的所有屬性的名稱和取值成對 地存儲到屬性表中,且對應(yīng)每對存儲的詞匯實體的屬性的名稱和取值,在屬性表中生成表 示該詞匯實體的屬性的名稱和取值對應(yīng)關(guān)系的屬性標(biāo)志;詞匯實體及其屬性關(guān)系存儲模塊546,用于將元素表中與詞匯實體對應(yīng)的元素標(biāo) 志以及屬性表中與詞匯實體的屬性對應(yīng)的屬性標(biāo)志成對地存儲到元素屬性關(guān)系表中;詞匯實體路徑存儲模塊556,用于將各詞匯實體的路徑以及元素表中與詞匯實體 對應(yīng)的元素標(biāo)志成對地存儲到主數(shù)據(jù)表中。進(jìn)一步地,為了解決事件域?qū)嶓w及其屬性存儲時的冗余問題,事件存儲模塊505 還包括事件域?qū)嶓w查找模塊及事件域?qū)嶓w的屬性查找模塊(圖中未示出);其中,
事件域?qū)嶓w查找模塊,用于將事件域?qū)嶓w的名稱和取值成對地存儲到元素表中之前,查找元素表中是否存在該對事件域?qū)嶓w的名稱和取值的記錄,如果存在,則不再存儲該 對事件域?qū)嶓w的名稱和取值;否則,利用事件域?qū)嶓w存儲模塊將該事件域?qū)嶓w的名稱和取 值成對地存儲到元素表中;事件域?qū)嶓w的屬性查找模塊,用于將事件域?qū)嶓w的屬性的名稱和取值成對地存儲 到元素表中之前,查找元素表中是否存在該對事件域?qū)嶓w的屬性的名稱和取值的記錄,如 果存在,則不再存儲該對事件域?qū)嶓w的名稱和取值;否則,利用事件域?qū)嶓w的屬性存儲模塊 將該事件域?qū)嶓w的名稱和取值成對地存儲到元素表中。進(jìn)一步地,為了解決詞匯實體及其屬性存儲時的冗余問題,主數(shù)據(jù)存儲模塊506 還包括詞匯實體查找模塊及詞匯實體的屬性查找模塊(圖中未示出),其中,詞匯實體查找模塊,用于將詞匯實體的名稱和取值成對地存儲到元素表中之前, 查找元素表中是否存在該對詞匯實體的名稱和取值的記錄,如果存在,則不再存儲該對詞 匯實體的名稱和取值;否則,利用詞匯實體存儲模塊將該詞匯實體的名稱和取值成對地存 儲到元素表中;詞匯實體的屬性查找模塊,用于將詞匯實體的屬性的名稱和取值成對地存儲到屬 性表中之前,查找屬性表中是否存在該對詞匯實體的屬性的名稱和取值的記錄,如果存在, 則不再存儲該對詞匯實體的屬性的名稱和取值;否則,利用詞匯實體的屬性存儲模塊將該 詞匯實體的屬性的名稱和取值成對地存儲到屬性表中。此外,EPCIS數(shù)據(jù)的存儲裝置還包括EPCIS數(shù)據(jù)處理模塊503,用于對收到的EPCIS 數(shù)據(jù)進(jìn)行語法分析,如果存在語法錯誤,則結(jié)束對當(dāng)前EPCIS數(shù)據(jù)的處理并繼續(xù)接收EPCIS 數(shù)據(jù);否則,初始化數(shù)據(jù)庫連接。本發(fā)明在存儲事件或主數(shù)據(jù)的具體過程中,存儲流程的先后順序可以根據(jù)需要改 變,例如可以先存儲元素的屬性再存儲元素。當(dāng)然,本發(fā)明還可以有多種實施例,數(shù)據(jù)庫中的表名和具體字段名都可以改變,存 儲流程的先后順序也可以根據(jù)需要改變,但是數(shù)據(jù)庫中表的整體結(jié)構(gòu)及表之間的關(guān)系不應(yīng) 改變。此外,只要存儲的數(shù)據(jù)是XML數(shù)據(jù)本發(fā)明都可以處理,不限于Event和MasterData。 EPCIS系統(tǒng)中若需要保存其他XML數(shù)據(jù),則也可以建立結(jié)構(gòu)與EventTable/MasterTable相 類似的數(shù)據(jù)表來存儲這些XML數(shù)據(jù)。在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域 的技術(shù)人員可根據(jù)本發(fā)明做出各種相應(yīng)的改變和變形,但是只要用來保存XML數(shù)據(jù)的表的 結(jié)構(gòu)和關(guān)系與本發(fā)明相同,則這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù) 范圍中。
權(quán)利要求
一種電子產(chǎn)品碼信息服務(wù)EPCIS數(shù)據(jù)的存儲方法,其特征在于,該存儲方法包括在EPCIS系統(tǒng)的數(shù)據(jù)庫中設(shè)置元素表、屬性表、元素屬性關(guān)系表、事件表及主數(shù)據(jù)表;接收EPCIS數(shù)據(jù);初始化數(shù)據(jù)庫連接,并判斷EPCIS數(shù)據(jù)的類型,如果EPCIS數(shù)據(jù)為事件,則執(zhí)行過程A將事件存儲到數(shù)據(jù)庫中;否則,如果EPCIS數(shù)據(jù)為主數(shù)據(jù),則執(zhí)行過程B將主數(shù)據(jù)存儲到數(shù)據(jù)庫中;過程A獲取組成事件的所有事件域?qū)嶓w;將各事件域?qū)嶓w的名稱和取值成對地存儲到元素表中,且對應(yīng)每對存儲的事件域?qū)嶓w的名稱和取值,在元素表中生成表示該事件域?qū)嶓w的名稱和取值對應(yīng)關(guān)系的元素標(biāo)志;將各事件域?qū)嶓w的所有屬性的名稱和取值成對地存儲到屬性表中,且對應(yīng)每對存儲的事件域?qū)嶓w的屬性的名稱和取值,在屬性表中生成表示該事件域?qū)嶓w的屬性的名稱和取值對應(yīng)關(guān)系的屬性標(biāo)志;將元素表中與事件域?qū)嶓w對應(yīng)的元素標(biāo)志以及屬性表中與事件域?qū)嶓w的屬性對應(yīng)的屬性標(biāo)志成對地存儲到元素屬性關(guān)系表中;將各事件域?qū)嶓w的路徑以及元素表中與事件域?qū)嶓w對應(yīng)的元素標(biāo)志成對地存儲到事件表中;過程B獲取組成主數(shù)據(jù)的所有詞匯實體;將各詞匯實體的名稱和取值成對地存儲到元素表中,且對應(yīng)每對存儲的詞匯實體的名稱和取值,在元素表中生成表示該詞匯實體的名稱和取值對應(yīng)關(guān)系的元素標(biāo)志;將各詞匯實體的所有屬性的名稱和取值成對地存儲到屬性表中,且對應(yīng)每對存儲的詞匯實體的屬性的名稱和取值,在屬性表中生成表示該詞匯實體的屬性的名稱和取值對應(yīng)關(guān)系的屬性標(biāo)志;將元素表中與詞匯實體對應(yīng)的元素標(biāo)志以及屬性表中與詞匯實體的屬性對應(yīng)的屬性標(biāo)志成對地存儲到元素屬性關(guān)系表中;將各詞匯實體的路徑以及元素表中與詞匯實體對應(yīng)的元素標(biāo)志成對地存儲到主數(shù)據(jù)表中。
2.根據(jù)權(quán)利要求1所述的EPCIS數(shù)據(jù)的存儲方法,其特征在于,所述將事件域?qū)嶓w的名 稱和取值成對地存儲到元素表中之前,所述存儲方法還包括以下步驟查找元素表中是否存在該對事件域?qū)嶓w的名稱和取值的記錄,如果存在,則不再存儲 該對事件域?qū)嶓w的名稱和取值;否則,將該事件域?qū)嶓w的名稱和取值成對地存儲到元素表 中。
3.根據(jù)權(quán)利要求1或2所述的EPCIS數(shù)據(jù)的存儲方法,其特征在于,所述將事件域?qū)嶓w 的屬性的名稱和取值成對地存儲到屬性表中之前,所述存儲方法還包括以下步驟查找屬性表中是否存在該對事件域?qū)嶓w的屬性的名稱和取值的記錄,如果存在,則不 再存儲該對事件域?qū)嶓w的屬性的名稱和取值;否則,將該事件域?qū)嶓w的屬性的名稱和取值 成對地存儲到屬性表中。
4.根據(jù)權(quán)利要求1所述的EPCIS數(shù)據(jù)的存儲方法,其特征在于,所述將詞匯實體的名稱和取值成對地存儲到元素表中之前,所述存儲方法還包括以下步驟查找元素表中是否存在該對詞匯實體的名稱和取值的記錄,如果存在,則不再存儲該 對詞匯實體的名稱和取值;否則,將該詞匯實體的名稱和取值成對地存儲到元素表中。
5.根據(jù)權(quán)利要求1或4所述的EPCIS數(shù)據(jù)的存儲方法,其特征在于,所述將詞匯實體的 屬性的名稱和取值成對地存儲到屬性表中之前,所述存儲方法還包括以下步驟查找屬性表中是否存在該對詞匯實體的屬性的名稱和取值的記錄,如果存在,則不再 存儲該對詞匯實體的屬性的名稱和取值;否則,將該詞匯實體的屬性的名稱和取值成對地 存儲到屬性表中。
6.根據(jù)權(quán)利要求1所述的EPCIS數(shù)據(jù)的存儲方法,其特征在于,所述初始化數(shù)據(jù)庫連接 之前,所述存儲方法還包括以下步驟對收到的EPCIS數(shù)據(jù)進(jìn)行語法分析,如果存在語法錯誤,則結(jié)束對當(dāng)前EPCIS數(shù)據(jù)的處 理并繼續(xù)接收EPCIS數(shù)據(jù);否則,初始化數(shù)據(jù)庫連接。
7.—種EPCIS數(shù)據(jù)的存儲裝置,其特征在于,該存儲裝置包括數(shù)據(jù)表設(shè)置模塊、EPCIS 數(shù)據(jù)接收模塊、EPCIS數(shù)據(jù)類型判斷模塊、事件存儲模塊及主數(shù)據(jù)存儲模塊;其中,數(shù)據(jù)表設(shè)置模塊,用于在EPCIS系統(tǒng)的數(shù)據(jù)庫中設(shè)置元素表、屬性表、元素屬性關(guān)系 表、事件表及主數(shù)據(jù)表;EPCIS數(shù)據(jù)接收模塊,用于接收EPCIS數(shù)據(jù);EPCIS數(shù)據(jù)類型判斷模塊,用于在初始化數(shù)據(jù)連接之后,判斷EPCIS數(shù)據(jù)為事件還是主 數(shù)據(jù);事件存儲模塊,用于當(dāng)EPCIS數(shù)據(jù)為事件時,將事件存儲到數(shù)據(jù)庫中; 主數(shù)據(jù)存儲模塊,用于當(dāng)EPCIS數(shù)據(jù)為主數(shù)據(jù)時,將主數(shù)據(jù)存儲到數(shù)據(jù)庫中; 其中,事件存儲模塊包括事件域?qū)嶓w獲取模塊、事件域?qū)嶓w存儲模塊、事件域?qū)嶓w的 屬性存儲模塊、事件域?qū)嶓w及其屬性關(guān)系存儲模塊及事件域?qū)嶓w路徑存儲模塊; 事件域?qū)嶓w獲取模塊,用于獲取組成事件的所有事件域?qū)嶓w; 事件域?qū)嶓w存儲模塊,用于將各事件域?qū)嶓w的名稱和取值成對地存儲到元素表中,且 對應(yīng)每對存儲的事件域?qū)嶓w的名稱和取值,在元素表中生成表示該事件域?qū)嶓w的名稱和取 值對應(yīng)關(guān)系的元素標(biāo)志;事件域?qū)嶓w的屬性存儲模塊,用于將各事件域?qū)嶓w的所有屬性的名稱和取值成對地存 儲到屬性表中,且對應(yīng)每對存儲的事件域?qū)嶓w的屬性的名稱和取值,在屬性表中生成表示 該事件域?qū)嶓w的屬性的名稱和取值對應(yīng)關(guān)系的屬性標(biāo)志;事件域?qū)嶓w及其屬性關(guān)系存儲模塊,用于將元素表中與事件域?qū)嶓w對應(yīng)的元素標(biāo)志以 及屬性表中與事件域?qū)嶓w的屬性對應(yīng)的屬性標(biāo)志成對地存儲到元素屬性關(guān)系表中;事件域?qū)嶓w路徑存儲模塊,用于將各事件域?qū)嶓w的路徑以及元素表中與事件域?qū)嶓w對 應(yīng)的元素標(biāo)志成對地存儲到事件表中;其中,主數(shù)據(jù)存儲模塊包括詞匯實體獲取模塊、詞匯實體存儲模塊、詞匯實體的屬性 存儲模塊、詞匯實體及其屬性關(guān)系存儲模塊及詞匯實體路徑存儲模塊; 詞匯實體獲取模塊,用于獲取組成主數(shù)據(jù)的所有詞匯實體;詞匯實體存儲模塊,用于將各詞匯實體的名稱和取值成對地存儲到元素表中,且對應(yīng) 每對存儲的詞匯實體的名稱和取值,在元素表中生成表示該詞匯實體的名稱和取值對應(yīng)關(guān)系的元素標(biāo)志;詞匯實體的屬性存儲模塊,用于將各詞匯實體的所有屬性的名稱和取值成對地存儲到 屬性表中,且對應(yīng)每對存儲的詞匯實體的屬性的名稱和取值,在屬性表中生成表示該詞匯 實體的屬性的名稱和取值對應(yīng)關(guān)系的屬性標(biāo)志;詞匯實體及其屬性關(guān)系存儲模塊,用于將元素表中與詞匯實體對應(yīng)的元素標(biāo)志以及屬 性表中與詞匯實體的屬性對應(yīng)的屬性標(biāo)志成對地存儲到元素屬性關(guān)系表中;詞匯實體路徑存儲模塊,用于將各詞匯實體的路徑以及元素表中與詞匯實體對應(yīng)的元 素標(biāo)志成對地存儲到主數(shù)據(jù)表中。
8.根據(jù)權(quán)利要求7所述的EPCIS數(shù)據(jù)的存儲裝置,其特征在于,所述事件存儲模塊還包 括事件域?qū)嶓w查找模塊、或事件域?qū)嶓w的屬性查找模塊,或這二者的組合;其中,事件域?qū)嶓w查找模塊,用于將事件域?qū)嶓w的名稱和取值成對地存儲到元素表中之前, 查找元素表中是否存在該對事件域?qū)嶓w的名稱和取值的記錄,如果存在,則不再存儲該對 事件域?qū)嶓w的名稱和取值;否則,利用事件域?qū)嶓w存儲模塊將該事件域?qū)嶓w的名稱和取值 成對地存儲到元素表中;事件域?qū)嶓w的屬性查找模塊,用于將事件域?qū)嶓w的屬性的名稱和取值成對地存儲到元 素表中之前,查找元素表中是否存在該對事件域?qū)嶓w的屬性的名稱和取值的記錄,如果存 在,則不再存儲該對事件域?qū)嶓w的名稱和取值;否則,利用事件域?qū)嶓w的屬性存儲模塊將該 事件域?qū)嶓w的名稱和取值成對地存儲到元素表中。
9.根據(jù)權(quán)利要求7或8所述的EPCIS數(shù)據(jù)的存儲裝置,其特征在于,所述主數(shù)據(jù)存儲模 塊還包括詞匯實體查找模塊,或詞匯實體的屬性查找模塊,或這兩者的組合;其中,詞匯實體查找模塊,用于將詞匯實體的名稱和取值成對地存儲到元素表中之前,查找 元素表中是否存在該對詞匯實體的名稱和取值的記錄,如果存在,則不再存儲該對詞匯實 體的名稱和取值;否則,利用詞匯實體存儲模塊將該詞匯實體的名稱和取值成對地存儲到 元素表中;詞匯實體的屬性查找模塊,用于將詞匯實體的屬性的名稱和取值成對地存儲到屬性表 中之前,查找屬性表中是否存在該對詞匯實體的屬性的名稱和取值的記錄,如果存在,則不 再存儲該對詞匯實體的屬性的名稱和取值;否則,利用詞匯實體的屬性存儲模塊將該詞匯 實體的屬性的名稱和取值成對地存儲到屬性表中。
10.根據(jù)權(quán)利要求7所述的EPCIS數(shù)據(jù)的存儲裝置,其特征在于,所述存儲裝置還包括 EPCIS數(shù)據(jù)處理模塊,用于對收到的EPCIS數(shù)據(jù)進(jìn)行語法分析,如果存在語法錯誤,則結(jié)束 對當(dāng)前EPCIS數(shù)據(jù)的處理并繼續(xù)接收EPCIS數(shù)據(jù);否則,初始化數(shù)據(jù)庫連接。
全文摘要
本發(fā)明公開了一種電子產(chǎn)品碼信息服務(wù)(EPCIS)數(shù)據(jù)的存儲方法,該存儲方法包括在EPCIS系統(tǒng)的數(shù)據(jù)庫中設(shè)置元素表、屬性表、元素屬性關(guān)系表、事件表及主數(shù)據(jù)表;接收EPCIS數(shù)據(jù);初始化數(shù)據(jù)庫連接,并判斷EPCIS數(shù)據(jù)的類型,如果EPCIS數(shù)據(jù)為事件,則據(jù)存儲事件的算法將事件存儲到數(shù)據(jù)庫中;否則,如果EPCIS數(shù)據(jù)為主數(shù)據(jù),則據(jù)存儲主數(shù)據(jù)的算法將主數(shù)據(jù)存儲到數(shù)據(jù)庫中。本發(fā)明還公開了一種EPCIS數(shù)據(jù)的存儲裝置。采用本發(fā)明存儲數(shù)據(jù)可省去表中的冗余數(shù)據(jù)。
文檔編號G06F17/30GK101826078SQ20091007925
公開日2010年9月8日 申請日期2009年3月5日 優(yōu)先權(quán)日2009年3月5日
發(fā)明者劉辛燕, 張雪飛, 甘國華, 賀曉猛 申請人:中興通訊股份有限公司