最近領導一直在提「表之間關聯」、「資料的身份證」之類的我聽不懂的名詞
今天就總結一下,表之間的關係
什麼是主鍵、外來鍵:
關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為乙個主鍵
比如
學生表(學號,姓名,性別,班級)
其中每個學生的學號是唯一的,學號就是乙個主鍵
課程表(課程編號,課程名,學分)
其中課程編號是唯一的,課程編號就是乙個主鍵
成績表(學號,課程號,成績)
成績表中單一乙個屬性無法唯一標識一條記錄,學號和課程號的組合才可以唯一標識一條記錄,所以 學號和課程號的屬性組是乙個主鍵
成績表中的學號不是成績表的主鍵,但它和學生表中的學號相對應,並且學生表中的學號是學生表的主鍵,則稱成績表中的學號是學生表的外來鍵
同理 成績表中的課程號是課程表的外來鍵
定義主鍵和外來鍵主要是為了維護關聯式資料庫的完整性,總結一下:
1.主鍵是能確定一條記錄的唯一標識,比如,一條記錄包括身份正號,姓名,年齡。
身份證號是唯一能確定你這個人的,其他都可能有重複,所以,身份證號是主鍵。
2.外來鍵用於與另一張表的關聯。是能確定另一張表記錄的字段,用於保持資料的一致性。
比如,a表中的乙個字段,是b表的主鍵,那他就可以是a表的外來鍵。
現實生活中,實體與實體之間肯定是有關係的,如:學生和老師,學生和課程,部門和員工,每個人和自己的身份證號碼等。
在設計表的時候,就應該體現出來表與表之間的這種關係。
表與表之間的三種關係:
一對多(1:n)
例如:部門和員工,客戶和訂單,分類和商品。
一對多建表原則:在從表(多方)建立乙個字段,字段作為外來鍵指向主表(一方)的主鍵
多對多(m:n)
例如:老師和學生,學生和課程,使用者和角色
多對多關係建表原則:需要建立第三張表,中間表至少兩個字段,這兩個字段分別作為外來鍵指向各自一方的主鍵。
多對多關係示意圖:
一對一(1:1)
在實際開發應用不多,因為一對一可以建立成一張表。
兩種建表原則:
一對一的建表原則說明
外來鍵唯一
主表的主鍵和從表的外來鍵(唯一),形成主外來鍵關係,外來鍵唯一 unique
外來鍵是主鍵
主表的主鍵和從表的主鍵,形成主外來鍵關係
關係示意圖:
表與表的關係關係的維護
一對多主外來鍵的關係
多對多中間表,兩個一對多
一對一1) 特殊一對多,從表中的外來鍵設定為唯一
2) 從表中的主鍵又是外來鍵
表與表之間的關係筆記
表與表之間的關係 一 一對多和多對多 1.一對多建表原則 1 在從表 多方 建立乙個字段,字段作為外來鍵指向一的一方的主鍵 2 例項 分類和商品,乙個分類對應多個商品,乙個商品只能屬於某乙個分類,部門和員工,乙個部門可以有多個員工,乙個員工只能屬於某乙個部門 3 alter table 從表 pro...
表與表之間的關係,修改表,複製表
外來鍵就是從來幫助我們建立表與表之間關係的 foreign key表與表只有四種關係 一對多關係 多對多關係 一對一關係 多對一關係sql語句建立表關係 1.一對多表關係 外來鍵字段建在多的一方 2.在建立表的時候 一定要先建被關聯表 3.在錄入資料的時候 也必須先錄入被關聯表 create tab...
SSH之 配置表與表之間的關係
配置多對一的關係時拿emp 員工 多表和dept 部門表 一舉例 1 在emp 中配置dept的屬性 class emp 2 在emp對映表 emp.hbm.xml中定義元素,表示參照關係 有延遲載入和非延遲載入,這關乎到sql語句執行一條還是兩條。建議使用這樣表示延遲載入並且sql語句合併。配置一...