999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SQL Server 2000數據庫中數據完整性解決方案

2008-04-12 00:00:00徐也可
職業時空 2008年12期

摘要:保證數據庫中數據的完整性,在數據庫應用中是十分重要的,它是衡量數據庫中數據質量的重要標志。在SQLServer 2000中,可以通過“約束”、“規則”、“默認”、“觸發器”、“存儲過程”等來達到保證數據完整性的目的。

關鍵詞:數據庫;SQL Server 2000,數據完整性;約束;規則;默認;觸發器;存儲過程。

“數據完整性”是SQL Server數據庫的重要特點之一,它通過在數據庫端使用特定的規定來管理數據的輸入與輸出,而不是由應用程序本身來控制,這就使得數據獨立于應用程序成為開放的數據庫系統。

“數據完整性”是指存放在數據庫中數據的一致性和準確性,也就是對數據庫表中的數據進行限制,以防止數據庫中存在不符合語義規定的數據或與事實相矛盾的數據。如一張<學生信息表>中“學號”字段中數據應該保持惟一性,既不允許有相同的學號出現,同時也不允許為空值;“性別”字段中數據必須限制為‘男’或‘女’兩個值,而不應該允許其他字符存在。在<學生成績表>中“學號”字段中數據應該是<學生信息表>中“學號”字段中已有的數據,如<學生信息表>“學號”字段中沒有該學號,則說明該生不存在,在<學生成績表>“學號”字段中出現就與事實相矛盾。

保證數據庫中數據的完整性,在數據庫應用中是十分重要的,它是衡量數據庫中數據質量的重要標志。

在SQL Server 2000中,可以通過“約束”、“規則”、“默認”、“觸發器”、“存儲過程”等來達到保證數據完整性的目的。

一、數據完整性分類

根據數據完整性措施所作用的數據庫對象和范圍的不同,數據完整性可以分為4種類型:實體完整性(Entity Integrity)、域完整性(Domain Integrity)、參照完整性(Referential Integrity)、用戶定義的完整性(user-defined Integrity)。

1.實體完整性。實體完整性也稱為行完整性,是規定表中的每一行數據在表中保證惟一且非空值,即數據庫中所有的行都具有一個非空且沒有重復的標識字段,這樣就確保數據庫中所代表的任何實體均不存在重復的條目。實現實體完整性可以通過建立“惟一索引”、“DRIMARY KEY約束”、“UNIQUE約束”以及列的“IDENTITY屬性”等措施來實施。

2.域完整性。域完整性也稱為列完整性,用于限制用戶向表中某列輸入非法或與事實不符的內容。實現域完整性可以通過“DEFAULT約束”、“DEFAULT默認”、“CHECK約束”、“FOREIGN約束”、“RULE規則”、數據類型、“NOT NULL約束”等實施。

3.參照完整性。參照完整性也稱為引用完整型,用于一張表中某列的數據只能引用另一張表中關鍵字段中的數據。保證表之間的數據一致性,防止沒有意義的數據出現。實現參照完整性可以通過“FOREIGN KEY約束”、“CKECK約束”、“觸發器TRIGGER”、“存儲過程PROCEDURE”等實施。

4.用戶定義的完整性。用戶定義的完整性是用戶根據特殊要求自定義的規則或格式。實現用戶定義的完整性可以通過“DEFAULT默認”、“CHECK約束”、“RULE規則”等實施。

數據完整性也可以按照其作用范圍來分為3種類型:

一是列對象級。是在定義表的同時定義的,作用范圍是數據庫的某個表的某列,完全依賴表及所在列存在,刪除表或該列則失去作用,可以通過“約束”來實施。

二、表對象級。是在定義表的同時定義的,作用范圍是數據庫的某個表對象,完全依賴表存在,刪除表則失去作用,可以通過“約束”來實施。

三是庫對象級。是作為數據庫的對象單獨定義的,因此單獨存在于數據庫中,作用范圍是整個數據庫的任何表,需要時可以綁定到數據庫的任何表或用戶定義的數據類型中,可以通過“默認”、“規則”等獨立對象來實施。

