集合理論是由數(shù)學(xué)家Georg Cantor創(chuàng)建的,這是一個基于關(guān)系模型的數(shù)學(xué)分支。Cantor的集定義如下: 集合,我們的意思是:任意集合體M是我們感知或想到的,能夠確定的、互異對象m(稱之為M的元素)的整體。 ──Joseph W. Dauben和Georg Cantor(普林斯頓大學(xué)出版
集合理論是由數(shù)學(xué)家Georg Cantor創(chuàng)建的,這是一個基于關(guān)系模型的數(shù)學(xué)分支。Cantor的集定義如下:
集合,我們的意思是:任意集合體M是我們感知或想到的,能夠確定的、互異對象m(稱之為M的元素)的整體。
──Joseph W. Dauben和Georg Cantor(普林斯頓大學(xué)出版社,1990年)
定義中的每個字都有著深刻和重要意義。集合定義和集合從屬關(guān)系是無需證明的公理,宇宙中的每個元素要么是集合成員,要么不是集合成員。
讓我們從Cantor定義中的每個詞開始。一個“集合”應(yīng)將其視為單個實體,你的焦點應(yīng)該放在對象的集合上,而不是組成集合的單個對象上。然后,當(dāng)你對數(shù)據(jù)庫中的表(如雇員表)編寫T-SQL查詢時,你應(yīng)該將雇員的集合看作是一個整體,而不是單個的雇員。這聽起來可能并不重要并且很簡單,但顯然很多程序員很難采用這種思維方式。
“互異”這個詞的含義是指集合中的每個元素必須是唯一的。跳躍到數(shù)據(jù)庫中的表,你可以通過定義鍵約束來強制表中行的唯一性。沒有鍵的話,你就不能唯一地標(biāo)識行,因此表也就不能取得“集合”資格。相反,該表將是一個多重集合或是一個無序的單位組。
“我們感知或想到的”這句話意味著集合的定義是主觀的。思考一下教室:一個人可以被認為是“人”的集合,也有可能被認為是“學(xué)生”或“教師”的集合。因此,在定義集合方面你具有很大的自由度。當(dāng)你為數(shù)據(jù)庫設(shè)計數(shù)據(jù)模型時,設(shè)計過程應(yīng)仔細考慮應(yīng)用程序的主觀需求,從而為相關(guān)實體確定恰當(dāng)?shù)亩x。
至于“對象”,,集合的定義不是限制為像汽車或雇員這樣的物理對象,而是相關(guān)的抽象對象,如質(zhì)數(shù)或線條。
Cantor的集合定義省略掉的內(nèi)容很可能像所包含的內(nèi)容一樣重要。請注意,定義中沒有提到集合元素間的任何順序,集合元素的列出順序并不重要。列出集合元素的正式標(biāo)記符號是使用大括號:{a、b、c}。因為與順序無關(guān),你可以使用{b, a, c}或{b, c, a}表示同一集合。跳躍到屬性(SQL中稱之為列)集合,它們組成了關(guān)系(SQL中稱之為表)的表頭,元素應(yīng)該是按名稱標(biāo)識──而不是按順序位置標(biāo)識。
同樣,思考一下元組(SQL中稱之為行)的設(shè)置,它們構(gòu)成了關(guān)系的主體,元素由其鍵值進行標(biāo)識,而不是按位置標(biāo)識。許多程序員很難適應(yīng)這種觀念,對于查詢表而言,行之間沒有順序。換句話說,對表的查詢可以按任意順序返回表中的行,除非你基于特定展現(xiàn)目的,明確要求數(shù)據(jù)以特定方式的進行排序。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com