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。“約束”的定義可在創建表或更改表同時進行。

(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.通過“規則”實施數據的完整性

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

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

主站蜘蛛池模板: 欧美日韩一区二区三区四区在线观看 | 午夜视频在线观看免费网站| 日本a级免费| 国产精品无码AV片在线观看播放| 性喷潮久久久久久久久| 97se亚洲综合在线韩国专区福利| 亚洲综合色婷婷| 精品无码国产一区二区三区AV| 成人小视频网| 欧美高清国产| 思思热精品在线8| 五月婷婷亚洲综合| 91亚洲精品国产自在现线| 99精品在线视频观看| 91在线精品免费免费播放| 国内a级毛片| 久久精品丝袜高跟鞋| 国产麻豆永久视频| 欧美午夜精品| 午夜天堂视频| 亚洲天堂视频在线观看| 日韩欧美网址| 国产无遮挡裸体免费视频| 三上悠亚在线精品二区| jizz国产在线| 日韩av电影一区二区三区四区 | 国产99在线观看| 亚洲黄网视频| 538国产在线| 18禁高潮出水呻吟娇喘蜜芽| 91九色国产porny| 99热这里只有成人精品国产| 国产理论最新国产精品视频| 粉嫩国产白浆在线观看| 91久久精品国产| аv天堂最新中文在线| 国产欧美日韩va| 国产一级在线播放| 毛片网站观看| 成人免费视频一区二区三区| 免费毛片网站在线观看| 欧美不卡视频在线观看| www.99精品视频在线播放| 亚洲欧美一区二区三区麻豆| 国产精品吹潮在线观看中文| 国产一级小视频| 国产欧美日韩在线一区| 九色视频在线免费观看| 99国产在线视频| 中国成人在线视频| 找国产毛片看| 国内精品视频在线| 亚洲视频色图| 亚洲精品第一在线观看视频| 亚洲黄色高清| 午夜视频免费试看| 国产高清免费午夜在线视频| 国产真实乱子伦视频播放| 国产福利在线免费| 成人午夜精品一级毛片| 国产成人午夜福利免费无码r| 天堂网国产| 欧美区日韩区| 日本一区二区三区精品AⅤ| 久久午夜夜伦鲁鲁片无码免费| 精品国产免费第一区二区三区日韩| 一级毛片在线免费看| 久久精品人人做人人爽电影蜜月| 国产精品夜夜嗨视频免费视频| www精品久久| 中文字幕一区二区人妻电影| 国产农村精品一级毛片视频| 毛片在线看网站| 美女扒开下面流白浆在线试听| 国产美女自慰在线观看| 毛片网站在线播放| 曰韩人妻一区二区三区| 一本大道香蕉中文日本不卡高清二区| 国产精品网址你懂的| 第九色区aⅴ天堂久久香| 72种姿势欧美久久久大黄蕉| 国产免费网址|