Sql Server 資料庫之完整性約束
在資料庫中有四種類型的約束來保證完整性:
域完整性 —— 對列的約束 | |
實體完整性 —— 對行的約束(不能用重複行) | |
引用完整性 —— 一個表中的某列值是引自另一個表的 | |
自定義完整性(這個可能有點深奧,未進行了解) |
1.保證域完整性的約束方法:檢查約束、預設約束、非空約束
檢查約束也就是Check約束,再白話一點就是進行條件的控制,但是對條件的書寫還不能那麼隨意,也是有規範的,至於這個規範,,,目前我會用的有:性別的選擇:sex = 'men' or sex = 'women',或者是 sex IN('men' , 'women'),對郵件的@符號的要求:email “%@%”,表示必須要有@符號,%表示有任意個位元組,對大小關係的判斷:例如 hours > 0,還有一個對長度的判斷:length(log) >= 6 (其中sex、email、hours、log都是表中列的名稱)。
預設約束就是當沒有對其進行輸入值時,顯示設定的預設值,其設定位置是在下面的列屬性中預設值或繫結中。
非空約束就是設計表時是否允許為空的。
2.保證實體完整性的約束方法:唯一約束、主鍵約束、識別符號
唯一約束和主鍵約束都是為了保證某一列中的值不能重複,主鍵約束可以設定多列為主鍵,這樣就增加了可能性,即只要設定主鍵的這幾列不完全相同就可以。
識別符號,首先必須是int型,而且識別符號不能進行編輯,他是自動生成的。若對某列進行了刪除,其標識列不能自動更新。
3.保證引用完整性的約束方法:外來鍵約束
即一個表(從表)中的某一列或多列(從鍵)是引自另一個表(主表)的,也就是說從表中的這一列(即從鍵)中的資料必須是主表中已有的(這也決定了為什麼輸入資料時要先輸入主表中的值了)。設定方法是:右鍵單擊列名 -> 關係 -> 新增 -> 表和列規範,然後設定主鍵表從鍵表,以及主鍵從鍵就可以了。
主外來鍵建立後注意事項:
1.當主表中沒有對應的記錄時,不能將記錄新增到從表
2.不能更改主表中的值而導致子表中的記錄孤立
3.子表存在與主表對應的記錄時,不能從主表中刪除該行
4.刪除主表前,要先刪子表