sql中的笛卡爾積
阿新 • • 發佈:2018-07-02
簡單的 有序 想要 所有 rod car strong 多表 笛卡爾
sql中的笛卡爾積
我們對數據庫表進行操作時,經常會對多張表進行關聯,多表連接查詢大家肯定不會陌生,但是一不小心很容易出來龐大冗余的數據。
笛卡爾積數學概念
笛卡爾積是指在數學中,兩個集合X和Y的笛卡尓積(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.關聯範圍在最小粒度的列。
2.如果是三張表連接,並且是1:n:n的關系,就要先關聯兩張表,然後將兩張表關聯的結果與第三表在進行關聯,這樣就可以取得我們想要的結果啦!多張表同理!
參考:https://blog.csdn.net/weienjun/article/details/80869478
sql中的笛卡爾積