古希臘哲學家赫拉克利特曾經說過,「人不能兩次踏進同一條河流。因為河流永遠在不停地變化」。另外,日本的鴨長明也說過,「河水流動經久不息,然而已經不是原來的水」。兩人的話聽起來都有些自相矛盾,但是想表達的卻是同樣的主題,即「保證一樣東西不變的標準是什麼?」
那麼,究竟是通過什麼來保證的呢?據說,我們人類身體的全部細胞會一周更新一次,那麼一周後我們是不是就會變成另乙個人呢?我們憑什麼相信今天交談過的朋友明天還是同乙個人呢?
言歸正傳。值(value)和變數(variable)是很容易混淆的概念,在討論和資料庫相關的話題時,兩者經常會被混用。一般提到「關係」這個詞時,如果不加特殊說明,指的都是「關係變數」。而關係值指的是關係變數在某一時刻取的值。實際上或許我們也可以說,值就是變數的時間切片。容易混淆的乙個原因是,codd 在早期的**中並沒有明確地對兩者加以區別。他的****現了「隨時間變化的(time-varying)關係」的說法,但準確的說法應該是「隨時間變化的關係變數」。因為關係值不會隨時間變化。這與數學或者程式語言中變數和值之間的關係是一樣的。在程式語言中,整數型變數儲存整數值。同樣在關係模型中,關係型變數儲存關係值。理解這一點,我們應該不會像剛接觸這些概念是那樣不可思議。關鍵是在我們學校中學到的變數和值基本上都是表量化的單一類數值,所以只是不習慣把關係這樣的複合型結構看成乙個值。
想象一下,如果告訴赫拉克利特和鴨長明變數和值的區別,二人會有什麼反應呢?筆者想,赫拉克利特也許會怒吼道「無聊!變數什麼的毫無意義!世上存在的只有值!」,而鴨長明可能會點頭附和「嗯嗯,原來是數學版的《方丈記》 啊!
存在「關係的關係」嗎
「存在『關係的關係』嗎」——這樣的問題聽起來可能有點唐突,但
請耐心地聽下去。這是前面提到的觀點「把關係這樣的複合型結構看成乙個值」的延伸。
這個問題可以替換成「存在遞迴的關係嗎」或者「定義域中可以包含關係嗎」。
「關係的關係」在邏輯上是可能存在的。但是,為此必須定義能夠使定義域包含關係的謂詞,而且如果再考慮對關係的量化,就需要實現二階謂詞邏輯,因此實現「關係的關係」非常困難
這裡我們只簡單地了解一下描述這種現實中還不存在的「關係的關係」的關係模型大概是什麼樣子。首先請看乙個具體的表。
雖然這張表看起來有點雜亂,但「關係的關係」的關係模型就是這個樣子。正如字面意思所示,這是一種「關係之中還有關係」或者「表中還有表」的狀態。像這樣包含關係的列(屬性)叫作關係值屬性(relationvalued attribute),現在有很多關於它在關係模型中的應用的研究。
不管怎樣,如果接受了這種「關係的關係」,那麼自然就能進一步擴充套件到「關係的關係的關係」或者「關係的關係的關係的關係」這樣更高階的關係。當然它們也都是巢狀式的遞迴結構。這種遞迴關係與目錄結構是一樣的。就像目錄中可以放置目錄或者檔案一樣,關係中可以放置關係值或者標量值。因此高階的關係又是樹形結構。
檔案系統與資料庫的目的都是提高資料的儲存效率,因此從提高效率的角度來說,兩者都採用樹形結構是理所當然的。只不過如今的關聯式資料庫只定義了一階關係,拿檔案系統模擬的話,相當於「只能定義一層目錄的檔案系統」。在這一點上,比起檔案系統,關聯式資料庫的表達能力稍微弱一些。
能夠定義高階關係的 dbms 還沒出現,但是標準 sql 語言已經支援了陣列型別和集合型別的變數,因此關係模型正朝著能夠處理複合型資料的方向發展。c.j. date 等人甚至還斷言道:真正的關係系統就是支援關係值等全部複合型資料的系統。也許十年以後,真的會出現能夠定義高階關係的 dbms!
mysql變數包括什麼意思 什麼是mysql變數?
什麼是mysql的變數?mysql變數分為幾種?在mysql資料庫中佔據了怎樣的地位?今天將為你講解mysql的變數。mysql變數是mysql資料庫中的基礎知識,下面就為您詳細介紹mysql變數,如果您對此方面感興趣的話,不妨一看,相信對您有所幫助。mysql變數介紹 mysql伺服器的系統變數,...
mysql中的prof是什麼意思 MySQL索引
索引的種類 普通索引 最基本的索引,沒有任何限制。唯一索引 索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。主鍵索引 是一種特殊的唯一索引,乙個表只能有乙個主鍵,不允許有空值。建立主鍵時就自動生成了該索引。組合索引 指多個欄位上建立的索引,只有在查詢條件中使用了建立索引時的第...
mysql assoc什麼意思 MYSQL
這個字串的意思是 mysql fetch assoc 函式從結果集中取得一行作為關聯陣列,mysql fetch assoc 和用 mysql fetch array 加上第二個可選引數 mysql assoc 完全相同。它僅僅返回關聯陣列。這也是 mysql fetch array 初始的工作方式...