亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種數(shù)據(jù)庫(kù)模式固定的對(duì)象關(guān)系映射模型的制作方法

文檔序號(hào):6599960閱讀:159來(lái)源:國(guó)知局
專利名稱:一種數(shù)據(jù)庫(kù)模式固定的對(duì)象關(guān)系映射模型的制作方法
技術(shù)領(lǐng)域
本發(fā)明是一種數(shù)據(jù)庫(kù)模型,能夠存儲(chǔ)面向?qū)ο蟮男畔⒔T?如實(shí)體、屬性、關(guān)
系等)。適用于在軟件開(kāi)發(fā)完成、交付用戶后,不能或不允許改變數(shù)據(jù)庫(kù)表結(jié)構(gòu),但又必須允 許用戶存儲(chǔ)各種用戶自定義數(shù)據(jù)的特定編程環(huán)境中。該數(shù)據(jù)庫(kù)模型采用數(shù)量有限的數(shù)據(jù)庫(kù) 表,存放能滿足大多數(shù)應(yīng)用需求的持久化數(shù)據(jù),特別適合在工作流應(yīng)用中存放業(yè)務(wù)數(shù)據(jù)。 在軟件工程項(xiàng)目的實(shí)施中,常常需要將經(jīng)數(shù)據(jù)建模后的信息模型及實(shí)例數(shù)據(jù)存儲(chǔ) 到關(guān)系數(shù)據(jù)庫(kù)中,以便應(yīng)用訪問(wèn)。由于關(guān)系模型與面向?qū)ο竺枋稣Z(yǔ)言(設(shè)計(jì)對(duì)象模型)及 程序設(shè)計(jì)語(yǔ)言(實(shí)現(xiàn)對(duì)象模型)的不匹配,常常需要在兩者之間進(jìn)行映射。關(guān)于面向?qū)ο?的信息模型到關(guān)系模型的映射方法,已經(jīng)有很多文獻(xiàn)論述。這些文獻(xiàn)中的方法可以歸結(jié)為 將類(或?qū)嶓w)映射為數(shù)據(jù)庫(kù)表,將類屬性(或?qū)嶓w屬性)映射為數(shù)據(jù)庫(kù)表字段,將類(或 實(shí)體)之間的關(guān)系映射為數(shù)據(jù)庫(kù)表之間的"l對(duì)多"或"l對(duì)l"關(guān)系,此外,由于關(guān)系數(shù)據(jù)庫(kù) 本身的限制,只能增加一個(gè)數(shù)據(jù)庫(kù)表來(lái)實(shí)現(xiàn)"多對(duì)多"關(guān)系。 上述方法已經(jīng)經(jīng)過(guò)多年實(shí)踐的考驗(yàn),證明在大多數(shù)情況都能滿足需要。但它卻存 在一個(gè)致命的缺陷——要求數(shù)據(jù)庫(kù)所存儲(chǔ)的數(shù)據(jù)格式在設(shè)計(jì)時(shí)而不是在運(yùn)行時(shí)就必須確 定,也就是說(shuō),如果在軟件運(yùn)行時(shí)需要數(shù)據(jù)庫(kù)存儲(chǔ)新格式的對(duì)象,就必須創(chuàng)建新數(shù)據(jù)庫(kù)表以 容納其數(shù)據(jù)。這就產(chǎn)生了以下問(wèn)題如果用戶的業(yè)務(wù)數(shù)據(jù)模型經(jīng)常變動(dòng),或者需要開(kāi)發(fā)適 用于不同領(lǐng)域的、需要用戶自行定制業(yè)務(wù)數(shù)據(jù)模型的軟件,由于事先不知道或不能確定用 戶到底需要存放什么樣的數(shù)據(jù)及數(shù)據(jù)格式,沒(méi)法在設(shè)計(jì)時(shí)確定數(shù)據(jù)庫(kù)表結(jié)構(gòu),不得不為了 存放一種新格式的數(shù)據(jù)而新建一張數(shù)據(jù)庫(kù)表——引起數(shù)據(jù)庫(kù)模式經(jīng)常變化,這種變化必然 要求客戶端軟件經(jīng)常作相應(yīng)修改,否則客戶端由于不知道新的數(shù)據(jù)庫(kù)模式而無(wú)法訪問(wèn)其數(shù) 據(jù)。這些修改包括用戶交互界面的重新設(shè)計(jì)、SQL語(yǔ)句的改寫(xiě)等等。由于經(jīng)常變更需求,導(dǎo) 致很大的維護(hù)工作量,經(jīng)常變更的用戶交互界面通常不能為客戶所接受,軟件開(kāi)發(fā)人員也 沒(méi)有足夠精力去應(yīng)付頻繁變更的需求。 為了克服這一缺陷,本發(fā)明采用固定的數(shù)據(jù)庫(kù)表以容納各種數(shù)據(jù),當(dāng)需要存儲(chǔ)新 格式的對(duì)象時(shí),也不需要新建數(shù)據(jù)庫(kù)表,僅僅只需在固定的數(shù)據(jù)庫(kù)表中插入新的記錄,就可 以存儲(chǔ)實(shí)體、屬性、關(guān)系及實(shí)體實(shí)例,減少了維護(hù)工作量,特別適用于最終用戶使用時(shí)還經(jīng) 常變動(dòng)的業(yè)務(wù)數(shù)據(jù)的情形,如工作流應(yīng)用場(chǎng)景。 在工作流應(yīng)用中,業(yè)務(wù)數(shù)據(jù)是業(yè)務(wù)流程中所涉及到的流程數(shù)據(jù),它又稱為流程變 量(Process Variables),例如,請(qǐng)假流程中的請(qǐng)假原因和請(qǐng)假天數(shù),還有公文審批流程中 的審批意見(jiàn),等等。不同的業(yè)務(wù)流程涉及到不同的流程數(shù)據(jù),而且可能經(jīng)常變動(dòng)。 一般來(lái)說(shuō), 工作流引擎并不考慮業(yè)務(wù)數(shù)據(jù),而把它留給工作流應(yīng)用的實(shí)施者來(lái)考慮。少部分工作流引 擎,如著名的開(kāi)源jBPM,本身就支持業(yè)務(wù)數(shù)據(jù),但其所支持的流程變量一般都是簡(jiǎn)單的數(shù)據(jù) 類型,并且相互之間沒(méi)有關(guān)聯(lián),不支持面向?qū)ο蟮男畔⒔8拍?,如?shí)體、屬性、關(guān)系等,因 而和數(shù)據(jù)建模時(shí)產(chǎn)生的數(shù)據(jù)模型差異較大,難以支持對(duì)業(yè)務(wù)數(shù)據(jù)復(fù)雜的查詢統(tǒng)計(jì)等應(yīng)用要
背景技術(shù)
求。更為重要的是,如果不能很好解決這個(gè)問(wèn)題,就很難實(shí)現(xiàn)流程任務(wù)表單的自動(dòng)生成。任 務(wù)表單用于獲取用戶輸入的業(yè)務(wù)數(shù)據(jù),即,在任務(wù)表單的"提交"按鈕的響應(yīng)函數(shù)中,應(yīng)該實(shí) 現(xiàn)將獲取用戶輸入的業(yè)務(wù)數(shù)據(jù)并存儲(chǔ)到數(shù)據(jù)庫(kù)的功能。如果數(shù)據(jù)庫(kù)表結(jié)構(gòu)還沒(méi)有確定,就 沒(méi)法編寫(xiě)該按鈕的通用代碼。

