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

面向SQL Server 2012的數據庫約束的設計與應用

2018-01-17 09:09:38陳瀟
軟件工程 2018年12期

陳瀟

摘 要:在SQL Server 2012中,當管理員完成數據庫及表的建立后,后期對表中數據進行插入、修改、刪除等操作時由于操作不當,很可能會導致不符合規范的數據進入數據庫。為避免這種情況發生,數據庫表建立完畢后應通過數據完整性來保證存儲的數據正確、有效、相容。約束是實現數據完整性的有效手段之一,本文介紹不同類型數據完整性的含義及實現手段,并結合具體的應用場景創建相關約束。

關鍵詞:SQL Server;約束;數據完整性

中圖分類號:TP392 文獻標識碼:A

Abstract:In SQL Server 2012,after the database and the tables are set up,some abnormal data may enter the database caused by administrators' improper operations of inserting,modifying,deleting,etc.In order to avoid this situation,data integrity should be used to ensure the correctness,validness and compatibility of the stored data after setting up the database and the tables.Constraint is one of the effective means to achieve data integrity.This article describes the meaning and implementation of different types of data integrity,and creates related constraints in combination with specific application scenarios.

Keywords:SQL Server 2012;constraint;data integrity

1 引言(Introduction)

當管理員完成數據庫及表的建立后,后期對數據進行插入、修改、刪除等作時由于操作不當,很可能會導致止不符合規范的數據進入數據庫。為了保證存儲數據的正確,SQL Server中提出了數據完整性這一概念,是指數據庫中存儲數據的正確、有效和相容[1]。

SQL Server 2012中的數據完整性可以分為:實體完整性、域完整性和參照完整性和用戶自定義完整性。數據庫采用多種方法來保證數據完整性,包括外鍵、約束、規則和觸發器,本文探討使用約束作為手段實現數據完整性。

約束是實現數據完整性的有效手段,是一組完整性規則的集合。約束包括主鍵(PRIMARY KEY)約束、唯一鍵(UNIQUE)約束、檢查(CHECK)約束、默認值(DEFAULT)約束、外鍵約束和級聯參照完整性約束。

2 實體完整性(Entity integrity)

實體完整性要求每一個表中的主鍵字段都不能為空或者重復的值。主要通過對表設置主鍵約束、唯一鍵約束來實現[2]。

2.1 主鍵約束

主鍵約束要求設置約束列不允許出現重復值,一般在設計表時通過對列設置主鍵來實現。使用T-SQL語句建立主鍵的格式如下:

Alter Table 表名

Add Constraint 約束名 Primary Key(列名)

比如:設置表UserInfo的UserId列為主鍵約束。

Alter Table UserInfo

Add Constraint IX_UserInfo Primary Key(UserId)

2.2 唯一鍵約束

與主鍵約束一樣,唯一鍵約束也可以保證列中數據的唯一性。與主鍵約束不同的是唯一鍵約束可以有多個,并且設置唯一鍵約束的列中可以有空值,但只能有一個空值(NULL)。

使用T-SQL語句建立唯一鍵約束的格式如下:

Alter Table 表名

Add Constraint 約束名 UNIQUE(列名)

數據庫管理員在建立數據表時一般會指定主鍵列,一張表只能存在一個主鍵約束。因此如果要求表中某一字段的取值不能出現重復值,則可以通過唯一鍵約束來實現。如用戶信息表中,已將‘用戶Id字段設置為主鍵,為了保證數據的唯一性,可以將‘電話號碼‘身份證號碼等要求唯一取值的字段設置為唯一鍵約束。

比如,將會員信息表(userInfo)的用戶移動電話(userMobile)列設置為唯一鍵約束。

Alter table userInfo

Add Constraint IX_userMobile UNIQUE(userMobile)

設置唯一鍵約束后,向‘userMobile列中輸入重復的電話號碼,提示如圖1所示的錯誤。

3 域完整性(Domain integrity)

域完整性是針對關系數據庫的約束條件,域完整性限制了某些屬性中出現的值,把屬性限制在一個有限的集合中,它保證表字段中不能輸入無效的值,即輸入值的范圍只能在規定的集合內[3]。在SQL Server中實現域完整性主要通過檢查約束(CHECK)實現和默認值約束(DEFAULT)。

檢查約束通過限制可輸入或修改的一列或多列的值來強制實現域完整性[4],它作用于插入(INSERT)和修改(UPDATE)語句,語法格式如下。

Alter Table 表名

