MOOC 數據庫筆記(五):關係演算

關係演算

概述

(這部分的內容大多與離散數學有關,我沒有相關基礎,因此如今只是簡單看一下)
關係演算是以數理邏輯中的謂詞演算爲基礎的。
關係演算是描述關係運算的另外一種思惟方式。
SQL語言是繼承了關係代數和關係演算各自的優勢所造成的。
按照謂詞變量的不一樣,可分爲關係元組演算和關係域演算:
關係元組演算是以元組變量做爲謂詞變量的基本對象。
關係域演算是以域變量做爲謂詞變量的基本對象。數據庫

關係元組演算

基本形式

關係元組演算公式的基本形式:
{t|P(t)}
上式表示:全部使謂詞P爲真的元組t的集合
t是元組變量
t∈r表示元組t在關係r中
t[A]表示元組t的份量,即t在屬性A上的值
P是與謂詞邏輯類似的公式,P(t)表示以元組t爲變量的公式安全

定義

P(t)遞歸定義:
關係元組演算的基本形式:{t|P(t)}
其中公式P(t)能夠遞歸地進行構造:
三種形式的原子公式是公式:
s∈R、s[A]θc、s[A]θu[B]
若是P是公式,那麼┐P也是公式
若是P1,P2是公式,則P1∨P2,P1∧P2也是公式。
若是P(t)是公式,R是關係,則∃(t∈R)(P(t))和∀(t∈R)(P(t))也是公式。
須要時可加括弧
上述運算符的優先次序自高至底爲:括弧;θ;∀;∃;┐;∧;∨
公式只限於以上形式對象

存在量詞和全稱量詞∃∀

運算符∃∀,又稱爲量詞,前者稱「存在量詞」,後者稱「全稱量詞」
而被∃或∀限定的元組變量t,或者說,元組變量t前有存在量詞或全稱量詞,則該變量被稱爲「約束變量」,不然被稱爲「自由變量」。
例如:「檢索出年齡不是最小的全部同窗」
{t|t∈Student∧∃(u∈Student)(t[Sage]>u[Sage])}繼承

等價變換

P(t)公式,如謂詞演算同樣,也有一系列演算的等價性遞歸

關係域演算

基本形式

關係域演算公式的基本形式:{<x1,x2,...,xn>|P(x1,x2,...,xn)}
其中xi表明域變量或常量,P爲以xi爲變量的公式。數學

遞歸定義

公式P能夠遞歸地進行構造:
·<x1, x2, …, xn>∈r,其中r爲n個屬性上的關係,x1, x2, …, xn爲域變量或域常量;
·x𝚯y,其中x和y爲域變量,𝚯爲比較運算符(要求屬性x和y所屬域可用𝚯比較);
·x𝚯c,其中x爲域變量,c是x做爲域變量的那個屬性域中的常量。
根據以下規則用原子構造公式:
·原子是公式;
·若是P1是公式,則¬P1和(P1)也都是公式;
·若是P1和P2是公式,則P1∨P二、P1∧P2和P1⇒P2也都是公式;
·若是P1(x)是包含自由域變量x的公式,則∃x(P1(x))和∀x(P1(x))也都是公式。基礎

關係運算之安全性

"不產生無限關係和無窮驗證的運算被稱爲是安全的"
1.關係代數是一種集合運算,是安全的
集合自己是有限的,有限元素集合的有限次運算仍舊是有限的。
2.關係演算不必定是安全的
例如:{t|┐(R(t))},{t|R(t)∨t[2]>3}可能表示無限關係
再例如:(∃u)(P(u)),(∀u)(P(u))
前者稱爲「假驗證」,由於其要驗證全部元素是否爲假,後者稱爲「真驗證」,由於其要驗證全部元素是否爲真。這樣可能就存在了無窮驗證。變量

安全約束有限集合

須要對關係演算施加約束條件,即任何公式都在一個集合範圍內操做,而不是無限範圍內操做,才能保證其安全性。
DOM(ρ)是一個有限集合,其中每一個符號要麼是ρ明顯出現的符號,要麼是出如今ρ中的某個關係R的某元組的份量。
DOM主要用於約束ρ中一些謂詞的計算範圍,它沒必要是最小集合。循環

關於三種關係運算的一些觀點

關係運算有三種:關係代數、關係元組演算和關係域演算

三種關係運算都是抽象的數學運算,體現了三種不一樣的思惟
關係代數--以集合爲對象的操做思惟,由集合到集合的變換。
元組演算--以元組爲對象的操做思惟,取出關係的每個元組進行驗證,有一個元組變量則可能須要一個循環,多個元組變量則須要多個循環。
域演算--以域變量爲對象的操做思惟,取出域的每個變量進行驗證看其是否知足條件。數據

三種運算之間是等價的

關係代數與安全的元組演算表達式與安全的域演算表達式是等價的。即一種形式的表達式能夠被等價地轉換爲另外一種形式。

三種關係運算均可說是非過程性的

相比之下:域演算的非過程性最好,元組演算次之,關係代數最差。

三種關係運算雖然是抽象的,但倒是衡量數據庫語言完備性的基礎:

一個數據庫語言若是可以等價地實現這三種運算的操做,則說該語言是完備的。 目前多數數據庫語言都可以實現這三種運算的操做,在此基礎上還增長了許多其餘的操做,如賦值操做、彙集操做等。

相關文章
相關標籤/搜索