理論 關係代數 更輕鬆地與人交流你的查詢語言

2021-10-01 21:51:13 字數 2935 閱讀 1705

定義

首先我們由代數引出:

已知代數定義:操作運算子(如加減乘除)和它的原子運算元就是集合形式
這是傳統的代數

那麼,關係代數就是:基於一組一以關係為操作物件的運算子,它的原子運算元是 關係例項變數和元組集合常量(如集合的東西,

關係指的是在n個屬性列組成一行,產生聯絡。

元組指的是 一行

屬性指的是一列

關係代數運算子分為兩類:

並、差、交運算基於原子運算元為相容關係,那麼,什麼是相容關係呢?

相容關係:定義在一組相同與上的不同關係(兩個關係具有相同的目、且心營的屬性取值來自同乙個域)

關係r與關係s的並是乙個與關係rhes相容的關係,且其元組由屬於r和s的元組組成。

關係r和s的差是乙個關係r和s的相容的關係,且其元組由屬於r但不屬於s的元組的組成

關係r和s的交是乙個與關係r和s相容 的關係,且其元組由屬於r且屬於s的元組的組成

r - s =

交、並、差運算的單位是具有相容關係的關係例項變數和元組集合常量(如的東西。

利用其組合運算可實現資料庫的合併,增刪改操作。

如:刪:s1 -

增可以: s1 ∪

改可以一刪一增: s1 - ∪}

投影(projection)運算是一元的、對屬性進行操作的運算。從關係中選擇若干屬性列組成乙個新的關係。

在資料庫中可用於查詢(select)。

πa1,a2,…,an( r )

π就是投影運算的符號,也是符號圓周率πpai,a1,a2,…,an就是屬性列名,r可以了解為表table

投影運算附帶減少重複元組buff,

故使用投影運算後除了屬性列減少外,元組數對應減少。

選擇(selection)運算

選擇運算時一元的,對元組進行操作的運算。在關係中選擇滿足給定條件的元組。

在資料庫中用於條件判定(where)

σf(r)=

其中,σ為選擇運算的符號

f的組成規則:由基本邏輯表示式aθb組成

a,b可為屬性名或常量,但不能同時為常量

θ為比較運算子,< 、>、=和!=

小結:

σ、θ和 ∪、∩、-的使用可以基本表達select from where 查詢操作啦

乘積運算(廣義笛卡爾積)——當原子運算元不為相容關係時,先進行乘積運算,以乘積運算為基礎,再進行連線運算

θ-連線(join) 運算從兩個關係的笛卡爾積中選取屬性間滿足一定條件的元組,記為

r⋈aθbs ≡σr.aθs.b(r×s)
其中,a和b分別是r和s上屬性個數相等且可比的屬性組

θ為比較運算子:,=,<=,>=和!=

等值連線

當θ為"="時,θ-連線(join) 運算稱為等值連線

r⋈a=bs ≡σr.a=s.b(r×s)
自然連線加入π運算可刪去重複屬性

r⋈s ≡πz1,z2,zn(r⋈a=as)

其中,a和b時相同屬性組

z1,z2,zn是去掉r或s中重複屬性a後的剩餘屬性

外連線(outer join)

在自然連線的結果上,保留因在公共屬性上沒有相同屬性值而被捨棄的元組(懸浮元組)

並且在這些元組心增加的屬性上賦空值,這種連線為外連線

有三種形式的外連線:

重新命名運算

通常需要對參與除運算的關係進行預處理,使被除關係r的屬性包含除數關係 s的所有屬性,

商中屬性是代表查詢結構資訊的最小屬性組

可用來實現查詢乙個關係的屬性值集合是否包含另乙個關係的代數操作

r ÷ s的屬性由r中哪些不出現在s中的屬性組x所組成,即

t(x)=r ÷ s, t(x)∈πx( r )

給定關係r(x,y)和s(y),令t(x)=r÷s,若∈πx(r),r中所有在屬性組x上的分量等於

x的元組在屬性組y上的分類的集合,

稱為x在r中的像集,用yx表示。

yx=

給定關係r(x,y)和s(y),令t(x)=r÷s,若x∈πx(r),且s∈yx,則x∈t(x)

利用日誌使管理Linux更輕鬆

利用日誌使管理linux更輕鬆 作業系統的日誌主要具有審計與監測的功能,通過對日誌資訊的分析,可以檢查錯誤發生的原因,監測追蹤 者及受到 時留下的痕跡,甚至還能實時的進行系統狀態的監控。有效利用日誌資訊並對其進行分析與實時的監控管理,對於系統的安全性具有極為重要的作用。本文就是和大家 如何利用lin...

利用日誌使管理Linux更輕鬆

利用日誌使管理linux更輕鬆 作業系統的日誌主要具有審計與監測的功能,通過對日誌資訊的分析,可以檢查錯誤發生的原因,監測追蹤入侵者及受到攻擊時留下的痕跡,甚至還能實時的進行系統狀態的監控。有效利用日誌資訊並對其進行分析與實時的監控管理,對於系統的安全性具有極為重要的作用。本文就是和大家 如何利用l...

MySQL利用關係代數進行查詢 關係代數

關係代數的由來 首先從巨集觀上來認識一下關係演算這個概念,換句話講也就是什麼是關係代數,這也是我在接觸一些東西的首要工作。大家都知道對於關係型資料庫的資料庫操作語言分為查詢和更新兩類。而查詢語言這塊,又分為關係代數語言與關係演算語言。這裡講的 關係代數的由來 首先從巨集觀上來認識一下關係演算這個概念...