国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ALPHA語言的復(fù)雜查詢SQL語句生成

2018-12-28 06:48
關(guān)鍵詞:元組謂詞全稱

汪 洋

(安慶師范大學(xué)計(jì)算機(jī)與信息學(xué)院,安徽安慶246133)

SQL語言中沒有全稱量詞和邏輯蘊(yùn)含[1](本文將帶有全稱量詞和邏輯蘊(yùn)含的查詢稱為復(fù)雜查詢),實(shí)踐中,必須將復(fù)雜查詢變換為等價(jià)的帶有存在量詞的謂詞查詢[2],這一過程對于數(shù)據(jù)庫初學(xué)者是一個(gè)不小的挑戰(zhàn)。作者在多年數(shù)據(jù)庫教學(xué)實(shí)踐的反思和探索下,借助謂詞演算語言ALPHA將復(fù)雜查詢進(jìn)行等價(jià)變換,生成SQL語句,過程簡單清晰,易為初學(xué)者所理解和掌握。

圖1 基于ALPHA語言的復(fù)雜查詢SQL語句生成框架

1 復(fù)雜查詢SQL語句生成框架

本文提出的復(fù)雜查詢的SQL語句生成框架如圖1所示。

首先將復(fù)雜查詢用ALPHA語言進(jìn)行表示, 然后利用邏輯謂詞等價(jià)變換理論,將ALPHA語句中的全稱量詞和邏輯蘊(yùn)含進(jìn)行等價(jià)變換,最后再使用ALPHA語言查詢語句向SQL語句變換生成算法生成SQL語言查詢。

2 復(fù)雜查詢的謂詞等價(jià)變換理論

2.1 全稱謂詞等價(jià)變換

SQL語言沒有全稱量詞,只能把帶有全稱量詞的謂詞變換為等價(jià)的帶有存在量詞的謂詞[3-4]。

(1)式語義解釋:對于所有的x,P都成立等價(jià)于不存在一個(gè)x,P不成立。

2.2 邏輯蘊(yùn)含謂詞等價(jià)變換

SQL語言也沒有邏輯蘊(yùn)含謂詞和運(yùn)算,可以利用謂詞演算將邏輯蘊(yùn)含謂詞進(jìn)行等價(jià)變轉(zhuǎn):

(2)式語義解釋:p則q等價(jià)于非p或q。

如果查詢要求中既有全稱量詞,又有邏輯蘊(yùn)含,則可進(jìn)行下面的等價(jià)變換。

(3)式語義解釋:對于所有的y,p則q,等價(jià)于不存在這樣的y,p成立而q不成立。

3 復(fù)雜查詢的ALPHA語言變換

關(guān)系演算以數(shù)理邏輯中的謂詞演算為基礎(chǔ),分成元組關(guān)系演算和域關(guān)系演算兩類,ALPHA語言是一種典型的元組關(guān)系演算語言,它以元組變量作為謂詞變元[1]。本節(jié)以文獻(xiàn)[1]第70頁的數(shù)據(jù)庫作為示例數(shù)據(jù)庫,該數(shù)據(jù)庫關(guān)系如圖2所示,設(shè)計(jì)了2個(gè)例子,例1是帶有全稱量詞的查詢,而例2是既有全稱量詞又有邏輯蘊(yùn)含的復(fù)雜查詢。先闡述用元組關(guān)系演算ALPHA語言表示復(fù)雜查詢要求,再利用謂詞變換理論進(jìn)行等價(jià)的謂詞變換。

例1查詢供應(yīng)了全部零件的供應(yīng)商姓名。首先用AHPHA語言將例1查詢表示為:

然后,用(1)式將上述語句進(jìn)行等價(jià)變換為:

圖2 示例數(shù)據(jù)庫關(guān)系圖

(4)式語義解釋為查詢這樣的供應(yīng)商的姓名,不存在一種零件,該供應(yīng)商沒有供應(yīng)該零件。

例2 查詢至少供應(yīng)了S1供應(yīng)商所供應(yīng)的全部零件的供應(yīng)商代碼。

先用AHPHA語言將例2查詢表示為:

再用(3)式將上述語句進(jìn)行等價(jià)變換:

(5)式語義解釋:查詢這樣的供應(yīng)商的代碼,不存在一種零件,S1供應(yīng)商供應(yīng)了該零件,而該供應(yīng)商沒有供應(yīng)這種零件。

4 基于ALPHA語言的復(fù)雜查詢的SQL語句生成算法

Step 1:將變換后的ALPHA工作空間中的表達(dá)式表名.屬性名轉(zhuǎn)換為SELECT屬性名FROM表名;

Step 2:將?轉(zhuǎn)換為WHERE EXISTS,??轉(zhuǎn)換為WHERENOTEXISTS;

Step 3:將元組變量轉(zhuǎn)換為SELECT*FROM表名表別名(其中表名為定義元組變量的表名,表別名為元組變量名);

Step 4:∧轉(zhuǎn)換為AND,∨轉(zhuǎn)換為OR。

經(jīng)過上述算法轉(zhuǎn)換,例1的(4)式可轉(zhuǎn)換為下面的SQL語句:

5 結(jié)束語

為解決數(shù)據(jù)庫理論初學(xué)者編寫復(fù)雜查詢SQL語句的困難,作者在多年數(shù)據(jù)庫教學(xué)實(shí)踐研究中,探索出一個(gè)復(fù)雜查詢的SQL語句生成方法,借助謂詞演算語言ALPHA將復(fù)雜查詢進(jìn)行了等價(jià)變換,學(xué)習(xí)者只需按該方法進(jìn)行簡單的ALPHA語言符號向SQL語句的轉(zhuǎn)換,即可生成復(fù)雜查詢的SQL語句,該過程簡單清晰,易為初學(xué)者理解和掌握。該方法在多年的教學(xué)實(shí)踐中得到了檢驗(yàn),并取得了較好的教學(xué)效果。

猜你喜歡
元組謂詞全稱
2022年本刊可以直接使用的常用縮略語
2022年本刊可以直接使用的常用縮略語
2022年本刊可以直接使用的常用縮略語
Python核心語法
被遮蔽的邏輯謂詞
——論胡好對邏輯謂詞的誤讀
針對隱藏Web數(shù)據(jù)庫的Skyline查詢方法研究*
黨項(xiàng)語謂詞前綴的分裂式
康德哲學(xué)中實(shí)在謂詞難題的解決
一種基于時(shí)間戳的簡單表縮減算法?
海量數(shù)據(jù)上有效的top-kSkyline查詢算法*
盐边县| 建德市| 灵台县| 南投市| 大英县| 会同县| 平定县| 阳山县| 黄陵县| 桦川县| 永川市| 南陵县| 富顺县| 四子王旗| 株洲县| 新乡县| 泸定县| 玉溪市| 镇安县| 故城县| 富源县| 南澳县| 黄浦区| 陈巴尔虎旗| 临泉县| 清原| 曲松县| 夏邑县| 昌平区| 遵义市| 孝义市| 双峰县| 吴江市| 弥勒县| 长春市| 赤水市| 霍城县| 乐清市| 乐亭县| 喀什市| 武隆县|