標籤:style blog color ar sp for 資料 div on
我們在學習資料庫的過程中,經常會聽到兩個概念:資料冗餘和資料完整性。資料冗餘是指資料庫中存在一些重複的資料,資料完整性是指資料庫中的資料能夠正確反應實際情況,我們說,為了效能著想,資料庫中允許有一些資料冗餘,但是要保持資料的完整性。資料完整性=可靠性+準確性,這裡我們要清楚以下幾點:• 資料存放在表中• “資料完整性的問題大多是由於設計引起的”• 建立表的時候,就應當保證以後資料輸入是正確的 ——錯誤的資料、不符合要求的資料不允許輸入 本質而言,保證資料的完整性 = 實施完整性條件約束 完整性包括1. 實體完整性a) 資料行不能存在重複2. 值域完整性a) 實現了對輸入到特定列的數值的限制3. 參考完整性a) 要求子表中的相關項目必須在主表中存在b) 如果建立了主表和子表的關係,則: i. 子表中的相關項目的資料,在主表中必須存在; ii. 主表中相關項目的資料更改了,則子表對應的資料項目也應當隨之 iii. 更改; iv. 在刪除子表之前,不能夠刪除主表;4. 自訂完整性 實際上,SQL Server建立表的過程是規定資料列的屬性的過程,同時也是實施資料完整性(包括實體完整性、參考完整性和值域完整性等)保證的過程。建立表包括選擇欄位名稱、資料類型、定義是否為空白、設定預設值、主鍵和外鍵關係、檢查約束等。表中沒有合適的列作為主鍵,可以建立識別欄位。 SQL Server中存在五種約束:• 約束的目的:確保表中資料的完整型• 常用的約束類型:– 主鍵約束(Primary Key Constraint):要求主鍵列資料唯一,並且不允許為空白– 唯一約束(Unique Constraint):要求該列唯一,允許為空白,但只能出現一個空值。– 檢查約束(Check Constraint):某列取值範圍限制、格式限制等,如有關年齡的約束– 預設約束(Default Constraint):某列的預設值,如我們的男性學員較多,性別預設為“男”– 外鍵約束(Foreign Key Constraint):用於兩表間建立關係,需要指定引用主表的那列 添加約束的文法:ALTER TABLE 表名 ADD CONSTRAINT 約束名 約束類型 具體的約束說明q 約束名的取名規則推薦採用:約束類型_限制欄位q 主鍵(Primary Key)約束:如 PK_stuNoq 唯一(Unique Key)約束:如 UQ_stuIDq 預設(Default Key)約束:如 DF_stuAddressq 檢查(Check Key)約束:如 CK_stuAgeq 外鍵(Foreign Key)約束:如 FK_stuNo 下面我們來給前面建立的學員資訊表stuInfo添加約束: /*添加主鍵約束(stuNo作為主鍵)*/ALTER TABLE stuInfo ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)/*添加唯一約束(因為每人的社會安全號碼全國唯一)*/ALTER TABLE stuInfo ADD CONSTRAINT UQ_stuID UNIQUE (stuID)/*添加預設約束(如果地址不填,預設為“地址不詳”)*/ALTER TABLE stuInfo ADD CONSTRAINT DF_stuAddress DEFAULT (‘地址不詳‘) FOR stuAddress/*添加檢查check約束,要求年齡只能在15-40歲之間*/ALTER TABLE stuInfo ADD CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40)/*添加外鍵約束(主表stuInfo和從表stuMarks建立關係,關聯欄位為stuNo)*/ALTER TABLE stuMarks ADD CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo)GO 如果錯誤地添加了約束,我們還可以刪除約束刪除約束的文法ALTER TABLE 表名 DROP CONSTRAINT 約束名例如:刪除stuInfo表中地址預設約束ALTER TABLE stuInfo DROP CONSTRAINT DF_stuAddress OK,有了完整性條件約束,資料完整性就有了保障,資料庫中的資料也就能夠正確地反應實際情況了。那我們上面又提到了一個主從表的概念,有人可能不太明白,下面文章我們再來介紹一下。
SQL Server資料完整性