發(fā)明內(nèi)容
本發(fā)明采用通用的關(guān)系數(shù)據(jù)庫(kù)模式,與具體的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)無(wú)關(guān),適用于 各種商業(yè)或免費(fèi)的數(shù)據(jù)庫(kù)管理系統(tǒng)。本發(fā)明數(shù)據(jù)庫(kù)模式固定,可以存儲(chǔ)能滿足大多數(shù)應(yīng)用 的數(shù)據(jù),按照后文所述步驟可以編制靈活的數(shù)據(jù)庫(kù)訪問(wèn)代碼,代碼可以采用面向?qū)ο蟮木?程語(yǔ)言編寫(xiě),以實(shí)現(xiàn)用戶業(yè)務(wù)數(shù)據(jù)的定制、數(shù)據(jù)輸入和輸出。 本發(fā)明的有益效果是,數(shù)據(jù)庫(kù)模式固定,能夠在交付用戶使用后,存儲(chǔ)用戶自行定 制的數(shù)據(jù),支持面向?qū)ο蟮男畔⒔8拍?,如?shí)體、屬性、關(guān)系等,保證了反映現(xiàn)實(shí)世界的信 息模型平滑地向固定的數(shù)據(jù)庫(kù)模式映射。在工作流應(yīng)用中,克服過(guò)程變量間無(wú)聯(lián)系、孤立的 缺點(diǎn),使得業(yè)務(wù)數(shù)據(jù)在邏輯上以相互聯(lián)系、自然、結(jié)構(gòu)化的方式存放,減小數(shù)據(jù)建模時(shí)產(chǎn)生 的數(shù)據(jù)模型與具體實(shí)現(xiàn)的業(yè)務(wù)數(shù)據(jù)的差異。另外,由于所存儲(chǔ)的數(shù)據(jù)本身是結(jié)構(gòu)化的,理論 上可以支持查詢統(tǒng)計(jì)功能。


