在學過資料庫以後對於約束的概念就不是太陌生了,即:約束(constraint)是microsoft
sql server
提供的自動保持資料庫完整性的一種方法,
定義了可輸入表或表的單個列中的資料的限制條件
。當然主鍵和外來鍵也不例外也是保持資料完整性的一種方法,接下來就針對主外來鍵來展開講述。
主鍵和外來鍵是把多個表組織為乙個有效的關聯式資料庫的粘合劑。主鍵和外來鍵的設計對物理資料庫的效能和可用性都有著決定性的影響。必須將資料庫模式從理論上的邏輯設計轉換為實際的物理設計。而主鍵和外來鍵的結構是這個設計過程的癥結所在。一旦將所設計的資料庫用於了生產環境,就很難對這些鍵進行修改,所以在開發階段就設計好主鍵和外來鍵就是非常必要和值得的。接下來就從二者的定義、作用、個數以及二者的運用關係來區分。
一、定義:
主鍵--
唯一標識一條記錄,不能有重複的,不允許為空 外來鍵
--表的外來鍵是另一表的主鍵
,外來鍵可以有重複的
,可以是空值
二、作用:
主鍵--
用來保證資料完整性 外來鍵
--用來和其他表建立聯絡用的
三、個數:
主鍵--
主鍵只能有乙個 外來鍵
--乙個表可以有多個外來鍵
四、sql中主鍵和外來鍵的關係及運用
1.兩實體間主外來鍵關係就是一對多的關係。
例如:學生和班級之間就是一對多關係。
班級是一;學生是多
班級表包含主鍵(classpk);
學生表包含對班級表的引用(classpk)
這個引用關係就是通常說的外來鍵,外來鍵即使其他表的主鍵,在這裡學生表中classpk就是來自於班級表中的主鍵。
所以說:學生表是外來鍵表,班級表是主鍵表。
2.外來鍵表和主鍵表其實是相對的,某個表既可以是其他表的主鍵表,也可以是另乙個或者另一些表的外來鍵表,即某個表既可以是外來鍵表也可以是主鍵表。
例如: a 和 b 是1對多關係,那麼a是主鍵表,b是外來鍵表。
c 和 a 是 1對多關係,那麼c是主鍵表,a是外來鍵表。
綜上可以發現a既可以是主鍵表,又可以是外來鍵表。
3.在外鍵表中增加一行時資料,必先保證外來鍵已經存在。 就是說插入資料時,外來鍵必須已經存在於主鍵表中。
(外來鍵就是**於主鍵表的主鍵嘛)
例如:先有班級後有學生,插入乙個學生必須保證,班級先存在。
4.刪除主鍵表時,必須首先刪除主鍵表關聯的所有外來鍵表中的資訊。
例如:刪除乙個班級之前,必須刪除首先刪除該班級所有的學生。
5.刪除外來鍵表中的資料時,對主鍵表不會有任何影響。
例如:刪除乙個學生對班級不會有影響。
6.實體之間的多對多關係,其實就是建立乙個中間表,中間表包含多對多實體之間的外來鍵。
例如:a 和 b 多對多
7.採用級聯的方法,當含有主鍵的表中的資料刪除時,外來鍵表的資料自動進行刪除操作。
SQL關係 主鍵,外來鍵
一 定義 主鍵 唯一標識一條記錄,不能有重複的,不允許為空 外來鍵 表的外來鍵是另一表的主鍵,外來鍵可以有重複的,可以是空值 二 作用 主鍵 用來保證資料完整性 外來鍵 用來和其他表建立聯絡用的 三 個數 主鍵 主鍵只能有乙個 外來鍵 乙個表可以有多個外來鍵 四 sql中主鍵和外來鍵的關係及運用 1...
SQL主鍵 外來鍵 索引
主鍵 唯一區分出不同的記錄的字段。常見可作為id欄位的型別 自增整數型別 全域性唯一guid型別 guid演算法通過網絡卡mac位址 時間戳和隨機數生成的字串 外來鍵 實現一對多 多對多和一對一的關係。可以通過資料庫來約束,也可以不設定約束,僅靠應用程式的邏輯來保證。一對多 學生表 students...
Sql 主鍵與外來鍵
三張表 s s sname,gender,age c c cname,tname sc sc s c grade s 為學生號 主鍵 sname為學生姓名,c 為課程號 主鍵 cname為課程名,tname為老師姓名,sc中使用外來鍵關聯 請編寫sql語句完成下列操作 1.將 oracle 成績最高...