資料庫的功能是管理大量的資料。但凡需要管理的東西的數量巨大時,必定需要一定的限制或者規則。比如交通需要交通規則、民航需要空中交通管制、國家需要法律等等,假設把這些限制除去,天下必定大亂。在資料庫中這種限制我們稱之為“約束”,它功能是保證資料完整性。而把約束封裝之後就成了規則,規則是一個對象,他通過綁定來實現保持資料完整性的功能,同時簡化了代碼實現代碼的重複利用。
約束主要有五種:
1、主鍵約束
主鍵約束是指定表中的某一列或者幾列的組合成的具有唯一性標識每一條記錄,被定義為主鍵的列中不能有NULL空值,資料類型不能是TEXT或者IMAGE。我們入學時的學號就可以被定義為主鍵。需注意每個表只能有一個主鍵,但不是強制要求一定要有。由於主鍵具有唯一性(資源稀缺),所以在定義主鍵時需遵循以下原則:1、主鍵應當對使用者沒有意義2、主鍵最好是單列的3、主鍵永遠不用更新4、主鍵不適用動態變化的資料5、主鍵應當由電腦產生。當然這些條件都滿足是不容易的,所以選擇主鍵時需要注意的是幾個原則的平衡。
2、外鍵約束
外鍵約束定義了表之間的關係,它是相對於外鍵而言的。當主鍵標識的記錄被更新時,被定義為外鍵的列中有和主鍵相同的記錄就會自動更新,以此來保證表間的資料完整性。而當被定義為外鍵約束的表中只能插入在主鍵表中存在的記錄。即“外鍵的表”必定包含於“主鍵表”,否則將被視為非法。
3、唯一性限制式
唯一性限制式用於保證列中不存在相同的值。假如一張學生資訊的表,我們給學號定義為唯一性限制式,那麼就可以保證不出現重複的學號。如果學號已被定義為主鍵則不能再被定義唯一性限制式。
4、核查約束
核查約束用來保證被輸入的值符合一定的範圍或條件。否則不能更新,如工資表中員工工資被要求在3000到4000之間,那麼一旦輸入的值不在這個區間內就會無法更新記錄。這就避免的出現錯誤資料,如果本來只有3000的月薪卻發了30000,那麼老闆一定會瘋的。一句話:只有符合核查約束的資料才能接接受。
5、預設值約束
這個就是給沒有輸入值的欄位設定一個預設值。這個就不多說了。
約束可以通過可視化管理器來管理,也可通過T-SQL語句來管理,這個說來話長篇幅有限,算了。
規則,我認為規則就是被封裝的約束。規則通過和欄位綁定來實現功能,所以規則建立以後是可以重複利用的,哪裡需要規則就綁定誰。使用系統預存程序SP-Bindrule來實現綁定。
啊呀,都是廢話,毫無協助,寫不下去了!!!