二、數據完整性實施步驟

1.通過“約束”實施數據的完整性

通過“約束”可實施列對象級和表對象級的數據完整性。SQL Server支持的“約束”有如下幾種:非空約束NOT NULL,主鍵約束PRIMARY KEY、惟一約束UNIQUE、核查約束CHECK、外鍵約束FOREIGN KEY、默認值約束DEFAULT?!凹s束”的定義可在創建表或更改表同時進行。

(1) 創建表時定義“約束”

舉例1:CREATE TABLE學生信息表

(學號 char(6)PRIMARY KEY,

姓名 char(8)NOT NULL。

性別 char(2)CHECK c性別=‘男’OR 性別=‘女’)

)

/*以上定義的全為列對象級數據完整性,定義“學號”列為主鍵,“姓名”列為非空值,“性別”列通過檢驗CHECK (性別=‘男’OR 性別=‘女’)保證“性別”字段值為‘男’或‘女’。*/

CREATE TABLE課程表

(課程名char (20)PRIMARY KEY,

課程性質char(4),

CONSTRAINT kcxz_id CHECK(課程性質=‘考試’or 課程性質=‘考查’)

)

/*以上定義的“約束”CONSTRAINT kcxz_id CHECK (課程性質=‘考試’or 課程性質=‘考查’)為表對象級數據完整性*/

CREATE TABLE 學生成績表

(學號 char(6),

課程名 char(20),

成績 int,

補考成績int,

CONSTRAINT xh_kcm_ID PRIMARY KEY(學號,課程名),

CONSTRAINT xh_id FOREIGN KEY(學號)REFERENCES學生信息表(學號),

CONSTRAINT kcm_id FOREIGN KEY(課程名)REFERENCES課程表(課程名)

)

/*以上三個“約束”全為表對象級約束,約束CONSTIAINTxh_kcm_ID PRIMARY KEY (學號,課程名)保證“學號+課程名”非空且惟一,約束CONSTRAINT xh_id FORElGN KEY(學號)REFERENCES學生信息表(學號)、CONSTRAINT kcm_idFOREIGN KEY(課程名)REFERENCES課程表(課程名)保證該表中的“學號”和“課程名”字段值只能取<學生信息表>中已存在的“學號”值和<課程表>中已存在的“課程名”值。*/

(2) 更改表時定義“約束”

舉例2:ALTER TABLE 學生成績表

ADD

CONSTRAINT ci_id CHECK (成績>=0 and 成績<=100)

/*以上通過修改<學生成績表>添加表對象級約束CON-STRAINT cj_id CHECK(成績>=0 and 成績<=100)使學生成績必須在某個范圍內。*/

2.通過“規則”實施數據的完整性

“規則”的作用類似于“檢查約束”,若將一個“規則”綁定到指定列上,則可以檢查該列的數據是否符合“規則”的要求?!耙巹t”與“檢查約束”的主要區別在于一列只能綁定一個“規則”,但卻可以設置多個“檢查約束”。“規則”的優點是僅創建一次就可以綁定到數據庫的多個表的列上,使同一個數據庫中所有表的不同列共享?!耙巹t”還可以綁定到同一數據庫中一個以上的用戶定義的數據類型上。使用“規則”的過程依次為:創建規則——綁定規則——解除綁定——刪除規則。

舉例3:CREATE RULE rule_cj

AS @成績>=0 and @成績<=100 /*創建名為“rule_cj'’的“規則”*/

GO

sp_bindrule rule_cj,‘學生成績表.成績’

/*將“規則rule_cj”綁定到<學生成績表>的“成績”字段*/

sp_bindrule rule_cj,‘學生成績表.補考成績’

/*將“規則rule_cj”綁定到<學生成績表>的“補考成績”字段*/

3.通過“默認”實施數據的完整性

與“規則”類似,“默認值”對象(簡稱為“默認”)也是僅創建一次就可以綁定到數據庫的多個表的列或用戶定義的數據類型中,使它們共享“默認”。使用“默認”的過程與使用“規則”的過程類似,依次為:創建默認——綁定默認——解除綁——刪除默認。

