時(shí)間:2022-12-03 02:30:02 | 來(lái)源:信息時(shí)代
時(shí)間:2022-12-03 02:30:02 來(lái)源:信息時(shí)代
演繹數(shù)據(jù)庫(kù)查詢 : 演繹數(shù)據(jù)庫(kù)中采用關(guān)系代數(shù)或傳遞閉包算法實(shí)現(xiàn)演繹推理的一種智能查詢算法,包括非遞歸查詢與遞歸查詢。非遞歸查詢(nonrecursive query)指可以直接用關(guān)系代數(shù)操作來(lái)表示和實(shí)現(xiàn)的查詢,其含義是: 如果定義查詢謂詞的規(guī)則集不含遞歸規(guī)則,則查詢謂詞對(duì)應(yīng)的關(guān)系可以用EDB關(guān)系的關(guān)系代數(shù)表達(dá)式來(lái)表示,從而可以用關(guān)系代數(shù)操作來(lái)實(shí)現(xiàn)該查詢。如果定義查詢謂詞的規(guī)則集中含有遞歸規(guī)則,則稱該查詢?yōu)檫f歸查詢(recursive query),除非引入諸如傳遞閉包操作等新的運(yùn)算,否則遞歸查詢不能用關(guān)系代數(shù)表示。
1. 查詢的表示形式
在演繹數(shù)據(jù)庫(kù)中,查詢用一組邏輯規(guī)則和一個(gè)形如p(…)的表達(dá)式表示,其中p為查詢謂詞,它的某些變?cè)赡苁潜患s束的,而另一些是變量。如果查詢謂詞p是EDB謂詞,其對(duì)應(yīng)的關(guān)系存儲(chǔ)在數(shù)據(jù)庫(kù)中,該查詢可以簡(jiǎn)單地用關(guān)系代數(shù)操作實(shí)現(xiàn)。如果查詢謂詞p是IDB謂詞,并且定義p的邏輯程序是遞歸的(即包含遞歸規(guī)則),則稱該查詢?yōu)檫f歸查詢,否則稱它為非遞歸查詢。例如,要查詢ancestor(‘張華’,Y)?求“張華”的祖先Y,其中查詢謂詞ancestor可由以下規(guī)則定義:
ancestor(X,Y):-parent(X,Y)。
ancestor(X,Y):-parent(X,Z),ancestor(Z,Y)。
其中parent是EDB謂詞,其對(duì)應(yīng)的關(guān)系為PARENT。由于謂詞ancestor是遞歸定義的,因此這是一個(gè)遞歸查詢,需要通過(guò)計(jì)算不動(dòng)點(diǎn)得到查詢的回答。而如要查詢grandfather(‘張華’,Y)?求“張華”的祖父Y,其中查詢謂詞grandfather由規(guī)則:grandfather(X,Y):-father(X,Z),father(Z,Y).來(lái)定義。其中father是EDB謂詞,其對(duì)應(yīng)關(guān)系為FATHER。該查詢是非遞歸查詢,因?yàn)槎x查詢謂詞grandfather的規(guī)則是非遞歸的。
2.關(guān)系代數(shù)的基本操作
關(guān)系代數(shù)只能表示非遞歸查詢。每個(gè)關(guān)系代數(shù)表達(dá)式表示的查詢都可以用非遞歸的邏輯程序表示。設(shè)關(guān)系代數(shù)表達(dá)式可以用并、差、笛卡兒積、投影和選擇五種基本操作表示。對(duì)于一個(gè)給定的關(guān)系代數(shù)表達(dá)式E,可以使用如下方法將其用邏輯規(guī)則來(lái)表示:
(1) E=E1∪E2,其中E1和E2都是n元關(guān)系。設(shè)謂詞e、e1和e2對(duì)應(yīng)的關(guān)系分別為E、E1和E2,則表達(dá)式E有如下規(guī)則:
e(X1,X2,…,Xn):-e1(X1,X2,…,Xn)。
e(X1,X2,…,Xn):-e2(X1,X2,…,Xn)。
(2) E=E1-E2,其中E1和E2都是n元關(guān)系。設(shè)謂詞e、e1和e2對(duì)應(yīng)的關(guān)系分別為E、E1和E2,則表達(dá)式E有如下規(guī)則:e(X1,X2,…,Xn):-e1(X1,X2,…,Xn),~e2(X1,X2,…,Xn)。
(3) E=E1×E2,其中E1是n元關(guān)系,而E2是m元關(guān)系。設(shè)謂詞e、e1和e2對(duì)應(yīng)的關(guān)系分別為E、E1和E2,則表達(dá)式E有如下規(guī)則:e(X1,X2,…,Xn,Xn+1,Xn+2,…,Xn+m):-e1(X1,X2,…,Xn),~e2(Xn+1,Xn+2,…,Xn+m)。
(4) E=πil,…,ik(E1),其中E1是n元關(guān)系。設(shè)謂詞e和e1對(duì)應(yīng)的關(guān)系分別為E和E1,則表達(dá)式E有如下規(guī)則:e(Xi1,…,Xik):-e1(X1,X2,…,Xn)。
(5) E=σF(E1),其中E1是n元關(guān)系,F是一個(gè)簡(jiǎn)單選擇。如果F為$iθ$j(θ為算術(shù)比較運(yùn)算符),表示E的第i個(gè)分量與第j個(gè)分量進(jìn)行θ比較,則表達(dá)式E有如下規(guī)則:e(X1,X2,…,Xn):-e1(X1,X2,…,Xn),XiθXj。
類似地,如果F為$iθc或cθ$j(c為常量),則表達(dá)式E有如下規(guī)則:e(X1,X2,…,Xn):-e1(X1,X2,…,Xn),Xiθc.或e(X1,X2,…,Xn):-e1(X1,X2,…,Xn),cθXj。
如果E1和E2還包含關(guān)系運(yùn)算,可以使用以上方法對(duì)它們繼續(xù)處理。最終得到一組定義謂詞e的規(guī)則,謂詞e對(duì)應(yīng)的關(guān)系就是關(guān)系代數(shù)表達(dá)式E表示關(guān)系。
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。