資料庫自學筆記(1)---廣義笛卡爾積,投影,連接

来源:https://www.cnblogs.com/cptCarlvon/archive/2020/01/14/12192373.html
-Advertisement-
Play Games

最近在自學看 資料庫系統概論 這本書,總結一下遇到的問題。 1.廣義笛卡爾積(Extende cartesian product): 屬於 關係代數 裡面的 傳統的集合運算。其他的為union,except,intersection. 詳情不提了,舉個例子就是: create table R(A c ...


最近在自學看 資料庫系統概論 這本書,總結一下遇到的問題。

1.廣義笛卡爾積(Extende cartesian product):

屬於 關係代數 裡面的 傳統的集合運算。其他的為union,except,intersection. 

詳情不提了,舉個例子就是:

create table R
(
A char(2),
B char(2),
C char(2)
)

create table S
(
A char(2),
B char(2),
C char(2)
)

insert into R values('a1', 'b1', 'c1')
insert into R values('a1', 'b2', 'c2')
insert into R values('a2', 'b2', 'c1')

insert into S values('a1', 'b2', 'c2')
insert into S values('a1', 'b3', 'c2')
insert into S values('a2', 'b2', 'c1')

select * from R cross join S

結果:
A    B    C    A    B    C    
---- ---- ---- ---- ---- ---- 
a1   b1   c1   a1   b2   c2
a1   b2   c2   a1   b2   c2
a2   b2   c1   a1   b2   c2
a1   b1   c1   a1   b3   c2
a1   b2   c2   a1   b3   c2
a2   b2   c1   a1   b3   c2
a1   b1   c1   a2   b2   c1
a1   b2   c2   a2   b2   c1
a2   b2   c1   a2   b2   c1

 

 

行數為 3*3 ,因為k1*k2。

列數為3+3, = 6.

2.投影(projection):

關係R的投影是從關係R中選擇出若幹屬性列組成新的關係。 分為兩步: (1)選擇出指定的屬性,形成一個可能含有重覆行的表。 (2)刪除重覆行,形成新的關係。  

 

我們關註這個重覆行:一開始我們同時選取名字和班級的時候,儘管班級有重覆,但是整個行來說不重覆就行。

當我們轉到了只取班級,這就有重覆行了,就會被消滅(新版書上體現出來了,這裡還保留了重覆行)

 3.連接(join):

大體上分:

1. 等值連接(內連接)【inner join】:

等值連接是條件連接在連接運算符為“=”號時的特例。  

它是從關係R與S的廣義笛卡爾積中選取A,B屬性值相等的那些元組。

自然連接 :是一種特殊的等值連接,它要求兩個關係中進行比較的分量必須是相同的屬性組,並且在結果中把重覆的屬性列去掉 等值連接表示為RA=BS,自然連接表示為RS;自然連接是除去重覆屬性的等值連接。

兩者之間的區別和聯繫如下:

1、自然連接一定是等值連接,但等值連接不一定是自然連接。等值連接不把重覆的屬性除去;而自然連接要把重覆的屬性除去。

2、等值連接要求相等的分量,不一定是公共屬性;而自然連接要求相等的分量必須是公共屬性。

3、等值連接不把重覆的屬性除去;而自然連接要把重覆的屬性除去。

2. 外連接(outer join):

外連接就是自然連接的結果加上被捨棄的懸浮元祖,沒有的屬性便設定為NULL。

如果只保留左邊R的懸浮元素就是左連接(left join),反之就是右連接(right join)

ps:正式名稱應該是左/右外連接(left/right outer join)不過一般外面的資料都是簡稱。

 

4.外碼(Foreign key):

 

需要註意的是外碼不一定要與相對的主碼同名。比如說學生關係裡面的主碼為學號,外碼是班長。當然我們都知道班長也是指向一個學號,只是為了區分我們才使用了不同名。

 

參考:

https://blog.csdn.net/weixin_42194151/article/details/81135212

還有 資料庫系統概論第五版


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著自旋轉移矩效應的發現以及材料和結構的優化,基於自旋轉移矩效應的STT-MRAM器件應運而生。自從自旋轉移矩效應被證實以來,一方面研究人員通過大量的努力嘗試降低磁化反轉的臨界電流,增加熱穩定性;另一方面Sony、Hitachi、Renesas、Crocus、Toshiba、Samsung、Hyni ...
  • VIM編譯器的安裝與使用 vim編輯器安裝 在CentOS中,執行:yum -y install vim 普通模式 h: 左移一個字元 j: 下移一行 k: 上移一行 l: 右移一個字元 PageDown(或Ctrl+F):下翻一屏 PageUp(或Ctrl+B):上翻一屏 G:移到緩衝區的最後一行 ...
  • centos安裝與網路配置 關機:shutdown -h now 重啟:shutdown -r now 或 reboot linux目錄結構與操作命令 使用ls命令查看目錄結構 目錄查看: ls [-al] [ 文件或目錄名稱] 目錄切換: cd [ 目錄名稱] 顯示當前目錄: pwd 絕對路徑 : ...
  • 系統環境 "官方網站" "官方文檔" 升級其實很簡單如果您上次安裝的版本是編譯的也不用擔心 修改變數 複製配置文件即可註:本次升級基於yum升級 升級zabbix 更新前請務必備份好原有zabbix文件內容 不要刪除 升級過程 配置yum源升級zabbix的方式在3.0以後都是通用的 想升級到那個版 ...
  • 屏幕解析度設置 電源屏幕顯示時間 投影可以進行手機投影到電腦進行操作,遠程桌面可以進行遠程訪問,如雲伺服器 設置桌面圖標和背景 設置預設應用 安裝軟體,必備的幾項軟體 --其中個人認為(1)(2)是必須的 安全軟體:火絨安全。 驅動軟體:GeForce。 瀏覽器:谷歌。 聊天軟體:QQ,WeChat ...
  • 本文主要介紹MySQL二進位軟體包的安裝/啟動/關閉過程。 也許有人要問為什麼要選擇二進位的安裝方式呢? 其實答案很簡單,官方版本中已經把所有功能都配置好了,我們可以很方便地拿來使用。 官方MySQL有四個版本:GA版本、DMR版本、RC版本和Beta版本。一般情況下,生產環境或者測試環境都 選擇G ...
  • 場景 Centos中Redis的下載編譯與安裝(超詳細): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Redis的啟動和關閉(前臺啟動和後臺啟動): https://blog.csdn.net/BADAO_ ...
  • 8.1 排序數據 檢索出的數據並不是以純粹的隨機順序顯示的。如果不排序,數據一般將以它在底層表中出現的順序顯示。這可以是數據最初添加到表中的順序。但是,如果數據後來進行過更新或刪除,則此順序將會受到MySQL重用回收存儲空間的影響。因此,如果不明確控制的話,不能依賴該排序順序。 關係資料庫設計理論認 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...