集合理論T-SQL基礎教程

集合理論是由數學家Georg Cantor創建的,這是一個基於關係模型的數學分支。Cantor的集定義如下:

集合理論T-SQL基礎教程

集合,我們的意思是:任意集合體M是我們感知或想到的,能夠確定的、互異對象m(稱之爲M的元素)的整體。

──Joseph W. Dauben和Georg Cantor(普林斯頓大學出版社,1990年)

定義中的每個字都有着深刻和重要意義。集合定義和集合從屬關係是無需證明的公理,宇宙中的每個元素要麼是集合成員,要麼不是集合成員。

讓我們從Cantor定義中的每個詞開始。一個“集合”應將其視爲單個實體,你的焦點應該放在對象的集合上,而不是組成集合的單個對象上。然後,當你對數據庫中的表(如僱員表)編寫T-SQL查詢時,你應該將僱員的集合看作是一個整體,而不是單個的僱員。這聽起來可能並不重要並且很簡單,但顯然很多程序員很難採用這種思維方式。

“互異”這個詞的含義是指集合中的每個元素必須是唯一的。跳躍到數據庫中的表,你可以通過定義鍵約束來強制表中行的唯一性。沒有鍵的話,你就不能唯一地標識行,因此表也就不能取得“集合”資格。相反,該表將是一個多重集合或是一個無序的單位組。

“我們感知或想到的”這句話意味着集合的定義是主觀的`。思考一下教室:一個人可以被認爲是“人”的集合,也有可能被認爲是“學生”或“教師”的集合。因此,在定義集合方面你具有很大的自由度。當你爲數據庫設計數據模型時,設計過程應仔細考慮應用程序的主觀需求,從而爲相關實體確定恰當的定義。

至於“對象”,集合的定義不是限制爲像汽車或僱員這樣的物理對象,而是相關的抽象對象,如質數或線條。

Cantor的集合定義省略掉的內容很可能像所包含的內容一樣重要。請注意,定義中沒有提到集合元素間的任何順序,集合元素的列出順序並不重要。列出集合元素的正式標記符號是使用大括號:{a、b、c}。因爲與順序無關,你可以使用{b, a, c}或{b, c, a}表示同一集合。跳躍到屬性(SQL中稱之爲列)集合,它們組成了關係(SQL中稱之爲表)的表頭,元素應該是按名稱標識──而不是按順序位置標識。

同樣,思考一下元組(SQL中稱之爲行)的設置,它們構成了關係的主體,元素由其鍵值進行標識,而不是按位置標識。許多程序員很難適應這種觀念,對於查詢表而言,行之間沒有順序。換句話說,對錶的查詢可以按任意順序返回表中的行,除非你基於特定展現目的,明確要求數據以特定方式的進行排序。