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