資料庫主從表、關係;主、外鍵關係和作用

來源:互聯網
上載者:User

標籤:

從資料庫是主要資料庫的備份,當主要資料庫變化時從資料庫要更新,這些資料庫軟體可以設計更新周期。這是提高資訊安全的手段。主從資料庫伺服器不在一個地理位置上,當發生意外時資料庫可以儲存。
主外鍵的關係結構:
1,一對一,不用引用主外鍵,把它們放一個表中即可
例如:一個學生只能有一個卡號,那麼學生跟卡號放在一個表中即可
2,一對多,引用主外鍵,‘一’相當於主鍵,‘多’即是引用主鍵的外鍵。
例如:一個班級可以有多個學生,並且一個學生只能屬於一個班級,這就是一對多的關係;
3,多對多關係,需要建立一個表,表中需要兩個欄位,分別是引用,兩個多對多欄位主鍵的外鍵。
     例如:
學生表(學號,姓名,…………)主鍵:學號
課程表(課程號,課程名,…………)主鍵:課程號
一個學生能選多門課,一個課可以由多個學生選,即是多對多關係,
那麼成績表就是它們之間關係的體,
即引用成績表(學號,課程號,成績)。這裡學號和課程號,分別是學生表和課程表中學號和課程號的外鍵
在我們現在這個階段中,主要還是使用,主外鍵間的一對多的關係
主鍵Primary key,唯一標示一個實體。是保證資料庫的實體完整性,保證資料中資料的正確性和合理性,取值非空唯一。
外鍵Foreign,是用來使表與表之間聯絡。用來保證資料庫的參照完整性,外鍵的取值必須來自參照表參照列的值,可以為空白也可不為空白。
外鍵的作用:
保持資料一致性,完整性,主要目的是控制儲存在外鍵表中的資料。 使兩張表形成關聯,外鍵只能引用外表中的列的值!

一、什麼是主鍵、外鍵
關係型資料庫中的一條記錄中有若干個屬性若其中某一個屬性群組(注意是
組)能唯一標識一條記錄該屬性群組就可以成為一個主鍵
比如
學生表(學號姓名性別班級)
其中每個學生的學號是唯一的學號就是一個主鍵
課程表(課程編號,課程名,學分)
其中課程編號是唯一的,課程編號就是一個主鍵
成績表(學號,課程號,成績)
成績表中單一一個屬性無法唯一標識一條記錄學號和課程號的組合才可
以唯一標識一條記錄所以學號和課程號的屬性群組是一個主鍵
成績表中的學號不是成績表的主鍵但它和學生表中的學號相對應並且
學生表中的學號是學生表的主鍵則稱成績表中的學號是學生表的外鍵
同理成績表中的課程號是課程表的外鍵
定義主鍵和外鍵主要是為了維護關聯式資料庫的完整性總結一下
1.主鍵是能確定一條記錄的唯一標識比如一條記錄包括身份正號姓
名年齡。
社會安全號碼是唯一能確定你這個人的其他都可能有重複所以社會安全號碼
是主鍵。
2.外鍵用於與另一張表的關聯。是能確定另一張表記錄的欄位用於保持
資料的一致性。
比如A表中的一個欄位是B表的主鍵那他就可以是A表的外鍵。
二、主鍵、外鍵和索引的區別
主鍵、外鍵和索引的區別?
主鍵外鍵索引
定義唯一標識一條記錄不能有重複的不允許為空白表的外鍵是另一表
的主鍵,外鍵可以有重複的,可以是空值該欄位沒有重複值但可以有一個空值
作用用來保證資料完整性用來和其他表建立聯絡用的是提高查詢排序的
速度
個數主鍵只能有一個一個表可以有多個外鍵一個表可以有多個惟一索引
叢集索引和非叢集索引的區別?
叢集索引一定是唯一索引。但唯一索引不一定是叢集索引。
叢集索引在索引頁裡直接存放資料而非叢集索引在索引頁裡存放的是
索引這些索引指向專門的資料頁的資料。
三、資料庫中主鍵和外鍵的設計原則
主鍵和外鍵是把多個表組織為一個有效關聯式資料庫的粘合劑。主鍵和外
鍵的設計對物理資料庫的效能和可用性都有著決定性的影響。
必須將資料庫模式從理論上的邏輯設計轉換為實際的實體設計。而主鍵和
外鍵的結構是這個設計過程的癥結所在。一旦將所設計的資料庫用於了生產環
境就很難對這些鍵進行修改所以在開發階段就設計好主鍵和外鍵就是非常
必要和值得的。
主鍵
係數據庫依賴於主鍵---它是資料庫物理模式的基石。
主鍵在物理層面上只有兩個用途
1.惟一地標識一行。
2.作為一個可以被外鍵有效引用的對象。
基於以上這兩個用途下面給出了我在設計物理層面的主鍵時所遵循的一
些原則
1.主鍵應當是對使用者沒有意義的。如果使用者看到了一個表示多對多關係的
串連表中的資料並抱怨它沒有什麼用處那就證明它的主鍵設計地很好。
2.主鍵應該是單列的以便提高串連和篩選操作的效率。
注使用複合鍵的人通常有兩個理由為自己開脫而這兩個理由都是錯誤
的。其一是主鍵應當具有實際意義然而讓主鍵具有意義只不過是給人為地
破壞資料庫提供了方便。其二是利用這種方法可以在描述多對多關係的串連表
中使用兩個外部鍵來作為主鍵我也反對這種做法理由是複合主鍵常常導
致不良的外鍵即當串連表成為另一個從表的主表而依據上面的第二種方法
成為這個表主鍵的一部分然這個表又有可能再成為其它從表的主表其主
鍵又有可能成了其它從表主鍵的一部分如此傳遞下去越靠後的從表其主
鍵將會包含越多的列了。
3.永遠也不要更新主鍵。實際上因為主鍵除了惟一地標識一行之外再
沒有其他的用途了所以也就沒有理由去對它更新。如果主鍵需要更新則說
明主鍵應對使用者無意義的原則被違反了。
注這項原則對於那些經常需要在資料轉換或多資料庫合并時進行資料整
理的資料並不適用。
4.主鍵不應包含動態變化的資料如時間戳記、建立時間列、修改時間列等。
5.主鍵應當有電腦自動產生。如果由人來對主鍵的建立進行幹預就會
使它帶有除了惟一標識一行以外的意義。一旦越過這個界限就可能產生認為
修改主鍵的動機這樣這種系統用來連結記錄行、管理記錄行的關鍵手段就
會落入不瞭解資料庫設計的人的手中。
四、資料庫主鍵選取策略
我們在建立資料庫的時候需要為每張表指定一個主鍵所謂主鍵就是能
夠唯一標識表中某一行的屬性或屬性群組一個表只能有一個主鍵但可以有多
個候選索引。因為主鍵可以唯一標識某一行記錄所以可以確保執行資料更新、
刪除的時候不會出現張冠李戴的錯誤。當然其它欄位可以輔助我們在執行這
些操作時消除共用衝突不過就不在這裡討論了。主鍵除了上述作用外常常
與外鍵構成參照完整性條件約束防止出現資料不一致。所以資料庫在設計時主
鍵起到了很重要的作用。
常見的資料庫主鍵選取方式有
·自動成長欄位

 很多資料庫設計者喜歡使用自動成長型欄位因為它使用簡單。自動成長
型欄位允許我們在向資料庫添加資料時不考慮主鍵的取值記錄插入後數
據庫系統會自動為其分配一個值確保絕對不會出現重複。如果使用SQL
Server資料庫的話我們還可以在記錄插入後使用@IDENTITY全域變數擷取系
統分配的主鍵索引值。

·手動增長欄位
·UniqueIdentifier
·"COMB(Combine)"類型

資料庫主從表、關係;主、外鍵關係和作用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.