SQL Server2000 表關系
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
可以在數據庫關系圖中的表間創建關系以顯示某個表中的列如何鏈接到另一表中的列。
在關系數據庫中,關系能防止冗余的數據。例如,如果正在設計一個數據庫來跟蹤有關書的信息,而每本書的信息(如書名、出版日期和出版商)都保存在一個名為 titles 的表中。同時還有一些想保存的有關出版商的信息,例如出版商的電話號碼、地址和郵政編碼。如果將所有這些信息都保存在 titles 表中,則對于某個出版商出版的每本書,出版商的電話號碼將是重復的。 一個更好的解決方案是,單獨在一個名為 publishers 的表中只保存一次出版商信息。然后在 titles 表中設置指針,以引用 publishers 表中的項。 若要確保數據同步,可以在 titles 表和 publishers 表之間強制引用完整性。引用完整性關系能確保某個表中的信息與另一個表中的信息相匹配。例如,titles 表中的每個書名必須和 publishers 表的特定出版商相關聯。不能在數據庫中添加數據庫中不存在的出版商的書名。 1.表關系類型 關系是通過匹配鍵列中的數據而工作的,而鍵列通常是兩個表中具有相同名稱的列。在大多數情況下,關系將一個表中為每個行提供唯一標識符的主鍵與另一個表中外鍵內的項相匹配。例如,通過在 titles 表的 title_id 列(主鍵)和 sales 表的 title_id 列(外鍵)之間創建一個關系,可以使銷售額與特定的銷售書名相關聯。 表與表之間存在三種類型的關系:一對多關系、多對多關系、一對一關系。所創建的關系類型取決于相關聯的列是如何定義的。 一對多關系 一對多關系是最常見的關系類型。在這種關系類型中,表 A 中的行可以在表 B 中有許多匹配行,但是表 B 中的行只能在表 A 中有一個匹配行。例如,publishers 表和 titles 表是一對多的關系:每一個出版商可出版許多書,但每一本書只能有一個出版商。 如果在相關列中只有一列是主鍵或具有唯一約束,則創建的是一對多關系。 一對多關系中的主鍵方由一個鍵符號表示。關系中的外鍵方由一個無窮大符號表示。 多對多關系 在多對多關系中,表 A 中的一行可與表 B 中的多行相匹配,反之亦然。通過定義稱為連接表的第三方表創建這樣的關系,該連接表的主鍵包括表 A 和表 B 中的外鍵。例如,authors 表和 titles 表是多對多關系,該關系通過從這些表中的每個表與 titleauthors 表的一對多關系定義。titleauthors 表的主鍵由 au_id 列(authors 表的主鍵)和 title_id 列(titles 表的主鍵)組成。 一對一關系 在一對一關系中,表 A 中的一行最多只能與表 B 中的一行相匹配,反之亦然。如果兩個相關列都是主鍵或具有唯一約束,則創建的是一對一關系。 這種關系不常見,因為這種方式的大部分相關信息都在一個表中。使用一對一關系可以是為了: ·分割一個含有許多列的表。 ·出于安全考慮而隔離表的某一部分。 ·存儲可以很容易刪除的臨時數據,只需刪除表即可刪除這些數據。 ·存儲只應用于主表子集的信息。 一對一關系的主鍵方由鍵符號表示。外鍵方也由鍵符號表示。 2.引用完整性概述 引用完整性是一種規則系統,這些規則可確保相關表中各行間關系的有效性,并確保不會意外刪除或更改相關的數據。 在強制引用完整性時必須遵循以下規則: ·如果在相關表的主鍵中不存在某個值,則不能在相關表的外鍵列中輸入該值。但是,可以在外鍵列中輸入空值。例如,在 employee 表中沒有包括某職員,則不能指明分配給該職員的工作,但是可在 employee 表的 job_id 列輸入空值來指明沒有給該職員分配工作。 ·如果在相關表中存在與某行匹配的行,則不能從主表中刪除該行。例如,如果在 employee 表中給多個職員分配了由 jobs 表中某行所代表的工作時,則不能刪除該行。 ·當主表的某行有相關行時,則不能更改主鍵值。例如,如果將 jobs 表中的一項工作分配給某職員,則不能從 employee 表中刪除該職員。 當滿足下述所有條件時,可以設置引用完整性: ·主表中相匹配的列是主鍵或具有唯一約束 。 ·相關列具有相同的數據類型和長度。 ·兩個表屬于同一個數據庫。 該文章在 2011/3/14 13:55:31 編輯過 |
關鍵字查詢
相關文章
正在查詢... |