簡單了解一下笛卡爾積定義和運算規則


最近在學習MYSQL JOIN語句的執行順序和原理時,提到了笛卡爾積的概念,於是就想着了解一下笛卡爾積的概念和運用並進行記錄,方便以后復習。

 

定義:

笛卡爾乘積是指在數學中,兩個集合XY的笛卡爾積(Cartesian product),又稱直積,表示為X × Y,第一個對象是X的成員而第二個對象是Y的所有可能有序對的其中一個成員。

假設集合A={a, b},集合B={0, 1, 2},則兩個集合的笛卡爾積為{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

 
 
 
實例:
1、給出三個域:
D1=SUPERVISOR = { 張清玫,劉逸 }
 
D2=SPECIALITY= {計算機專業,信息專業}
 
D3=POSTGRADUATE = {李勇,劉晨,王敏}
 
則D1,D2,D3的笛卡爾積為D:
 
D=D1×D2×D3 ={(張清玫, 計算機專業, 李勇), (張清玫, 計算機專業, 劉晨),
(張清玫, 計算機專業, 王敏), (張清玫, 信息專業, 李勇),
(張清玫, 信息專業, 劉晨), (張清玫, 信息專業, 王敏),
(劉逸, 計算機專業, 李勇), (劉逸, 計算機專業, 劉晨),
(劉逸, 計算機專業, 王敏), (劉逸, 信息專業, 李勇),
(劉逸, 信息專業, 劉晨), (劉逸, 信息專業, 王敏)}
 
這樣就把D1,D2,D3這三個集合中的每個元素加以對應組合,形成龐大的集合群。
 
2、實例二:
        

R有三個屬性ABC,每個屬性內有三個元素,如圖中R方框所示.

S有三個屬性ABC,每個屬性內有三個元素,如圖中S方框所示.

R乘以S是這樣計算的:

(每一行元素稱為一個元組)

Ra  Rb  Rc  Sa  Sb  Sc分別代表R中的abc屬性,S中的abc三個屬性.

先用R中的第一個元組分別和S中的三個元組相乘,得到如下

Ra  Rb  Rc  Sa  Sb  Sc

a1   b1  c1   a1   b2   c2

a1   b1  c1   a1   b3   c3

a1   b1  c1   a2   b2   c1

再用R中的第二個元組分別和S中的三個元組相乘,得到如下

Ra  Rb  Rc  Sa  Sb  Sc

a1   b2  c2   a1   b2   c2

a1   b2  c2   a1   b3   c3

a1   b2  c2   a2   b2   c1

再用R中的第三個元組分別和S中的三個元組相乘,得到如下

Ra  Rb  Rc  Sa  Sb  Sc

a2   b2  c1   a1   b2   c2

a2   b2  c1   a1   b3   c3

a2   b2   c1  a2   b2   c1

最后將這三種計算出來的陣列按照Ra  Rb  Rc  Sa  Sb  Sc排列好,就能得到上面右邊方框中R乘以S得到的廣義笛卡爾積了. 

 

參考文檔:

https://www.bilibili.com/read/cv5013688/

https://baike.baidu.com/item/%E7%AC%9B%E5%8D%A1%E5%B0%94%E4%B9%98%E7%A7%AF/6323173?fr=aladdin

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM