您可能會注意到,已經讀了本書這麼多頁,但是還沒有看到幾句行話和術語。雖然我們大致提了一下怎樣利用樣例數據庫,但事實上,關於什麼是“數據庫”,我們一點東西都還沒有介紹。不過,我們現在打算設計該數據庫,然後開始實現它,這樣就不能再避而不談數據庫術語了。介紹數據庫術語就是本節的目的。本節介紹的一些術語全書都要用到,因此必須對其熟悉。所幸的是,關系數據庫中的許多概念是相當簡單的。事實上,關系數據庫的吸引力主要來源於其基本概念的簡單性。
1.3.1基本術語
在數據庫世界中,MySQL歸類為關系數據庫管理系統(RDBMS)。所謂關系數據庫管理系統的含義如下:
■ 數據庫(RDBMS 中的“DB”)是存儲信息的倉庫,以一種簡單的、規則的方式進行組織:
■ 數據庫中的數據集組織為表。
■ 每個表由行和列組成。
■ 表中每行為一個記錄。
■ 記錄可包含幾段信息;表中每一列對應這些信息中的一段。
■ 管理系統(“MS”)是允許通過插入、檢索、修改或刪除記錄來使用數據的軟件。
■ “關系”(“R”)一詞表示一種特殊種類的DB MS,它通過尋找相互之間的共同元素使存放在一個表中的信息關聯到存放在另一個表中的信息。關系數據庫的能力在於它能夠從這些表中方便地取出數據,並將關聯各表中的信息相結合得出問題的答案,這些答案只依據單個表的信息是不可能得到的。這裡有一個例子,示出了關系數據庫怎樣將數據組織成表並將一個表中的信息與另一個表中的信息相關聯。假定您管理一個含有標題廣告服務的Web 站點。您與公司有協議,這些公司希望有人在拜訪您的站點上的網頁時顯示他們的廣告。每當一個拜訪者點擊您的頁面一次,您就向該拜訪者的浏覽器提供了嵌在頁面中的廣告的一次服務,並且給公司估算一點費用。為了表示這些信息,要保存三個表(請參閱圖1- 1)。一個是company 表,它含有公司名、編號、地址和電話號碼等列。另一個是ad 表,它列出廣告編號、擁有該廣告的公司的編號以及每次點擊時的計費數。第三個hit 表按廣告編號記錄廣告點擊次數以及廣告提供服務的日期。
利用單個表的信息可以回答某些問題。為了確定簽協議的公司數目,只需對company 表中的行數計數即可。類似地,為了確定某個給定時間段中的點擊次數,只需查看hit 表即可。其他問題要更為復雜一些,而且必須考慮多個表以確定答案。例如,為了確定Pickles.公司的每個廣告在7月14日點擊了多少次,應該按如下步驟使用這些表:
1) 查詢company 表中的公司名(Pickles, Inc)以找到公司編號( 14)。
2) 利用公司編號查找ad 表中匹配的記錄以便能夠確定相關的廣告編號。有兩個這樣的廣告,48 和10 1。
3) 對ad 表中匹配的每個記錄,利用該記錄中的廣告編號查找hit 表中在所需日期范圍內的匹配記錄,然後對匹配的記錄進行計數。廣告編號為48 的匹配記錄有三個,廣告編號為101的匹配記錄有兩個。聽起來很復雜!而這正是關系數據庫系統所擅長的。這種復雜性在某種程度可以說是一種幻覺,因為上述每一步只不過是一個簡單的匹配操作,它通過將一個表的行中的值與另一個表的行中的值相匹配,把一個表與另一個表相關聯。這個簡單的操作可以各種方式使用來回答各種各樣的問題。每個公司有多少個不同的廣告?哪個公司的廣告最受歡迎?每個廣告帶來的收入是多少?當前記賬期中每個公司的總費用是多少?現在我們已經介紹了關系數據庫的理論,足以理解本書其余部分了,我們不必探究第三范式、實體關系圖以及所有這一類的東西。如果您確實需要了解這些東西,那就太令人恐怖了,而且這也不是地方。建議您從閱讀C.J.Date 和E . F.Codd 的某些書籍入手。