欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在現(xiàn)存的關(guān)系數(shù)據(jù)庫模式上建立語義對象模型的計(jì)算機(jī)系統(tǒng)的制作方法

文檔序號:6411105閱讀:285來源:國知局

專利名稱::在現(xiàn)存的關(guān)系數(shù)據(jù)庫模式上建立語義對象模型的計(jì)算機(jī)系統(tǒng)的制作方法
技術(shù)領(lǐng)域
:本發(fā)明總的說來與計(jì)算機(jī)系統(tǒng)相關(guān),特別是在關(guān)系數(shù)據(jù)庫中存儲和檢索信息的計(jì)算機(jī)系統(tǒng)。某些時(shí)候,大多數(shù)計(jì)算機(jī)用戶需要存儲和檢索一些有序信息。典型地,信息存放在使用任何一種商業(yè)上可得到的眾多數(shù)據(jù)庫程序的計(jì)算機(jī)上。這些程序允許用戶定義存儲在數(shù)據(jù)庫中的信息類型,并為用戶提供表格,這些表格用于將數(shù)據(jù)輸入數(shù)據(jù)庫和為希望檢索已存信息的人打印報(bào)告。一種最為流行的數(shù)據(jù)庫類型是關(guān)系數(shù)據(jù)庫。在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)以行形式存放在具有一或多列的二維表中,這些列定義了數(shù)據(jù)存放的類型。照傳統(tǒng)做法,對非熟練用戶來說,用可以精確反映用戶想法的方式來創(chuàng)建關(guān)系數(shù)據(jù)庫表(也指數(shù)據(jù)庫模式)是相當(dāng)困難的。一種允許用戶創(chuàng)建關(guān)系數(shù)據(jù)庫模式的新方法是一種稱為SALSATM的數(shù)據(jù)庫建模系統(tǒng),該系統(tǒng)由WallDataIncorporatedofSeattle,Washingtion開發(fā)。該系統(tǒng)允許用戶創(chuàng)建存放在數(shù)據(jù)庫中的數(shù)據(jù)模型。模型包括一個(gè)或多個(gè)用于表示完整實(shí)體的語義對象,如人,訂貨單,公司或其他任何的用戶可以想到的唯一實(shí)體,這些實(shí)體將存儲在數(shù)據(jù)庫中。每個(gè)語義對象包括一個(gè)或多個(gè)存放關(guān)于語義對象的標(biāo)識信息的屬性,還包括用來定義兩個(gè)或多個(gè)語義對象之間聯(lián)系的對象連接屬性。一旦用戶完成了語義對象模型,SALSA數(shù)據(jù)庫建模系統(tǒng)就對語義對象模型進(jìn)行分析并創(chuàng)建對應(yīng)的在計(jì)算機(jī)中存儲數(shù)據(jù)的關(guān)系數(shù)據(jù)庫模式。SALSA數(shù)據(jù)庫建模系統(tǒng)的詳細(xì)描述公開在共同轉(zhuǎn)讓的共同未決的美國專利申請系列號08/145,997中,該申請?jiān)诖吮蛔鳛閰⒖?,申請日?993年10月29日。SALSA數(shù)據(jù)庫建模系統(tǒng)的好處在于允許用戶輕松定義存儲在數(shù)據(jù)庫中的數(shù)據(jù)及數(shù)據(jù)間的聯(lián)系,不要求用戶知道下面的數(shù)據(jù)庫管理系統(tǒng)是如何控制存放在計(jì)算機(jī)內(nèi)存和/或硬盤上的數(shù)據(jù)的。用戶可以簡單地操作語義對象的模型的構(gòu)建框而不必關(guān)心它們同關(guān)系數(shù)據(jù)庫概念,如表,列,主碼和外碼,交叉表等的關(guān)聯(lián)。盡管在專利文獻(xiàn)’997中描述的數(shù)據(jù)庫建模系統(tǒng)表明在數(shù)據(jù)庫建模技術(shù)上有了顯著的提高,但尚沒有一種機(jī)制可以在因傳統(tǒng)關(guān)系數(shù)據(jù)庫程序建立的現(xiàn)存數(shù)據(jù)庫模式上自動生成語義對象模型。因此,需要一種系統(tǒng),能夠分析現(xiàn)存關(guān)系數(shù)據(jù)庫,建立相應(yīng)的語義對象模型。本發(fā)明是一種通過程序從現(xiàn)存關(guān)系數(shù)據(jù)庫模式自動創(chuàng)建語義對象模型的計(jì)算機(jī)系統(tǒng)。模式分析是通過閱讀關(guān)系數(shù)據(jù)庫的目錄信息并為數(shù)據(jù)庫中定義的每張表創(chuàng)建對應(yīng)的語義對象進(jìn)行的。數(shù)據(jù)庫表中定義的每個(gè)列用于建立對應(yīng)語義對象中對應(yīng)的單值屬性。如果數(shù)據(jù)庫目錄包括聯(lián)系信息,則對目錄進(jìn)行分析,判斷表中是否包含外碼。外碼信息用于建立對應(yīng)的用來定義兩個(gè)或多個(gè)語義對象間的聯(lián)系的對象連接屬性和語義對象中的多值組屬性(multivaluedgroupattributes)或多值(multivalued),單值(simplevalue)屬性。如果數(shù)據(jù)庫目錄不提供關(guān)聯(lián)信息,則提示用戶指出所關(guān)聯(lián)的表及表中表示外碼的列,然后該信息用于修改語義對象模型以反映語義對象模型中的聯(lián)系和多值屬性。前述內(nèi)容及本發(fā)明的多個(gè)附帶優(yōu)點(diǎn)通過參照下面的詳細(xì)描述,結(jié)合附圖可以更易接受,更好地理解,其中圖1是一個(gè)典型關(guān)系數(shù)據(jù)庫模式的圖形表示;圖2是同圖1所示的數(shù)據(jù)庫模式對應(yīng)的由本發(fā)明創(chuàng)建的語義對象模型的圖形表示;圖3是根據(jù)本發(fā)明而制的計(jì)算機(jī)系統(tǒng)框圖,通過運(yùn)行程序在一個(gè)現(xiàn)存的關(guān)系數(shù)據(jù)庫模式上建立一個(gè)語義對象模型;圖4A-4D是一系列流程圖,示出了本發(fā)明的計(jì)算機(jī)系統(tǒng)在一個(gè)現(xiàn)存關(guān)系數(shù)據(jù)庫模式上建立一個(gè)語義對象模型的執(zhí)行步驟;圖5是一張流程圖,示出了當(dāng)關(guān)系數(shù)據(jù)庫目錄提供聯(lián)系信息時(shí)本發(fā)明的計(jì)算機(jī)系統(tǒng)檢測交叉表的執(zhí)行步驟;圖6是一張流程圖,示出了本發(fā)明的計(jì)算機(jī)系統(tǒng)在關(guān)系數(shù)據(jù)庫模式中檢測應(yīng)轉(zhuǎn)換為語義對象模型中的多值組或多值、單值屬性的表的執(zhí)行步驟;圖7A和7B是流程圖,示出了當(dāng)關(guān)系數(shù)據(jù)庫目錄提供聯(lián)系信息時(shí)計(jì)算機(jī)系統(tǒng)將語義對象模型中的一個(gè)語義對象轉(zhuǎn)換成一個(gè)對象連接屬性的步驟;圖8是一張流程圖,示出了當(dāng)關(guān)系數(shù)據(jù)庫包含聯(lián)系信息時(shí)計(jì)算機(jī)系統(tǒng)將交叉表轉(zhuǎn)換為一對多值對象連接屬性的步驟;圖9A-9D是一系列流程圖,示出了計(jì)算機(jī)系統(tǒng)在一個(gè)語義對象中建立多值組屬性的步驟;圖10是一張流程圖,示出了計(jì)算機(jī)系統(tǒng)在一個(gè)同關(guān)系數(shù)據(jù)庫模式中的表對應(yīng)的語義對象中建立多值、單值屬性的執(zhí)行步驟;圖11是一張流程圖,示出了本發(fā)明的計(jì)算機(jī)系統(tǒng)允許用戶選擇一個(gè)同語義對象模型中的一個(gè)單值屬性或組屬性相關(guān)聯(lián)的配置文件(profile)的執(zhí)行步驟;圖12A-12D是一系列流程圖,示出了當(dāng)對應(yīng)的關(guān)系數(shù)據(jù)庫目錄不包括聯(lián)系信息時(shí)本發(fā)明的計(jì)算機(jī)系統(tǒng)建立語義對象模型中的對象連接屬性,多值組屬性和多值、單值屬性的執(zhí)行步驟。如上所述,本發(fā)明是一個(gè)創(chuàng)建同計(jì)算機(jī)系統(tǒng)的內(nèi)存中駐留的現(xiàn)存關(guān)系數(shù)據(jù)庫模式對應(yīng)的語義對象模型的計(jì)算機(jī)系統(tǒng),一旦完成語義對象模型建立,語義對象模型允許用戶通過操縱語義對象模型的部件輕松更新或修改數(shù)據(jù)庫模式。用這種方式,用戶可以在無需理解關(guān)系數(shù)據(jù)庫管理系統(tǒng)或通常用來編輯模式的查詢語言的情況下操縱關(guān)系數(shù)據(jù)庫。圖1示出了一個(gè)關(guān)系數(shù)據(jù)庫模式的代表。該模式在藝術(shù)陳列館的管理人員所操作的計(jì)算機(jī)中存儲了數(shù)據(jù)庫信息。該模式包括六張關(guān)系表。表5存儲了陳列館的客戶信息。表5包括兩列,標(biāo)記為“Name”和“Phone”,分別存放了客戶名稱和客戶的電話號碼。正如那些對關(guān)系數(shù)據(jù)庫技術(shù)熟悉的人所理解的,數(shù)據(jù)庫管理系統(tǒng)維護(hù)一條記錄用于指明表5的主碼是列Name。表的主碼標(biāo)識了表中的唯一記錄,也就是說,陳列館的一個(gè)具體客戶。表7存儲了在陣列館展出的藝術(shù)家信息。表7包括兩列,標(biāo)記為“Name”和“Birthday”,分別存放了藝術(shù)家的名稱和藝術(shù)家的出生年。表7的主碼定義為列Name的一個(gè)入口。表9存儲了藝術(shù)家從事工作的不同媒體信息。該表包括兩列,第一列標(biāo)記為“Name”,用于連接關(guān)系表7第二列中的某一藝術(shù)家。第二列標(biāo)記為“Medium”,存放了標(biāo)識某一藝術(shù)家使用媒體的文本信息,如油,水彩,玻璃,陶瓷等。表7的主碼定義為列Name和列Medium的組合項(xiàng)。表11存儲了在陳列館展示的某幅畫的信息。該表包括三列,標(biāo)記為“Name”,“DatePainted”和“Name-1”,分別存放畫名,畫的完成日期和用于同畫的作家連接的表7的主碼。表11的主碼是列“Name”的一個(gè)值。表13存儲了藝術(shù)陳列館的客戶購買作品的信息。該表包括四列,標(biāo)記為“Name-1”,“Date,”,“Price”和“Name-2”。標(biāo)記為Name-1的列存放客戶名稱,標(biāo)記為Date的列存放畫的購買日期,標(biāo)記為Price的列存放畫的購買價(jià)格,最后,標(biāo)記為Name-2的列存放畫名。Name-1是對應(yīng)表5的外碼,Name-2是對應(yīng)表11的外碼。數(shù)據(jù)庫的最后一張表是表15,它將表5中的記錄同表7中的記錄關(guān)聯(lián)起來。表15包括兩列“Name-1”和“Name-2”,每一列分別存放表5和表7的主碼。表15允許數(shù)據(jù)庫管理系統(tǒng)將陳列館的客戶同在陳列館展覽的藝術(shù)家連接起來。表15的主碼是列Name-1和Name-2的組合項(xiàng)。圖1所示的數(shù)據(jù)庫模式是用傳統(tǒng)關(guān)系數(shù)據(jù)庫程序創(chuàng)建的典型的關(guān)系數(shù)據(jù)庫模式。不熟悉關(guān)系數(shù)據(jù)庫編程的計(jì)算機(jī)用戶會發(fā)現(xiàn)在沒有專門數(shù)據(jù)庫編程人員幫助的情況下建立該模式是困難的。創(chuàng)建圖1所示的模式需要數(shù)據(jù)庫概念方面的知識,如表,主碼,外碼及交叉表。如上所示,SALSA數(shù)據(jù)庫建模系統(tǒng)允許用戶在不知道關(guān)系數(shù)據(jù)庫概念的情況下創(chuàng)建數(shù)據(jù)庫模式。圖2示出了同圖1所示的關(guān)系數(shù)據(jù)庫模式相對應(yīng)的一個(gè)語義對象模型20。該語義對象模型由三個(gè)語義對象組成,語叉對象22表示陳列館的一個(gè)客戶,語義對象30表示在陳列館展示作品的一個(gè)藝術(shù)家,語義對象40表示在陳列館展出的畫。對象模型20中的每個(gè)語義對象一些屬性,這些屬性表示了存儲在數(shù)據(jù)庫中的關(guān)于每個(gè)語義對象的信息。例如,語義對象22有一個(gè)標(biāo)記為“Name”的屬性,它表示客戶名稱,一個(gè)標(biāo)記為“Phone”的屬性表示存放在數(shù)據(jù)庫中客戶的電話號碼。另外,客戶包含一個(gè)標(biāo)記為“Purchase”的組屬性,它表示在陳列館發(fā)生的一次銷售行為。組屬性Purchase由三個(gè)單值屬性構(gòu)成,表示銷售發(fā)生日期,賣出畫的價(jià)格和一個(gè)對象連接屬性,該對象連接屬性將由語義對象40的一個(gè)實(shí)例所表示的一幅具體的畫同銷售關(guān)聯(lián)起來。能唯一定義語義對象的一個(gè)實(shí)例的屬性在屬性名左邊用兩顆星進(jìn)行標(biāo)記。在語義對象模型中定義兩個(gè)語義對象之間聯(lián)系的對象連接屬性用方框圈住以區(qū)別于其他的語義對象中的單值或組對象。如專利申請’997中提出的,一些具有最小出現(xiàn)數(shù)和最大出現(xiàn)數(shù)和最大出現(xiàn)數(shù)屬性,其最小和最大出現(xiàn)數(shù)在屬性名的右下角作為腳標(biāo)進(jìn)行說明。最小出現(xiàn)數(shù)表示合法語義對象屬性的實(shí)例的最小數(shù),而最大值表示合法屬性的實(shí)例的最大數(shù)。例如,語義對象22中標(biāo)記為“Purchase”的組屬性有一個(gè)最小出現(xiàn)數(shù)零,意味著陳列館的某個(gè)客戶沒有購買活動。相似地,組Purchase的最大出現(xiàn)數(shù)為N,意味著某個(gè)客戶可能從陳列館進(jìn)行過一次以上的購買活動。出現(xiàn)數(shù)也適用于對象連接屬性。例如,語義對象22包括一個(gè)標(biāo)記為“Artist”的對象連接屬性,它將數(shù)據(jù)庫中的一個(gè)客戶同一個(gè)藝術(shù)家連接起來以跟蹤客戶感興趣的藝術(shù)家。標(biāo)記為“Artist”的對象連接屬性是多值的,也就是說,它有最大出現(xiàn)數(shù)N,這意味著某客戶可能對多個(gè)藝術(shù)家感興趣。語義對象30表示在陳列館展示作品的藝術(shù)家。語義對象Artist包括兩個(gè)單值屬性,標(biāo)記為“Name”和“Birthday”表示藝術(shù)家的傳記存儲信息。屬性Name作為唯一標(biāo)識意味著數(shù)據(jù)庫中沒有兩個(gè)藝術(shù)家有相同的名字。另外,語義對象30包括一個(gè)多值的單值屬性,標(biāo)記為“Medium”,它表示藝術(shù)室創(chuàng)作的不同作。最后,語義對象30也包括兩個(gè)多值的對象連接屬性,標(biāo)記為“Painting”和“Customer”,分別將藝術(shù)家同畫及客戶連接起來。語義對象模型中最后一個(gè)語義對象40表示在陳列館展出的畫。語義對象40包括兩個(gè)單值屬性,標(biāo)記為“Name”和“Date-Painted”。畫名表明在數(shù)據(jù)庫中存儲的畫名是唯一的。語義對象40也包括兩個(gè)對象連接屬性。第一個(gè)對象連接屬性標(biāo)記為“Artist”,表示畫與藝術(shù)家之間的聯(lián)系。該聯(lián)系的出現(xiàn)數(shù)是1.1,表示一幅畫必須至少有一個(gè)藝術(shù)家并且最多有一個(gè)藝術(shù)家。標(biāo)記為“Customer”的對象連接屬性表示畫與客戶之間的聯(lián)系。該屬性出現(xiàn)數(shù)為O.N,表示對某幅畫可能沒有客戶對其感興趣,也有可能有多個(gè)客戶對其感興趣。如上所示,語義對象模型的好處如圖2所示,同常規(guī)的數(shù)據(jù)庫程序不同,用戶可以通過增加或刪除語義對象,或者在語義對象中增加或刪除屬性來更新或修改數(shù)據(jù)庫。通過操縱語義對象模型的部件,用戶可以不必理解建立圖1模式所需的關(guān)系數(shù)據(jù)庫概念,而只需理解數(shù)據(jù)庫中所存儲的數(shù)據(jù)的映射就可以創(chuàng)建或修改關(guān)系數(shù)據(jù)庫。如上所示,SALSA數(shù)據(jù)庫建模系統(tǒng)是由WallDataIncorporated開發(fā)的,它允許用戶創(chuàng)建語義對象模型并對模型進(jìn)行分析從而創(chuàng)建相應(yīng)的關(guān)系數(shù)據(jù)庫模式。但是,許多用戶已經(jīng)使用當(dāng)前可用的關(guān)系數(shù)據(jù)庫程序創(chuàng)建了數(shù)據(jù)庫模式,如MicrosoftAccess,或BorlandParadox。為了允許非熟練用戶輕松更新或修改這些數(shù)據(jù)庫,本發(fā)明可以從現(xiàn)存關(guān)系數(shù)據(jù)庫模式建立相應(yīng)的語義對象模型。現(xiàn)在參看圖3,它示出了據(jù)本發(fā)明實(shí)現(xiàn)的計(jì)算機(jī)系統(tǒng)。該計(jì)算機(jī)系統(tǒng)一般包括一個(gè)中央處理單元70,一個(gè)內(nèi)部存儲器72和一個(gè)永久存儲裝置,如磁盤驅(qū)動器74。命令通過鍵盤78和點(diǎn)擊設(shè)備,如鼠標(biāo)80進(jìn)入CPU。CPU生成圖形用戶界面在顯示屏或監(jiān)視器76上進(jìn)行顯示。在存儲器72中駐留有一組程序指令,它引導(dǎo)CPU來分析現(xiàn)存的關(guān)系數(shù)據(jù)庫模式以創(chuàng)建相應(yīng)的對象模型,對象模型在顯示器76上展現(xiàn)給用戶。程序指令可以永久存儲在只讀存儲器上,或者由軟盤CD-ROM或者連到CPU的調(diào)制解調(diào)器讀入,由計(jì)算機(jī)系統(tǒng)接收。在前述本發(fā)明實(shí)施例中,CPU70可以用面向?qū)ο笳Z言,如C++來編程。但是,那些對C++熟練的人員會認(rèn)識到如果他們愿意也可以使用其他的編程語言。下面的流程圖描述了為了由現(xiàn)存的關(guān)系數(shù)據(jù)庫模式生成語義對象模型,通過中央處理單元實(shí)現(xiàn)的計(jì)算機(jī)程序操作。如專利申請’997提出的,計(jì)算機(jī)系統(tǒng)可以使用一系列C++類來存儲語義對象模型的一個(gè)表示。為了參照方便,這些對于理解本發(fā)明有重要意義的類的數(shù)據(jù)成員再羅列在這里。每個(gè)類的用于建立語義對象模型的過程(Procedures)或方法沒有列出,但過程操作會在下面進(jìn)行討論。那些精通計(jì)算機(jī)編程技術(shù)的人員可以據(jù)本發(fā)明下面的描述建立所需方法。類集(ClassAlbum)</tables>語義對象類</tables>單值類配置文件</tables>對象連接類配置文件單值屬性類公式屬性類對象連接屬性類</tables>子類型組屬性類</tables>現(xiàn)在參看圖4A-4D,圖中示出了根據(jù)本發(fā)明編制的計(jì)算機(jī)系統(tǒng)的整個(gè)操作。從步驟100開始,計(jì)算機(jī)系統(tǒng)提示用戶輸入存在于計(jì)算機(jī)內(nèi)存中的用于創(chuàng)建關(guān)系數(shù)據(jù)庫模式的關(guān)系數(shù)據(jù)庫程序的品牌或類型。一般說來,有兩種類型的關(guān)系數(shù)據(jù)庫。第一類具有包含聯(lián)系信息的目錄,將在下面進(jìn)行描述,聯(lián)系信息指的是表中的哪些列被定義為對應(yīng)數(shù)據(jù)庫中其他表的外碼。第二類數(shù)據(jù)庫在數(shù)據(jù)庫目錄中不包含聯(lián)系信息。本發(fā)明被設(shè)計(jì)用來適用于這兩類數(shù)據(jù)庫。用戶在輸入用于創(chuàng)建現(xiàn)存數(shù)據(jù)庫模式的關(guān)系數(shù)據(jù)庫程序的類型后,該程序使用一張存儲在計(jì)算機(jī)內(nèi)存或磁盤驅(qū)動器上的檢查表(未示出)來確定步驟102中目錄是否包含聯(lián)系信息。如果目錄不包含聯(lián)系信息,計(jì)算機(jī)系統(tǒng)則使用圖12A-12D所示的步驟來創(chuàng)建相應(yīng)的語義對象模型,這在下面將進(jìn)行描述。如果關(guān)系數(shù)據(jù)庫的目錄包含聯(lián)系信息,計(jì)算機(jī)系統(tǒng)首先在步驟106打開關(guān)系數(shù)據(jù)庫目錄。該目錄包括數(shù)據(jù)庫中每張關(guān)系表的定義以及一張具體表中每一列的定義。在步驟108,計(jì)算機(jī)系統(tǒng)首先創(chuàng)建上面定義的集類的一個(gè)實(shí)例。集類用于跟蹤語義對象模型中的每個(gè)語義對象。在創(chuàng)建集類實(shí)例之后,計(jì)算機(jī)系統(tǒng)從步驟110開始一個(gè)循環(huán)過程,在步驟110對數(shù)據(jù)庫目錄中定義的每張表進(jìn)行分析。在步驟112,計(jì)算機(jī)系統(tǒng)為在數(shù)據(jù)庫目錄上定義的每張表建立一個(gè)語義對象類的實(shí)例。語義對象類的每個(gè)實(shí)例表示相應(yīng)的語義對象模型中的一個(gè)語義對象,該語義對象被顯示給用戶。語義對象類的實(shí)例在步驟114被賦予一個(gè)唯一的標(biāo)識號。在步驟116,名稱(Name)成員變量被初始化為創(chuàng)建語義對象所參照的在數(shù)據(jù)庫中定義的表名。在步驟118(圖4B),標(biāo)題(Caption)和描述(Desription)成員變量被初始化為空字符串。在圖1和圖2所示的例子中,步驟110-118將據(jù)表5創(chuàng)建客戶(Customer)語義對象22,據(jù)表7創(chuàng)建藝術(shù)家(Artist)語義對象30及據(jù)表11創(chuàng)建畫(Painting)語義對象11。如上所示,為語義對象模型所創(chuàng)建的集類對象的實(shí)例維護(hù)了一張包含在模型中的每個(gè)語義對象的列表。在步驟120,一個(gè)指針被放到集的內(nèi)容列表中,該指針指向新創(chuàng)建的語義對象類的實(shí)例。計(jì)算機(jī)系統(tǒng)為每個(gè)所創(chuàng)建的語義對象創(chuàng)建對象連接配置文件類的一個(gè)實(shí)例。如專利申請’997所描述的,配置文件用作創(chuàng)建相應(yīng)屬性的模板。配置文件維護(hù)了一張由自己所派生的屬性列表。如果用戶改變了特征值(Property),也就是說配置文件的或成員變量的缺省值,那么計(jì)算機(jī)系統(tǒng)將更新?lián)渲梦募?chuàng)建的每個(gè)派生屬性的特征值,這樣就可以簡單而有效地改變?nèi)謱傩缘奶卣髦?。在步驟124,對象連接配置文件的成員變量標(biāo)識號(ID)被賦予一個(gè)唯一數(shù)。對象連接配置文件的成員變量名稱(Name),標(biāo)題(Caption)和描述(Description)在步驟126據(jù)相應(yīng)的語義對象進(jìn)行初始化。成員變量標(biāo)識號狀態(tài)(ID-Status)在步驟128被初始化為“空(none)”。成員變量標(biāo)識號狀態(tài)可置為枚舉值“空”,“非唯一(non-unique)”,或“唯一(unique)”中的任一個(gè)值。在步驟130,基語義對象(BaseSemanticObject)指針被初始化為語義對象的地址,該語義對象導(dǎo)致了對象連接配置文件的建立。現(xiàn)在參看圖4C,一旦建立了語義對象和對象連接配置文件,計(jì)算機(jī)系統(tǒng)在步驟開始一個(gè)循環(huán)處理,在步驟140將對關(guān)系數(shù)據(jù)庫一張表中所定義的每一列進(jìn)行分析,創(chuàng)建上面步驟142定義的單值屬性(SimpleValueActribute)類的一個(gè)實(shí)例。例如,表5中標(biāo)記為“Phone”的列用于創(chuàng)建客戶語義對象22的標(biāo)記為“Phone”的單值屬性。新創(chuàng)建的單值屬性,即成員變量ID在步驟144被賦予一個(gè)唯一數(shù),成員變量Description和Caption在步驟146被初始化為空字符串。在步驟148,成員變量最小出現(xiàn)數(shù)(MinimumCardinality)被初始化為0,成員變量最大出現(xiàn)數(shù)(MaximumCardinality)被初始化為1。在步驟150,單值屬性的包容器指針被初始化為屬性邏輯存在的語義對象的地址。典型地,包容器指針可以指向語義對象類的一個(gè)實(shí)例,也可以指向一個(gè)組屬性,這將在下面討論。一旦創(chuàng)建了單組屬性,計(jì)算機(jī)系統(tǒng)會在步驟152創(chuàng)建單值配置文件(SimpleValueProfile)類的一個(gè)實(shí)例。在步驟154,成員變量Name,Description,Caption,ID-Status,MinimumCardinality和MaximumCardinality將據(jù)前面創(chuàng)建的相應(yīng)的單值屬性進(jìn)行初始化?,F(xiàn)在參考圖4D,一個(gè)指向相應(yīng)單值屬性的指針被放到單值屬性配置文件的派生屬性列表中,并且在步驟156配置文件的地址用于初始化相應(yīng)屬性的基配置文件(BaseProfile)指針。在步驟160,計(jì)算機(jī)系統(tǒng)判斷是否表中定義的所有列都已分析完畢。如果沒有,計(jì)算機(jī)系統(tǒng)回轉(zhuǎn)到步驟140(圖4C)。一旦一張具體表中的所有列都分析完畢,計(jì)算機(jī)系統(tǒng)在步驟162判斷是否數(shù)據(jù)庫目錄中定義的所有表都已分析完畢。如果沒有,計(jì)算機(jī)系統(tǒng)回轉(zhuǎn)到步驟110(圖4A)并如上描述創(chuàng)建語義對象類的另一個(gè)實(shí)例。在計(jì)算機(jī)完成圖4A-4D所示的步驟后,相應(yīng)的語義對象模型將包含多個(gè)語義對象,每個(gè)語義對象含有一個(gè)單值屬性,該單值屬性對應(yīng)于在相應(yīng)的關(guān)系數(shù)據(jù)庫表中定義的每個(gè)列。在創(chuàng)建了語義對象之后,計(jì)算機(jī)系統(tǒng)將對存儲在數(shù)據(jù)庫目錄中的聯(lián)系信息進(jìn)行解釋以創(chuàng)建合適的對象連接屬性和多值組或多值、單值屬性。為了判斷數(shù)據(jù)庫目錄中的某張表是否應(yīng)翻譯為一個(gè)多值的對象連接屬性而不是一個(gè)語義對象,計(jì)算機(jī)系統(tǒng)掃描數(shù)據(jù)庫目錄,查找那些含有定義為外碼列的交叉表。在圖1所示的例子中,表15是一張交叉表,因?yàn)樗臉?biāo)記為“Name-1”和“Name-2”的列分別是表5和表7的外碼。如圖5所示,計(jì)算機(jī)系統(tǒng)運(yùn)行程序來檢測交叉表,該程序在步驟200開始一個(gè)外循環(huán),分析數(shù)據(jù)庫目錄中每張表的定義。在步驟202,計(jì)算機(jī)系統(tǒng)開始一個(gè)內(nèi)循環(huán)來分析一張表中定義的每一列。對每一列,計(jì)算機(jī)系統(tǒng)在步驟204讀出存儲在目錄中的聯(lián)系信息。在步驟206,計(jì)算機(jī)系統(tǒng)判斷該列是否定義為外碼。如果不是,計(jì)算機(jī)系統(tǒng)運(yùn)行程序以確定該表不能作為交叉表,并且對數(shù)據(jù)庫目錄中定義的下一張表進(jìn)行處理。如果步驟206的結(jié)果為是,則計(jì)算機(jī)系統(tǒng)判斷是否表中的所有列都已分析完畢。如果沒有,計(jì)算機(jī)系統(tǒng)回轉(zhuǎn)到步驟202并分析表中剩下的列。如果表中的每一列都被定義為外碼,計(jì)算機(jī)系統(tǒng)在步驟210將該表標(biāo)志為交叉表。然后在步驟212會將表名加到交叉表列表中。將表加入到交叉表列表中后,處理進(jìn)行到判斷框214,在這里計(jì)算機(jī)系統(tǒng)判斷數(shù)據(jù)庫目錄中的所有表是否已分析完畢。如果沒有,則對數(shù)據(jù)庫目錄中的下張表進(jìn)行分析。一旦數(shù)據(jù)庫目錄中的所有表都已分析完畢,計(jì)算機(jī)系統(tǒng)將具有一個(gè)在數(shù)據(jù)庫模式中定義的交叉表列表并且處理在步驟216停止。一旦找到數(shù)據(jù)庫中所有的交叉表,計(jì)算機(jī)系統(tǒng)則對數(shù)據(jù)庫目錄進(jìn)行掃描以找到那些應(yīng)翻譯為多值組屬性或多值、單值屬性。例如,圖1所示的表9并不表示一個(gè)語義對象但卻包含著一條記錄,記錄內(nèi)容是一名藝術(shù)家創(chuàng)作了多個(gè)作品中的哪一個(gè)。因此,計(jì)算機(jī)系統(tǒng)可以進(jìn)行以下操作,即刪除為此表而建的語義對象模型并且用語義對象30中一個(gè)標(biāo)記為“Medium”的單值屬性來替代它,該單值屬性具有最大出現(xiàn)數(shù)N。如圖6所示,計(jì)算機(jī)系統(tǒng)在步驟240開始一個(gè)循環(huán),對數(shù)據(jù)庫目錄中先前沒被標(biāo)識為交叉表的每張表進(jìn)行分析。在判斷框242,計(jì)算機(jī)系統(tǒng)判斷表的主碼是否包括兩個(gè)或兩個(gè)以上的列。主碼不包括兩個(gè)或兩個(gè)以上列的表不被模型化為多值組或多值、單值屬性。然后處理進(jìn)行到步驟244,在這里判斷是否數(shù)據(jù)庫目錄中的所有非交叉表都已分析完畢。如果步驟242的結(jié)果為是,則主碼至少包括兩列,計(jì)算機(jī)系統(tǒng)在步驟246開始一個(gè)內(nèi)循環(huán),對組成表主碼的每個(gè)列進(jìn)行分析。在步驟248,讀出為組成表主碼的每個(gè)列而定義的聯(lián)系信息。在判斷框250,計(jì)算機(jī)系統(tǒng)判斷所分析的列在另一張關(guān)系表中是否也作為主碼列來進(jìn)行定義。如果不是,計(jì)算機(jī)系統(tǒng)在步驟252判斷是否定義為表的主碼的所有列都已分析完畢。如果不是,處理回轉(zhuǎn)到步驟246,對定義為主碼的下一個(gè)列進(jìn)行分析。如果步驟252的結(jié)果為是,則處理進(jìn)行到步驟244并對數(shù)據(jù)庫目錄中的下一張非交叉表進(jìn)行分析。如果步驟250的判斷結(jié)果為是,計(jì)算機(jī)系統(tǒng)則在步驟254判斷是否所分析的表有一個(gè)以上的非外碼列。如果不是,該表被標(biāo)識為多值、單值屬性并且在步驟256將表名加入到多值、單值屬性列表中。如果該表具有一個(gè)以上的非外碼列,該表則被標(biāo)識為多值組并且在步驟258將表名加入到多值組列表中。除了將該表加入多值組列表外,計(jì)算機(jī)還將記錄定義為表主碼的列個(gè)數(shù),原因在下面解釋。然后處理進(jìn)行到步驟244,判斷數(shù)據(jù)庫目錄中的所有非交叉表是否已分析完畢。如果為否,在步驟240分析目錄中定義的下一張表。如果所有的非交叉表都已分析完畢,處理在步驟260結(jié)束。計(jì)算機(jī)系統(tǒng)在執(zhí)行了圖6所示的步驟后,數(shù)據(jù)庫中所有表示多值組及多值、單值屬性的表的列表將得以創(chuàng)建。在執(zhí)行了圖6所示的步驟后,計(jì)算機(jī)系統(tǒng)然后搜索數(shù)據(jù)庫目錄,查找滿足下面條件的表,即這些表未被標(biāo)識為交叉表,多值組,或多值、單值屬性并且這些表包含對應(yīng)數(shù)據(jù)庫其他表的外碼。如果外碼卡是表主碼的組成部分,本發(fā)明將外碼翻譯為相應(yīng)的對象連接屬性,該屬性定義了兩個(gè)語義對象之間的聯(lián)系。在圖1所示的例子中,表11包括一個(gè)標(biāo)記為“Name-1”的列,該列應(yīng)翻譯為一個(gè)對象連接屬性,將語義對象30藝術(shù)家同語義對象40畫連接起來。如圖7A和7B所示,計(jì)算機(jī)系統(tǒng)在步驟280開始一個(gè)循環(huán),對數(shù)據(jù)庫中未被標(biāo)識為交叉表,多值組,或多值、單值屬性的每張表進(jìn)行分析。在步驟281,計(jì)算機(jī)系統(tǒng)開始一個(gè)內(nèi)循環(huán),對余下表中所定義的每一列進(jìn)行分析。在步驟282讀出列的聯(lián)系信息并且在步驟284判斷該列是否被定義為對應(yīng)關(guān)系數(shù)據(jù)庫另一表中某列的外碼。那些對技術(shù)熟練的人員會認(rèn)識到外碼可以定義為表中的多個(gè)列。在這種情況下,在步驟284必須分析整個(gè)外碼以便對整個(gè)外碼只創(chuàng)建一對對象連接屬性。如果所分析的列不是外碼,則處理進(jìn)行至步驟286,在這里判斷表中的所有列是否都已分析完畢。如果為否,處理回轉(zhuǎn)到步驟281并分析表中的下一個(gè)列。一旦表中的所有列分析完畢,處理進(jìn)行到步驟288,在這里判斷是否數(shù)據(jù)庫目錄中所有余下的表都已分析完畢。如果為否,處理回到步驟280并且對下一個(gè)非交叉,多值組或多值屬性表進(jìn)行分析。這一處理不斷進(jìn)行直到所有這樣的表都已分析完畢,處理在步驟289停止。如果判斷框284的結(jié)果為是,意味著表中包括一個(gè)對應(yīng)另一張表某列的定義為外碼的列,計(jì)算機(jī)系統(tǒng)在步驟290創(chuàng)建對象連接屬性類的兩個(gè)實(shí)例。在對象連接屬性的實(shí)例創(chuàng)建之后,該屬性被放入相應(yīng)的語義對象中以表示由外碼定義的聯(lián)系。例如,如圖1所示,表7存儲了關(guān)于某個(gè)藝術(shù)家的數(shù)據(jù),它通過存儲在標(biāo)記為Name-1的列中的外碼同存儲某幅畫數(shù)據(jù)的表11連接。該聯(lián)系在相應(yīng)的語義對象模型(在圖2所示)中通過語義對象30中標(biāo)記為“Painting”的對象連接屬性和語義對象40中相應(yīng)的標(biāo)記為“Artist”的對象連接屬性進(jìn)行表示。為了在邏輯上將新創(chuàng)建的對象連接屬性放入正確的語義對象中,計(jì)算機(jī)系統(tǒng)首先在步驟292在同下面兩類語義對象相關(guān)的對象連接配置文件的派生屬性列表中放入一個(gè)指向新創(chuàng)建的對象連接屬性的指針,這兩類語義對象指表示具有外碼的表的語義對象和表示該外碼所參照的表的語義對象。在上面所述的藝術(shù)家-畫-例中,一個(gè)指向?qū)ο筮B接屬性的指針會被放到同藝術(shù)家語義對象30和畫語義對象40相關(guān)的對象連接配置文件的派生屬性列表中。另外,對象連接屬性的基配置文件指針被置為同對象連接屬性相關(guān)的對象連接配置文件的地址。在步驟294,對象連接屬性的成員變量會據(jù)同它們相關(guān)的對象連接配置文件進(jìn)行初始化。然后在步驟295設(shè)置對象連接屬性的配對指針的彼此指向。在步驟296(圖7B),一個(gè)指向同具有外碼的表相關(guān)的對象連接屬性的指針被加入到同該外碼所參照的表相關(guān)的語義對象的內(nèi)容(Content)列表中。在步驟298,一個(gè)指向同外碼所參照的表相關(guān)的對象連接屬性的指針被加入到同具有該外碼的表相關(guān)的語義對象的內(nèi)容列表中。在步驟300,對象連接屬性的包括器指針被更新為邏輯上被包括的語義對象的地址。在步驟302,包含在同不具有外碼的表相關(guān)的語義對象中的對象連接屬性的最大出現(xiàn)數(shù)被初始化為N,表示一對多聯(lián)系。例如,在上面所述的藝術(shù)家-畫-例中,可以看到,藝術(shù)家語義對象30中標(biāo)記為“Painting”的對象連接屬性的最大出現(xiàn)數(shù)為N,表示一名藝術(shù)家可以創(chuàng)作出多幅畫這一事實(shí)。在步驟304,計(jì)算機(jī)系統(tǒng)回轉(zhuǎn)到步驟280(圖7A)并且對數(shù)據(jù)庫目錄中的下一張表進(jìn)行分析。那些對技術(shù)熟練的人員會認(rèn)識到圖7A和7B所示的步驟將把一對一聯(lián)系錯誤地標(biāo)識為一對多聯(lián)系。但是,用戶可以在整個(gè)語義對象模型完成后通過修改對象連接屬性的最大出現(xiàn)數(shù)屬性輕易地改正這一錯誤。另外一個(gè)方法是,計(jì)算機(jī)系統(tǒng)可以瀏覽數(shù)據(jù)庫目錄以判斷外碼是否唯一。如果唯一,同沒有外碼的表相關(guān)的語義對象中的對象連接屬性的最大出現(xiàn)數(shù)被置為1。在表示一對多聯(lián)系(或一對一聯(lián)系,如果外碼唯一)的對象連接屬性被加入到語義對象模型之后,計(jì)算機(jī)系統(tǒng)接著對交叉表列表進(jìn)行分析以在語義對象模型中創(chuàng)建表示多對多聯(lián)系的多值對象連接屬性?,F(xiàn)在參看圖8,計(jì)算機(jī)系統(tǒng)從步驟350開始通過對交叉表列表中的每張表進(jìn)行分析來創(chuàng)建表示多對多聯(lián)系的對象連接屬性。在步驟352,創(chuàng)建了對象連接屬性類的兩個(gè)實(shí)例。在步驟354,一個(gè)指向新創(chuàng)建的對象連接屬性的指針被加入到同交叉表中的外碼所參照的表相關(guān)的對象連接配置文件的派生屬性列表中。對象連接屬性的成員變量在步驟356據(jù)相應(yīng)的對象連接配置文件進(jìn)行初始化。然后在步驟358對兩個(gè)對象連接屬性的配對指針的彼此指向進(jìn)行設(shè)置。在步驟360,計(jì)算機(jī)系統(tǒng)通過在相應(yīng)的語義對象的內(nèi)容列表中加入一個(gè)指向?qū)ο筮B接屬性的指針邏輯地將對象連接屬性放入相關(guān)的語義對象中。例如,如圖1所示,表15是一張交叉表,表示客戶同藝術(shù)家之間多對多聯(lián)系。在圖2所示的語義對象模型中,該交叉表被表示為語義對象22中標(biāo)記為“Artist”的多值對象連接屬性和語義對象30中標(biāo)記為“Customer”的多值對象連接屬性。因此,據(jù)同客戶語義對象22相關(guān)的對象連接配置文件初始化的對象連接屬性被加入到藝術(shù)家語義對象30的內(nèi)容列表中,據(jù)同藝術(shù)家語義對象30相關(guān)的對象連接配置文件初始化的對象連接屬性被加入到客戶語義對象22的內(nèi)容列表中。每個(gè)對象連接屬性的包括器指針在步驟362被更新為邏輯上被包括的語義對象的地址。在步驟364,兩個(gè)對象連接屬性的最大出現(xiàn)數(shù)被初始化為“N”。因?yàn)橛?jì)算機(jī)系統(tǒng)初始地為在數(shù)據(jù)庫中找到的每張表創(chuàng)建一個(gè)語義對象,對在數(shù)據(jù)庫模式中定義的每張交叉表來說,語義對象會被不正確地創(chuàng)建。因此,計(jì)算機(jī)系統(tǒng)在步驟366刪除語義對象及其相應(yīng)的每交叉表而建的對象連接配置文件。在步驟368,計(jì)算機(jī)系統(tǒng)判斷是否交叉表列表中的每張表都已分析完畢。如果為否,系統(tǒng)回轉(zhuǎn)到步驟350并檢索交叉表列表中的下一個(gè)入口。一旦交叉表列表中的所有入口分析完畢,處理完成。在圖7A-7B及圖8所示的步驟完成之后,語義對象模型會包含表示一對多和多對多聯(lián)系的對象連接屬性。圖9A-D示出了本發(fā)明將應(yīng)放入多值組屬性中的屬性正確模型化的步驟。如圖2所示,客戶語義對象22包括一個(gè)標(biāo)記為“Purchase”的多值組。該多值組包括兩個(gè)單值屬性,標(biāo)記為“Date”和“Price”,還有一個(gè)標(biāo)記為“Painting”的對象連接屬性,該屬性將語義對象22同語義對象40關(guān)聯(lián)起來。由于多值組存儲在關(guān)系數(shù)據(jù)庫中它們自己的表中,計(jì)算機(jī)系統(tǒng)將在第一輪分析期間,對應(yīng)應(yīng)該多值組表不正確地創(chuàng)建一個(gè)語義對象。因此,圖9A-9D所示的操作步驟會刪除為存儲多值組數(shù)據(jù)的表而創(chuàng)建的語義對象并且將對應(yīng)于該表的列的屬性放入適當(dāng)?shù)恼Z義對象中的一個(gè)多值組屬性中。從步驟380開始,計(jì)算機(jī)系統(tǒng)對通過圖6所示步驟建立的多值組的列表中的入口按它們在主碼中的列數(shù)進(jìn)行排序。一旦排序完成,計(jì)算機(jī)系統(tǒng)在步驟382從具有最大列數(shù)的入口開始處理多值組列表中的每個(gè)入口。在步驟384,計(jì)算機(jī)系統(tǒng)對多值組列表中的每個(gè)入口進(jìn)行分析。對列表中的每個(gè)多值組表,計(jì)算機(jī)系統(tǒng)在步驟386創(chuàng)建一個(gè)組屬性類的一個(gè)實(shí)例。在步驟388為成員變量ID分配一個(gè)唯一值并且在步驟390將成員變量Caption和Description初始化為空字符串。在步驟392,該組的最小出現(xiàn)數(shù)被初始化為O,最大出現(xiàn)數(shù)被初始化為N。每個(gè)組屬性存儲了成員屬性的最小數(shù)一個(gè)指示標(biāo)志,該成員屬性對合法完整的組來說必須在組中按序提供。在步驟394,該存儲在成員變量MinimumCount中的數(shù)被初始化為O。相似地,成員變量MaximumCount存儲了成員變量的最大數(shù),該成員變量對合法組來說在組中按序提供。現(xiàn)在參看圖9B,在步驟398,組屬性的包括器指針被置為同外碼所參照的表相關(guān)的語義對象的地址,該外碼是多值組表的主碼的一部分。最后在步驟400,計(jì)算機(jī)系統(tǒng)在包含組屬性的語義對象的內(nèi)容列表中加入一個(gè)指向新創(chuàng)建的組屬性的指針。一旦創(chuàng)建了組屬性,計(jì)算機(jī)系統(tǒng)在步驟402創(chuàng)建組配置文件類的一個(gè)相應(yīng)實(shí)例。在步驟404成員變量ID被分配一個(gè)唯一值并且在步驟406成員變量Name,Description,Caption,MinimumCardinality,MaximumCardinality,Mincount和MaxCount據(jù)相關(guān)的組屬性進(jìn)行初始化。在計(jì)算機(jī)系統(tǒng)創(chuàng)建語義對象模型的第一輪期間,計(jì)算機(jī)系統(tǒng)將為作為主碼一部分的外碼列創(chuàng)建一個(gè)單值屬性。因此,計(jì)算機(jī)系統(tǒng)在步驟408從語義對象模型刪除某個(gè)單值屬性(或多個(gè)單值屬性,如果外碼被定義為多列)及其相應(yīng)的配置文件。一個(gè)多值組表中的列可能會包含一個(gè)被不正確地標(biāo)識為單值屬性的外碼。因此,計(jì)算機(jī)系統(tǒng)在步驟410開始循環(huán)處理,分析表中余下的列,也就是那些未定義為主碼一部分的列。在步驟412,計(jì)算機(jī)系統(tǒng)讀出每列的聯(lián)系信息并在步驟414判斷該列是否為外碼。如果不是,計(jì)算機(jī)系統(tǒng)執(zhí)行至步驟416,在這里判斷是否表中所有的列都已分析完畢。這一過程不斷重復(fù)直至表中所有的列都分析完畢。如果步驟414的應(yīng)答為是,表示該列被定義為外碼,計(jì)算機(jī)系統(tǒng)執(zhí)行圖9C所示的步驟。接著,如果外碼被定義為兩或多列,則對包括在外碼中的每一列執(zhí)行圖9C的步驟。從步驟420開始,計(jì)算機(jī)系統(tǒng)從語義對象模型刪除開始為外碼列創(chuàng)建的單值屬性及配置文件。在步驟422,計(jì)算機(jī)系統(tǒng)接著創(chuàng)建對象連接屬性類的兩個(gè)實(shí)例。在步驟424,對象連接屬性的成員變量據(jù)它們相應(yīng)的同為多值組屬性表創(chuàng)建的語義對象相關(guān)的對象連接配置文件和同據(jù)外碼所參照的表而創(chuàng)建的語義對象相關(guān)的對象連接配置文件進(jìn)行初始化。在步驟426,將對對象連接屬性的配對指針的彼此指向進(jìn)行設(shè)置。在步驟428,一個(gè)指向同據(jù)多值組表創(chuàng)建的語義對象相關(guān)的對象連接屬性的指針被加入到同外碼所參照的表相關(guān)的語義對象的內(nèi)容列表中。相似地,在步驟430,一個(gè)指向同據(jù)外碼所參照的表創(chuàng)建的語義對象相關(guān)的對象連接屬性的指針被加入到同多值組表相關(guān)的語義對象的內(nèi)容列表中。在步驟432,每個(gè)對象連接屬性的配對指針被更新,改為指向它們的包括語義對象。在步驟434,包括在同外碼所參照的表相關(guān)的語義對象在內(nèi)的對象連接屬性的最大出現(xiàn)數(shù)被初始化為“N”。在步驟436,處理返回到圖9B中的步驟416并對表的余下列進(jìn)行分析。在多值組屬性表中的每一列都已分析完畢后,處理進(jìn)行到圖9D所示的步驟。在步驟440,原先為多值組表而創(chuàng)建的語義對象的內(nèi)容列表被拷貝到新創(chuàng)建組屬性的內(nèi)容列表中。在步驟442,組屬性配置文件的派生屬性列表被更新,將新組屬性包括進(jìn)來,組屬性的基配置文件指針則被置為指向新創(chuàng)建的組屬性與配置文件。在步驟444,組屬性的包括器指針被置為包括語義對象的地址。多值組中的任何對象連接屬性都同另一個(gè)語義對象中相應(yīng)的對象連接屬性配對。例如,如圖2所看到的,標(biāo)記為“Purchase”的組屬性包括一個(gè)標(biāo)記為“Painting”的對象連接屬性,該對象連接屬性包括在語義對象22中。同該對象連接屬性相配對的語義對象40中相應(yīng)的標(biāo)記為“Customer”的對象連接屬性。在該對對象連接屬性被創(chuàng)建時(shí),對象連接屬性“Customer”初始時(shí)被創(chuàng)建為對應(yīng)于為標(biāo)記為Purchase的多值組而定義的語義對象。但是,本發(fā)明不允許對象連接屬性同帶有組屬性的語義對象相關(guān)。但是,位于配對語義對象中的對象連接屬性必須被更新,改為對多值組被包含的語義對象的參照。在圖2所示例子中,標(biāo)記為“Customer”的對象連接屬性必須據(jù)為語義對象22而創(chuàng)建的對象連接配置文件重新初始化。為了完成這一處理,計(jì)算機(jī)系統(tǒng)在步驟446開始循環(huán),對包含多值組的語義對象的內(nèi)容列表進(jìn)行檢索。在步驟448,計(jì)算機(jī)系統(tǒng)開始分析內(nèi)容列表中的每個(gè)入口。在步驟450,計(jì)算機(jī)系統(tǒng)讀出內(nèi)容列表中每個(gè)屬性的類型,也即單值,組,或?qū)ο筮B接屬性。在步驟452,計(jì)算機(jī)系統(tǒng)判斷是否內(nèi)容列表中的屬性是一個(gè)組。如果是,計(jì)算機(jī)系統(tǒng)在步驟454得到組屬性的內(nèi)容列表并且處理返回到步驟448,在這里對新的內(nèi)容列表中的每個(gè)屬性進(jìn)行分析。這一循環(huán)處理不斷持續(xù)直到?jīng)]有附加的嵌套(nested)組屬性。如果步驟452的判斷結(jié)果為否,計(jì)算機(jī)系統(tǒng)在步驟456判斷該屬性是否為一個(gè)對象連接類型的屬性。如果是,計(jì)算機(jī)系統(tǒng)在步驟458檢索由該屬性的配對指針?biāo)鶇⒄盏膶ο筮B接屬性。在步驟460,基于同組屬性所加入的語義對象相關(guān)的對象連接配置文件,由配對指針?biāo)鶇⒄盏膶ο筮B接屬性被重新初始化。如上所解釋的,在圖2所示的例子中,語義對象40中標(biāo)記為“Customer”的對象連接屬性原先初始化時(shí)據(jù)同標(biāo)記為“Purchase”的語義對象相關(guān)的對象連接配置文件進(jìn)行創(chuàng)建。步驟460所起的作用是根據(jù)由客戶語義對象22所創(chuàng)建的對象連接配置文件對該對象連接屬性重新初始化。在該對象連接屬性完成重新初始化后,處理進(jìn)行至步驟462,在這里判斷內(nèi)容列表中的所有屬性是否都已分析完畢。如果沒有,處理返回步驟448并對下一個(gè)入口進(jìn)行分析。在步驟464,最初為多值組表而創(chuàng)建的語義對象及其相應(yīng)的對象連接配置文件被從語義對象模型中刪除。在對交叉表和多值組表分析完畢后,計(jì)算機(jī)系統(tǒng)對語義對象模型進(jìn)行更新,以糾正多值、單值屬性先前被標(biāo)識為它們自己的語義對象的錯誤。從圖10中步驟490開始,計(jì)算機(jī)系統(tǒng)對多值、單值屬性列表中的每一個(gè)入口進(jìn)行分析。在步驟492,單值屬性的包括器指針被更新為同表的外碼所參照的表相關(guān)的語義對象的地址。在步驟494,計(jì)算機(jī)系統(tǒng)將一個(gè)指向新加入的單值屬性的指針加入包括語義對象的內(nèi)容列表中。語義對象和其相應(yīng)的為多值、單值屬性而創(chuàng)建的對象連接配置文件在步驟496被從語義對象模型中刪除。在步驟498,計(jì)算機(jī)系統(tǒng)判斷多值屬性列表中的所有入口是否都已分析完畢。如果為否,處理如上所述繼續(xù)進(jìn)行直到所有不適當(dāng)分類的語義對象被刪除并且相應(yīng)的多值、單值屬性被插入到適當(dāng)?shù)恼Z義對象中。為了對圖10的邏輯進(jìn)行解釋,不得不參照圖1,當(dāng)語義對象模型被初始創(chuàng)建時(shí),計(jì)算機(jī)系統(tǒng)會為表9創(chuàng)建一個(gè)語義對象和相應(yīng)的對象連接配置文件。但是,由于一名藝術(shù)家可能用多種媒體作畫,將為表9而創(chuàng)建的語義對象中的標(biāo)記為“Medium”的單值屬性應(yīng)正確地放在為表7而創(chuàng)建的語義對象中。因此,邏輯操作刪除為表9而創(chuàng)建的語義對象和相關(guān)的配置文件并將標(biāo)記為“Medium”的單值屬性放入語義對象30中。如上所描述的,本發(fā)明為數(shù)據(jù)庫中的每張表創(chuàng)建一個(gè)語義對象。表中的每一列被轉(zhuǎn)換為一個(gè)相應(yīng)的單值屬性及一個(gè)相應(yīng)的單值屬性配置文件。這將生成一個(gè)為語義對象模型中的每個(gè)屬性而創(chuàng)建的配置文件。但是,許多單值屬性可能據(jù)相同的配置文件來創(chuàng)建。例如,許多標(biāo)記為“Name”的屬性可以據(jù)一個(gè)名為“標(biāo)識符-文本(identifier-text)”的通用屬性配置文件來創(chuàng)建,該配置文件由SALSA數(shù)據(jù)庫建模系統(tǒng)預(yù)先定義。因此,本發(fā)明允許用戶標(biāo)識由公共配置文件派生出的屬性。如圖11所示,在步驟522開始一個(gè)循環(huán)處理,通過對集的內(nèi)容列表中所定義的每個(gè)語義對象進(jìn)行分析來對公共配置文件進(jìn)行分析。在步驟524,計(jì)算機(jī)系統(tǒng)開始一個(gè)內(nèi)循環(huán),對某個(gè)給定語義對象的內(nèi)容列表中的每個(gè)單值屬性進(jìn)行分析。在步驟526,相應(yīng)的配置文件的特性值(即它的成員變量的值)被顯示在特性表單上。特性表單是圖形用戶界面上出現(xiàn)的一個(gè)窗口(未示出),顯示了特性名和其相應(yīng)值。在步驟528,計(jì)算機(jī)系統(tǒng)判斷是否配置文件中的特性同屬性的特性不同。如果為是,在步驟530提示用戶指明用戶是否希望為相應(yīng)屬性選擇一個(gè)新的配置文件。如果用戶希望選擇一個(gè)新的配置文件,在步驟534請用戶指明哪一個(gè)配置文件同該屬性相關(guān)。在步驟536,一個(gè)指向該屬性的指針被加入到所選配置文件的派生屬性列表中。在步驟538,該屬性的基配置文件指針被更新為新選擇的配置文件的地址。最后,在步驟540,一個(gè)指向舊配置文件的指針被加入到待刪除的配置文件的列表中。如果步驟530的判斷結(jié)果為否,意味著用戶不希望選擇一個(gè)新的配置文件,處理進(jìn)行至步驟550并且計(jì)算機(jī)系統(tǒng)判斷為所分析的語義對象中的所有單值屬性而配置的所有配置文件是否都已分析完畢。如果沒有,處理回轉(zhuǎn)至步驟524。如果為一個(gè)語義對象中的所有單值屬性而配置的配置文件都已分析完畢,計(jì)算機(jī)系統(tǒng)判斷是否集中的所有語義對象都已分析完畢。如果沒有,處理返回至步驟522并且對集中的下一個(gè)語義對象進(jìn)行分析。一旦集中的所有語義對象都已分析完畢,則計(jì)算機(jī)系統(tǒng)在步驟554刪除待刪除配置文件列表中的每個(gè)配置文件并在步驟556終止處理。以上討論描述了當(dāng)DBMS目錄提供聯(lián)系信息時(shí)如何從數(shù)據(jù)庫模式創(chuàng)建語義對象模型。但是,一些數(shù)據(jù)庫程序并不存儲聯(lián)系信息。因此,為了為這些類型的數(shù)據(jù)庫創(chuàng)建語義對象,有必要提示用戶指明數(shù)據(jù)庫中不同的表是如何關(guān)聯(lián)的。圖12A-12D示出了本發(fā)明所執(zhí)行的一系列步驟,這些步驟為不提供聯(lián)系信息的數(shù)據(jù)庫創(chuàng)建相應(yīng)的語義對象模型。從步驟600開始,計(jì)算機(jī)系統(tǒng)首先執(zhí)行圖4A-4D所示步驟。如上所指出的,這樣會創(chuàng)建一個(gè)語義對象模型,該模型包括為在關(guān)系數(shù)據(jù)庫目錄中定義的每張表而建的多個(gè)語義對象,還包括為一張表中定義的每一列而建的單值屬性。在步驟602,計(jì)算機(jī)系統(tǒng)在圖形用戶界面上提供一個(gè)對話框,允許用戶指明兩個(gè)相關(guān)聯(lián)的語義對象。在步驟604,計(jì)算機(jī)系統(tǒng)提示用戶指明聯(lián)系雙方的最大出現(xiàn)數(shù)。聯(lián)系類型可以是一對一,一對多,多對一,或多對多。在步驟606,計(jì)算機(jī)系統(tǒng)判斷用戶所指明的聯(lián)系是否是多對多類型。如果是,則計(jì)算機(jī)系統(tǒng)在步驟608請用戶標(biāo)識同數(shù)據(jù)庫中相應(yīng)的交叉表相關(guān)的語義對象。在步驟610,計(jì)算機(jī)系統(tǒng)將同所標(biāo)識的語義對象相關(guān)的關(guān)系數(shù)據(jù)庫表加入交叉表列表中。然后處理進(jìn)行至步驟612,在這里用戶可以停止或繼續(xù)提供聯(lián)系信息。如果步驟606的判斷結(jié)果為否,表明聯(lián)系不是多對多類型,處理進(jìn)行至圖12B所示的步驟620。在步驟620,計(jì)算機(jī)系統(tǒng)判斷用戶指明的聯(lián)系是否是一對多或多對一類型。如果是,在步驟624提示用戶標(biāo)識出同聯(lián)系多方的語義對象相關(guān)的表的外碼。然后在步驟626,計(jì)算機(jī)系統(tǒng)判斷該外碼是否是該表主碼的一部分。如果是,處理進(jìn)行至步驟628并且計(jì)算機(jī)系統(tǒng)判斷該表是否有一個(gè)以上的非外碼列。在步驟630,具有一個(gè)以上非外碼列的表被加入到多值組表的列表中。另外,多值組表的主碼的列數(shù)也被存儲起來。如果步驟628的判斷結(jié)果為否,該表被定義為表示一個(gè)多值、單值屬性并在步驟632被加入到多值、單值屬性列表中。然后處理返回圖12A中的步驟612。如果步驟626的判斷結(jié)果為否,則計(jì)算機(jī)系統(tǒng)判斷該語義對象必然通過一個(gè)一對多的對象連接屬性進(jìn)行關(guān)聯(lián)。因此,處理進(jìn)行至圖12C所示的步驟650,在這里創(chuàng)建對象連接屬性類的兩個(gè)實(shí)例。在步驟652,指向?qū)ο筮B接屬性的指針被加入對象連接配置文件的派生屬性列表中,該對象連接配置文件同具有外碼的表及外碼所參照的表相關(guān)。在步驟654,對象連接屬性據(jù)相應(yīng)的對象連接配置文件進(jìn)行初始化。在步驟656,對新創(chuàng)建的對象連接屬性的配對指針的彼此指向進(jìn)行設(shè)置。在步驟658,一個(gè)指向?qū)ο筮B接屬性的指針以上面所描述的方式被加入到正確的語義對象的內(nèi)容列表中。在步驟660,每個(gè)對象連接屬性的包括器指針被更新為它的包括語義對象的地址。在更新包括器指針之后,同沒有外碼的表相關(guān)的語義對象中的對象連接屬性的最大出現(xiàn)數(shù)被置為“N”。在步驟664,計(jì)算機(jī)系統(tǒng)刪除為外碼列而創(chuàng)建的單值屬性和配置文件,該外碼列現(xiàn)由對象連接屬性表示。然后處理返回圖12A中所示的步驟612。如果圖12B中步驟620的判斷結(jié)果為否,則聯(lián)系定義為由一個(gè)一對一的對象連接屬性來表示。因此在步驟622請計(jì)算機(jī)系統(tǒng)的用戶標(biāo)識出同關(guān)聯(lián)的語義對象相關(guān)的表中,哪些列是外碼。然后處理進(jìn)行到圖12D所示的步驟。從步驟670開始,計(jì)算機(jī)系統(tǒng)創(chuàng)建對象連接屬性類的兩個(gè)實(shí)例。在步驟672,指向?qū)ο筮B接屬性的指針被加入到同具有外碼的關(guān)系表相關(guān)的對象連接配置文件和同外碼所參照的表相關(guān)的對象連接配置文件的派生屬性列表中。在步驟674,據(jù)相應(yīng)的配置文件對對象連接屬性進(jìn)行初始化。在步驟678對對象連接屬性的配對指針的彼此指向進(jìn)行設(shè)置。在步驟680,計(jì)算機(jī)系統(tǒng)用一個(gè)指向正確的對象連接屬性的指針以上面所描述的方式更新該語義對象的內(nèi)容列表。然后在步驟682,更新該對象連接屬性的包括器指針,更新為它們的包括語義對象的地址。在步驟684,兩個(gè)對象連接屬性的最大出現(xiàn)數(shù)均置為1。在最大出現(xiàn)數(shù)被初始化后,計(jì)算機(jī)系統(tǒng)接著刪除為外碼列而創(chuàng)建的單值屬性和配置文件并且處理返回圖12A所示的步驟612??梢岳斫猓景l(fā)明執(zhí)行操作,由一個(gè)現(xiàn)存的關(guān)系數(shù)據(jù)庫模式創(chuàng)建一個(gè)語義對象模型。語義對象模型允許用戶輕松操作或修改現(xiàn)存的關(guān)系數(shù)據(jù)庫而不要求用戶理解已存的數(shù)據(jù)庫管理系統(tǒng)或數(shù)據(jù)庫查詢語言。盡管例示和描述了本發(fā)明的優(yōu)選實(shí)施例,在不偏離本發(fā)明的宗旨和范圍的前提下允許進(jìn)行多種修改。因此本發(fā)明的保護(hù)范圍列于下面的權(quán)利要求書中。權(quán)利要求1.一種用于據(jù)現(xiàn)有的關(guān)系數(shù)據(jù)庫模式創(chuàng)建語義對象模型的計(jì)算機(jī)系統(tǒng),包括一個(gè)存有數(shù)據(jù)庫目錄的內(nèi)存,其中數(shù)據(jù)庫目錄定義了數(shù)據(jù)庫模式中的多張關(guān)系數(shù)據(jù)庫表以及每張關(guān)系數(shù)據(jù)庫表中的至少一列;一個(gè)用于顯示語義對象模型給用戶的顯示設(shè)備;一個(gè)中央處理單元,它同內(nèi)存和顯示設(shè)備連接在一起,中央處理單元包括一個(gè)驅(qū)動中央處理單元執(zhí)行下列功能的計(jì)算機(jī)程序a)對數(shù)據(jù)庫目錄進(jìn)行分析以確定在現(xiàn)有關(guān)系數(shù)據(jù)庫模式中定義的每張關(guān)系數(shù)據(jù)庫表b)在語義對象模型中創(chuàng)建語義對象,該語義對象模型對應(yīng)于在關(guān)系數(shù)據(jù)庫模式中定義的至少一張關(guān)系數(shù)據(jù)庫表;c)對在關(guān)系數(shù)據(jù)庫模式中定義的同所創(chuàng)建的語義對象相對應(yīng)的關(guān)系數(shù)據(jù)庫表中的每一列進(jìn)行分析;并且d)在所創(chuàng)建的語義對象中創(chuàng)建至少一個(gè)單值屬性,該單值屬性同該語義對象所對應(yīng)的關(guān)系數(shù)據(jù)庫表中定義的某個(gè)列對應(yīng)。2.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于數(shù)據(jù)庫目錄中包括聯(lián)系信息,該聯(lián)系信息定義了表中的一個(gè)列是否是對應(yīng)該關(guān)系數(shù)據(jù)庫模式中另一張關(guān)系數(shù)據(jù)庫表中所包括的某個(gè)列的外碼,計(jì)算機(jī)程序進(jìn)一步驅(qū)動中央處理單元執(zhí)行a)對每張關(guān)系數(shù)據(jù)庫表中包括的每個(gè)列進(jìn)行分析以確定每個(gè)列是否被定義為對應(yīng)該關(guān)系數(shù)據(jù)庫中另一張表的外碼;b)創(chuàng)建一對對象連接屬性;并且c)將一個(gè)對象連接屬性加入一個(gè)同被定義為外碼的列所在的表相關(guān)的語義對象中,將配對對象連接屬性的另一個(gè)對象連接屬性加入同另一張關(guān)系數(shù)據(jù)庫表相關(guān)的語義對象中。3.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其特征在于在數(shù)據(jù)庫目錄中定義了表的哪個(gè)列是主碼,計(jì)算機(jī)程序進(jìn)一步驅(qū)動中央處理單元執(zhí)行a)對每張關(guān)系數(shù)據(jù)庫表中所包含的每個(gè)列進(jìn)行分析以確定是否某列被定義為一張關(guān)系數(shù)據(jù)庫表的主碼同時(shí)又是對應(yīng)該關(guān)系數(shù)據(jù)庫模式中另一張關(guān)系數(shù)據(jù)庫表的外碼;b)判斷既是主碼又是對應(yīng)另一張表的外碼的列所在的關(guān)系表是否包括兩個(gè)以上的列;并且c)如果既是主碼又是外碼的列所在的表有兩個(gè)以上的列,則在同外碼所參照的表相關(guān)的語義對象中創(chuàng)建一個(gè)多值組屬性。4.如權(quán)利要求3所述的計(jì)算機(jī)系統(tǒng),其特征在于計(jì)算機(jī)程序進(jìn)一步驅(qū)動控制處理單元執(zhí)行a)對每張關(guān)系數(shù)據(jù)庫表中的每個(gè)列進(jìn)行分析以確定是否某列被定義為一張關(guān)系數(shù)據(jù)庫表的主碼同時(shí)又是對應(yīng)該關(guān)系數(shù)據(jù)庫模式中另一張關(guān)系數(shù)據(jù)庫表的外碼;b)判斷既是主碼又是對應(yīng)另一張表的外碼的列所在的關(guān)系表是否包括兩個(gè)或少于兩個(gè)的列;并且c)如果既是主碼又是外碼的列所在的表有兩個(gè)或少于兩個(gè)的列,則在同外碼所參照的表相關(guān)的語義對象中創(chuàng)建一個(gè)多值、單值屬性。5.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于計(jì)算機(jī)程序進(jìn)一步驅(qū)動中央處理單元執(zhí)行a)為在現(xiàn)有關(guān)系數(shù)據(jù)庫模式中定義的每張關(guān)系數(shù)據(jù)庫表創(chuàng)建一個(gè)語義對象。6.如權(quán)利要求5所述的計(jì)算機(jī)系統(tǒng),其特征在于數(shù)據(jù)庫目錄中包括聯(lián)系信息,該聯(lián)系信息定義了表中的一個(gè)列是否是對應(yīng)該關(guān)系數(shù)據(jù)庫模式中另一張關(guān)系數(shù)據(jù)庫表的外碼,計(jì)算機(jī)程序進(jìn)一步驅(qū)動中央處理單元執(zhí)行a)對在關(guān)系數(shù)據(jù)庫模式中定義的每張表進(jìn)行分析以確定該表是否只包括那些被定義為對應(yīng)在該關(guān)系數(shù)據(jù)庫模式中定義的一對表的外碼;b)在同那些外碼所參照的表相關(guān)的語義對象中創(chuàng)建一對多值對象連接屬性;并且c)從語義對象模型中刪除據(jù)只包括被定義為外碼列的表而創(chuàng)建的語義對象。7.一種對包括中央處理單元、內(nèi)存、永久存儲機(jī)構(gòu)和顯示屏類型的計(jì)算機(jī)進(jìn)行操作的方法,該方法用于產(chǎn)生同存儲在永久存儲機(jī)構(gòu)上的現(xiàn)有關(guān)系數(shù)據(jù)庫模式相對應(yīng)的語義對象模型,步驟包括對數(shù)據(jù)庫目錄進(jìn)行檢索并將數(shù)據(jù)庫目錄放入計(jì)算機(jī)系統(tǒng)的內(nèi)存中,在數(shù)據(jù)庫目錄中定義了現(xiàn)有關(guān)系數(shù)據(jù)庫模式中所包括的一或多張關(guān)系數(shù)據(jù)庫表,以及為每張關(guān)系數(shù)據(jù)庫表定義的一個(gè)或多個(gè)列;對數(shù)據(jù)庫目錄進(jìn)行分析以確定在現(xiàn)有關(guān)系數(shù)據(jù)庫模式中定義的每一張關(guān)系數(shù)據(jù)庫表;在內(nèi)存中分配空間以據(jù)現(xiàn)有關(guān)系數(shù)據(jù)庫模式中所定義每張關(guān)系數(shù)據(jù)庫表來創(chuàng)建語義對象;對數(shù)據(jù)庫目錄進(jìn)行分析以確定現(xiàn)有關(guān)系數(shù)據(jù)庫模式中的每張表中所包括的每一列;在內(nèi)存中分配空間以據(jù)每張關(guān)系數(shù)據(jù)庫表所包括的每一列來創(chuàng)建單值屬性;將據(jù)關(guān)系數(shù)據(jù)庫表中所包括的每一列而創(chuàng)建的每個(gè)單值屬性同據(jù)該關(guān)系數(shù)據(jù)庫表而創(chuàng)建的語義對象連接起來;并在顯示屏上以可視化形式顯示至少一些語義對象和單值屬性。8.如權(quán)利要求7所述的方法,其特征在于數(shù)據(jù)庫目錄中包括聯(lián)系信息,該聯(lián)系信息定義了表中的某個(gè)列是否是對應(yīng)現(xiàn)有關(guān)系數(shù)據(jù)庫模式中另一張表的外碼,數(shù)據(jù)庫目錄中還包括主碼信息,該主碼信息定義了一張關(guān)系表中的哪些列被定義為該關(guān)系表的外碼,該方法進(jìn)一步包括的步驟有對該目錄進(jìn)行分析以確定一張表中的某個(gè)列是否被定義為既是對應(yīng)現(xiàn)有關(guān)系數(shù)據(jù)庫模式中另一張關(guān)系數(shù)據(jù)庫表的外碼,又是一張關(guān)系數(shù)據(jù)庫表的主碼;對該目錄進(jìn)行分析以確定具有既是外碼又是主碼的列的某張表是否包括一個(gè)以上的非外碼列;如果一張表中的某列既是外碼又是主碼,則在內(nèi)存中分配空間來創(chuàng)建一個(gè)多值組屬性;并將該多值組屬性同據(jù)外碼所參照的關(guān)系數(shù)據(jù)庫表而創(chuàng)建的語義對象連接起來。9.如權(quán)利要求8所述的方法,進(jìn)一步包括如下步驟如果一張表具有的某個(gè)列既被定義為外碼又被定義為主碼并且該表只有一個(gè)非外碼列,則在內(nèi)存中分配空間以創(chuàng)建一個(gè)多值、單值屬性;并將該多值、單值屬性同據(jù)外碼所參照的關(guān)系數(shù)據(jù)庫表而創(chuàng)建的語義對象連接起來。10.如權(quán)利要求9所述的方法,進(jìn)一步包括如下步驟對數(shù)據(jù)庫目錄進(jìn)行分析以確定是否存在一張表,該表只具有被定義為外碼的列;在內(nèi)存中為每張只具有被定義為外碼的列的表分配空間以放入一對多值對象連接屬性;并將該對多值的,對象連接屬性同該表的外碼所參照的關(guān)系數(shù)據(jù)庫表連接起來。11.如權(quán)利要求10所述的方法,進(jìn)一步包括如下步驟從內(nèi)存中刪去據(jù)只具有被定義為外碼的列的關(guān)系數(shù)據(jù)庫而創(chuàng)建的語義對象所占用的空間。12.如權(quán)利要求8所述的方法,進(jìn)一步包括如下步驟從內(nèi)存中刪去據(jù)滿足下面條件的關(guān)系數(shù)據(jù)庫表而創(chuàng)建的語義對象所占用的空間,該關(guān)系數(shù)據(jù)庫表的某個(gè)列既被定義為外碼又被定義為主碼并且該表包括兩個(gè)以上的列。13.如權(quán)利要求9所述的方法,進(jìn)一步包括如下步驟從內(nèi)存中刪去據(jù)滿足下面條件的關(guān)系數(shù)據(jù)庫表而創(chuàng)建的語義對象所占用的空間,該關(guān)系數(shù)據(jù)庫表的某個(gè)列既是外碼又是主碼并且該表只包括兩個(gè)列。14.如權(quán)利要求7所述的方法,進(jìn)一步包括如下步驟在內(nèi)存中分配空間以存儲一張所創(chuàng)建的語義對象的列表;并每當(dāng)語義對象生成時(shí),加入對該列表的一個(gè)參照。15.如權(quán)利要求7所述的方法,進(jìn)一步包括如下步驟在內(nèi)存中分配空間來為每個(gè)所創(chuàng)建的語義對象創(chuàng)建一個(gè)對象連接配置文件。16.如權(quán)利要求7所述的方法,其特征在于數(shù)據(jù)庫目錄提供了指明關(guān)系數(shù)據(jù)庫表主碼的信息,但沒有提供聯(lián)系信息,該方法進(jìn)一步包括如下步驟在顯示屏上顯示對話框,該對話框允許用戶指明在語義對象模型中相關(guān)聯(lián)的兩個(gè)語義對象;提示用戶指明語義對象的關(guān)聯(lián)是通過一對一,一對多,多對一還是多對多聯(lián)系,并記錄用戶輸入的聯(lián)系信息。17.如權(quán)利要求16所述的方法,進(jìn)一步包括如下步驟確定用戶所指明的相關(guān)聯(lián)的語義對象間的聯(lián)系是否是多對多;提示用戶指明現(xiàn)有關(guān)系數(shù)據(jù)庫模式中的交叉表,該交叉表的列包含對應(yīng)現(xiàn)有關(guān)系數(shù)據(jù)庫模式中其它關(guān)系表的外碼;在內(nèi)存中分配空間以創(chuàng)建一對多值對象連接屬性;并將該對多值對象連接屬性中的每個(gè)對象連接屬性同據(jù)外碼所能照的關(guān)系數(shù)據(jù)庫而創(chuàng)建的語義對象連接起來。18.如權(quán)利要求16所述的方法,進(jìn)一步包括如下步驟確定用戶所指明的相關(guān)聯(lián)的語義對象間的聯(lián)系是否是一對多或多對一;確定同一對多聯(lián)系的一方相關(guān)聯(lián)的語義對象和同該聯(lián)系的多方相關(guān)聯(lián)的語義對象;提示用戶指明滿足下面條件的現(xiàn)有關(guān)系數(shù)據(jù)庫中的關(guān)系表,即該表具有對應(yīng)于與該聯(lián)系的一方的語義對象相關(guān)聯(lián)的某張關(guān)系表的外碼;確定所指明的該表是否具有一個(gè)以上的非外碼屬性并且該外碼是該表主碼的一部分;如果所指明的表僅具有一個(gè)非外碼列并且該外碼是該表主碼的一部分,則在內(nèi)存中分配空間以創(chuàng)建多值的單值屬性;并將多值組或多值的單值屬性同一對多聯(lián)系所關(guān)聯(lián)的語義對象連接起來。19.如權(quán)利要求17所述的方法,進(jìn)一步包括如下步驟確定該聯(lián)系是否是一對一并且如果是的話則在內(nèi)存中分配空間以創(chuàng)建一對對象連接屬性;并將該對對象連接屬性中的每個(gè)對象連接屬性同由一對一聯(lián)系所關(guān)聯(lián)的語義對象連接起來。20.一種計(jì)算機(jī)可讀存儲,當(dāng)它被計(jì)算機(jī)使用時(shí)用于指導(dǎo)計(jì)算機(jī)完成如權(quán)利要求7所定義的功能。全文摘要一種用于據(jù)現(xiàn)有的關(guān)系數(shù)據(jù)庫模式創(chuàng)建語義對象模型的計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)分析關(guān)系數(shù)據(jù)庫模式中的目錄信息,并且為目錄中定義的每張表創(chuàng)建一個(gè)語義對象。對于為表所定義的每個(gè)列,將單值屬性加入為該表所創(chuàng)建的語義對象中。接著,系統(tǒng)分析存儲在目錄中的聯(lián)系信息以生成定義兩個(gè)或多個(gè)語義對象之間聯(lián)系的對象連接信息及生成多值組屬性和多值、單值屬性。若數(shù)據(jù)庫目錄不包括聯(lián)系信息,則提示用戶指明相關(guān)的語義對象。文檔編號G06F12/00GK1190478SQ96195384公開日1998年8月12日申請日期1996年6月3日優(yōu)先權(quán)日1995年6月7日發(fā)明者戴維·克羅恩克申請人:瓦爾數(shù)據(jù)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
会同县| 永胜县| 简阳市| 鄂托克旗| 同江市| 界首市| 荔浦县| 桦甸市| 琼中| 安国市| 宜城市| 许昌县| 斗六市| 务川| 金沙县| 苗栗县| 镇远县| 莱芜市| 同仁县| 婺源县| 攀枝花市| 海晏县| 梧州市| 丰台区| 陵川县| 陈巴尔虎旗| 曲靖市| 阿尔山市| 博乐市| 昭通市| 龙胜| 定州市| 忻城县| 宾川县| 恩施市| 海兴县| 福州市| 洛浦县| 喜德县| 鹤峰县| 汪清县|