專利名稱:用于數(shù)據(jù)存儲(chǔ)與檢索的方法與裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明提供本質(zhì)上與已知的概念不同的且對傳統(tǒng)計(jì)算相關(guān)聯(lián)的許多缺點(diǎn)實(shí)現(xiàn)改進(jìn)的計(jì)算方法的基礎(chǔ)。
傳統(tǒng)的計(jì)算方法系統(tǒng)通常從準(zhǔn)備需求什么及如何實(shí)現(xiàn)這一需求的詳細(xì)規(guī)范開始。這一初始階級通常充滿著困難。在見到至少一部分系統(tǒng)已經(jīng)操作以前,通常并不了解實(shí)際上需要的是什么。此外,許多系統(tǒng)是如此之大與復(fù)雜,甚至極難提出一個(gè)內(nèi)部完全一致的系統(tǒng)規(guī)范。
建立一個(gè)傳統(tǒng)的計(jì)算機(jī)系統(tǒng)的第二階段是將系統(tǒng)規(guī)范傳達(dá)給專業(yè)程序員,在這一階段中通常會(huì)遇到進(jìn)一步的困難。撇開在解釋或單純實(shí)現(xiàn)規(guī)范中所提出的需求不說,面對傳統(tǒng)的計(jì)算的最大問題之一便是生成說明該系統(tǒng)干什么與如何干以及該計(jì)算機(jī)程序的后續(xù)維護(hù)的文檔。在需要將一個(gè)附加的域加到一個(gè)現(xiàn)有的記錄結(jié)構(gòu)上時(shí)便會(huì)出現(xiàn)在維護(hù)現(xiàn)有系統(tǒng)中所經(jīng)常遇到的問題。通常必須修正該計(jì)算機(jī)系統(tǒng)內(nèi)訪問包含該記錄的文件的所有程序。
已有許多研究顯示甚至高達(dá)80%的現(xiàn)代編程工作是花在維護(hù)現(xiàn)有系統(tǒng)上的。從而只允許20%的可利用的編程工作是花在開發(fā)新的應(yīng)用上的。
即使在最基本的級上也會(huì)出現(xiàn)困難。例如,當(dāng)將數(shù)據(jù)存儲(chǔ)在磁性介質(zhì)上時(shí),通常是以固定長度或可變長度記錄兩者之一存儲(chǔ)的。尤其是當(dāng)需要分類所存儲(chǔ)的數(shù)據(jù)與/或希望快速存取時(shí),所存儲(chǔ)的數(shù)據(jù)是加索引的并且最好是固定長度記錄。索引可作為原數(shù)據(jù)的一部分存儲(chǔ)或與之分開存儲(chǔ)。索引是固定長度的。固定長度記錄具有明顯的缺點(diǎn),即必須剪裁該數(shù)據(jù)以符合所選擇的記錄長度。
非??捎^的人力資源已經(jīng)花費(fèi)在設(shè)計(jì)計(jì)算機(jī)數(shù)據(jù)庫系統(tǒng)上。這種系統(tǒng)的費(fèi)用與普及表明現(xiàn)代社會(huì)中對這種系統(tǒng)的潛在需求。系統(tǒng)需求變得越來越復(fù)雜,并且其一個(gè)方面已成為對記錄與處理多對多關(guān)系(relationship)的需求。有些系統(tǒng)聲稱已符合這些要求。但迄今所知,它們都呈現(xiàn)為具有一定局限性與/或非常復(fù)雜的處理要求。
本發(fā)明力求采用與作為基礎(chǔ)的傳統(tǒng)計(jì)算系統(tǒng)不同的概念性途徑減少所有上述缺點(diǎn)。
按照本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)存儲(chǔ)與檢索方法,包括形成具有一個(gè)關(guān)鍵域的記錄,該關(guān)鍵域包含兩個(gè)數(shù),一個(gè)標(biāo)識實(shí)體類型而一個(gè)則標(biāo)識所標(biāo)識的類型的一個(gè)實(shí)體的一種屬性。
按照本發(fā)明的另一方面,提供了數(shù)據(jù)存儲(chǔ)與檢索的一種方法,包括形成具有一個(gè)關(guān)鍵域的記錄,該關(guān)鍵域包含三個(gè)數(shù),一個(gè)標(biāo)識實(shí)體類型、一個(gè)標(biāo)識所標(biāo)識的類型的一個(gè)實(shí)體,而一個(gè)則標(biāo)識該實(shí)體的一種屬性。
按照本發(fā)明的另一方面,提供了一種數(shù)據(jù)存儲(chǔ)與檢索的方法,包括形成具有一個(gè)關(guān)鍵域的記錄,該關(guān)鍵域包含從一個(gè)將數(shù)字分配給字的查找表或文件導(dǎo)出的數(shù)字。
按照本發(fā)明的另一方面,提供了一種數(shù)據(jù)存儲(chǔ)與檢索的方法,包括形成數(shù)據(jù)記錄與控制數(shù)據(jù)處理流的記錄,及將所述記錄一起存儲(chǔ)在一個(gè)公用文件中。
按照本發(fā)明的另一方面,提供了一種數(shù)據(jù)存儲(chǔ)與檢索的方法,包括作為(該記錄具有一個(gè)包含信息的關(guān)鍵域)記錄存儲(chǔ)的數(shù)據(jù)之間的關(guān)系的細(xì)節(jié),這些信息能夠標(biāo)識包含所存儲(chǔ)的關(guān)系的細(xì)節(jié)的數(shù)據(jù)記錄的關(guān)鍵域。
按照本發(fā)明的另一方面,提供了實(shí)現(xiàn)前面五段中任何一段中所描述的方法的裝置。
下面只是以示例的方式并參照附圖描述本發(fā)明的一個(gè)實(shí)施例及其類型;附圖中
圖1示出按照本發(fā)明的一個(gè)實(shí)施例形成的一個(gè)典型記錄,圖2示出按照本發(fā)明的一個(gè)實(shí)施例形成的一個(gè)典型記錄的關(guān)鍵域,圖3示出利用部分關(guān)鍵域來以數(shù)字形式存儲(chǔ)壓縮的字母數(shù)字信息,圖4a與4b示出按照本發(fā)明所描述的實(shí)施例形成的實(shí)際記錄的示例,圖5a與5b示出語義網(wǎng)絡(luò),在一個(gè)事例中描繪實(shí)體類型與屬性間的關(guān)系,在另一事例中描繪實(shí)體類型與應(yīng)用間的關(guān)系,圖6示出描繪應(yīng)用與操作員之間的關(guān)系的語義網(wǎng)絡(luò),以及圖7示出描繪實(shí)體類型與主題詞項(xiàng)之間的關(guān)系的語義網(wǎng)絡(luò)。
首先,必須說明選擇來形成關(guān)鍵域的信息,由于這本身是本發(fā)明的概念的一個(gè)重要方面。為了便于引用,在下面的說明中采用了一定的命名法。這一命名法的基礎(chǔ)如下在首先考慮一個(gè)信息項(xiàng)時(shí),考慮該項(xiàng)的類型。即考慮“實(shí)體類型(entity type)”。
其次考慮該特定的項(xiàng)本身,即考慮“實(shí)體”(entity)。
接著考慮關(guān)于該實(shí)體的已知或想要知道的事物。即考慮一個(gè)實(shí)體的“屬性”。
下面給出一個(gè)簡單的實(shí)例;根據(jù)一個(gè)稱作ABCLimited(有限公司)的假想的公司,-實(shí)體類型為“公司”-實(shí)體為“ABC Limited”-ABC Limited的一種屬性為其實(shí)際“營業(yè)地址”-ABC Limited的另一屬性為其實(shí)際“營業(yè)電話號碼”。
顯然,在一個(gè)系統(tǒng)中可記錄許多不同的實(shí)體類型,在一個(gè)實(shí)體類型中可存在許多實(shí)體,而任一實(shí)體可存在許多屬性。如果將實(shí)體類型認(rèn)為是一個(gè)實(shí)體,則實(shí)體類型本身可具有屬性,例如,特征“營業(yè)地址”可認(rèn)為是實(shí)體類型“公司”的一種屬性,即所有公司都有營業(yè)地址。
同時(shí),任何一個(gè)實(shí)體可屬于若干不同的實(shí)體類型,并且任何一種屬性可以是一個(gè)以上實(shí)體類型的屬性。例如,考慮既是客戶又是供應(yīng)商的公司。實(shí)體類型客戶與供應(yīng)商的實(shí)體值兩者是相同的,即該公司的實(shí)際名稱。類似地,客戶地址與供應(yīng)商地址的屬性值兩者是相同的。然而,供應(yīng)商與客戶的聯(lián)系名稱的屬性值很可能是互相不同的。
如果有人試圖維護(hù)這些復(fù)雜的交叉關(guān)系,在傳統(tǒng)的系統(tǒng)中便會(huì)出現(xiàn)困難,在一個(gè)實(shí)體屬于若干不同的實(shí)體類型時(shí)出現(xiàn)這些困難。這便是,當(dāng)人們打算避免分開記錄各種關(guān)系時(shí)。且不說數(shù)據(jù)存儲(chǔ)所需的空間,由于在必須更新數(shù)據(jù)時(shí)會(huì)產(chǎn)生的困難,存在著強(qiáng)烈的愿望要避免分開存儲(chǔ)各關(guān)系。最好公用的數(shù)據(jù)只存儲(chǔ)一次。這樣便不存在同一數(shù)據(jù)的不同表項(xiàng)中出現(xiàn)差異的危險(xiǎn)。只需要更新一個(gè)表項(xiàng),并且減少了數(shù)據(jù)項(xiàng)。但是在傳統(tǒng)的系統(tǒng)中難以得到這種好處。
考慮另一個(gè)簡單的例子ABC Limited有十名雇員將“公司”作為實(shí)體類型,“ABC Limited”作為實(shí)體,“雇員名”作為屬性描述,而諸如“Kevin Smith”作為屬性值。然而“雇員名”本身可認(rèn)為是一個(gè)實(shí)體(它可認(rèn)為是實(shí)體“ABC Limited”的一個(gè)子實(shí)體)。即,實(shí)體(或子實(shí)體)“雇員名”可具有“營業(yè)電話號碼”作為其屬性描述。如果分開存儲(chǔ)各關(guān)系,相同的電話號碼存儲(chǔ)了十次,每一雇員一次。再者如果電話號碼改變了,便存在著電話號碼的全部十個(gè)實(shí)例沒有一致地更新的相當(dāng)大的危險(xiǎn)性。當(dāng)然,最好是將電話號碼只存儲(chǔ)一次。然而,屬性描述“營業(yè)電話號碼”的屬性值實(shí)際上是公司與雇員之間的關(guān)系的一種屬性。如果這一關(guān)系斷開了,即Kevin Smith停止作為ABC Limited的一名雇員,則顯然該屬性值(即實(shí)際電話號碼)不再有效。實(shí)體“KevinSmith”完全可能采用一個(gè)新值作為屬性描述“營業(yè)電話號碼”,但與ABC Limited的關(guān)系斷開了,結(jié)果,顯然該關(guān)系的屬性(營業(yè)電話號碼)不再有效。解除關(guān)系同時(shí)消除了屬性。按照這些概念的數(shù)據(jù)存儲(chǔ)是傳統(tǒng)的系統(tǒng)所不能達(dá)到的。反之,本發(fā)明是以按照這種概念的數(shù)據(jù)存儲(chǔ)為基礎(chǔ)的。
如上關(guān)于“雇員名”的值所指出的,實(shí)體可具有子實(shí)體。從所描述的認(rèn)識中應(yīng)理解,即使由于作為解除了關(guān)系(即受ABC Limited雇用)的結(jié)果而消除了該屬性,同時(shí)消除了以前的屬性值(即實(shí)際號碼)“Kevin Smith”很可能保留一個(gè)“營業(yè)電話號碼”。“Kevin Smith”保留帶有描述“營業(yè)電話號碼”的屬性這一事實(shí)表明“KevinSmith”實(shí)際上是作為一個(gè)獨(dú)立的實(shí)體考慮的。這一特定的實(shí)體原來是實(shí)體“ABC Limited”的一個(gè)子實(shí)體。該子實(shí)體“Kevin Smith”將具有帶“家庭住址”描述的一種屬性。然而“家庭住址”本身可具有一種屬性。一個(gè)例子可能是帶有描述“應(yīng)納稅值”的一種屬性。從而,具有描述“家庭住址”的屬性的值本身是作為一個(gè)實(shí)體考慮的。這里,我們得到“Kevin Smith”作為“ABC Limited”的一個(gè)子實(shí)體,而“家庭住址”作為“Kevin Smith”的一個(gè)子實(shí)體。這可認(rèn)為是實(shí)體的兩個(gè)遞降級。在描述的本發(fā)明的實(shí)施例中,可利用高達(dá)109個(gè)值來標(biāo)識獨(dú)立的實(shí)體值。通過遞降一級,即考慮第一級子實(shí)體,又能利用109個(gè)值。如果最高級的實(shí)體值各有與之關(guān)聯(lián)的一個(gè)獨(dú)立的子實(shí)體級,則能夠看出可以存儲(chǔ)109×109個(gè)值,并且對于實(shí)體的各子級依此類推。
通常,人們還必須考慮記錄在磁性介質(zhì)上的物理位置。這很可能是已經(jīng)采用一個(gè)散列例程選定了的,從而對該記錄的指針直接與磁性介質(zhì)上存儲(chǔ)該記錄的物理位置的地址相關(guān)。結(jié)果,對傳統(tǒng)系統(tǒng)中的記錄的存取通常包含磁性介質(zhì)上的物理位置之間的可觀的移動(dòng)。采用本發(fā)明可以避免這一點(diǎn),最終得到存取與處理時(shí)間的改進(jìn)。
回到實(shí)際存儲(chǔ)的信息以及實(shí)際上與該信息相關(guān)的或從其產(chǎn)生的知識的一般性考慮;如果單純地觀察數(shù)據(jù)庫內(nèi)的一個(gè)記錄,便沒有關(guān)于數(shù)據(jù)的意義的指示。這便是,記錄并不存儲(chǔ)數(shù)據(jù)的上下文。在使用本發(fā)明的系統(tǒng)中,人們用提出問題來檢索存儲(chǔ)在一個(gè)記錄中的數(shù)據(jù),對問題的回答利用關(guān)鍵域高效地導(dǎo)航通過這些記錄。從而,在檢索某一記錄時(shí),對該記錄的分析或?qū)Ш揭讯x了正在考慮的數(shù)據(jù)的上下文。由于上下文是這樣定義的,不需要將它存儲(chǔ)在記錄本身中。這是嚴(yán)格地與傳統(tǒng)的數(shù)據(jù)存儲(chǔ)系統(tǒng)對立的。再者,具有最重大的意義。即,能夠改變數(shù)據(jù)庫的任何一個(gè)獨(dú)立部分而無須考慮該系統(tǒng)的其余部分上的潛在后果。這便是,只須保證各獨(dú)立關(guān)系是正確地記錄的便能保證整個(gè)系統(tǒng)的完整性。這是與傳統(tǒng)的系統(tǒng)極端嚴(yán)格對立的。
在傳統(tǒng)的系統(tǒng)中,對系統(tǒng)的任何部分的改變必須考慮對該系統(tǒng)的整個(gè)其余部分的潛在的后果性影響。通常,這事實(shí)上是超出負(fù)責(zé)了解與充分地處理由系統(tǒng)的一部分的改變所引發(fā)的所有后果的人員的現(xiàn)實(shí)能力的。至少,這種傳統(tǒng)的系統(tǒng)中的改變單純在維護(hù)該系統(tǒng)中便招致巨大的開銷?;ㄙM(fèi)在維護(hù)系統(tǒng)中的時(shí)間與人力當(dāng)然不能花費(fèi)在提高生產(chǎn)力上,即在擴(kuò)充該系統(tǒng)或建立新系統(tǒng)上。
這一特征的一個(gè)重要方面便是確認(rèn)是在數(shù)據(jù)庫內(nèi)而不是在一個(gè)獨(dú)立的程序內(nèi)進(jìn)行的。
從而,很明顯,本發(fā)明所達(dá)到的是將傳統(tǒng)上在計(jì)算機(jī)程序中編碼的規(guī)則與過程真正地作為所存儲(chǔ)的數(shù)據(jù)本身的一部分有效地存儲(chǔ)。同時(shí),數(shù)據(jù)的上下文不是作為該數(shù)據(jù)的部分存儲(chǔ)的,它是從數(shù)據(jù)檢索過程本身產(chǎn)生的。
這便是,在數(shù)據(jù)檢索實(shí)踐中存在著內(nèi)在的知識。但是,這些知識的出現(xiàn),或者作為最低限度它們的使用,是以前未曾認(rèn)識的。再者,使用這些知識的潛力以便建立一個(gè)不需要在維護(hù)作為整體的系統(tǒng)的完整性中花費(fèi)大量人力的一個(gè)系統(tǒng),是以前未曾認(rèn)識的。
到達(dá)一個(gè)記錄所取的路徑可認(rèn)為是導(dǎo)航通過所存儲(chǔ)的數(shù)據(jù)。下面說明用來實(shí)現(xiàn)導(dǎo)航的機(jī)制。
在本發(fā)明的系統(tǒng)中,簡單地保持到達(dá)一個(gè)記錄所取的路徑的一個(gè)記錄,便能“反向”導(dǎo)航通過數(shù)據(jù)庫。這一能力是通常所希望的。通常在傳統(tǒng)的系統(tǒng)中沒有這種能力,而在存在時(shí)則包含要應(yīng)用非常復(fù)雜的規(guī)則與過程。
在傳統(tǒng)的計(jì)算中,人們建立一個(gè)原型來論證與/或證明所提出的應(yīng)用。隨后,必須在整個(gè)工作系統(tǒng)之前編碼該原型。通常,編碼階段是最費(fèi)時(shí)與容易出錯(cuò)的。利用本發(fā)明,能夠在“活的”系統(tǒng)上建立原型(因?yàn)閷ο到y(tǒng)的其余部分的完整性沒有潛在的后果),并且該原型立即是所要的應(yīng)用的最終活版本。
這些考慮連同上述的關(guān)于記錄位置的長處(在ABCLimited雇員電話號碼的例子中),與傳統(tǒng)的計(jì)算技術(shù)相比,在效率上得到顯著的改進(jìn)。改進(jìn)了數(shù)據(jù)檢索的存取時(shí)間。極大地改進(jìn)了應(yīng)用開發(fā)時(shí)間,并且在傳統(tǒng)系統(tǒng)的維護(hù)開銷與本發(fā)明的系統(tǒng)的幾乎完全不存在維護(hù)開銷之間不存在可以比較之處。
本發(fā)明還產(chǎn)生其它優(yōu)點(diǎn)。這些優(yōu)點(diǎn)之一便是整個(gè)系統(tǒng)只受一個(gè)非常小的“核心”程序控制。整個(gè)核心程序能保存在傳統(tǒng)的計(jì)算硬件的處理存儲(chǔ)器中(即使有許多用戶及使用虛擬的,即頁式硬件系統(tǒng))。現(xiàn)在描述的實(shí)施例是在IBM AS400機(jī)上實(shí)現(xiàn)的。
本發(fā)明產(chǎn)生的另一優(yōu)點(diǎn)涉及該核心程序的更新。如果任何時(shí)候考慮要更新核心程序時(shí),多半是使關(guān)于以一定記錄類型存儲(chǔ)的數(shù)據(jù)能夠進(jìn)行某種新形式的處理,能夠非常方便地實(shí)現(xiàn)更新的核心程序。在一般情況中,不需要經(jīng)常更新核心程序。然而,一旦需要更新,可以在不改動(dòng)應(yīng)用規(guī)則及過程下進(jìn)行。這是可能的,因?yàn)閭鹘y(tǒng)上被認(rèn)為是“應(yīng)用程序”的是不作為“程序”對待的。它們并不構(gòu)成核心程序的一部分或者以任何方式改變核心程序。如上所述,傳統(tǒng)的應(yīng)用程序的等價(jià)物,按照本發(fā)明實(shí)際上是作為數(shù)據(jù)本身的一部分存儲(chǔ)的與/或部分地作為包含在檢索數(shù)據(jù)的上下文或?qū)Ш街械囊徊糠謨?nèi)在地存儲(chǔ)的。
極大地避免了文檔問題,因?yàn)閷?shí)際上不存在傳統(tǒng)意義上的程序。從而,與傳統(tǒng)的系統(tǒng)相比,實(shí)際上不需要文檔。
本發(fā)明的系統(tǒng)能夠?qū)崿F(xiàn)逆關(guān)系的定義。這是本發(fā)明的一種特別有利的特征。
這里所描述的本發(fā)明的實(shí)施例主要包含一個(gè)單一數(shù)據(jù)庫文件,該文件中存儲(chǔ)有各種類型的記錄。記錄具有固定的長度,并且具有一個(gè)固定長度的、相對短的關(guān)鍵域。數(shù)據(jù)通常以存在于數(shù)據(jù)之間的關(guān)系的形式存儲(chǔ)。與傳統(tǒng)的程序概念觀點(diǎn)和使用截然不同,數(shù)據(jù)處理是利用存儲(chǔ)在數(shù)據(jù)庫中的記錄完成的。減少了傳統(tǒng)配置中固有的嚴(yán)重缺點(diǎn)并能得到其它效益。
對于關(guān)鍵域后面的固定長度記錄的其余部分,按照本發(fā)明的,存儲(chǔ)在數(shù)據(jù)庫內(nèi)的記錄可具有許多不同的數(shù)據(jù)結(jié)構(gòu)。在一個(gè)特定類型的記錄內(nèi)可存在不同的結(jié)構(gòu)。從而,便于按照它們的功能來考慮記錄。以下是功能上不同的記錄類型關(guān)系記錄、簡單數(shù)據(jù)記錄、選擇性記錄、菜單記錄、代用記錄(surrogate record)及事務(wù)記錄。
雖然功能不同,由于它們都具有相同的固定長度且都具有相同的關(guān)鍵域結(jié)構(gòu),所以所有這些記錄類型可以存儲(chǔ)在一個(gè)公用的數(shù)據(jù)庫中。
如上所述,數(shù)據(jù)通常是以關(guān)系的形式存儲(chǔ)的,并且對應(yīng)的記錄在此稱作關(guān)系記錄。有時(shí)存在著要存儲(chǔ)的獨(dú)立數(shù)據(jù),而為這一目的使用簡單數(shù)據(jù)記錄。選擇性記錄是給于用來控制數(shù)據(jù)處理的記錄的名字。選擇要進(jìn)行的不同操作是用所謂菜單記錄進(jìn)行的,所謂代用記錄是用來存儲(chǔ)交叉參照信息的記錄。事條記錄是用來實(shí)現(xiàn)獨(dú)立檢查跟蹤的。這一檢查跟蹤不是系統(tǒng)所存儲(chǔ)的用戶數(shù)據(jù)的內(nèi)在的部分。所有這些類型的記錄是存儲(chǔ)在同一數(shù)據(jù)庫中的并且它們都具有相同的基本結(jié)構(gòu)。下面描述不同類型的記錄的形成與使用。然而首先給出公用記錄格式,特別是關(guān)鍵域的說明。
簡單地說,用在本發(fā)明的這一實(shí)施例中記錄長度為128字節(jié)。其中,28個(gè)字節(jié)用來構(gòu)成關(guān)鍵域。關(guān)鍵域可認(rèn)為是由各長度為四個(gè)字節(jié)的七個(gè)域構(gòu)成的,各四字節(jié)域由作為一個(gè)四字節(jié)整數(shù)存儲(chǔ)的九個(gè)十進(jìn)制位構(gòu)成。如上所述,關(guān)鍵域由數(shù)字構(gòu)成;即它是純數(shù)字的。然而,在大多數(shù)實(shí)際計(jì)算使用中將需要標(biāo)識字母型或字母數(shù)字型數(shù)據(jù)。在本發(fā)明的實(shí)施例中,對于字母型或字母數(shù)字型與數(shù)字值之間的至少大部分翻譯,采用了一個(gè)獨(dú)立的查找表。這便是本發(fā)明的許多優(yōu)點(diǎn)從中產(chǎn)生的關(guān)鍵域的不同部分的特殊結(jié)構(gòu)與意義。
上面提到的查找表可認(rèn)為是,并且在此后稱作字典。關(guān)鍵域的各部分的結(jié)構(gòu)和意義與系統(tǒng)用關(guān)系的形式存儲(chǔ)數(shù)據(jù)這一事實(shí)相關(guān)。
從建立一個(gè)字典開始已完成了本發(fā)明的一種實(shí)現(xiàn)。該字典是通過將大量英語及其它基于阿拉伯字符的語言的常用字及專用名輸入一個(gè)傳統(tǒng)的計(jì)算機(jī)數(shù)據(jù)庫而建立的。將一個(gè)數(shù)字分配給名字,該數(shù)字是與傳統(tǒng)數(shù)據(jù)庫中的字相關(guān)聯(lián)存儲(chǔ)的。已決定用8個(gè)十進(jìn)制位來記錄數(shù)字,設(shè)定字的最大數(shù)目為108個(gè)。在分配數(shù)字給初始輸入的字時(shí),這些字是按字母表序列排列的,并選擇了在整個(gè)0至108的范圍上大致上均勻的數(shù)字分布。
在隨后的系統(tǒng)開發(fā)與操作中,將進(jìn)入該系統(tǒng)的每一個(gè)字加在字典上,當(dāng)然是如果該字尚未出現(xiàn)在字典中。
在構(gòu)成要存儲(chǔ)的數(shù)據(jù)項(xiàng)的關(guān)鍵域或索引時(shí),便使用與名字相關(guān)聯(lián)的數(shù)字值。
本發(fā)明的一個(gè)突出特征是采用一個(gè)固定長度的關(guān)鍵域,對于用戶它可呈現(xiàn)為可變長度的,已決定所生成長度為128個(gè)字節(jié)的固定長度記錄的本發(fā)明的一種實(shí)現(xiàn)方式。前面28個(gè)字節(jié)構(gòu)成該記錄的關(guān)鍵域(或索引)。然而,本發(fā)明也能用可變長度記錄實(shí)現(xiàn)。
以下述方式在本發(fā)明的這一實(shí)施例中完成固定長度的關(guān)鍵域-以數(shù)字形式在關(guān)鍵域中存儲(chǔ)數(shù)據(jù),-使用字典,-在信息上應(yīng)用數(shù)據(jù)縮減來構(gòu)成關(guān)鍵域,以及-通過確定要使用的數(shù)據(jù)來構(gòu)成關(guān)鍵域。
采取了這些步驟之后,本創(chuàng)造性概念便能實(shí)現(xiàn)進(jìn)一步的獨(dú)一無二特征。
現(xiàn)在返回到如何達(dá)到這種存儲(chǔ)的實(shí)踐細(xì)節(jié),把注意力集中在附圖中的圖1至3上?;貞浺幌赂饔涗浀拈L度為128字節(jié),而記錄的關(guān)鍵域使用前28個(gè)字節(jié)。關(guān)鍵域包含標(biāo)識實(shí)體類型、實(shí)體屬性的數(shù)據(jù),實(shí)體類型、實(shí)體與屬性中每一種的實(shí)際值是作為一個(gè)單獨(dú)的128字節(jié)記錄存儲(chǔ)的。一個(gè)記錄的28字節(jié)關(guān)鍵域是通過將存儲(chǔ)的數(shù)據(jù)的實(shí)體類型、實(shí)體與屬性的數(shù)字值的連接而構(gòu)成的。各數(shù)字值為4個(gè)字節(jié)長,且由9個(gè)十進(jìn)制位構(gòu)成。每4個(gè)字節(jié)能具有2×109個(gè)不同的值(允許正與負(fù)值)。因此顯然選擇各9個(gè)十進(jìn)制位4個(gè)字節(jié)來標(biāo)識實(shí)體類型(同樣用于實(shí)體及同樣用于屬性)將滿足該系統(tǒng)的全部的應(yīng)用。實(shí)體類型、實(shí)體及屬性中每一種的數(shù)字值是用字典獲得的(字典用于構(gòu)成實(shí)際相關(guān)記錄的關(guān)鍵域)。
在關(guān)鍵域中,分配22個(gè)十進(jìn)制位用來存儲(chǔ)正在記錄的項(xiàng)的字母數(shù)字型(自然語言)描述。這一描述是以數(shù)字形式存儲(chǔ)的,借此達(dá)到同一個(gè)固定長度的存儲(chǔ)域來存儲(chǔ)呈現(xiàn)為可變長度的數(shù)據(jù)項(xiàng)。圖2與3表示用于這一目的的22個(gè)十進(jìn)制位。在本實(shí)施例中,決定前五個(gè)“字”已足以記錄任何項(xiàng)的字母數(shù)字描述。作出這一選擇并分配了22個(gè)十進(jìn)制位用來存儲(chǔ)它們,以下述方式將兩者結(jié)合在一起順序地縮減該描述的前五個(gè)字的意義?;貞浺幌拢?個(gè)十進(jìn)制位來唯一地定義字典中的字,對五個(gè)字中的每一個(gè)所存儲(chǔ)的十進(jìn)制位的個(gè)數(shù)為第一個(gè)字8位(即全部存儲(chǔ))第二個(gè)字5位第三個(gè)字4位第四個(gè)字3位第五個(gè)字2位合計(jì)22位這便是,數(shù)據(jù)壓縮得到僅僅唯一地標(biāo)識第一個(gè)字的一個(gè)存儲(chǔ)值;字典中一個(gè)以上的字與第二至第五個(gè)字解壓縮值匹配的可能性逐漸增加。然而,對于根據(jù)存儲(chǔ)在數(shù)據(jù)庫中的記錄的諸如字母數(shù)字分類的關(guān)鍵域的功能,所得到的正確結(jié)果往往是足夠的,可以接受作為一種系統(tǒng)制約。
該系統(tǒng)能夠存儲(chǔ)2×106實(shí)體類型,每一實(shí)體類型2×109個(gè)實(shí)體,及每一實(shí)體2×109屬性。
各記錄的關(guān)鍵域或索引便是這樣根據(jù)從下述連接的數(shù)字值構(gòu)成的一個(gè)唯一的數(shù)的實(shí)體類型+實(shí)體+屬性+描述4字節(jié)+4字節(jié)+4字節(jié)+22位本發(fā)明的一個(gè)特別重要的增強(qiáng)方面產(chǎn)生于只考慮實(shí)體類型與屬性描述相連接而成的數(shù)字值便能得到一個(gè)唯一的數(shù)這一創(chuàng)見性認(rèn)識。
即 實(shí)體類型數(shù)+屬性描述數(shù)4字節(jié)+4字節(jié)得出一個(gè)唯一的數(shù)。這一唯一的數(shù)定義該代用數(shù)的目的與上下文,但并不定義該代用數(shù)本身。此后說明代用數(shù)。
附圖中的圖1至4示出按照本發(fā)明的上述實(shí)施例構(gòu)成的記錄的例子。這些圖示出長度各為4字節(jié)的各種記錄域。在圖4a與4b中示出了最多12個(gè)這種域,為了便于參照,將域標(biāo)記為A至L。域A至G構(gòu)成關(guān)鍵域,即記錄的前28個(gè)字節(jié)。對于關(guān)系記錄,域H至L為記錄的最后20個(gè)字節(jié)。對于關(guān)鍵域后面的記錄的其余部分,其它類型的記錄通常具有不同的數(shù)據(jù)結(jié)構(gòu)。在每一個(gè)域內(nèi)部,單個(gè)的位將依次地稱作1至9。這樣,記錄的第一位稱作A1,而記錄的最后一位稱作L9。這一命名法純粹是為了參照方便,在本發(fā)明的實(shí)施例中并無意義。
圖1示出按照本發(fā)明的實(shí)施例的一個(gè)關(guān)系記錄的128字節(jié)記錄是如何由一個(gè)28字節(jié)關(guān)鍵域、15字節(jié)公用數(shù)據(jù)及85字節(jié)用戶數(shù)據(jù)構(gòu)成的。
圖2示出28字節(jié)關(guān)鍵域是如何由各長四個(gè)字節(jié)的七個(gè)域構(gòu)成的。第一個(gè)域包含實(shí)體類型數(shù)。第二個(gè)域包含一個(gè)版本號。第三與第四個(gè)域分別包含實(shí)體數(shù)與屬性數(shù)。域E、F與G包含數(shù)字形式的不同類型數(shù)據(jù)。每一個(gè)四字節(jié)的域由9個(gè)十進(jìn)制位構(gòu)成。
域A不止包含實(shí)體類型數(shù),具體地說,位A1、A8與A9具有特殊意義。
位A1具有值“0”、“3”、“5”或“8”。值“0”表示該記錄包含數(shù)據(jù)。值“3”表示該記錄定義菜單。然而,菜單只是數(shù)據(jù)的一種特定形式。本發(fā)明的實(shí)施例中所使用的另一種記錄類型為選擇性記錄(Option record)。選擇性記錄是用于過程控制的。一個(gè)選擇性記錄能控制其它記錄的處理,它們是諸如簡單數(shù)據(jù)、菜單記錄或其它選擇性記錄。為了得到一個(gè)選擇性記錄的位A1的值,將“5”加在表示數(shù)據(jù)或菜單的值上。從而,位A1中的值“8”表示用于控制菜單處理的一個(gè)選擇性記錄。
前面已指出,域A中包含實(shí)體類型以外的數(shù)據(jù)。詳細(xì)地說,實(shí)體類型數(shù)只包括六個(gè)十進(jìn)制位,它們是位A2至A7(含A2與A7),位A8可具有值“0”或“9”。值“0”表示一個(gè)實(shí)體標(biāo)識符,而值“9”則表示實(shí)體類型內(nèi)的屬性描述與/或?qū)傩灾?,即子?shí)體。
位A9用于表示域E、F及G的第一部分中的標(biāo)識符的類型。位A9可具有值“0”、“1”、“2”、“3”、“4”、“5”、“7”與“8”中任何一個(gè)。不同的值的意義如下0-名稱5-不帶段標(biāo)題的正文1-號碼6-不用
2-日期 7-未壓縮的8字符id3-同義詞8-未壓縮的10字符id4-帶段標(biāo)題的正文9-不用值“0”表示實(shí)體類型標(biāo)識符,即初始菜單與實(shí)體記錄。這一值不用于第二級菜單或?qū)嶓w記錄。
存儲(chǔ)在域B中的版本號包含該數(shù)據(jù)是公用的還是私有的指示。按照這一設(shè)定值,例如,不同的操作員(operator)可以檢索一個(gè)記錄的“同一個(gè)域”的不同的值。它也用在多語種應(yīng)用中,即以不同的語言存儲(chǔ)相同的數(shù)據(jù)。
如上所述,域B存儲(chǔ)記錄的版本號。如果域B中所存儲(chǔ)的值(認(rèn)為全部9位集體表示一個(gè)正常的十進(jìn)制數(shù))小于000010000,則整個(gè)記錄的內(nèi)容對公共存取公開。如果域B中的值大于或等于000010000,則整個(gè)記錄的內(nèi)容限制在由域B中存儲(chǔ)的值所標(biāo)識的用戶組的成員。從而,可以存儲(chǔ)一個(gè)記錄的99999個(gè)版本供不同的用戶組存取。
私有數(shù)據(jù)的概念能以各種方式利用。當(dāng)人們認(rèn)為所存儲(chǔ)的用戶數(shù)據(jù)的一個(gè)用戶視圖是由多個(gè)(但可變數(shù)目的)固定長度記錄構(gòu)成,從而用戶記錄具有可變長度時(shí),這一點(diǎn)具有特殊的優(yōu)點(diǎn)??蓪⒂駼的內(nèi)容設(shè)置為使之表示該記錄包含私有的信用控制信息。只有具有適當(dāng)?shù)挠脩艚M的成員資格的人(并具有適當(dāng)安全級許可證)能夠存取包含在該記錄中的數(shù)據(jù)。在關(guān)于規(guī)則與過程(即等價(jià)于傳統(tǒng)的程序)的存儲(chǔ)中也可以使用公用與私有數(shù)據(jù)之間的區(qū)別。當(dāng)記錄中的一部分?jǐn)?shù)據(jù)是供公眾使用的而一部分?jǐn)?shù)據(jù)是只供私人存取時(shí),這是有意義的。作為域B的使用的一個(gè)例子,一個(gè)供與該系統(tǒng)一起使用的商業(yè)上制備的“應(yīng)用程序”可將域B的內(nèi)容設(shè)定為表示公用數(shù)據(jù)。用戶可能制備來補(bǔ)充該應(yīng)用程序的任何擴(kuò)展可作為私有數(shù)據(jù)存儲(chǔ)。從而,能夠安全地實(shí)現(xiàn)該應(yīng)用程序的任何隨后的版本,只改寫該應(yīng)用程序中標(biāo)志為公用數(shù)據(jù)的部分。用戶定義的擴(kuò)展將不被更新過程所改寫,而在傳統(tǒng)的系統(tǒng)中則是通常會(huì)被改寫的。區(qū)分私有與公用數(shù)據(jù)的域B的潛在使用的另一個(gè)例子為利用這一區(qū)別來標(biāo)識存儲(chǔ)在該記錄中的“私有”求助文本。這便是,能夠非常容易地實(shí)現(xiàn)一個(gè)設(shè)計(jì)成滿足特定用戶或用戶組的求助系統(tǒng)。
如上所述,域C與D分別包含實(shí)體數(shù)與屬性描述數(shù)。代用是一種記錄類型數(shù)。對于一個(gè)代用記錄,域C的值永遠(yuǎn)為0,如圖4B中所示的記錄的情況。這一實(shí)現(xiàn)產(chǎn)生于實(shí)體類型數(shù)與屬性數(shù)的連接提供一個(gè)唯一的數(shù)這一認(rèn)識。為了導(dǎo)航通過數(shù)據(jù)庫,這一唯一的數(shù)是與代用數(shù)一起使用的,有如下面所說明的。
雖然所有記錄都是存儲(chǔ)在一個(gè)單一的文件中的,可認(rèn)為關(guān)鍵域是用來標(biāo)識該文件內(nèi)的不同數(shù)據(jù)表的,當(dāng)然還標(biāo)識唯一的記錄。在這一意義上,可認(rèn)為域A、B、C與D標(biāo)識一個(gè)特定的表,而域E、F與G則標(biāo)識表內(nèi)的記錄。事實(shí)上,由域E、F與G構(gòu)成的記錄標(biāo)識符是加上位A9前綴的,A9為該記錄標(biāo)識符的實(shí)際部分。
圖3示出域E與F連同域G的前四位如何典型地用于存儲(chǔ)由某些字母數(shù)字型信息的數(shù)據(jù)壓縮構(gòu)成的22個(gè)十進(jìn)制位的。位G5用作能夠區(qū)別復(fù)制的后綴。位G6、G7與G8用作一個(gè)第二后綴。這一記錄后綴使得能夠以相同的關(guān)系類型簡單地存儲(chǔ)相同記錄之間的多種關(guān)系。通常設(shè)定為省缺值的位G9被設(shè)定為值“9”。如果位A9具有值“0”,則域E、F與G(前4位)可包含允許復(fù)制的一個(gè)壓縮的名或一個(gè)18位未壓縮的數(shù),或者不允許復(fù)制的一個(gè)22位數(shù)。這些不同的可能性是由選擇性記錄決定的。如果位A9具有值“1”,則域E、F與G(前4位)可在E中存儲(chǔ)一個(gè)9位數(shù)或如上所述的一個(gè)18或22位數(shù)。從而,如果該記錄(從用戶觀點(diǎn))能夠用數(shù)來標(biāo)識,A9設(shè)定為“0”的一個(gè)記錄將在域E、F與G中包含一個(gè)壓縮的名。A9設(shè)定為“1”的一個(gè)記錄將包含一個(gè)數(shù)(18、19或22位)。如果一個(gè)記錄由一個(gè)9位數(shù)與一個(gè)18位數(shù)兩者標(biāo)識,則位A9將設(shè)定為“0”且域E、F與G(第一部分)將包含18位。
域E、F與G的前4位只包含前面描述的22位壓縮的字母數(shù)字型數(shù)據(jù),如果記錄id是“名”(name),即如果位A9具有值“0”。
一個(gè)選擇性記錄的域E永遠(yuǎn)為“0”。
與域E一樣,域F的內(nèi)容取決于由位A9控制的記錄類型。如果位A9為“0”,則域E與F包含該22位壓縮名的前18位。如果位A9具有值“1”,則在域E中存儲(chǔ)建立該記錄的日期并在域F中存儲(chǔ)建立該記錄的時(shí)間。如果位A9的值為“7”,則域E中存儲(chǔ)未壓縮的8字符id的前4個(gè)字符而域F中則存儲(chǔ)后4個(gè)字符。
如果一個(gè)特定的記錄是用數(shù)字標(biāo)識的(位A9=1),則除非域E與G的前面部分包含一個(gè)允許復(fù)制的18位名或一個(gè)22位名,否則域G的前4位為“0”。如果記錄是用名標(biāo)識的,則域G的前4位為該22位壓縮的名的最后4位。如果位A9具有值“7”,則域G的前4位將為“0”。如果位A9具有值“8”,則域G的4個(gè)字節(jié)中的前2個(gè)字節(jié)為未壓縮的名的最后兩個(gè)字節(jié)。
8個(gè)字符的未壓縮的名與10個(gè)字符的未壓縮的名之間的差別在于使用8個(gè)字符允許存在復(fù)制品而采用10個(gè)字符禁止存在復(fù)制品。但是,復(fù)制關(guān)系能夠用位G6至G8建立。在用來實(shí)現(xiàn)本發(fā)明的上述實(shí)施例的特定計(jì)算機(jī)(IBMAS400)上,許多目標(biāo)是用10個(gè)字符的名來標(biāo)識的。
位G5的值通常具有值“1”,但也能用作一個(gè)后綴以便允許存在復(fù)制品;在采用一個(gè)未壓縮的8字符ID時(shí),位A9具有值“7”。然而如果所采用的是10字符未壓縮ID,則在存儲(chǔ)該未壓縮的名中,位G5是用作該域的前兩個(gè)字節(jié)部分以存儲(chǔ)該未壓縮的名的后兩個(gè)字節(jié)。
位G6-G8(含G6與G8)以另一種后綴的方式用來允許相同的兩個(gè)記錄之間的相同類型的多種關(guān)系的存儲(chǔ)。然而,必要時(shí),位G9能用作一個(gè)第三后綴,用于在記錄中存儲(chǔ)額外的數(shù)據(jù)。在所描述的實(shí)施例中,并未使用第三后綴而位G9已設(shè)定為省缺值“9”。
各記錄是一種屬性的一次重復(fù),即包含一個(gè)屬性值,它可能跨越若干個(gè)域,如果它不是一個(gè)關(guān)系,最多可利用85個(gè)字節(jié)。如果它是一個(gè)關(guān)系,可利用65個(gè)字節(jié),另外,加上交叉參照域。位G9可有效地用來擴(kuò)充在一種屬性的一次重復(fù)中所能存儲(chǔ)的數(shù)據(jù)量。由于在一個(gè)記錄中存儲(chǔ)了一個(gè)交叉參照,該記錄中將值“9”賦予了位G9,在對應(yīng)的記錄中便沒有必要將位G9設(shè)定為值“8”。利用位G5至G8,4×85字節(jié)加65字節(jié)可用于一個(gè)記錄的一次重復(fù)。
本發(fā)明所描述的實(shí)施例的進(jìn)一步增強(qiáng)可利用G9的值“0”至“4”(含“0”與“4”)作為記錄上的“標(biāo)記”或“廢棄(overrides)”。這些設(shè)施的詳細(xì)的潛在用途在這里不作詳細(xì)描述。
在本發(fā)明的實(shí)現(xiàn)的實(shí)施例中,核心程序讀取一個(gè)給定的關(guān)鍵域的所有記錄,即這包括在0至9(含0與9)范圍內(nèi)的位G9的所有的值的一次搜索。從而,所有記錄一次定位,即使通常只有一個(gè)(G9=“9”)。這改進(jìn)了處理時(shí)間。
下面是基本實(shí)體數(shù)據(jù)的項(xiàng)的一個(gè)例子??紤]一個(gè)電話號碼的存儲(chǔ)。將位A9設(shè)定為值“0”并且存儲(chǔ)在域E、F與G的前面部分中的22位包含“電話號碼”,如果有必要復(fù)制,則帶有供允許復(fù)制的后綴用的空間。這是用于實(shí)體本身而不是一個(gè)子級的項(xiàng)。實(shí)體數(shù)與屬性數(shù)兩者均為0。即域C與D均為0。
對于關(guān)系記錄,各記錄的用戶數(shù)據(jù)部分存儲(chǔ)作為交叉參照的任何相關(guān)記錄的關(guān)鍵域部分諸如包含與之存在著一個(gè)關(guān)系的數(shù)據(jù)的記錄。該相關(guān)記錄的關(guān)鍵的其余部分能從存取過具有該交叉參照的記錄的上下文中確定。注意圖4a與4b。交叉參照數(shù)據(jù)是存儲(chǔ)在域I、J、K與L中的。域I包含該相關(guān)記錄的域A的一份拷貝。
域A至G永遠(yuǎn)是關(guān)鍵域,除了代用記錄以外域H至L用于存儲(chǔ)交叉參照,在代用記錄中域H包含相關(guān)記錄的代用數(shù)。在只記錄了一個(gè)記錄時(shí),例如當(dāng)存儲(chǔ)的是“高度”的實(shí)際值而不是存儲(chǔ)一個(gè)關(guān)系時(shí),域H至L(含H與L)用于存儲(chǔ)用戶數(shù)據(jù)。否則,域H包含直接與討論中的記錄相關(guān)的任何記錄的代用品。即圖4中所示的兩個(gè)記錄的域H的內(nèi)容是相同的??梢钥闯觯趦蓚€(gè)記錄的域H中的值實(shí)際上是這兩個(gè)記錄中的第一個(gè)的實(shí)體數(shù)(即域C的內(nèi)容)。
域I至L的內(nèi)容取決于所存儲(chǔ)的是否是一個(gè)關(guān)系的細(xì)節(jié)。如果所存儲(chǔ)的數(shù)據(jù)不涉及一個(gè)關(guān)系,但同時(shí)正在記錄一個(gè)以上的記錄,則域I的內(nèi)容與正在同時(shí)寫入的另一個(gè)記錄的域A的內(nèi)容相同。在這些環(huán)境中,域J、K與L的內(nèi)容分別與另一記錄的域J、K與L的內(nèi)容相同。
域I、J、K與L包含交叉參照;除非該記錄為一個(gè)代用記錄或者此時(shí)只記錄一個(gè)記錄。在后面的兩種情況中,域I至L包含一部分用戶數(shù)據(jù)。在代用記錄的情況中在一個(gè)關(guān)系中,存儲(chǔ)兩個(gè)記錄的代用數(shù)。在記錄了一個(gè)第四記錄時(shí),一個(gè)代用記錄的域J至L包含所寫入的第四記錄的關(guān)鍵域的一部分(即E至G)。關(guān)系記錄考慮ABC Ltd的電話號碼的存儲(chǔ)。為了存儲(chǔ)這一信息,在盤上寫入三個(gè)記錄。這三個(gè)記錄是(1)一個(gè)代用記錄、(2)電話號碼的用戶、(3)用戶的電話號碼。記錄2與3實(shí)際上是互逆的。
首先寫入代用記錄。將位A8的值設(shè)定為“9”,這將該記錄標(biāo)識為一個(gè)代用記錄。將實(shí)體數(shù)寫入域C中并將屬性數(shù)寫入域D中。從而,能夠構(gòu)成關(guān)鍵域。
域A的值是已知的。在系統(tǒng)級上選擇企業(yè)或電話號碼作為最基本的(即借助它寫入代用記錄),這一選擇是由一個(gè)選擇性記錄控制的。在本例中域A的值標(biāo)識實(shí)體類型客戶。
域B為版本號,它簡單地記錄該數(shù)據(jù)是公用的還是私人存取的,或者是一種或另一種語言。
域C為零。
域D存儲(chǔ)按照菜單選擇的屬性描述的壓縮形式,即屬性描述的代用品,諸如用于講話的電話號碼。這便是,域D的內(nèi)容實(shí)際上是屬性的代用數(shù)。
域E的內(nèi)容是正在建立的關(guān)系的代用數(shù)。
代用數(shù)是以下述方式確定的。首先,準(zhǔn)備一個(gè)抽象的記錄關(guān)鍵域,其中將值“9”賦予所有的位E1至E9(含E1與E9)。然后試圖在數(shù)據(jù)庫內(nèi)定位指針。向后讀取一個(gè)記錄來定位這一實(shí)體類型與屬性組合的上一個(gè)代用記錄。在域E的值上加“1”,如果不存在前面的代用品,該值將是“1”。這便給出域E的新值,即在寫入當(dāng)前正在準(zhǔn)備的記錄時(shí)所使用的代用數(shù)。
域F的值永遠(yuǎn)是零。
域G的內(nèi)容與正常實(shí)體記錄的情況相同。在本發(fā)明所描述的實(shí)現(xiàn)的情況中,一個(gè)代用記錄的域G的值為000010019,因?yàn)閺?fù)制代用品是排除在外的。
域A、B與D的連接所提供的數(shù)是唯一的。從而,域A、B、D與E的連接所提供的數(shù)是唯一的。說明這一點(diǎn)特別重要,代用數(shù)只與它所作用的上下文相關(guān)。域A、B與D的內(nèi)容定義該上下文。這便是,關(guān)鍵項(xiàng)包含域A、B、D與代用數(shù)(域E)。從而,本發(fā)明的實(shí)現(xiàn)不受一個(gè)9位的代用數(shù)的限制。
域H至L包含兩個(gè)相關(guān)的記錄的代用數(shù),如果這兩個(gè)記錄中的一個(gè)或兩個(gè)是用代用品標(biāo)識的話。通常,域H至L不用于這一目的,除非同時(shí)寫入的是四個(gè)記錄而不是三個(gè)。通常只寫入三個(gè)記錄。但是在各種時(shí)間上寫入四個(gè)記錄,例如為了制備菜單。在這一情況中,四個(gè)記錄是代用記錄、屬性值記錄、屬性內(nèi)的序列號、其中出現(xiàn)屬性的菜單名。要寫入的第二記錄(關(guān)系性記錄)這里所描述的第二與第三記錄實(shí)際上可以互相交換而沒有任何明顯的影響。
域A包含實(shí)體類型數(shù)(電話號碼)。
域B包含版本號。
域C包含實(shí)體數(shù),這是實(shí)際電話號碼的代用品。寫入該記錄時(shí),確定代用品,然后將其用作標(biāo)識符。
域D包含屬性數(shù)。即“用來講話的電話號碼”,這是屬性描述的代用品。
按照前一段,要指出,記錄過程比這里描述的要復(fù)雜得多。對于新的實(shí)體或用名標(biāo)識的獨(dú)立數(shù)據(jù),它包含用字典來交叉檢驗(yàn)以及有可能寫入新的記錄到字典中。
域E、F與G的前一半用于存儲(chǔ)壓縮的名(即ABCLtd)。域G的后一半用于后綴信息,如上所述。
域H為代用數(shù),它與代用記錄的域E的內(nèi)容相同,從而,域H的值與所有相關(guān)記錄中的相同(除代用記錄外,由于沒有必要在該記錄內(nèi)存儲(chǔ)該數(shù)兩次)。
域I具有與相關(guān)(即第三)記錄的域A相同的值。即帶有其前綴與后綴的實(shí)體數(shù)。
域E的位E6至E9(含E6與E9)設(shè)定為等于相關(guān)(即第三)記錄的位G6至G9。這便是后綴。從而,能夠識別是否存在任何復(fù)制品。其目的是當(dāng)存在復(fù)制品時(shí)知道其關(guān)鍵項(xiàng)。
位E2至E5(含E2與E5)如果不為零則包含相關(guān)記錄的版本號。這能夠確定相關(guān)記錄的域B的值。即用戶組數(shù)。(實(shí)際上,用戶組數(shù)通常是域B的實(shí)際值)。
位E2至E5(含E2與E5)可全部為“0”,在這一情況中,域B中的值為用戶組數(shù),如果位E2至E5中任何一個(gè)具有非零值,則位E2至E5包含相關(guān)記錄的域B的值。這便是,相關(guān)記錄的位B6至B9(含B6與B9)分別等于位E2至E5的值,而位B1至B5含B1與B5)的值為零。關(guān)系的第三記錄第三記錄以第二記錄相同的方式寫入,但是反方向的。
從第二與第三記錄中可以看出,能夠標(biāo)識代用記錄,但在交叉參照中只有相關(guān)記錄的部分關(guān)鍵項(xiàng)。然而由于上下文,便有可能確定第二(相關(guān))記錄的完整關(guān)鍵項(xiàng)。
為了達(dá)到這一點(diǎn),不能利用代用品,因?yàn)榈诙涗浀挠駿、F與域G的前一半未曾記錄在交叉參照中(第三記錄的域I至L)。
但是,已經(jīng)通過相關(guān)記錄的實(shí)體記錄到達(dá)或標(biāo)識了第三記錄(或高級屬性值代用品),而實(shí)體記錄中包含丟失的信息。核心程序中的一個(gè)數(shù)組中記錄實(shí)體記錄的域E、F與域G的前面部分的內(nèi)容。核心程序保持高達(dá)99級的全部歷史過程(使用這一數(shù)據(jù)代用品)。這便能在系統(tǒng)內(nèi)進(jìn)行回溯。采用一個(gè)暫時(shí)存儲(chǔ)文件能跟蹤99級以上。
域A至G使用28個(gè)字節(jié)。另外65個(gè)字節(jié)用于用戶數(shù)據(jù)(由于我們考慮的是一個(gè)關(guān)系的存儲(chǔ))。通常,15個(gè)字節(jié)分配給公用數(shù)據(jù)(其中包含一個(gè)事務(wù)數(shù),不利用AS400相對記錄號設(shè)施)。域H的4個(gè)字節(jié)包含代用品數(shù)。包含交叉參照信息的其余16個(gè)字節(jié)是存儲(chǔ)在域I至L中的。
所描述的配置的優(yōu)點(diǎn)在于,如果ABC Ltd.改變了其名稱,第三記錄的關(guān)鍵將不改變電話號碼。當(dāng)然第二記錄是要改變的。
從而,本發(fā)明的系統(tǒng)提供多級數(shù)據(jù)記錄,這與必須刪除所有子級并重新輸入所有相關(guān)數(shù)據(jù)的系統(tǒng)不同。在本發(fā)明中,有可能簡單地“移動(dòng)”不再有效的子級;并且所有下面的級也“自動(dòng)地”移動(dòng);因?yàn)榇脭?shù)并不改變。屬性值從一種實(shí)體類型與屬性描述移動(dòng)到另一種。反之,如果不再有效的子級是要重寫而不是“移動(dòng)”,則代用數(shù)將會(huì)改變。
如果正在改變從實(shí)體類型數(shù)、屬性數(shù)及版本號的連接所構(gòu)成的整個(gè)值,上一段中所描述的配置便不能工作;因?yàn)榭赡芤呀?jīng)用該唯一的數(shù)發(fā)布了所使用的代用數(shù)。
本發(fā)明所達(dá)到的性能增益是該系統(tǒng)在任何一個(gè)時(shí)間只讀取非常少的記錄。這對于用戶效率是非常有利的。總的說來,該系統(tǒng)與大多數(shù)傳統(tǒng)的系統(tǒng)相反,只使用簡單的小步驟,在傳統(tǒng)的系統(tǒng)中要執(zhí)行的處理步驟的數(shù)目能花用充分長的時(shí)間而使用戶不能集中注意力。就虛擬系統(tǒng)計(jì)算機(jī)硬件而言,本發(fā)明使用非常少的分頁。選擇性記錄傳統(tǒng)上以計(jì)算機(jī)程序編碼的規(guī)則與過程在本發(fā)明中是與數(shù)據(jù)一起存儲(chǔ)的。這已經(jīng)利用記錄方便地實(shí)現(xiàn),這些記錄中的關(guān)鍵域中的4字節(jié)實(shí)體類型數(shù)是留出空白的。為了便于引用,這些記錄可稱作選擇性記錄。選擇性記錄可用來調(diào)整數(shù)據(jù)檢索的路徑。這便是,一個(gè)選擇性記錄的內(nèi)容能用于響應(yīng)一個(gè)特定的輸入來確定存取哪些記錄。這可用來在系統(tǒng)內(nèi)實(shí)現(xiàn)“相對”安全性?!跋鄬Α币辉~在這里并不意味任何對安全性的潛在損害,事實(shí)上恰恰相反。相對安全性是經(jīng)常想要的,但在傳統(tǒng)的系統(tǒng)中很少達(dá)到。它是將不同的安全級分解,尤其是動(dòng)態(tài)地分配給系統(tǒng)的單個(gè)用戶的能力。這可以是按照正在使用的應(yīng)用變化的一種安全級。當(dāng)然,在選擇性記錄中分配一位能為任何特定的功能分配10種安全級。存儲(chǔ)了許多安全碼來控制許多不同功能的安全性。
選擇性記錄用來定義用在一個(gè)特定的表中的有效記錄標(biāo)識符。選擇性記錄用來確定顯示數(shù)據(jù)的方式。選擇性記錄用來控制分配代用數(shù)。選擇性記錄用來控制作用在相繼的記錄之間的間隔數(shù)。即,代用記錄的間隔設(shè)定為“1”,而正文的段標(biāo)題或短名的間隔設(shè)定為“10000”。
正文是用代用品標(biāo)識的,然后用文檔中的段標(biāo)題序列數(shù)或段數(shù),然后用前五個(gè)字。正文是一種記錄類型(結(jié)構(gòu))而不是功能。正文是存儲(chǔ)在其初始輸入時(shí)分配的代用數(shù)所標(biāo)識的序列中的。結(jié)果,能夠改變序列數(shù)或字,同時(shí)保持該正文的唯一標(biāo)識。
應(yīng)指出,正文是集成在數(shù)據(jù)庫中的而不是獨(dú)立處理的。
參照數(shù)可用來為批處理設(shè)定優(yōu)先級。
所有這些類型的設(shè)施都是由選擇性記錄控制的。一個(gè)選擇性記錄的關(guān)鍵域可以為實(shí)體類型、實(shí)體與屬性設(shè)定一省缺值。其目的為減少所需的選擇性記錄的數(shù)目。然而地址的選擇性記錄具有為實(shí)體類型設(shè)定的一省缺值,但對于屬性則是特異的。
一個(gè)菜單記錄用于指定要使用的是哪一省缺值及哪些選擇性記錄。
位A1的值加上“5”標(biāo)識該選擇性記錄是與數(shù)據(jù)還是與菜單有關(guān)。
位A2至A7(含A2與A7)存儲(chǔ)實(shí)體類型數(shù),但其省缺設(shè)定值為零。
在本發(fā)明所描述的實(shí)現(xiàn)中不使用位A8,因此將其設(shè)定為“0”或“9”。這永遠(yuǎn)與使用它的數(shù)據(jù)記錄中的相同。
位A9設(shè)定為值“1”,因?yàn)樵撚涗浭怯靡粋€(gè)選擇性數(shù)標(biāo)識的。
域B包含版本號。它可以是零,并且是由一個(gè)選擇性記錄確定的。雖然是一種通用設(shè)施,私有與公用數(shù)據(jù)之間的區(qū)別對于選擇性記錄特別有用,由于它能為不同的用戶編碼不同的規(guī)則(例如在一張電子表格的一個(gè)單一“單元”內(nèi))。這一設(shè)施也能用來標(biāo)識一個(gè)選擇性記錄的一個(gè)用戶版本,并且如果找到這一用戶版本,便用它來取代其公用版本。
域C包含實(shí)體數(shù),對于一個(gè)選擇性記錄,它通常為零。
域D包含屬性數(shù)。對于一個(gè)選擇性記錄,域D的值為零,除非該表需要特殊的特征,在這一情況中,它們通常涉及一種特定的屬性。例如,地址的選擇性記錄內(nèi)用郵政編碼標(biāo)識的地址。
域E與F的值都是零。
域G包含選擇性記錄的號碼,利用位G1至G5(含G1與G5)。在本發(fā)明的所描述的實(shí)現(xiàn)中不允許復(fù)制選擇性記錄,從而G6至8分配相應(yīng)的值“001”。位G9分配值“9”。
選擇性記錄不包含交叉參照域。從而,可以得到85個(gè)字節(jié)來存儲(chǔ)用戶數(shù)據(jù)。通過寫入一個(gè)第二記錄可將其擴(kuò)充到170個(gè)字節(jié),在第二記錄中位G9的值設(shè)定為“8”而不是“9”。從而,這是不需要重構(gòu)整個(gè)數(shù)據(jù)庫便能作出顯著改變的一個(gè)例子。
選擇性記錄能與特定的應(yīng)用相關(guān)聯(lián)。對于這種使用,將一個(gè)應(yīng)用數(shù)作為關(guān)鍵域的一部分方便地存儲(chǔ)在域C中。
可以認(rèn)為選擇性記錄是一個(gè)過濾器,它控制著對該選擇性記錄所作用的表的存取。選擇性記錄的使用。
選擇性記錄可以只用于限制對視圖的存取,即排除編輯。從而,如果要求安全性存取來實(shí)現(xiàn)地址改變,則要提供另一個(gè)選擇性記錄來使這一功能得以實(shí)施。
選擇性記錄可用來標(biāo)識一個(gè)出口程序。此外,選擇性記錄能利用出口程序控制本發(fā)明的系統(tǒng)讀取不是用本發(fā)明的系統(tǒng)記錄的數(shù)據(jù)文件。
選擇性記錄可用來實(shí)現(xiàn)對用戶安全級的動(dòng)態(tài)改變。
在各記錄的公用數(shù)據(jù)區(qū)內(nèi)分配了三個(gè)字符作為記錄標(biāo)識符。這三個(gè)字符中的每一個(gè)可分配A至N或“0”至9(含A、V、0與9)范圍內(nèi)的一個(gè)字符或一定的特殊字符。這便是容許的標(biāo)識符的總數(shù)為403個(gè)。然而,這并不限制標(biāo)識符的總數(shù)在六萬四千種記錄類型上因?yàn)闃?biāo)識符與記錄的特定結(jié)構(gòu)相關(guān),比如名。這些是記錄類型,即屬性值類型。在標(biāo)題實(shí)體下的標(biāo)識符總數(shù)是6萬4千個(gè)。類似地,在標(biāo)題屬性下的可能表項(xiàng)的總數(shù)是6萬4千個(gè),其中每一個(gè)可重復(fù)十億次。
在增加新記錄時(shí),選擇性記錄定義三個(gè)字符記錄類型碼。
通常,檢索的是一個(gè)完整的表。這便是,檢索所有記錄(服從安全性)而不只是由一個(gè)選擇性記錄所定義的相同記錄類型的記錄。
對于數(shù)據(jù)庫內(nèi)的一個(gè)單一的表可存在許多選擇性記錄。從而,在一個(gè)單一的表中允許不同的記錄類型。
在一個(gè)選擇性記錄內(nèi),有一個(gè)字節(jié)控制存儲(chǔ)在使用該選擇性記錄加在數(shù)據(jù)庫中的記錄中的名的長度。從而,盡管傳統(tǒng)上改變或允許使用一個(gè)25個(gè)字符名長度比24個(gè)字符名長度的開銷高得多;利用本發(fā)明,只須在將數(shù)據(jù)寫到盤上時(shí)使用一個(gè)不同的選擇性記錄即可。名長度是寫入的記錄的公用數(shù)據(jù)區(qū)的一部分。
選擇性記錄也可用于實(shí)現(xiàn)提交控制。這一方面,選擇性記錄能用于設(shè)置事務(wù)界限。具體地,一個(gè)選擇性記錄可存儲(chǔ)提交控制的開始序列而另一個(gè)選擇性記錄可控制提交控制過程的完成。在傳統(tǒng)的配置中,如果不仔細(xì)考慮插入點(diǎn)兩側(cè)上的提交控制過程步驟上的后果,便不可能在一個(gè)提交控制過程內(nèi)插入額外步驟。然而,利用本發(fā)明的配置能夠避免考慮這些后果。
選擇性記錄用于控制要同時(shí)檢索的記錄的數(shù)目。選擇性記錄內(nèi)的一個(gè)字符用于這一目的,從而很容易地在0至9(含0與9)的范圍內(nèi)控制要顯示的記錄的數(shù)目,其中0可以是高的而不是低的。
選擇性記錄可用于控制段標(biāo)題與段正文。即,它們可用于顯示長的或短的名(任何長度或256個(gè)字符)。
選擇性記錄可用于定義是否將出現(xiàn)一個(gè)長名。
一般地講,顯示器屏幕上的一行相當(dāng)于一個(gè)記錄。在這一配置中,一個(gè)長名是每記錄一行而名可以是一萬行長。
選擇性記錄可用來控制處理,例如在拒絕對要求的信息的存取時(shí)向用戶提示一條消息。類似地,選擇性記錄用于控制處理流程。例如使用戶返回到一張菜單或返回到主相關(guān)實(shí)體記錄。
能夠用選擇性記錄達(dá)到的處理控制是極為靈活的。例如,這樣的選擇性記錄實(shí)現(xiàn)起來非常直觀,在輸入一個(gè)電話號碼時(shí)該記錄標(biāo)識該電話號碼的擁有者,將處理切換到一張菜單,以便選擇該擁有者的其它屬性供調(diào)查。
一個(gè)選擇性記錄可包含用來存取另一個(gè)表的下一個(gè)選擇性記錄的號碼。
菜單記錄也包含選擇性記錄號碼。將這一號碼加在正在使用的選擇性記錄中的數(shù)上便得出處理中所使用的實(shí)際數(shù)。
事務(wù)處理可用來實(shí)現(xiàn)布爾邏輯。例如,考慮包括5項(xiàng)的一個(gè)表。如果顯示控制字符設(shè)定為值“1”,處理便搜索一個(gè)單一的記錄。這時(shí),控制事務(wù)處理的選擇性記錄便規(guī)定找到或找不到該記錄時(shí)要采取什么行動(dòng)。從而,能夠設(shè)置選擇性記錄作為數(shù)據(jù)庫內(nèi)的決策者。
作為一個(gè)例子考慮在一個(gè)定貨系統(tǒng)中的價(jià)格更新。想要實(shí)現(xiàn)依賴時(shí)間的定價(jià)。這能夠利用加上日期與時(shí)間標(biāo)記的關(guān)鍵域來實(shí)現(xiàn),即將域E設(shè)定為日期并將域F設(shè)定為時(shí)間。日期的第9位用來檢驗(yàn)日期是否正確地存儲(chǔ)。域F的第一位用來檢驗(yàn)時(shí)間記錄的準(zhǔn)確性。將選擇性記錄設(shè)置成向后讀取該表直到定位了與當(dāng)前日期與時(shí)間比較時(shí)具有有效的關(guān)鍵域的一個(gè)記錄為止。使用本系統(tǒng),能夠在輸入一個(gè)新的價(jià)格時(shí)容易地實(shí)現(xiàn)價(jià)格期限。即在時(shí)間上向后讀取,有效地找出以交易的日期以前最近的日期與時(shí)間記錄的價(jià)格。這是與傳統(tǒng)的系統(tǒng)相反的,在傳統(tǒng)的系統(tǒng)中通常給定該價(jià)格一個(gè)有效日期范圍(從一個(gè)日期到另一個(gè)日期)。這種系統(tǒng)的困難之處在于如果交易日期越出了記錄在數(shù)據(jù)庫中的價(jià)格的日期范圍應(yīng)施行什么處理。然而,在按照本發(fā)明的實(shí)現(xiàn)中,的確需要編碼一個(gè)期滿日期,因?yàn)槊慨?dāng)輸入一個(gè)新的價(jià)格時(shí)原來的價(jià)格便立即變成多余與無效的了。所有以后的交易便立即在該新的價(jià)格上進(jìn)行。同樣,能夠“編碼”折扣、市場區(qū)域等。
需要指出的重要事情是所有這些“處理”都是在數(shù)據(jù)庫自身內(nèi)部編碼和進(jìn)行的。處理既不存儲(chǔ)在傳統(tǒng)意義上的“程序”中,也不受其控制。例如,只是寫入一個(gè)額外的記錄到數(shù)據(jù)庫中指明實(shí)行何種新的折扣而已。這避免了傳統(tǒng)的系統(tǒng)中的主要缺點(diǎn)之一,在傳統(tǒng)的系統(tǒng)中通常需要建立一個(gè)復(fù)制的數(shù)據(jù)庫(編碼新的價(jià)格),導(dǎo)致將數(shù)據(jù)庫的兩個(gè)拷貝維護(hù)成互相一致的困難,直到復(fù)制品取代原來的數(shù)據(jù)庫而使價(jià)格改變生效為止。
選擇性記錄用于以類似于錯(cuò)誤捕捉的方式控制處理。這便是,在響應(yīng)一個(gè)用戶查詢沒有找到記錄或找到一個(gè)以上的記錄時(shí)系統(tǒng)的應(yīng)答是受一個(gè)選擇性記錄控制的。進(jìn)一步的處理也能受選擇性記錄控制。例如,如果響應(yīng)一個(gè)查詢未檢索到所選擇的數(shù)據(jù)項(xiàng),選擇性記錄可提供用戶實(shí)際上將該數(shù)據(jù)增加到數(shù)據(jù)庫中的選擇余地。類似地,能將選擇性記錄設(shè)定為在檢索到了一個(gè)所請求的數(shù)據(jù)項(xiàng)時(shí)自動(dòng)地前進(jìn)到或者不前進(jìn)到下一處理階段。例如,如果輸入一個(gè)地址,通知用戶實(shí)際上已在數(shù)據(jù)庫內(nèi)定位了該地址可能并無多大用處。進(jìn)行到處理的下一階段檢索出相關(guān)的姓名并將其提交給用戶用于檢驗(yàn)可能更有用處。事實(shí)上,與菜單一起使用選擇性記錄這一概念引導(dǎo)到建立過程的概念。取決于正在獨(dú)立地完成的各步驟的需求,過程執(zhí)行若干順序的處理步驟。這可以認(rèn)為是“一個(gè)項(xiàng)”的菜單的一種形式,它們具有在它們的每一個(gè)之間自動(dòng)前進(jìn)的能力。
公用數(shù)據(jù)區(qū)格式與其它記錄相同。
如上所述,在選擇性記錄內(nèi),一位控制顯示或存取的記錄的數(shù)目。如果該位具有值“1”且該選擇性記錄指定自動(dòng)前進(jìn),這時(shí)該選擇性記錄便變成了一個(gè)過程。
過程可用來強(qiáng)加數(shù)據(jù)錄入。例如,如果正在使用每次存取一個(gè)記錄的一個(gè)菜單,便可用一個(gè)選擇性記錄來檢驗(yàn)所指定的記錄是否存在,如果沒有定位,它便促使輸入該值。
省缺選擇性記錄中將與實(shí)體類型、實(shí)體及屬性相關(guān)的各域的值設(shè)定為零。然而,有可能實(shí)現(xiàn)不同級上的省缺,在這一情況中,這些域內(nèi)的值可以不全為零。例如,如果屬性不是空白的,則屬性數(shù)不是零。
域L包含選擇性記錄號。菜單為了存取本發(fā)明的數(shù)據(jù)庫中的記錄,必須指定實(shí)體類型數(shù)與屬性數(shù)。所進(jìn)行的實(shí)際處理通常涉及使用一個(gè)選擇性記錄,它包括使用由菜單記錄存取的一個(gè)選擇性記錄號。菜單記錄也能編碼成指示該選擇是否作為在實(shí)體或?qū)傩约壣系囊环N省缺值。選擇性記錄的位A1具有值“5”或更高。這便是,為了形成一個(gè)選擇性記錄,將“5”加在正在由選擇性記錄存取或控制的記錄的類型的位A1的值上。記錄類型碼,上面提到的三個(gè)字符記錄類型碼,以字母“F”起始。這三個(gè)字符記錄類型碼是數(shù)據(jù)庫內(nèi)的各記錄內(nèi)的公用數(shù)據(jù)的一部分。作為該碼的第一字符的字母“F”指示要使用的是哪一種數(shù)據(jù)結(jié)構(gòu)。
對于與應(yīng)用相關(guān)的菜單記錄,域C的值為應(yīng)用號。對于一個(gè)與應(yīng)用無關(guān)的菜單,域C的值為零。對應(yīng)的選擇性記錄確定菜單記錄應(yīng)具有哪種類型。
菜單記錄由位A1具有值“2”或“3”來標(biāo)識。值“2”表示菜單記錄是用于控制到達(dá)當(dāng)前位置的路徑的,而值“3”則表示菜單是用于在選擇或找到一個(gè)記錄后控制路徑的。
除了位A1的值以外,菜單記錄的關(guān)鍵域是與前面對其它記錄類型一般性的描述的相同方式構(gòu)成的。例如,菜單名是作為實(shí)體類型編碼的。
菜單記錄的公用數(shù)據(jù)區(qū)具有與任何正常記錄類型相同的格式。
位于記錄的公用數(shù)據(jù)區(qū)中的三個(gè)字符記錄類型碼具有這樣一種格式,其中第一字符是出口程序名的一部分。例如,關(guān)于出口程序,三個(gè)字符的記錄類型碼的第一字符與程序名的第四字符相同。利用這種命名法,所有出口程序都具有第一字符為E的一個(gè)名(表示Erros,給予本發(fā)明的系統(tǒng)的名稱),后面跟隨著兩個(gè)字符的版本號。從而,如果想要增加一種不同記錄數(shù)據(jù)結(jié)構(gòu),不需要改變核心程序的主體,只要附加一個(gè)出口程序或輸入一個(gè)現(xiàn)有的出口程序即可。事務(wù)概要為各個(gè)事務(wù)寫入一個(gè)事務(wù)記錄。事務(wù)記錄的實(shí)體類型數(shù)設(shè)定為零。因?yàn)樗且粋€(gè)數(shù)據(jù)記錄,位A1具有值“0”。位A8為“0”。因?yàn)樗且粋€(gè)數(shù)字,位A9具有值“1”。
事務(wù)數(shù)是通過將域D的所有位設(shè)定為值“9”,然后向后讀取直到定位了上一個(gè)事務(wù)數(shù)為止而生成的。然后在上一個(gè)事務(wù)數(shù)上加上值“1”,從而形成新的事務(wù)數(shù)。這一過程與上面關(guān)于代用數(shù)的生成的描述相同。
通常,一個(gè)事務(wù)記錄可存儲(chǔ)諸如用戶號、公司、部門、日期與時(shí)間、應(yīng)用號等細(xì)節(jié)。事務(wù)概要的使用能夠容易地實(shí)現(xiàn)一個(gè)“取消”設(shè)施。導(dǎo)航與瀏覽設(shè)施人們可瀏覽或航行通過數(shù)據(jù)庫,在實(shí)體類型、實(shí)體與屬性之間移動(dòng)。利用關(guān)鍵域,尤其是屬性的域I至L,人們能標(biāo)識實(shí)體類型與標(biāo)識符。存儲(chǔ)在域I中的值標(biāo)識實(shí)體類型。這便是,它標(biāo)識相關(guān)記錄的域A的值,與該屬性的交叉參照域中具有值“9”相比,只是在相關(guān)記錄中位A8設(shè)定為“0”。相關(guān)記錄的版本號能從位I2至I5的觀察中確定。如果所有這些位具有值“0”,則相關(guān)記錄的域B包含用戶號。然而,如果位E2至E5不全為零,則相關(guān)記錄的位B1至B5為零,而位B6至B9分別具有位E2至E5的值。
從而,確定了相關(guān)記錄的域A與B的值。
相關(guān)記錄的實(shí)體數(shù)與屬性數(shù),即域C與D之值,為零。這便是這樣,因?yàn)檎诳紤]的是數(shù)據(jù)樹的起始點(diǎn)(或頂)。
通常,在屬性記錄與相關(guān)記錄之間域E與F的值保持不變。然而,域J的最后4位給出相關(guān)記錄的域G的最后4位,盡管這通常意味著沒有改變。
從而,相關(guān)記錄的整個(gè)關(guān)鍵域已從上下文中構(gòu)成。再者,這種構(gòu)成一個(gè)相關(guān)記錄的關(guān)鍵域的過程能用在向前或向后的方向中。
只利用屬性便能得到更多的信息。例如,考慮“消息”與“接收的消息”之間的差別,前者簡單地列出所有消息,而后者只列出發(fā)送給討論中的特定用戶的那些消息。上下文作為一個(gè)特定查詢的結(jié)果,只能存取一個(gè)特定的上下文中的數(shù)據(jù)。從而,在觀察一個(gè)特定記錄的內(nèi)容時(shí),便知道了存儲(chǔ)在該記錄中的信息的上下文。再者,信息永遠(yuǎn)不會(huì)超出上下文。應(yīng)用結(jié)構(gòu)一個(gè)應(yīng)用可認(rèn)為是對整個(gè)數(shù)據(jù)庫的一個(gè)過濾器。例如,人們可能希望將數(shù)據(jù)庫的一個(gè)子集分配給發(fā)票處理。一個(gè)應(yīng)用允許訪問與發(fā)票處理相關(guān)的記錄、過程等。
應(yīng)用是一種實(shí)體類型。這在附圖中的圖5a與5b中所示的語義網(wǎng)絡(luò)中示出。
一個(gè)菜單過濾一個(gè)應(yīng)用中的各實(shí)體類型所能得到的屬性。從而,只需要存儲(chǔ)屬性一次。
如果想要訪問所有屬性,則必須使用一個(gè)與應(yīng)用無關(guān)的菜單(即不過濾)。這是與“編碼”一個(gè)應(yīng)用程序內(nèi)所需要的屬性的傳統(tǒng)方法相反的??偟母拍钍菍⑻幚砼c“編碼的程序”分離,并將處理作為實(shí)際數(shù)據(jù)存儲(chǔ)的一部分。
應(yīng)用的一個(gè)例子用附圖中圖6中所示語義網(wǎng)絡(luò)表示。該應(yīng)用是“安全性”,其中可得到實(shí)體類型“應(yīng)用”。該實(shí)體類型的一種屬性是“授權(quán)給”。這又是與將安全性編碼在各應(yīng)用內(nèi)的傳統(tǒng)配置相反的。
操作員只能使用他能訪問的應(yīng)用,因?yàn)樗哂凶鳛橐粋€(gè)用戶的適當(dāng)屬性,即數(shù)據(jù)與規(guī)則認(rèn)為是基本上相同的。從而,一個(gè)用戶以他導(dǎo)航通過數(shù)據(jù)相同的方式導(dǎo)航通過規(guī)則。
該系統(tǒng)內(nèi)還可得到一個(gè)起動(dòng)應(yīng)用。這一應(yīng)用使人們能改變起動(dòng)過程而不用改變核心程序。屬性“授權(quán)的應(yīng)用”列出能用來運(yùn)行的應(yīng)用。列出了這些應(yīng)用之后,人們便開始導(dǎo)航通過數(shù)據(jù)庫。
利用這一技術(shù),嵌套的應(yīng)用便能容易地實(shí)現(xiàn),并且安全檢查可以包含在各級上。
類似地,有可能編碼一個(gè)新的文檔建立應(yīng)用。這一應(yīng)用中可包含過程來要求諸如作者姓名等數(shù)據(jù)。文件只需要一個(gè)文件(或數(shù)據(jù)庫)。各記錄的關(guān)鍵域是唯一的,因此不需要建立一個(gè)以上的文件。然而,為了操作的原因,可能希望將數(shù)據(jù)庫分裂成若干不同的文件。例如,為了將用戶數(shù)據(jù)與公用數(shù)據(jù)分開,可能希望進(jìn)行這種分裂。類似地,為了將應(yīng)用定義數(shù)據(jù)與該應(yīng)用作用的數(shù)據(jù)分開,可能希望進(jìn)行這種分裂。從而,為了分發(fā)的目的,人們能改變應(yīng)用而不用改寫該應(yīng)用作用的用戶數(shù)據(jù)。因此,第三方的“軟件”能以直接相似于傳統(tǒng)的系統(tǒng)的方式利用本發(fā)明的系統(tǒng)來實(shí)現(xiàn)。
希望建立一個(gè)以上文件的另一組環(huán)境是希望清除或存檔數(shù)據(jù)。在數(shù)據(jù)中包括消息或文獻(xiàn)時(shí)這可能特別適用。
希望建立一個(gè)以上文件的另一實(shí)例是用戶數(shù)據(jù)具有特定的行業(yè)或類型時(shí),例如涉及美術(shù)的數(shù)據(jù)庫。
有可能希望建立一個(gè)以上文件的另一個(gè)實(shí)例是要存儲(chǔ)涉及諸如計(jì)算機(jī)終端及可以通過這些終端訪問該計(jì)算機(jī)的操作員等的表的配置數(shù)據(jù)時(shí)。
在這里所描述的發(fā)明的實(shí)施例中,一共使用了七種不同的文件。這些文件中包括(1)字典(2)用戶數(shù)據(jù)(3)私有數(shù)據(jù)(4)公用應(yīng)用數(shù)據(jù)(諸如國家列表)(5)公用應(yīng)用數(shù)據(jù);特定的(藝術(shù)史)不是一般的(6)應(yīng)用定義(包含辭典)(7)配置文件(8)消息正文文件(9)事務(wù)概要該系統(tǒng)的唯一其它部分便是核心程序,它包含少于一兆字節(jié)的指令。辭典一個(gè)重要的特征便是辭典,它與字典文件不同。辭典構(gòu)成主數(shù)據(jù)庫的一部分,并且“辭典”是一種實(shí)體類型。與只包含單個(gè)的字的字典不同,辭典中包含短語(任何語言的)。用來定義數(shù)據(jù)庫的一個(gè)應(yīng)用的結(jié)構(gòu)的每一個(gè)術(shù)語都必須首先進(jìn)入辭典中。作為這一過程的一部分,分配一個(gè)代用數(shù)。
整個(gè)系統(tǒng)中用作標(biāo)識符的每一個(gè)字都必須包含在字典中。然而,辭典中并不必要包含整個(gè)字典。
辭典是術(shù)語的中央倉庫。定義數(shù)據(jù)庫的結(jié)構(gòu)的每一個(gè)術(shù)語都必須包含在辭典中。從而,為了增加一個(gè)新的實(shí)體類型,首先必須將該實(shí)體類型名放在辭典中。附圖中的圖7中所示的語義網(wǎng)絡(luò)示出了這一點(diǎn)。
隨后,便能訪問辭典來發(fā)現(xiàn)該特定的名是否是一個(gè)實(shí)體類型。
辭典強(qiáng)制使用標(biāo)準(zhǔn)的字與短語。從而,位G5可以允許復(fù)制,但它們將各有一個(gè)不同的代用數(shù)。
作為字典與辭典之間的區(qū)別的一個(gè)實(shí)例字典中只存儲(chǔ)字“red”一次。而辭典中字“red”可能存儲(chǔ)若干次,例如第一次出現(xiàn)作為一種顏色而作為第二個(gè)實(shí)例則關(guān)于政治。從而,能查詢辭典來檢索出字“red”的潛在意義的一張清單。
辭典允許人們找出系統(tǒng)中關(guān)于字“red”有哪些其它知識。
在所有事務(wù)處理中并不都使用辭典。例如,考慮屬性描述“isa”。雖然短語“isa”有可能從辭典中檢索到;緊接著導(dǎo)航通過數(shù)據(jù)庫,因?yàn)樘幚硎菑某跏嫉霓o典查找通過實(shí)體類型到實(shí)體的。“辭典”是一種實(shí)體類型而“實(shí)體類型”則在辭典中。多個(gè)用戶組一個(gè)系統(tǒng)上有可能容納多個(gè)用戶組。人們可以為私有用戶數(shù)據(jù)建立一個(gè)獨(dú)立的文件,并且可以方便地增加一個(gè)新的用戶組。在搜索記錄中,核心程序總是尋找用戶組號。
一個(gè)用戶組的成員能向另一個(gè)用戶組的成員發(fā)送消息。
使用用戶組號作為關(guān)鍵域的一部分,便達(dá)到了內(nèi)在的安全性。不能做到屬于不同的用戶組的數(shù)據(jù)之間的交叉訪問。從而,防止對其它組的數(shù)據(jù)或者反過來是非常直觀的,因?yàn)檫@是有關(guān)的記錄的關(guān)鍵域的一部分。核心程序結(jié)構(gòu)(1)“請求處理”程序。主操作接口。(2)存取數(shù)據(jù)庫的主程序。總控制程序。它進(jìn)行其它程序的所有調(diào)用。(3)“數(shù)據(jù)庫更新”程序,它還提供與用戶的文本處理接口。(4)出口程序ERROS或用戶定義的,諸如數(shù)學(xué)/打印/不同的屏幕顯示。出口程序出口程序方便地采用下述命名約定,其中一部分上面已提到過。出口程序的第一個(gè)字符永遠(yuǎn)是字符E(表示ERROS,關(guān)于本發(fā)明的系統(tǒng)所使用的名)。第二個(gè)字符指明該程序的發(fā)行號。第三個(gè)字符標(biāo)識程序的修改。第四個(gè)字符是這一出口程序所處理的記錄類型的三個(gè)字符記錄標(biāo)識符的第一個(gè)字符。出口程序名的第五個(gè)字符指明該程序的版本號。這一字符可以分配A至Z范圍內(nèi)(含A與Z)的任何字符或0至9(含0與9)范圍內(nèi)的任何數(shù)字或某些特殊字符。出口程序名的第六至第十字符標(biāo)識用戶組號。這可以是零,指出任何用戶組都能利用它。
用戶特定的選擇性記錄識別應(yīng)使用該程序的哪一版本,及對于一個(gè)特定的用戶組,該程序是否是他們自己的用戶組的或者該選擇性記錄所調(diào)用的程序是否是一個(gè)公用版本。
這一命名約定能夠容易地避免混淆同一程序的不同版本,并且每一個(gè)節(jié)點(diǎn)都能為各用戶組定義要使用的是該程序的哪一版本。其中可包含諸如不同屏幕圖畫這樣的簡單選擇或包含更深?yuàn)W的需求。
出口程序可包含在一個(gè)程序庫中。給予該程序庫的名最好采用下述命名約定。庫名的第一個(gè)字符為字符E。第二個(gè)字符標(biāo)識發(fā)行號。第三個(gè)字符標(biāo)識修改。第四個(gè)字符標(biāo)識修改級。這一命名約定對某些計(jì)算機(jī)硬件類型特別有用。例如,IBM AS400機(jī)一張庫清單,其中各任務(wù)具有一張相關(guān)的庫清單。
按照本發(fā)明的系統(tǒng)的一個(gè)主要優(yōu)點(diǎn)是只需小量的存儲(chǔ)器常駐代碼(核心程序)。這一優(yōu)點(diǎn)來自這樣的事實(shí),核心程序是充分小的,它永遠(yuǎn)能夠常駐在諸如IBM AS400這樣的機(jī)器上的內(nèi)存中。結(jié)果,極大地避免了對程序分頁的需求。求助系統(tǒng)通過將求助文件指定為一個(gè)實(shí)體類型,便方便地實(shí)現(xiàn)了一個(gè)聯(lián)機(jī)求助設(shè)施。從而,以一個(gè)實(shí)體類型“求助”、一個(gè)實(shí)體“業(yè)務(wù)”與一種屬性“電話號碼”,便能構(gòu)成“業(yè)務(wù)”與“電話號碼”之間的關(guān)系的一個(gè)代用記錄,該記錄中包含這一組合的一個(gè)描述。由于在不同的上下文中考慮時(shí),實(shí)體類型變成了實(shí)體,為了實(shí)現(xiàn)求助系統(tǒng),只需核心程序非常少的處理即可。求助正文是為一個(gè)特定的實(shí)體類型存儲(chǔ)的,而不是為各單個(gè)實(shí)體存儲(chǔ)的。
求助菜單不必要是應(yīng)用特定的。
從而,求助系統(tǒng)的使用與對數(shù)據(jù)庫上任何其它類型的記錄的數(shù)據(jù)的訪問相同。以前面所描述的相同方式導(dǎo)航通過相關(guān)記錄。
上述聯(lián)機(jī)求助系統(tǒng)完全避免了建立一個(gè)完全獨(dú)立的聯(lián)機(jī)求助數(shù)據(jù)庫及相關(guān)的程序組的傳統(tǒng)方法。
上面給出的本發(fā)明的特定描述是在1993年10月4日提交的英國專利申請9320404.8號中所提出的。從該日期起已實(shí)現(xiàn)及試驗(yàn)了各種修改。這些修改中值得一提的是一個(gè)實(shí)施例,其中上述選擇性記錄在功能上已與上述菜單記錄合并。原理保持不變,但利用一個(gè)單一的記錄類型來替代以前的兩個(gè)記錄類型。如上所述,存在著代用記錄來記錄代用數(shù),它們可以認(rèn)為是本系統(tǒng)的主要內(nèi)部標(biāo)識符。然而附加數(shù)據(jù)也能存儲(chǔ)在代用記錄中。這些附加數(shù)據(jù)應(yīng)與該代用品所涉及的記錄的內(nèi)容相關(guān),并且最好與相關(guān)記錄的內(nèi)容一起顯示。
從1993年10月起,已經(jīng)獨(dú)立測試了本發(fā)明的初始實(shí)現(xiàn)。這些測試計(jì)算出開發(fā)一個(gè)新的應(yīng)用(即“程序”組)的效率與傳統(tǒng)的編程技術(shù)相比提高了500%以上。測試同時(shí)報(bào)告了完成的應(yīng)用的操作速度中相同數(shù)量級的提高。
權(quán)利要求
1.一種數(shù)據(jù)存儲(chǔ)與檢索的方法,包括構(gòu)成具有一個(gè)關(guān)鍵域的記錄,該關(guān)鍵域?yàn)橹辽賰蓚€(gè)標(biāo)識符的數(shù)字連接。
2.權(quán)利要求1中所提出的一種方法,其中該關(guān)鍵域包含一個(gè)實(shí)體類型標(biāo)識符及一個(gè)屬性標(biāo)識符。
3.權(quán)利要求2中所提出的一種方法,其中該關(guān)鍵域是至少三個(gè)標(biāo)識符的一個(gè)數(shù)字連接,包含權(quán)利要求2中所指定的那些標(biāo)識符及一個(gè)實(shí)體標(biāo)識符。
4.前述任一權(quán)利要求中所提出的一種方法,其中該關(guān)鍵域部分表示該記錄的非關(guān)鍵域部分的結(jié)構(gòu)。
5.前述任一權(quán)利要求中所提出的一種方法,其中該數(shù)字值是從一張字與/或短語表中得出的,表中的各項(xiàng)已預(yù)先賦予一個(gè)數(shù)字值。
6.前述任一權(quán)利要求中所提出的一種方法,其中某些記錄存儲(chǔ)數(shù)據(jù)而其它記錄則存儲(chǔ)數(shù)據(jù)間的關(guān)系的細(xì)節(jié)。
7.前述任一權(quán)利要求中所提出的一種方法,其中某些記錄存儲(chǔ)數(shù)據(jù)而其它記錄則控制數(shù)據(jù)處理。
8.前述任一權(quán)利要求中所提出的一種方法,其中一項(xiàng)信息的存儲(chǔ)包括構(gòu)成與記錄三個(gè)記錄,各個(gè)記錄中包含能夠識別其它兩個(gè)記錄的標(biāo)識符。
9.前述任一權(quán)利要求中所提出的一種方法,其中該關(guān)鍵域中包含一個(gè)從字母數(shù)字型描述導(dǎo)出的數(shù),該數(shù)是從一張字表中導(dǎo)出的,在該字表中已為表中的各項(xiàng)預(yù)先賦予了一個(gè)數(shù)字值,在第一個(gè)字之后,該字母數(shù)字型描述中的字是賦予遞減的有效位數(shù)的。
10.一種數(shù)據(jù)存儲(chǔ)與檢索系統(tǒng),包括構(gòu)成具有一個(gè)關(guān)鍵域的記錄的裝置,該關(guān)鍵域是至少兩個(gè)標(biāo)識符的一個(gè)數(shù)字連接。
全文摘要
數(shù)據(jù)存儲(chǔ)與檢索的方法與系統(tǒng),包括構(gòu)成具有一個(gè)關(guān)鍵域的記錄,該關(guān)鍵域是至少兩個(gè)標(biāo)識符的數(shù)字連接。關(guān)鍵域最好包含一個(gè)實(shí)體類型標(biāo)識符及一個(gè)屬性標(biāo)識符,再包含一個(gè)實(shí)體標(biāo)識符更好,其中實(shí)體類型是通用的,諸如“公司”,實(shí)體是特定的,諸如ABC Limited,而屬性則為諸如“電話號碼”。該數(shù)字值最好從字與/或短語表中得出,表中各項(xiàng)都事先分配有一個(gè)數(shù)字值。最好某些記錄存儲(chǔ)數(shù)據(jù)而其它記錄存儲(chǔ)數(shù)據(jù)之間的關(guān)系的細(xì)節(jié)。有利地,某些記錄存儲(chǔ)數(shù)據(jù)而其它記錄控制數(shù)據(jù)處理。
文檔編號G06F17/30GK1132564SQ9419366
公開日1996年10月2日 申請日期1994年10月4日 優(yōu)先權(quán)日1993年10月4日
發(fā)明者羅伯特·迪克遜 申請人:羅伯特·迪克遜