張卉
摘要:sql server 2012能夠方便的幫助用戶實(shí)現(xiàn)數(shù)據(jù)的管理功能,保障了數(shù)據(jù)庫中數(shù)據(jù)的有效性、正確性和相容性,提供給用戶多種技術(shù)實(shí)現(xiàn)數(shù)據(jù)的完整性。比如約束、規(guī)則、外鍵和觸發(fā)器。約束其實(shí)是通過對規(guī)則的完整性來實(shí)現(xiàn)數(shù)據(jù)的完整性目標(biāo),本文結(jié)合具體應(yīng)用場景,主要對約束這一技術(shù)進(jìn)行介紹。
關(guān)鍵詞:SQL Server 2012;數(shù)據(jù)庫;設(shè)計(jì)與應(yīng)用
中圖分類號:TP273 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2018)12-0128-01
Microsoft SQL Server 2012是微軟發(fā)布的新一代數(shù)據(jù)平臺產(chǎn)品,能夠快速構(gòu)建相應(yīng)的解決方案實(shí)現(xiàn)私有云與公有云之間數(shù)據(jù)的擴(kuò)展與應(yīng)用的遷移。但是如果對數(shù)據(jù)庫不進(jìn)行約束就有可能導(dǎo)致數(shù)據(jù)的不規(guī)范,影響用戶的正常使用。因此必須在建立數(shù)據(jù)庫表的同時(shí)做好數(shù)據(jù)的完整性。約束就是一種普遍采用的數(shù)據(jù)庫管理技術(shù),能夠?qū)崿F(xiàn)數(shù)據(jù)的有效性、正確性和相容性。
1 實(shí)體完整性
要達(dá)到實(shí)體的完整性就必須在創(chuàng)建表的時(shí)候賦予主鍵字段值,并且值不能重復(fù)。可以通過對主鍵和唯一鍵進(jìn)行約束實(shí)現(xiàn)。
1.1 主鍵約束
對主鍵約束在設(shè)置約束列時(shí)不能賦予重復(fù)值,可以在創(chuàng)建表的時(shí)候?qū)α性O(shè)置主鍵。比如用PRIMARY KEY約束如下:
ALTER TABLE dbo.Blogs
ADD CONSTRAINT pk_constraint_blogId PRIMARY KEY(BlogId)
在鍵文件夾中則生成對列BlogId的約束即升級為主鍵。
1.2 唯一鍵約束
和對主鍵進(jìn)行約束功能一樣,對唯一鍵進(jìn)行約束就可以實(shí)現(xiàn)數(shù)據(jù)的唯一性。但是唯一鍵約束允許用戶設(shè)置多個唯一鍵,同時(shí)可以在列中設(shè)置一個空值。
在創(chuàng)建表的時(shí)候用戶會對主鍵列進(jìn)行設(shè)置,但是在一張表中只能設(shè)置一個主鍵約束,所以如果需要對某一字段的賦值進(jìn)行唯一性設(shè)置,就可以選擇唯一鍵約束。比如在用戶信息表中,用戶ID作為主鍵,但是身份證號碼、手機(jī)號碼等也具有唯一性,此時(shí)就可以通過唯一鍵約束實(shí)現(xiàn)賦值要求。
2 域完整性
關(guān)系數(shù)據(jù)庫的完整性主要通過域來進(jìn)行約束,針對的是具有特殊屬性的值,將符合要求的值用一個有限的集合表示。當(dāng)不屬于該集合的值進(jìn)行輸入時(shí)會提示,保證了數(shù)據(jù)庫的完整性。檢查約束(CHECK)、默認(rèn)值約束(DEFAULT)是SQL server主要采用的技術(shù)。
檢查約束可以對若干列的值進(jìn)行符合限制的操作,將數(shù)值限定在規(guī)定的集合內(nèi)。比如,在用戶信息表(userInfo)中,移動電話(userMobile)必須滿足13位數(shù)字且首位不能是0的要求。在不重新進(jìn)行設(shè)置的情況下,數(shù)據(jù)庫中的所有數(shù)據(jù)都受到檢查約束的作用。在某些情況下,可能出現(xiàn)老數(shù)據(jù)和新數(shù)據(jù)分別符合不同的賦值規(guī)則,如果都采用同一規(guī)則進(jìn)行約束就會出現(xiàn)矛盾。比如郵政編碼的儲存,由于世界各國的郵政編碼位數(shù)沒有統(tǒng)一,我國采用的是六位,日本采用的是七位數(shù)字,美國采用的是五位數(shù)字等。在對這樣的數(shù)據(jù)進(jìn)行約束的時(shí)候,可以進(jìn)行with Nocheck設(shè)置,將老數(shù)據(jù)和新數(shù)據(jù)予以區(qū)別。
3 參照完整性
參照完整性的設(shè)置就是為了避免出現(xiàn)上述類似錯誤。通過關(guān)系表之間的相互參照,對存在的實(shí)體進(jìn)行管理操作。通過外鍵(FOREIGN KEY)、級聯(lián)參照等技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫中數(shù)據(jù)的一致性。
3.1 外鍵約束
外鍵(FOREIGN? KEY)約束對表之間的數(shù)據(jù)一致性進(jìn)行了強(qiáng)制要求。在關(guān)系數(shù)據(jù)庫中,由主鍵列和外鍵列定義的父表和子表之間,子表的若干列值必須和父表的若干列保持一致。盡管外鍵約束不允許空值的出現(xiàn),但是如果采用組合外鍵進(jìn)行約束,可以對存在空值的列跳過檢驗(yàn)。在SQL server中采用如下的格式:
Alter Table 表名
Add Constraint 關(guān)系名 FOREIGN KEY (外鍵列) REFERENCES 主鍵表(主鍵列)。
比如上文提到的將某一個用戶數(shù)據(jù)刪除后,外鍵約束可以確保將和該數(shù)據(jù)相關(guān)的其他表中的數(shù)據(jù)刪除,避免因數(shù)據(jù)不一致產(chǎn)生錯誤。通過外鍵約束,將子表(orderinfo)和父表(userinfo)中都存在的userID保持一致。在父表中刪除userID之后,再進(jìn)行userID的賦值將提示“無法更新”。
3.2 級聯(lián)參照完整性約束
為了將外鍵數(shù)據(jù)保持關(guān)聯(lián),SQL server采用了級聯(lián)參照完整性約束。使得父表和子表中的外鍵記錄保持一致,當(dāng)對父表中的數(shù)據(jù)進(jìn)行操作時(shí),子表中的數(shù)據(jù)也相應(yīng)的得到了操作。級聯(lián)參照完整性包括更新和刪除兩種。比如以用戶信息表和訂單信息表為例,userInfo作為父表,orderInfo作為子表。在父表中對userID進(jìn)行更新后,子表中的userID也相應(yīng)進(jìn)行了更新。SQL server中設(shè)置外鍵約束的格式如下:
Alter table orderInfo
Add constraint FK_會員信息_訂單信息FOREIGN KEY (userId) REFERENCES userInfo(userId) ON UPDATE CASCADE。
做完上述設(shè)置之后,在父表中對userID進(jìn)行修改,可以發(fā)現(xiàn)子表中的userID也相應(yīng)的發(fā)生了變化。當(dāng)將ON UPDATE CASCADE更換為ON DELETE后,就可以實(shí)現(xiàn)父表和子表中的同步刪除操作。
綜上所述,約束的使用保障了SQL server中數(shù)據(jù)的完整性,并且比使用規(guī)則、觸發(fā)器、默認(rèn)值等更加靈活便捷。用戶可以根據(jù)具體案例對數(shù)據(jù)庫進(jìn)行約束設(shè)置,實(shí)現(xiàn)數(shù)據(jù)的準(zhǔn)確和安全,從而滿足特定的商業(yè)規(guī)則。
參考文獻(xiàn)
[1]王哲.數(shù)據(jù)庫中完整性約束的教學(xué)方法探究[J].中國科教創(chuàng)新 刊,2013(35):164-166.
[2]陳潔,薛恒威.SQL Server數(shù)據(jù)庫中數(shù)據(jù)完整性的分析與實(shí)踐[J].河北軟件職業(yè)技術(shù)學(xué)院學(xué)報(bào),2018(1):4-6.
[3]王紅,陳功平.數(shù)據(jù)完整性機(jī)制的研究與實(shí)現(xiàn)[J].佛山科學(xué)技術(shù)學(xué)院學(xué)報(bào),2015(1):81-87.
Design and Application of Database Constraints Based on SQL Server 2012
ZHANG Hui1,2
(1. Suzhou Higher Vocational and Technical School, Suzhou Jiangsu? 215009;
2.Suzhou Branch of Jiangsu Union Vocational and Technical College,Suzhou Jiangsu? 215009)
Abstract:SQL Server 2012 can easily help users to achieve data management functions, and ensure the validity, correctness and compatibility of data in the database, it provides users with a variety of technologies to achieve data integrity. For example, constraints, rules, foreign keys and triggers. Constraints are actually to achieve the goal of data integrity through the integrity of rules. This paper mainly introduces the technology of constraints combined with specific application scenarios.
Key words:SQL Server 2012; database; design and application