下面結(jié)合附圖和實(shí)施對(duì)本發(fā)明進(jìn)一步說(shuō)明。
附圖是本發(fā)明數(shù)據(jù)庫(kù)模型的E-R圖。 圖中1.實(shí)體表2.屬性表3.實(shí)體實(shí)例表4.字符串型屬性表5.數(shù)字型屬性表 6.實(shí)體聯(lián)系表 實(shí)體表(1)中,列E—ID為關(guān)鍵字,列E—N謙為實(shí)體類型名稱;屬性表(2)中,列 A_ID為關(guān)鍵字,列E_ID為實(shí)體表(1)外鍵,列A_Name為屬性名稱,列A_Type為屬性數(shù)據(jù) 類型(現(xiàn)階段只支持字符串型和數(shù)字型兩種,將來(lái)也容易擴(kuò)展到其它數(shù)據(jù)類型);實(shí)體實(shí)例 表(3)中,列EI—ID為關(guān)鍵字,列E—ID為實(shí)體表(1)外鍵;字符串型屬性表(4)中,列SA— ID為關(guān)鍵字,列EI_ID為實(shí)體實(shí)例表(3)外鍵,列A_ID為屬性表(2)外鍵,列SA_Value為 屬性值;數(shù)字型屬性表(5)中,列NA—ID為關(guān)鍵字,列EI—ID為實(shí)體實(shí)例表(3)外鍵,列A— ID為屬性表(2)外鍵,列NA_Value為屬性值;實(shí)體聯(lián)系表(6)中,列E1_ID和列E2_ID都 是實(shí)體表(1)外鍵,同時(shí)又是復(fù)合關(guān)鍵字,列A1—ID和列A2JD都是屬性表(2)外鍵,列EIL Type是實(shí)體關(guān)系類型,表示兩實(shí)體間關(guān)系類型究竟是1對(duì)1還是1對(duì)多。
具體實(shí)施例方式
實(shí)體表(1)保存實(shí)體類型名稱信息,屬性表(2)保存實(shí)體屬性名稱和數(shù)據(jù)類型信 息,它們共同存儲(chǔ)實(shí)體的結(jié)構(gòu)信息。實(shí)體實(shí)例表(3)、字符串型屬性表(4)和數(shù)字型屬性表 (5) —起,存儲(chǔ)實(shí)體實(shí)例信息。實(shí)體聯(lián)系表(6)存儲(chǔ)實(shí)體之間的聯(lián)系。 為了對(duì)本發(fā)明有更清楚的了解,下面舉例說(shuō)明如何創(chuàng)建、刪除實(shí)體,如何對(duì)實(shí)體實(shí) 例進(jìn)行增、刪、改、查操作,以及如何創(chuàng)建、刪除實(shí)體間的聯(lián)系。在實(shí)際的使用中,容易將下述 形式化描述的步驟采用面向?qū)ο蟮恼Z(yǔ)言進(jìn)行編程實(shí)現(xiàn),從而提高通用性和存取效率。
創(chuàng)建、刪除實(shí)體類型的傳統(tǒng)方式是采用SQL語(yǔ)句——CREATE TABLE和DROP TABLE。由于數(shù)據(jù)庫(kù)模式不改變,本發(fā)明創(chuàng)建實(shí)體類型采用INSERT語(yǔ)句。創(chuàng)建實(shí)體類型涉 及到實(shí)體表(1)和屬性表(2),假如要?jiǎng)?chuàng)建實(shí)體E1(FIELD1, FIELD2),其中,El為實(shí)體類型 名稱,F(xiàn)IELD1和FIELD2為屬性名稱,假設(shè)FIELD1為字符串型,F(xiàn)IELD2為數(shù)字型。步驟是
1、 在實(shí)體表(1)中插入一行,關(guān)鍵字EJD可以自動(dòng)生成,假設(shè)生成的EJD值為1,列E—Name 存放實(shí)體類型名稱——"E1";2、在屬性表(2)中插入兩行,表示實(shí)體E1有兩個(gè)屬性,列A— ID可以自動(dòng)生成。假設(shè)第一行生成的A—ID為1,列E—ID值為l,表明這一行的屬性隸屬于 實(shí)體El,該行的列A_Name的值為"FIELD1 ",列A_Type的值為"S",表示該屬性的屬性名稱 和類型分別為"FIELD1"和"字符串型";同樣,第二行的列A_ID為2,列E_ID值為1,列A_ Name的值為"FIELD2",列A_Type的值為"N",表示實(shí)體El的第二個(gè)屬性是數(shù)字型,名稱是 "FIELD2"。本發(fā)明刪除實(shí)體類型采用SQL DELETE語(yǔ)句,級(jí)聯(lián)刪除實(shí)體表(1)、屬性表(2)、 實(shí)體實(shí)例表(3)、字符串型屬性表(4)、數(shù)字型屬性表(5)和實(shí)體聯(lián)系表(6)中與欲刪除實(shí) 體關(guān)聯(lián)的行。 增加實(shí)體實(shí)例分別對(duì)實(shí)體實(shí)例表(3)、字符串型屬性表(4)和數(shù)字型屬性表(5)采 用SQL INSERT語(yǔ)句操作。例如,要對(duì)前述的實(shí)體El增加實(shí)體實(shí)例,其ID為1,列FIELD1的 值為"stringl",列FIELD2的值為123,步驟是1、采用INSERT語(yǔ)句在實(shí)體實(shí)例表(3)中插 入一行,關(guān)鍵字EI_ID值為1 (可以自動(dòng)生成),外鍵E_ID的值為1 ,關(guān)聯(lián)實(shí)體表(1)中的實(shí) 體E1,表明該行是實(shí)體類型E1的實(shí)體實(shí)例;2、在字符串型屬性表(4)中插入一行,關(guān)鍵字 SA—ID可以自動(dòng)生成,假設(shè)生成的SA—ID值為1,外鍵EI—ID值為1,外鍵A—ID值為l,表示 其為實(shí)體E1的第一個(gè)屬性FIELD1的實(shí)例,列SA_Value的值為"stringl" ;3、在數(shù)字型屬 性表(5)中插入一行,關(guān)鍵字NA—ID可以自動(dòng)生成,假設(shè)生成的NA—ID值為1,外鍵EI—ID值 為1,外鍵A—ID值為2,表示其為實(shí)體E1的第二個(gè)屬性FIELD2的實(shí)例,列NA_Value的值為 123。 刪除實(shí)體實(shí)例較為簡(jiǎn)單。例如,欲刪除前面所增加的EI—ID值為1的實(shí)體實(shí)例,只 需要?jiǎng)h除實(shí)體實(shí)例表(3)中列EIJD值為1的行,并且級(jí)聯(lián)刪除字符串型屬性表(4)和數(shù) 字型屬性表(5)中外鍵EIJD值為1的所有行即可。 修改實(shí)體實(shí)例使用SQL UPDATE語(yǔ)句。例如,欲修改前面所增加的EI_ID值為1的 實(shí)體實(shí)例,將列FIELD2的值修改為456。操作步驟是1、在屬性表(2)中查找列EIJD值為 1并且列A_Name的值為"FIELD2"的行,得到該行的列A_ID為2且列A_Type的值為"N";
2、 根據(jù)上一步結(jié)果,列AJYpe的值為"N",得知欲修改的實(shí)體實(shí)例屬性值在數(shù)字型屬性表 (5)中,在數(shù)字型屬性表(5)中查找到列EI—ID值為1且列A—ID為2的行,得到其關(guān)鍵字 NA_ID值為1 ;3、使用SQL UPDATE語(yǔ)句修改該行的列NA_Value的值為456。 查找實(shí)體實(shí)例使用SQL SELECT語(yǔ)句。例如,欲查找實(shí)體類型名稱為El的所有實(shí) 體實(shí)例,步驟是1、在實(shí)體表(1)中查找列E_Name值為"E1"的行,得到該行的關(guān)鍵字E_ID 值為1 ;2、在屬性表(2)中查找列E—ID值為1的所有行,得到兩行,其關(guān)鍵字A—ID分別為 1和2 ;3、在實(shí)體實(shí)例表(3)中查找列E_ID值為1的所有行,得到一行,其關(guān)鍵字EI_ID為 1 ;4、在字符串型屬性表(4)中查找列EI_ID為1且列A_ID為1的行,得到一行,讀取列SA_ Value的值,即實(shí)體El的屬性FIELD1的值,同樣,在數(shù)字型屬性表(5)中查找可得到實(shí)體 El的屬性FIELD2的值。
創(chuàng)建、刪除實(shí)體間的聯(lián)系只對(duì)實(shí)體聯(lián)系表(6)進(jìn)行SQL INSERT或DELETE操作。例 如,要對(duì)實(shí)體E1的屬性Col0ne和實(shí)體E2的屬性ColMany建立一對(duì)多聯(lián)系,步驟如下1、在 實(shí)體表(1)中查找列E_Name值為"El"的行,得到該行的關(guān)鍵字E_ID值,假設(shè)為1 。同樣, 可以得到E2的ID值,假設(shè)為2 ;2、在屬性表(2)中查找列E_ID值為1并且列A_Name值為 "ColOne"的行,得到關(guān)鍵字A_ID值,假設(shè)為11。同樣,可以得到E2的屬性ColMany的關(guān)鍵 字A—ID值,假設(shè)為12 ;3、在實(shí)體聯(lián)系表(6)插入一行,其列E1—ID、E2—ID、A1—ID、A2—ID、EIL Type分別為1、2、11、12、"M"。
權(quán)利要求
一種采用有限數(shù)量數(shù)據(jù)庫(kù)表的數(shù)據(jù)庫(kù)模型,能夠存放滿足大多數(shù)應(yīng)用需求的持久化數(shù)據(jù),支持面向?qū)ο蟮男畔⒔8拍?,如?shí)體、屬性、關(guān)系等。由實(shí)體表、屬性表、實(shí)體實(shí)例表、實(shí)體聯(lián)系表、字符串屬性表和數(shù)字型屬性表(視不同應(yīng)用要求,還可以加上其它數(shù)據(jù)類型的屬性表)構(gòu)成,這些數(shù)據(jù)庫(kù)表一起,可以表示并存儲(chǔ)由數(shù)據(jù)建模過(guò)程中產(chǎn)生的數(shù)據(jù)模型(如ER圖、UML類圖等),其特征是改變傳統(tǒng)的創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)表以定義一個(gè)實(shí)體類型,在數(shù)據(jù)庫(kù)表添加一行存儲(chǔ)一個(gè)實(shí)體實(shí)例的常規(guī)方式,采用實(shí)體表和屬性表分別存儲(chǔ)實(shí)體名稱和實(shí)體屬性類型信息,采用實(shí)體實(shí)例表、字符串屬性表和數(shù)字型屬性表一起存儲(chǔ)實(shí)體實(shí)例,采用實(shí)體聯(lián)系表存儲(chǔ)實(shí)體之間的聯(lián)系。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)模型,其特征是有且只有一個(gè)實(shí)體表和一個(gè)屬性表,實(shí)體表存放實(shí)體名稱信息,屬性表存放實(shí)體屬性名稱、屬性數(shù)據(jù)類型信息,這兩個(gè)表之間的 聯(lián)系是1對(duì)多關(guān)系,它們一起存儲(chǔ)任意實(shí)體的結(jié)構(gòu)信息。
3. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)模型,其特征是有且只有一個(gè)實(shí)體實(shí)例表、一個(gè)字符串屬性表和一個(gè)數(shù)字型屬性表,實(shí)體表和實(shí)體實(shí)例表之間的聯(lián)系是1對(duì)多關(guān)系,實(shí)體表中 的每一行表示一個(gè)實(shí)體類型,實(shí)體實(shí)例表中的每一行表示相關(guān)聯(lián)實(shí)體的一個(gè)實(shí)例。實(shí)體實(shí) 例表和字符串屬性表之間的聯(lián)系是1對(duì)多關(guān)系,屬性表和字符串屬性表之間的聯(lián)系是1對(duì) 多關(guān)系,字符串屬性表的每一行表示一個(gè)實(shí)體實(shí)例中的一個(gè)字符串屬性的具體值,從該行的外鍵EI—ID中可以查出該屬性值從屬于哪一個(gè)實(shí)體實(shí)例,從該行的外鍵A—ID中可以查出 該屬性值是哪一個(gè)實(shí)體屬性的具體值;數(shù)字型屬性表與字符串屬性表的情形類似,只是數(shù) 據(jù)類型不同。
4. 根據(jù)權(quán)利要求l所述的數(shù)據(jù)庫(kù)模型,其特征是有且只有一個(gè)實(shí)體聯(lián)系表,實(shí)體聯(lián)系 表中的每一行表示兩實(shí)體間關(guān)系,關(guān)系類型信息存放在一列中,其類型有兩種1對(duì)1和多 對(duì)多。
全文摘要
一種數(shù)據(jù)庫(kù)模式固定的對(duì)象關(guān)系映射模型,能夠存儲(chǔ)面向?qū)ο蟮男畔⒔T?如實(shí)體、屬性、關(guān)系等)。適用于在軟件開(kāi)發(fā)完成、交付用戶后,不能或不允許改變數(shù)據(jù)庫(kù)表結(jié)構(gòu),但又必須允許用戶存儲(chǔ)各種用戶自定義數(shù)據(jù)的特定編程環(huán)境中。該數(shù)據(jù)庫(kù)模型采用數(shù)量有限的數(shù)據(jù)庫(kù)表,當(dāng)需要存儲(chǔ)新格式的對(duì)象時(shí),不需要新建數(shù)據(jù)庫(kù)表,僅僅只需在固定的數(shù)據(jù)庫(kù)表中插入新的記錄,該模型支持面向?qū)ο蟮男畔⒔8拍睿鐚?shí)體、關(guān)系、屬性等,保證了反映現(xiàn)實(shí)世界的信息模型平滑地向固定的數(shù)據(jù)庫(kù)模式映射。
文檔編號(hào)G06F17/30GK101794315SQ20101013613
公開(kāi)日2010年8月4日 申請(qǐng)日期2010年3月31日 優(yōu)先權(quán)日2010年3月31日
發(fā)明者袁梅宇 申請(qǐng)人:袁梅宇
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1