• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      淺談SQL Server數(shù)據(jù)庫(kù)中數(shù)據(jù)完整性的應(yīng)用

      2021-10-25 13:24:08孫楓
      關(guān)鍵詞:約束

      摘要:在數(shù)據(jù)庫(kù)廣泛應(yīng)用的當(dāng)下,保證數(shù)據(jù)的準(zhǔn)確性和有效性顯得尤為重要。文章基于SQL Server數(shù)據(jù)庫(kù),分析了其數(shù)據(jù)完整性的概念及分類(lèi),通過(guò)典型例子幫助用戶了解相關(guān)方法的使用。

      關(guān)鍵詞:SQL Server;數(shù)據(jù)完整性;約束

      引言

      在信息技術(shù)迅速發(fā)展的今天,數(shù)據(jù)庫(kù)應(yīng)用越來(lái)越廣泛。如網(wǎng)站、醫(yī)療、交通、高校、政府、企業(yè)等無(wú)一不每天在利用數(shù)據(jù)庫(kù)存儲(chǔ)與管理著大量的數(shù)據(jù)。而往往在數(shù)據(jù)錄入時(shí),會(huì)因種種原因經(jīng)常會(huì)出現(xiàn)重復(fù)、無(wú)效、錯(cuò)誤等信息。在眾多后臺(tái)數(shù)據(jù)庫(kù)管理系統(tǒng)中,因SQL Server有著功能強(qiáng)大、操作簡(jiǎn)便等特點(diǎn),受到了廣大數(shù)據(jù)庫(kù)用戶喜愛(ài),文章基于SQL Server數(shù)據(jù)庫(kù)介紹數(shù)據(jù)完整性機(jī)制以及相關(guān)應(yīng)用[1]。

      1數(shù)據(jù)完整性的概念和分類(lèi)

      數(shù)據(jù)完整性是指存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)的一致性和準(zhǔn)確性[2]。它是應(yīng)用防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義規(guī)定的數(shù)據(jù)和防止因錯(cuò)誤信息的輸入輸出造成無(wú)效操作或錯(cuò)誤信息而提出的。數(shù)據(jù)完整性分為四類(lèi):實(shí)體完整性、域完整性、參照完整性和用戶自定義完整性。其定義分別為:

      實(shí)體完整性:是指保證表中所有的行唯一。實(shí)體完整性要求表中的所有行都要有一個(gè)唯一的標(biāo)識(shí)符,即通過(guò)設(shè)置“主鍵”來(lái)實(shí)現(xiàn)。數(shù)據(jù)庫(kù)中的“主鍵”字段則是不能輸入重復(fù)值或空值,所謂“空值”其實(shí)就是“沒(méi)有”或“無(wú)意義”的值。反言之,如果主屬性取了空值,則無(wú)法進(jìn)行唯一標(biāo)識(shí),這與現(xiàn)實(shí)世界的應(yīng)用環(huán)境相矛盾。

      域完整性:是指一個(gè)列的輸入有效性。域完整性主要用于保證給定字段數(shù)據(jù)的輸入有效性,強(qiáng)制域完整性的方法有:限制類(lèi)型、格式或可能值的范圍。如限制學(xué)生成績(jī)必須在0~100之間,性別只能是“男”或“女”等。

      參照完整性:是指保證主關(guān)鍵字和外部關(guān)鍵字之間的參照關(guān)系。參照完整性又稱(chēng)引用完整性,利用“外鍵”來(lái)確保相關(guān)聯(lián)的表(兩個(gè)或兩個(gè)以上表)間數(shù)據(jù)的一致性。當(dāng)添加、刪除和修改記錄時(shí),參照完整性可以保證表之間已定義的關(guān)系,確保鍵值在所有表中一致。如向“學(xué)生成績(jī)表”中添加某個(gè)學(xué)生成績(jī)時(shí)必須確保所有添加成績(jī)的學(xué)生必須在“學(xué)生表”中是存在的,否則不允許添加。

      用戶自定義完整性:是指根據(jù)應(yīng)用環(huán)境的要求和實(shí)際的需要,對(duì)某一具體應(yīng)用所涉及的數(shù)據(jù)提出約束性條件。這一約束機(jī)制一般不應(yīng)由應(yīng)用程序提供,而應(yīng)有由關(guān)系模型提供定義并檢驗(yàn),用戶定義完整性主要包括字段有效性約束和記錄有效性。

      2數(shù)據(jù)完整性的應(yīng)用

      為了確保數(shù)據(jù)的完整與有效性,防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義規(guī)定的數(shù)據(jù),防止因錯(cuò)誤信息的輸入、輸出而造成無(wú)效的操作或錯(cuò)誤信息,SQL Servr提供了4種手段來(lái)實(shí)現(xiàn)數(shù)據(jù)完整性,即缺省值、規(guī)則、約束和觸發(fā)器等[3]。

      2.1通過(guò)缺省值實(shí)現(xiàn)數(shù)據(jù)完整性

      缺省值即默認(rèn)值,是為列提供數(shù)據(jù)的一種方式,如果用戶在進(jìn)行插入操作時(shí)不為列輸入任務(wù)數(shù)據(jù),則使用缺省值自動(dòng)輸入??衫帽碓O(shè)計(jì)器創(chuàng)建表時(shí)指定默認(rèn)值,也可在使用Create Table語(yǔ)句中的Default子句指定默認(rèn)值。

      SQL語(yǔ)句中利用默認(rèn)值實(shí)現(xiàn)數(shù)據(jù)完整性應(yīng)用例子如下:

      Create Table Teacher???--創(chuàng)建教師表

      (t_id?char(10),

      t_name varchar(10),

      t_professor varchar(10) default(“助教”))--職稱(chēng)字段默認(rèn)值為助教

      2.2通過(guò)規(guī)則實(shí)現(xiàn)數(shù)據(jù)完整性

      規(guī)則是用以限制存儲(chǔ)在表中或用戶自定義數(shù)據(jù)類(lèi)型的值,是獨(dú)立的數(shù)據(jù)庫(kù)對(duì)象,只有將規(guī)則綁定到列或用戶自定義數(shù)據(jù)類(lèi)型時(shí),規(guī)則才能起作用,而表中的每列或每個(gè)用戶定義數(shù)據(jù)類(lèi)型只能和一個(gè)規(guī)則綁定。如果要?jiǎng)h除規(guī)則,則應(yīng)先解除綁定。

      SQL語(yǔ)句中利用規(guī)則實(shí)現(xiàn)數(shù)據(jù)完整性應(yīng)用例子如下:

      Create Rule r_age as @age<=100 and @age>=1

      --定義規(guī)則年齡限制區(qū)間

      Exec sp_bindrule ‘r_age’,’teacher.age’

      --使用存儲(chǔ)過(guò)程綁定規(guī)則

      2.3通過(guò)約束實(shí)現(xiàn)數(shù)據(jù)完整性

      約束是指在創(chuàng)建表時(shí)設(shè)置各種條件對(duì)輸入、修改的數(shù)據(jù)進(jìn)行監(jiān)測(cè),使不符合語(yǔ)義規(guī)定的數(shù)據(jù)不能進(jìn)入數(shù)據(jù)庫(kù),以確保數(shù)據(jù)的完整性與有效性。SQL Server數(shù)據(jù)庫(kù)提供了主鍵約束、外鍵約束、唯一約束、檢查約束、非空約束與自動(dòng)編號(hào)約束等6種約束方式。

      2.3.1主鍵約束(PRIMARY KEY)

      主鍵約束是為了保證數(shù)據(jù)實(shí)體完整性,用于唯一地標(biāo)識(shí)表中的每一行。主鍵字段不能出現(xiàn)重復(fù)值或空值。在一個(gè)表中只能有一個(gè)主鍵,主鍵可以是一個(gè)字段,也可以是字段的組合。

      Create Table Department --創(chuàng)建系部表

      (d_id?char(10) PRIMARY KEY, --系部編號(hào),設(shè)置為主鍵

      d_name varchar(20),

      d_leader varchar(10))

      2.3.2外鍵約束(FOREIGN KEY)

      外鍵約束是為了保證數(shù)據(jù)參照完整性,用于在建立一個(gè)或多個(gè)表的字段之間的引用聯(lián)系。在創(chuàng)建時(shí)在被引用表上創(chuàng)建主鍵或唯一約束,在引用表的字段上創(chuàng)建外鍵約束。外鍵約束必須是另一個(gè)表的主鍵,這樣在當(dāng)前表上才能稱(chēng)為外鍵。

      Create Table Teacher

      (t_id?char(10) PRIMARY KEY, --教師工號(hào),設(shè)置為主鍵

      t_name varchar(10),

      t_sex char(2)CHECK(t_sex=’男’or t_sex=’女’),

      t_professor varchar(10) default(“助教”))

      d_id char(10) FOREIGN KEY references Deparment(d_id))

      --系部編號(hào),外鍵,與系部表的“系部編號(hào)”關(guān)聯(lián)

      2.3.3唯一約束(UNIQUE)

      唯一約束要求該列唯一,允許有空值,但只能出現(xiàn)一個(gè)空值。與主鍵約束類(lèi)似,也具有唯一性,為表中的一列或多列提供數(shù)據(jù)實(shí)體完整性,一個(gè)表可以設(shè)置多個(gè)唯一約束。

      Create Table Department

      (d_id?char(10) PRIMARY KEY,

      d_name varchar(20) UNIQUE,?--系部名稱(chēng),唯一約束

      d_leader varchar(10) UNIQUE))?--系部領(lǐng)導(dǎo),唯一約束

      2.3.4檢查約束(CHECK)

      檢查約束是為了保證域完整性,檢查約束可為所屬字段設(shè)定一個(gè)邏輯表達(dá)式來(lái)限定有效取值范圍。檢查約束只在添加和修改記錄時(shí)有效,在刪除時(shí)無(wú)效。一個(gè)列上只能定義一個(gè)檢查約束。

      Create Table Teacher

      (t_id?char(10) PRIMARY KEY,

      t_name varchar(10),

      t_sex char(2)CHECK(t_sex=’男’or t_sex=’女’),

      --教師性別,檢查約束

      t_professor varchar(10) default(“助教”))

      d_id char(10) FOREIGN KEY references Deparment(d_id))

      2.3.5非空約束(NOT NULL)

      非空約束也是為了保證數(shù)據(jù)實(shí)體完整性,有些表中字段雖然不需要設(shè)置主鍵字段,但其信息不允許為空值,則可利用非空約束來(lái)設(shè)置。

      Create Table Teacher

      (t_id?char(10) PRIMARY KEY,

      t_name varchar(10) NOT NULL,?--教師姓名,非空約束

      t_sex char(2)CHECK(t_sex=’男’or t_sex=’女’),

      t_professor varchar(10) default(“助教”))

      d_id char(10) FOREIGN KEY references Deparment(d_id))

      2.3.6自動(dòng)編號(hào)約束(IDENTITY)

      自動(dòng)編號(hào)約束又稱(chēng)作標(biāo)識(shí)列,采用數(shù)字編號(hào)的方式依次增加一個(gè)增量。是為那些數(shù)字順序遞增的列準(zhǔn)備的約束,可以自動(dòng)完成數(shù)值添加。

      Create Table Department

      (d_id?int identity(1,1)PRIMARY KEY,

      --系部編號(hào),整型,主鍵約束,自動(dòng)編號(hào)(增量為1)

      d_name varchar(20) UNIQUE,

      d_leader varchar(10) UNIQUE))

      若要實(shí)現(xiàn)更為復(fù)雜的數(shù)據(jù)約束,可以使用觸發(fā)器實(shí)現(xiàn),在此不再贅述。

      3結(jié)束語(yǔ)

      通過(guò)上述數(shù)據(jù)完整性的概念與分類(lèi)闡述,并通過(guò)相關(guān)例子的實(shí)現(xiàn)來(lái)說(shuō)明數(shù)據(jù)完整性是如何建立和實(shí)施。在具體應(yīng)用過(guò)程中,需要結(jié)合實(shí)際情況選擇相應(yīng)方法來(lái)保證數(shù)據(jù)的準(zhǔn)確性和有效性。

      作者簡(jiǎn)介:

      孫楓(1977-),女,江蘇南通人,中學(xué)高級(jí),碩士研究生(方向:現(xiàn)代教育技術(shù)),江蘇省南通第一中學(xué)信息中心教師。

      參考文獻(xiàn):

      [1]陳潔,薛恒威. SQL Server數(shù)據(jù)庫(kù)中數(shù)據(jù)完整性的分析與實(shí)踐[J]河北軟件職業(yè)技術(shù)學(xué)院學(xué)院學(xué)報(bào),2018

      [2]陳金萍,陳艷,姜廣坤. SQL Server2012數(shù)據(jù)庫(kù)項(xiàng)目化教程[M].清華大學(xué)出版社,2017

      [3]從艷. SQL Server數(shù)據(jù)庫(kù)完整性的維護(hù)[J].電腦知識(shí)與技術(shù),2007

      [4]陳增祥. SQL Server數(shù)據(jù)庫(kù)數(shù)據(jù)完整性的研究與分析[J].信息安全與技術(shù),2012

      [5]李浩,周媛媛. SQL Server數(shù)據(jù)完整性及約束[J].科技與企業(yè),2013

      猜你喜歡
      約束
      “碳中和”約束下的路徑選擇
      約束離散KP方程族的完全Virasoro對(duì)稱(chēng)
      適當(dāng)放手能讓孩子更好地自我約束
      人生十六七(2015年6期)2015-02-28 13:08:38
      不等式約束下AXA*=B的Hermite最小二乘解
      平乡县| 集安市| 鱼台县| 北海市| 米林县| 当阳市| 安吉县| 宣武区| 揭西县| 西乌珠穆沁旗| 繁峙县| 榆中县| 开封县| 青阳县| 大港区| 罗田县| 通州区| 二连浩特市| 麦盖提县| 绥芬河市| 文昌市| 邯郸市| 景德镇市| 麻江县| 东港市| 远安县| 盱眙县| 通海县| 镇宁| 宝应县| 阳信县| 镇巴县| 昌图县| 云霄县| 乐平市| 新丰县| 蓝山县| 渑池县| 吴旗县| 保山市| 彭阳县|