函數(shù)模型的概念最初是由E. H. Sibley和L.Kershberg于1977年引入的。主要工作是探討如何利用函數(shù)方法作" />
時(shí)間:2022-12-26 06:30:01 | 來(lái)源:信息時(shí)代
時(shí)間:2022-12-26 06:30:01 來(lái)源:信息時(shí)代
函數(shù)數(shù)據(jù)模型 : 將數(shù)據(jù)中的實(shí)體、屬性和聯(lián)系看作為函數(shù)的一種模型,又稱(chēng)函數(shù)模型。
函數(shù)模型的概念最初是由E. H. Sibley和L.Kershberg于1977年引入的。主要工作是探討如何利用函數(shù)方法作為一種工具來(lái)對(duì)傳統(tǒng)數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)進(jìn)行建模。1979年,P.Buneman和R.E.Frankel提出了一種函數(shù)查詢(xún)語(yǔ)言FQL,引入了有關(guān)函數(shù)模型的許多記號(hào),這些記號(hào)是基于函數(shù)程序設(shè)計(jì)語(yǔ)言FP的記號(hào)。函數(shù)模型的典型代表是DAPLEX。這是由美國(guó)計(jì)算機(jī)公司的D.W. Shipman于20世紀(jì)70年代末提出的一個(gè)被廣泛使用的函數(shù)模型。
目前已開(kāi)發(fā)了許多用于研究的基于函數(shù)模型的數(shù)據(jù)庫(kù)系統(tǒng)如P/FDM、Hydra等。近年來(lái),函數(shù)模型的思想已應(yīng)用到面向?qū)ο髷?shù)據(jù)庫(kù)、空間數(shù)據(jù)庫(kù)、工程數(shù)據(jù)庫(kù)、不完全信息數(shù)據(jù)庫(kù)、生物信息數(shù)據(jù)庫(kù)等的研究中。
在傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)中,過(guò)程、數(shù)據(jù)結(jié)構(gòu)和實(shí)際內(nèi)容通常是分離的。因此,傳統(tǒng)DBMS可以按照當(dāng)前數(shù)據(jù)庫(kù)模式提供用戶(hù)存儲(chǔ)、修改或查詢(xún)數(shù)據(jù)。應(yīng)特別注意的是,當(dāng)數(shù)據(jù)被存儲(chǔ)在數(shù)據(jù)庫(kù)時(shí),DBMS可以查詢(xún)數(shù)據(jù),且作為獨(dú)立應(yīng)用程序的附加過(guò)程可以應(yīng)用這些數(shù)據(jù)。相反,函數(shù)模型提供了既對(duì)數(shù)據(jù)又對(duì)過(guò)程進(jìn)行操縱的一種統(tǒng)一途徑。函數(shù)模型的主要思想是一個(gè)信息系統(tǒng)的所有分量都按照函數(shù)進(jìn)行定義。例如,函數(shù)模型定義數(shù)據(jù)對(duì)象、屬性和聯(lián)系作為數(shù)據(jù)庫(kù)函數(shù)。進(jìn)一步,函數(shù)數(shù)據(jù)操縱語(yǔ)言是許多可應(yīng)用于數(shù)據(jù)庫(kù)函數(shù)的數(shù)據(jù)操縱函數(shù)。最后,提供給用戶(hù)一種稱(chēng)作λ演算的特殊機(jī)制用于定義自己的函數(shù),這些函數(shù)可以與數(shù)據(jù)庫(kù)及數(shù)據(jù)操縱函數(shù)進(jìn)行無(wú)縫連接。
1.數(shù)據(jù)庫(kù)函數(shù)
按照函數(shù)模型的術(shù)語(yǔ),數(shù)據(jù)對(duì)象稱(chēng)作數(shù)據(jù)庫(kù)實(shí)體或簡(jiǎn)稱(chēng)實(shí)體。所有的實(shí)體必須說(shuō)明為無(wú)參的特殊函數(shù)。例如,有處理三個(gè)實(shí)體Student、Course和SC的數(shù)據(jù)庫(kù)模式,其中SC中的每個(gè)實(shí)體描述一個(gè)學(xué)生選修一門(mén)課程的成績(jī),函數(shù)定義如下:
STUDENT( )→ENTITY
COURSE( )→ENTITY
SC( )→ENTITY
函數(shù)模型定義一個(gè)數(shù)據(jù)庫(kù)模式作為一組數(shù)據(jù)庫(kù)函數(shù)。例如:
/*Definitions of entities*/
STUDENT( )→ENTITY
COURSE( )→ENTITY
SC( )→ENTITY
/*Definition of attributes*/
S#(STUDENT)→INTEGER
SNAME(STUDENT)→STRING
SAGE(STUDENT)→INTEGER
SSEX(STUDENT)→STRING
SDEPT(STUDENT)→STRING
C#(COURSE)→INTEGER
CNAME(COURSE)→STRING
CPNO(COURSE)→INTEGER
GRADE(SC)→INTEGER
/*Definition of relationships*/
SSC(SC)→STUDENT
CSC(SC)→COURSE
在函數(shù)模型中,每個(gè)函數(shù)f(x)→y的逆函數(shù)也是
可用的。例如,逆函數(shù)INV_S#(integer)→STUDENT將屬性S#的值映射到實(shí)體Student的內(nèi)部鍵。類(lèi)似地,逆函數(shù)INV_SNAME(STRING)→STUDENT轉(zhuǎn)換屬性SNAME的一個(gè)值到實(shí)體Student對(duì)應(yīng)的一個(gè)內(nèi)部鍵。此外,也存在描述實(shí)體間聯(lián)系的逆函數(shù)。例如,逆函數(shù)INV_SSC(STUDENT)_SC轉(zhuǎn)換實(shí)體Student的一個(gè)內(nèi)部鍵到實(shí)體SC對(duì)應(yīng)的一個(gè)內(nèi)部鍵。
函數(shù)模型支持單值和多值函數(shù)。前面給出的所有函數(shù)都是單值函數(shù),因?yàn)樗鼈儍H產(chǎn)生單值作為結(jié)果。多值函數(shù)產(chǎn)生結(jié)果屬于一個(gè)所謂的大容量(bulk)數(shù)據(jù)類(lèi)型。在函數(shù)模型中可用的大容量(bulk)數(shù)據(jù)類(lèi)型僅有列表(list)。因此,多值函數(shù)在函數(shù)模型里用列表值函數(shù)表示。例如,逆函數(shù) INV_CSC(COURSE)→C是列表值函數(shù),返回選修某門(mén)課程的選課列表值。因此,函數(shù)數(shù)據(jù)庫(kù)系統(tǒng)由下列兩個(gè)分量組成:
(1) 由數(shù)據(jù)庫(kù)管理員(DBA)定義的函數(shù)(函數(shù)數(shù)據(jù)庫(kù)模式)。
(2) 定義作為一個(gè)集合偶對(duì)([Parameter]→[Resultant Value])的數(shù)據(jù)庫(kù)函數(shù)的當(dāng)前狀態(tài)。
2. 函數(shù)模型中的查詢(xún)
在函數(shù)模型中的查詢(xún)也用函數(shù)進(jìn)行定義。這樣一個(gè)用戶(hù)定義函數(shù)稱(chēng)為查詢(xún)函數(shù)或數(shù)據(jù)操縱函數(shù)。在最簡(jiǎn)單的情形,為了建立查詢(xún)可以?xún)H用數(shù)據(jù)庫(kù)函數(shù)。例如,假定一個(gè)數(shù)據(jù)庫(kù)由兩個(gè)外部數(shù)據(jù)庫(kù)函數(shù)定義:
SDEPT(STUDENT)→STRING
SNAME(STUDENT)→STRING
查詢(xún)計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名,可以用下面的復(fù)合函數(shù)定義:
SNAME(INV_SDEPT("CS"))→STRING
3.數(shù)據(jù)操縱函數(shù)
通常,數(shù)據(jù)庫(kù)函數(shù)不能充分實(shí)現(xiàn)或多或少的復(fù)雜查詢(xún)。函數(shù)DBMS支持許多預(yù)定義數(shù)據(jù)操縱函數(shù)(DM函數(shù)),這樣的函數(shù)可以應(yīng)用于同樣的數(shù)據(jù)類(lèi)型。這樣的數(shù)據(jù)操縱函數(shù)通常稱(chēng)為函數(shù)程序設(shè)計(jì)語(yǔ)言。因此,我們可以說(shuō)函數(shù)模型借助定義在當(dāng)前數(shù)據(jù)庫(kù)模式的數(shù)據(jù)庫(kù)函數(shù)擴(kuò)充了可用在特定函數(shù)程序設(shè)計(jì)語(yǔ)言中的函數(shù)。用一種稱(chēng)為λ演算的特殊機(jī)制可以定義作為已有函數(shù)組合的新的、專(zhuān)用函數(shù)。
4. 遞歸函數(shù)
函數(shù)模型最強(qiáng)大的機(jī)制是函數(shù)的遞歸定義。例如,一個(gè)零件可由其他零件組成,數(shù)據(jù)庫(kù)模式可定義為下列數(shù)據(jù)庫(kù)函數(shù)的集合:
PART( )→ENTITY
USES(PART)→PART
關(guān)鍵詞:數(shù)據(jù),模型,函數(shù)
客戶(hù)&案例
營(yíng)銷(xiāo)資訊
關(guān)于我們
客戶(hù)&案例
營(yíng)銷(xiāo)資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。