數據庫關係代數運算

<p><span style="font-size: 12px;">轉自<a href="https://blog.csdn.net/zdplife/article/details/48060461" target="_blank">數據庫-關係代數(類型、完整性約束、基本運算、擴展運算)</a></span></p> <h3><span style="font-size: 16px;">(1)基本概念</span></h3> <h4>&nbsp;&nbsp; &#9312; 屬性和域:</h4> <p>&nbsp;&nbsp;&nbsp; 每一個事物有不少屬性,每一個屬性對應的取值範圍叫作域,全部對域都是原子數據(第一範式)</p> <h4>&nbsp;&nbsp; &#9313; 相關名詞</h4> <p>&nbsp;&nbsp;&nbsp; n元關係:R(D1,D2,D3...Dn)是n元關係,其中關係屬性的個數稱爲&#8220;元數&#8221;,元組的個數稱爲&#8220;基 數&#8221;,也就是記錄值。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;候選碼:若關係中某一個屬性或者屬性組的值能夠惟一的標識一個元組,則稱爲候選碼</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;主碼:能夠選擇任意一個候選碼做爲主碼</p> <p>&nbsp;&nbsp;&nbsp; 主屬性:包含在任何候選碼中的屬性叫做主屬性</p> <p>&nbsp;&nbsp;&nbsp; 全碼:關係模型中全部屬性都是這個關係模型的候選碼,稱爲全碼</p> <p>&nbsp;&nbsp;&nbsp; 外碼:關係模式中的屬性非該關係的碼,則稱爲外碼</p> <h4>&nbsp;&nbsp;&nbsp; &#9314; 三種類型:</h4> <p>&nbsp;&nbsp;&nbsp; 基本表:實際存在的表</p> <p>&nbsp;&nbsp;&nbsp; 查詢表:查詢結果對應的表</p> <p>&nbsp;&nbsp;&nbsp; 視圖表:由基本表和其餘視圖表導出的表,不是實際存在數據庫中</p> <h4>&nbsp;&nbsp;&nbsp; &#9315; 完整性約束:</h4> <p>&nbsp;&nbsp;&nbsp; 實體完整性:主屬性A不能爲空值</p> <p>&nbsp;&nbsp;&nbsp; 參照完整性:用實體之間的關係來描述,若F是關係R的外碼,則F或者是空值,或者是某個元組的 &nbsp;&nbsp;&nbsp;主碼值</p> <p>&nbsp;&nbsp;&nbsp; 用戶定義完整性:根據具體關係數據的約束條件,好比數據範圍等</p> <h3>(2)關係五種基本運算</h3> <h4>&nbsp;&nbsp;&nbsp; &#9312; 並:</h4> <p>&nbsp;&nbsp;&nbsp; R,S具備相同的關係模式(元素相同,結構相同),記爲R&nbsp;U&nbsp;S,返回由R或者S元組構成的集合組成</p> <h4>&nbsp;&nbsp;&nbsp; &#9313; 差:</h4> <p>&nbsp;&nbsp;&nbsp; R,S具備相同的關係模式(元素相同,結構相同),記爲R-S,右屬於R但不屬於S的元組組成</p> <h4>&nbsp;&nbsp;&nbsp; &#9314; 廣義笛卡爾積:</h4> <p>&nbsp;&nbsp;&nbsp; R&#215;S由n目和m目的關係R,S組成一個(n+m)列的元組集合,若R有K1個元組,S有K2個元組,則R&#215;S有K1*K2個元 組</p> <h4>&nbsp;&nbsp;&nbsp; &#9315; 投影(&#960;)&nbsp;:</h4> <p>&nbsp;&nbsp;&nbsp; 從關係的垂直方向開始運算,選擇關係中的若干列組成新的列。</p> <h4>&nbsp;&nbsp;&nbsp; &#9316; 選擇(&#963;):</h4> <p>&nbsp;&nbsp;&nbsp; 選擇從關係的水平方向進行元算,選擇知足給定條件的元組組成新的關係。</p> <h3>(3)擴展的關係代數運算</h3> <h4>&nbsp;&nbsp;&nbsp; &#9312; 交:</h4> <p>&nbsp;&nbsp;&nbsp; R&#8745;S=R-(R-S),R,S具備相同的關係模式</p> <h4>&nbsp;&nbsp;&nbsp; &#9313; 連接:</h4> <p>&nbsp;&nbsp;&nbsp; 連接分爲&#952;連接,等值連接和天然連接</p> <p>&nbsp;&nbsp;&nbsp;&#952;連接:從R,S的笛卡爾積中選擇知足必定條件的元組</p> <p>&nbsp;&nbsp;&nbsp;等值連接:當&#952;爲&#8220;=&#8221;時爲等值連接</p> <p>&nbsp;&nbsp;&nbsp;天然連接:是一種特殊的等值連接,比較的份量必須是相同的屬性組,並在結果集中去掉重複列,若是沒有重複列,天然連接就轉換爲笛卡爾積</p> <h4>&nbsp;&nbsp;&nbsp; &#9314; 除:</h4> <p>&nbsp;&nbsp;&nbsp; 同時從水平方向和垂直方向進行運算,給定關係R(X,Y)和S(Y,Z),X,Y,Z爲屬性組,R&#247;S應當知足在X上的份量值x的像集Yx包含關係S在屬性組Y上的投影集合:</p> <p>例如:</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R是:</p> <table align="center" frame="border" style="margin-left:200px"> <tbody> <tr> <td valign="middle" align="center" style="width: 100px"> A </td> <td valign="middle" align="center" style="width: 100px"> B </td> <td valign="middle" align="center" style="width: 100px"> C </td> <td valign="middle" align="center" style="width: 100px"> D </td> </tr> <tr> <td align="center"> a </td> <td align="center"> b </td> <td align="center"> c </td> <td align="center"> d </td> </tr> <tr> <td align="center"> a </td> <td align="center"> b </td> <td align="center"> e </td> <td align="center"> f </td> </tr> <tr> <td align="center"> a </td> <td align="center"> b </td> <td align="center"> h </td> <td align="center"> k </td> </tr> <tr> <td align="center"> b </td> <td align="center"> d </td> <td align="center"> e </td> <td align="center"> f </td> </tr> <tr> <td align="center"> b </td> <td align="center"> d </td> <td align="center"> d </td> <td align="center"> l </td> </tr> <tr> <td align="center"> c </td> <td align="center"> k </td> <td align="center"> c </td> <td align="center"> d </td> </tr> <tr> <td align="center"> c </td> <td align="center"> k </td> <td align="center"> e </td> <td align="center"> f </td> </tr> </tbody> </table> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S是:&nbsp;&nbsp;</p> <table align="center" style="width: 97px; height: 118px;margin-left:250px" frame="border"> <tbody> <tr> <td valign="middle" align="center" style="width: 100px"> C </td> <td valign="middle" align="center" style="width: 100px"> D </td> </tr> <tr> <td align="center"> c </td> <td align="center"> d </td> </tr> <tr> <td align="center"> e </td> <td align="center"> f </td> </tr> </tbody> </table> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;則R&#247;S:&nbsp;&nbsp;&nbsp;&nbsp;</p> <table align="center" style="width: 99px; height: 118px;margin-left:250px" frame="border"> <tbody> <tr> <td valign="middle" align="center" style="width: 100px"> A </td> <td valign="middle" align="center" style="width: 100px"> B </td> </tr> <tr> <td align="center"> a </td> <td align="center"> b </td> </tr> <tr> <td align="center"> c </td> <td align="center"> k </td> </tr> </tbody> </table> <h4>&nbsp;&nbsp; &#9315; 廣義投影:</h4> <p>&nbsp;&nbsp;&nbsp;&nbsp; 廣義投影運算允許在投影列表中使用算法運算,實現對投影運算的擴充,投影出的列不必定是原來的列,能夠是經過計算出來的列。</p> <h4>&nbsp;&nbsp;&nbsp; &#9316; 外鏈接:</h4> <p>&nbsp;&nbsp;&nbsp;&nbsp; 因爲天然連接會丟失一些信息,而外連接能夠處理因爲連接運算而缺失的信息,外連接分爲左外連接、右外連接、全外連接。</p> <p>&nbsp;&nbsp;&nbsp; 左外連接:取出左側關係中全部與右側關係中任一元素都不匹配的元組,用null來填充右側的關係 屬性。</p> <p>&nbsp;&nbsp;&nbsp; 右外連接:取出右側關係中全部與右側關係中任一元素都不匹配的元組,用null來填充左側的關係屬性。</p> <p>&nbsp;&nbsp;&nbsp; 全外連接:完成左外連接和右外連接的操做。</p>算法

相關文章
相關標籤/搜索