4.通過“觸發器”實施數據的完整性

“觸發器”與“約束”類似的是它與表也是緊密聯系的,離開了表它將不復存在。但“觸發器”又不像“存儲過程”那樣需要調用才能執行,而是在對表中數據進行增、刪、改(INSERT、DELETE、UPDATE)操作時被觸發而執行。

舉例4:CREATE TRIGGER trigger_xh

ON 學生成績表

AFTER INSERT

AS

IF(SELECT CONUT(*)FROM學生信息表,INSERTED

WHERE學生信息表學號=INSERTED.學號)=0

BEGIN

PRINT‘學號不存在’

ROLLBACK TRAN

END

/*在<學生成績表>上創建一個名為“triggeL_xh”的“觸發器”,當向該表中插入一條記錄時,檢查該學生的學號是否在<學生信息表>中已經存在,如果存在,則插入;否則,打印‘學號不存在’,并回滾事務,使插入數據無效。*/

5.通過“存儲過程”實施數據的完整性

“存儲過程”與“觸發器”都是SQL Server中的數據庫對象,所不同的是“存儲過程”是由用戶根據需要調用執行的。另外,“存儲過程”可以不依附表而單獨存在。“存儲過程”也可用于數據完整性的實施,提供級聯和復雜的應用程序功能,一般只能是事務之后執行,在此不再舉例說明。

主站蜘蛛池模板: 色老头综合网| 中文字幕伦视频| 成年片色大黄全免费网站久久| 国产高清在线精品一区二区三区 | 人妻一区二区三区无码精品一区| 永久毛片在线播| 91青青在线视频| 国产91小视频在线观看| 99视频在线免费| 国产成人一区| 91免费国产在线观看尤物| 久久综合丝袜日本网| 一级一级一片免费| 欧美精品在线看| 精品一区二区无码av| 午夜人性色福利无码视频在线观看| 污网站在线观看视频| 国产精品自在线拍国产电影| 中国丰满人妻无码束缚啪啪| 无码日韩视频| 国产精品手机在线观看你懂的| 欧美日本激情| 中文字幕1区2区| 婷婷亚洲天堂| 亚洲天堂日韩在线| 国产av一码二码三码无码| 日韩国产黄色网站| 国产精品专区第一页在线观看| 国产成人一区免费观看| 91在线无码精品秘九色APP| 国产亚洲精品资源在线26u| a网站在线观看| 666精品国产精品亚洲| 农村乱人伦一区二区| 午夜啪啪福利| 亚洲最大福利网站| 视频一区视频二区中文精品| 毛片手机在线看| 亚洲丝袜中文字幕| 久久综合结合久久狠狠狠97色 | 看国产一级毛片| 中文字幕第4页| 在线毛片网站| 国产欧美日韩另类精彩视频| 日韩免费毛片| 国产亚洲欧美另类一区二区| 国内99精品激情视频精品| 永久免费无码日韩视频| 无码免费视频| 中日无码在线观看| 成人精品在线观看| 国产精品无码久久久久久| 999国产精品永久免费视频精品久久 | 国产精品福利导航| 99久久婷婷国产综合精| 免费一看一级毛片| 婷婷五月在线| 久久久久九九精品影院| 性激烈欧美三级在线播放| 婷婷丁香色| 九九视频在线免费观看| 久久99久久无码毛片一区二区| www.狠狠| 亚洲AV电影不卡在线观看| 亚洲中文字幕在线精品一区| 毛片基地美国正在播放亚洲 | 日韩av在线直播| 国产乱视频网站| 潮喷在线无码白浆| 色婷婷久久| 狠狠色狠狠色综合久久第一次| 国产女人18水真多毛片18精品| 日本亚洲最大的色成网站www| 熟女视频91| 欧美精品一二三区| 1769国产精品免费视频| 99999久久久久久亚洲| 成人免费一级片| 九九视频在线免费观看| 久久精品人人做人人爽| 日本精品中文字幕在线不卡| 亚洲视频一区|