表之間關系(帶圖)

表之間關系(帶圖)

ID:14672270

大小:47.00 KB

頁數(shù):5頁

時間:2018-07-29

表之間關系(帶圖)_第1頁
表之間關系(帶圖)_第2頁
表之間關系(帶圖)_第3頁
表之間關系(帶圖)_第4頁
表之間關系(帶圖)_第5頁
資源描述:

《表之間關系(帶圖)》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫

1、數(shù)據(jù)庫表之間的關系特別說明數(shù)據(jù)庫的正規(guī)化是關系型數(shù)據(jù)庫理論的基礎。隨著數(shù)據(jù)庫的正規(guī)化工作的完成,數(shù)據(jù)庫中的各個數(shù)據(jù)表中的數(shù)據(jù)關系也就建立起來了。在設計關系型數(shù)據(jù)庫時,最主要的一部分工作是將數(shù)據(jù)元素如何分配到各個關系數(shù)據(jù)表中。一旦完成了對這些數(shù)據(jù)元素的分類,對于數(shù)據(jù)的操作將依賴于這些數(shù)據(jù)表之間的關系,通過這些數(shù)據(jù)表之間的關系,就可以將這些數(shù)據(jù)通過某種有意義的方式聯(lián)系在一起。例如,如果你不知道哪個用戶下了訂單,那么單獨的訂單信息是沒有任何用處的。但是,你沒有必要在同一個數(shù)據(jù)表中同時存儲顧客和訂單信息。你可以在兩個關系數(shù)據(jù)表中分別存儲顧客信息和訂單信息,然后

2、使用兩個數(shù)據(jù)表之間的關系,可以同時查看數(shù)據(jù)表中每個訂單以及其相關的客戶信息。如果正規(guī)化的數(shù)據(jù)表是關系型數(shù)據(jù)庫的基礎的話,那么這些數(shù)據(jù)表之間的關系則是建立這些基礎的基石。出發(fā)點下面的數(shù)據(jù)將要用在本文的例子中,用他們來說明如何定義數(shù)據(jù)庫表之間的關系。通過Boyce-CoddNormalForm(BCNF)對數(shù)據(jù)進行正規(guī)化后,產生了七個關系表:Books:{Title*,ISBN,Price}Authors:{FirstName*,LastName*}ZIPCodes:{ZIPCode*}Categories:{Category*,Description}P

3、ublishers:{Publisher*}States:{State*}Cities:{City*}現(xiàn)在所需要做的工作就是說明如何在這些表之間建立關系。關系類型在家中,你與其他的成員一起存在著許多關系。例如,你和你的母親是有關系的,你只有一位母親,但是你母親可能會有好幾個孩子。你和你的兄弟姐妹是有關系的——你可能有很多兄弟和姐妹,同樣,他們也有很多兄弟和姐妹。如果你已經結婚了,你和你的配偶都有一個配偶——這是相互的——但是一次只能有一個。在數(shù)據(jù)表這一級,數(shù)據(jù)庫關系和上面所描述現(xiàn)象中的聯(lián)系非常相似。有三種不同類型的關系:一對一:在這種關系中,關系表的每

4、一邊都只能存在一個記錄。每個數(shù)據(jù)表中的關鍵字在對應的關系表中只能存在一個記錄或者沒有對應的記錄。這種關系和一對配偶之間的關系非常相似——要么你已經結婚,你和你的配偶只能有一個配偶,要么你沒有結婚沒有配偶。大多數(shù)的一對一的關系都是某種商業(yè)規(guī)則約束的結果,而不是按照數(shù)據(jù)的自然屬性來得到的。如果沒有這些規(guī)則的約束,你通??梢园褍蓚€數(shù)據(jù)表合并進一個數(shù)據(jù)表,而且不會打破任何規(guī)范化的規(guī)則。一對多:主鍵數(shù)據(jù)表中只能含有一個記錄,而在其關系表中這條記錄可以與一個或者多個記錄相關,也可以沒有記錄與之相關。這種關系類似于你和你的父母之間的關系。你只有一位母親,但是你母親可

5、以有幾個孩子。多對多:兩個數(shù)據(jù)表里的每條記錄都可以和另一個數(shù)據(jù)表里任意數(shù)量的記錄(或者沒有記錄)相關。例如,如果你有多個兄弟姐妹,這對你的兄弟姐妹也是一樣(有多個兄弟姐妹),多對多這種關系需要引入第三個數(shù)據(jù)表,這種數(shù)據(jù)表稱為聯(lián)系表或者連接表,因為關系型系統(tǒng)不能直接實現(xiàn)這種關系。建立關系在開始著手考慮建立關系表之間的關系之前,你可能需要對數(shù)據(jù)非常熟悉。只有在熟悉數(shù)據(jù)之后,關聯(lián)會比你剛開始的時候更明顯。你的數(shù)據(jù)庫系統(tǒng)依賴于在兩個數(shù)據(jù)表中找到的匹配值來建立關系。如果在數(shù)據(jù)庫系統(tǒng)中發(fā)現(xiàn)了一個匹配值,系統(tǒng)將從兩個數(shù)據(jù)表中提取數(shù)據(jù)并創(chuàng)建一個虛擬的記錄。例如,你可能

6、想要查看某個特定的作者所寫的全部書籍,在本文中,系統(tǒng)將從“Books”和“Authors”這兩個數(shù)據(jù)表中查找相關的匹配值。需要注意的是,在大多數(shù)情況下,查詢的結果是動態(tài)的,這意味著對這條虛擬記錄所做的任何改動都將可能作用到底層的數(shù)據(jù)表上,這一點是非常重要的。進行匹配的值都是主鍵和外鍵的值。(關系模型不要求一個關系必須對應的使用一個主鍵來確定。你可以使用數(shù)據(jù)表中的任何備選關鍵字來建立關系,但是使用主鍵是大家都已經接受的標準。)主鍵(primarykey)唯一的識別表中的每個記錄。而外鍵(foreignkey)只是簡單的將一個數(shù)據(jù)表中的主鍵存放在另外一個數(shù)

7、據(jù)表中。同樣地,對于你來說也不需要做太多的工作——只是簡單地將主鍵加到關系表中,并將其定義為外鍵。唯一需要注意的是,外鍵字段的數(shù)據(jù)類型必須和主鍵的數(shù)據(jù)類型相同。但是有些系統(tǒng)可以允許這條規(guī)則有一個例外,它允許在數(shù)字和自動編號(autonumbering)字段(例如在SQL服務器系統(tǒng)中訪問Identity和AutoNumber)之間建立關系。此外,外鍵的值可以是空(Null),盡管強烈建議在沒有特別原因的情況下,不要讓外鍵為空。你有可能永遠都不會有機會來使用需要這項功能的數(shù)據(jù)庫。現(xiàn)在回到我們的示例關系表,并開始輸入合適的外鍵。(請繼續(xù)在紙上打草稿——在你的

8、數(shù)據(jù)庫系統(tǒng)中創(chuàng)建真正的數(shù)據(jù)表還為時過早。要知道在紙上糾正錯誤要容易得多。)要記住,你正在把主鍵

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。