Add Constraint 約束名 CHECK (檢查表達式)

例如:將會員信息表(userInfo)的用戶移動電話(userMobile)列限制為13位數字,且首位數字不能為‘0。

Alter Table userInfo

Add Constraint CK_mobileCHECK (userMobile like‘[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])

在默認情況下,檢查(CHECK)約束同時作用于新數據和表中已有的老數據,有些情況下,表字段中現有的記錄與必須遵從的特定業務相沖突,但取值沒有錯誤,例如,過去可能要求郵政編碼必須是五位數字,但現在卻需要新數據為九位郵政編碼。包含五位郵政編碼的舊數據將與包含九位郵政編碼的新數據共存。可以在通過關鍵字WITH NOCHECK禁止檢查表中已有的數據。語法格式如下:

Alter Table 表名

Withnocheck Add Constraint 約束名 CHECK (檢查表達式)

4 參照完整性(Referential integrity)

在關系數據庫中,表之間是通過主鍵和外鍵存在聯系的,兩張具有聯系的表分為父表(主鍵列所在表)和子表(外鍵列所在表)。在數據表具體操作中經常遇到以下情況,當我們對表中的數據進行插入、修改和刪除時,很容易出現父表、子表中相關記錄不匹配的現象[5]。

比如,將會員信息表(userInfo)中的用戶姓名(userName)進行更改,如果與之相關的表中的用戶姓名不做更改,則會出現記錄不匹配的現象。再比如,如果在會員信息表(userInfo)中將一個會員刪除,那么與之相關的表,如訂單信息表(orderInfo)中該用戶的相關記錄應該一起刪除。

參照完整性的目的是為了保證數據庫相關表之間記錄的一致性,涉及關系(表)之間的相互引用。要求關系中不允許引用不存在的實體,當插入、更新、刪除表中的記錄時,通過參照引用相互關聯的另一個表中的相應記錄,來檢查對表的操作是否符合要求。主要通過外鍵(FOREIGN KEY)約束和級聯參照完整性約束來實現。

4.1 外鍵約束

外鍵(FOREIGN KEY)約束是為了強制實現表之間的參照完整性。定義了一個關系數據庫中,不同的表中列之間的關系(父鍵與外鍵)。要求一個表中(子表)的一列或一組列的值必須與另一個表(父表)中的相關一列或一組列的值相匹配[6]。外鍵約束不允許為空值,但是,如果組合外鍵的某列含有空值,則將跳過該外鍵約束的檢驗,格式如下。

Alter Table 表名

Add Constraint 關系名 FOREIGN KEY (外鍵列) REFERENCES 主鍵表(主鍵列)

比如,設置用戶信息表‘userinfo中的用戶編號列‘userid與訂單信息表‘orderInfo的用戶編號列‘userid列設置外鍵約束。語句格式如下:

Alter Table orderInfo

Add Constraint FK_FOREIGN FOREIGN KEY (userid) references userinfo(userid)

為兩表之間設置外鍵約束后,要求子表(orderinfo)中的‘userid列的取值必須與父表(userinfo)表中的‘userid列的取值匹配。如不匹配,比如輸入一個主表中沒有的數據(如:userId為16),則數據輸入完畢后提示無法更新,如圖2所示。

4.2 級聯參照完整性約束

級聯參照完整性約束是為了保證外鍵數據的關聯性。當在父表中更新或刪除外鍵引用的鍵記錄時,則同時在子表中更新或刪除引用它的外鍵記錄,為了防止孤立外鍵的產生[7]。使用語句設置外鍵約束的格式如下。級聯參照完整性分為更新級聯約束和刪除級聯約束兩種。語法格式如下:

Alter Table 表名

Add Constraint 關系名 FOREIGN KEY (外鍵列) REFERENCES 引用表名(引用列) ON DELETE|UPDATE CASCADE

其中,ON DELETE CASCADE和ON UPDATE CASCADE分別表示帶更新級聯的外檢約束和帶刪除級聯的外鍵約束。

例如,設置會員信息表‘usrInfo和訂單信息表‘orderInfo之間的關系,實現當父表(usrInfo)中的列‘userId更新數據時,子表(orderInfo)中相關列(userId)能一起更新。

Alter table orderInfo

Add constraint FK_會員信息_訂單信息FOREIGN KEY (userId) REFERENCES userInfo(userId) ON UPDATE CASCADE

