你不可不知的關系資料庫理論
關系資料模型是百年來最偉大的技術發明之一,它是我們完成資料庫領域任何事情的基礎。的确,它使資料庫管理成為一門科學,而不再像過去那樣是一些技巧、技術和經驗法則的特定集合。是以,每一個與資料庫管理有關的專業人員,或多或少都會主動去獲得一些與關系模型有關的知識,以加深對關系模型的了解。因為如果沒有它,想開展高效的工作、獲得較高的工作性能幾乎是不可能的。
不幸的是,想要達到如上所說的“獲得知識,加深了解”是不容易的。這有多方面的原因,但影響最大的原因是sql語言,它是一種“關系型”語言的官方标準1,當今市場上的每個資料庫産品都支援其中的某些方面。大家普遍承認,至少是應該普遍承認,作為關系模型的抽象概念的某種具體實作,sql 有着非常嚴重的缺陷(這是我在前面那句話中給“關系型”加上引号的原因)。至于在資料庫世界,每個人之是以都知道一些關于sql的知識,是幾乎所有的關系型(或可能的關系型)教學的重點都傾向于sql本身,而不是基本的理論。是以,僅僅因為他們知道 sql,人們就認為他們知道關系理論,也就不足為奇了。然而,令人難過的是,如果你隻是像這樣知道 sql,那麼你肯定不知道關系理論,而你不知道的事情最終可能會傷害你。
本書的首要目的就是詳細地教你關系理論(至少是盡我所能地詳細),第二個目的是從關系理論的角度描述sql(或者描述sql的核心特征),這也可能會給我帶來一些其他靈感。一些讀者可能知道,不久前我出版了另一本書來論述這件事情,書名為sql and relational theory: how to write accurate sql code(第2版,2012年o’reilly出版)。然而,與現在的這本書不同,早期的圖書主要是面向資料庫從業人員,通常情況下适用于至少有三四年的“工作在資料庫系統第一線”的人員,或者經常把它作為日常工作一部分的人員(是以,肯定會有一些關于sql的工作經驗)。那本書的主要目的是展示如何把關系理論應用到使用sql的過程中,是以,sql的行為看起來就像是一個真正的關系語言一樣(在那本書中我引用的一個規則是,從關系型的角度使用sql)。在本書和那本書之間不可避免地會有一些重複。實際上,本書中有一些文字就是從早期寫作的圖書中複制和粘貼的,有些幾乎是完全一樣。不管怎樣,你現在看到的一定是一本不同的圖書,因為它是面向不同的讀者(參看下面的詳細解釋)。然而,本書接下來的内容還需要頻繁引用早期的圖書,所有的引用都以簡寫的形式給出(即sql and relational theory)。而且,我認為如果你熟悉我的早期作品,那麼你從本書中可能不會獲得太多的知識。當然,我不是不鼓勵你閱讀此書,隻是如果你讀了,你可能不會發現太多的新知識。
<a href="https://yq.aliyun.com/articles/97841">1.1 什麼是資料庫</a>
<a href="https://yq.aliyun.com/articles/97846">1.2 什麼是資料庫管理系統</a>
<a href="https://yq.aliyun.com/articles/97853">1.3 什麼是關系型dbms</a>
<a href="https://yq.aliyun.com/articles/97856">1.4 資料庫系統與程式系</a>
<a href="https://yq.aliyun.com/articles/97876">1.5 練習</a>
<a href="https://yq.aliyun.com/articles/97883">14.1 概述</a>
<a href="https://yq.aliyun.com/articles/97928">14.2 sql與關系模型的不同點</a>
<a href="https://yq.aliyun.com/articles/97942/">14.3 練習</a>
<a href="https://yq.aliyun.com/articles/97946">14.4 答案</a>