約束設置完畢后,更新父表中的主鍵列數據(如將userid為‘3的記錄更改為‘103),則子表中相關列隨之一起更改。如圖3和圖4所示。

同理,使用ON DELETTE CASCADE子句可以實現父表中刪除記錄后,子表相關記錄會隨之刪除。

5 結論(Conclusion)

SQLServer中約束定義關于列中允許值的規則,是強制完整性的標準機制。使用約束優先于使用觸發器、規則和默認值[8]。數據庫管理者可根據數據完整性的不同級別合理使用約束,避免數據庫中出現無效數據,從而實現數據存儲的合理性和正確性。

參考文獻(References)

[1] 潘林森,姚渝春.SQL Server數據庫系統中的數據完整性控制方法[J].重慶師范大學學報(自然科學版),2004(02):35-38.

[2] 赫然,王秀坤,王軼謳,等.分布式數據庫中海量數據采集完整性約束[J].大連理工大學學報,2013(S1):190-192.

[3] 趙潔.信息系統開發中的數據庫完整性維護技術[J].信息技術,2013(07):137-139.

[4] 陳潔,薛恒威.SQL Server數據庫中數據完整性的分析與實踐[J].河北軟件職業技術學院學報,2018(01):4-6.

[5] 陳增祥.SQL Server數據庫數據完整性的研究與分析[J].信息安全與技術,2012(01):32-34.

[6] 王洪香.基于SQL Server數據庫完整性約束的幾點探討[J].辦公自動化,2006(15):25-27.

[7] 任靖.淺析數據庫觸發器和約束之優先級及兼容性[J].電子制作,2013(3):62.

[8] 王哲.數據庫中完整性約束的教學方法探究[J].中國科教創新刊,2013(35):164-166.

作者簡介:

陳 瀟(1983-),男,碩士,講師.研究領域:數據庫管理與應用,管理信息系統開發.

主站蜘蛛池模板: 日韩成人在线网站| 国产综合网站| 亚洲日韩精品伊甸| 三上悠亚一区二区| 五月婷婷欧美| 亚洲三级片在线看| 免费一极毛片| 91极品美女高潮叫床在线观看| 国产精品成人免费视频99| 日韩视频精品在线| 国产高清免费午夜在线视频| 99这里只有精品免费视频| 国产网站黄| 亚洲国产成人久久77| 国产精品久久久久久影院| 亚洲AⅤ永久无码精品毛片| 青青久久91| 国内精品一区二区在线观看| 久久天天躁狠狠躁夜夜躁| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 国产精品香蕉在线| 野花国产精品入口| 97青青青国产在线播放| 好吊妞欧美视频免费| 国产综合日韩另类一区二区| 亚洲综合九九| 99在线观看免费视频| 亚洲视频在线观看免费视频| 少妇人妻无码首页| 久久公开视频| 国产女人18水真多毛片18精品| 国产在线精品99一区不卡| 91麻豆精品国产高清在线| 国产91丝袜| 欧洲在线免费视频| 亚洲av日韩综合一区尤物| 华人在线亚洲欧美精品| 国产激情第一页| 国产欧美日韩精品第二区| 午夜国产理论| 亚洲中文在线视频| 夜夜操天天摸| 国产剧情伊人| 亚洲国产一区在线观看| 亚洲欧美不卡| 欧美日韩亚洲综合在线观看| 国产精品自拍合集| 国产精品第5页| 欧美亚洲欧美区| 在线日韩一区二区| 91精品福利自产拍在线观看| 中字无码av在线电影| 国产网站免费| 久久这里只有精品2| 91九色最新地址| 永久免费AⅤ无码网站在线观看| 2022国产无码在线| 91欧美亚洲国产五月天| 秘书高跟黑色丝袜国产91在线| 亚洲精品第五页| 99福利视频导航| 亚洲制服丝袜第一页| 97国产一区二区精品久久呦| 巨熟乳波霸若妻中文观看免费| 天堂va亚洲va欧美va国产| 97国产在线视频| 国产欧美专区在线观看| 欧美a级在线| 久久婷婷五月综合色一区二区| 亚洲AV无码久久天堂| 九色在线观看视频| 欧美中出一区二区| 国产一在线| 久久青草免费91线频观看不卡| 谁有在线观看日韩亚洲最新视频| 日a本亚洲中文在线观看| 国产激爽爽爽大片在线观看| 欧美一区二区丝袜高跟鞋| 亚洲人成电影在线播放| 久久精品国产精品青草app| 色天天综合久久久久综合片| 538国产在线|