亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        SQL Server數(shù)據(jù)庫中關(guān)于數(shù)據(jù)完整性的教學(xué)案例探析

        2018-11-16 10:16:00向瑜
        求知導(dǎo)刊 2018年27期
        關(guān)鍵詞:主鍵數(shù)據(jù)類型觸發(fā)器

        向瑜

        一 、概述

        在關(guān)系型數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)完整性約束、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作是組成其數(shù)據(jù)模型的三個基本要素。其中的數(shù)據(jù)完整性約束是一組完整性規(guī)則的集合,它規(guī)定數(shù)據(jù)庫狀態(tài)及狀態(tài)變化所應(yīng)滿足的條件,以保證數(shù)據(jù)的正確性、有效性和相容性。完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和存儲規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)及狀態(tài)的變化,以保證當(dāng)授權(quán)用戶對數(shù)據(jù)庫進(jìn)行修改時保證數(shù)據(jù)的正確、有效和相容,不會破壞數(shù)據(jù)的一致性,防止對數(shù)據(jù)的意外損壞。

        在數(shù)據(jù)庫課程中,完整性約束的設(shè)計與實現(xiàn)是教學(xué)中非常重要的一部分,在教學(xué)中要讓學(xué)生充分理解并掌握完整性約束的重要性和實現(xiàn)方法。為了幫助學(xué)生理解和掌握,本文通過一個他們較熟悉的選課系統(tǒng)來介紹基于SQL Server的數(shù)據(jù)完整性案例。

        二、數(shù)據(jù)庫完整性案例

        在學(xué)生選課系統(tǒng)中,一個學(xué)校有多名學(xué)生,每個學(xué)生有唯一的學(xué)號;學(xué)校的課程有若干門,每一門課程均有各自的課程編號,有些課程如“計算機(jī)應(yīng)用基礎(chǔ)”選修的人較多,相同的課程成績有多個,它們具有相同的課程編號,數(shù)據(jù)庫要記錄相同編號的課程有多少個選修成績,未被選修的課程有哪些;每個選修的信息和未選修的信息均要記錄在數(shù)據(jù)庫中。

        根據(jù)以上語義,進(jìn)行相應(yīng)的概念模型設(shè)計,得到如圖1所示的系統(tǒng)E-R圖,從圖中可以看出,系統(tǒng)有兩個實體:學(xué)生和課程,由于一個學(xué)生可以選修多門課程,一門課程也可以被多個學(xué)生選修,因此兩個實體間的關(guān)系是多對多(m:n)。E-R模型主要是面向用戶的,需要將其轉(zhuǎn)換為具體數(shù)據(jù)庫管理系統(tǒng)支持的數(shù)據(jù)模型。將這個概念模型轉(zhuǎn)換為關(guān)系數(shù)據(jù)庫模型時,可轉(zhuǎn)換為如下的3個表:學(xué)生實體對應(yīng)student表,課程實體對應(yīng)course表,表示學(xué)生實體和課程實體多對多關(guān)系的score表。三個表的結(jié)構(gòu)如表1~表3所示。

        1.實體完整性

        一個實體在數(shù)據(jù)庫中表現(xiàn)為表中的一條記錄,實體完整性保證表中每條記錄必須是唯一的,可通過主鍵或唯一碼、唯一索引和標(biāo)識列等方式來實現(xiàn)。

        在student表和course表中,可分別采用studentno和courseno作主鍵,保證了記錄的唯一與實體的完整性。在score表中,由于一個學(xué)生可以選修多門課程,一門課程可以被多個學(xué)生同時選修,因此studentno和courseno分別作主鍵都不合適,此時在score表中可以將studentno和courseno兩個字段作復(fù)合主鍵。在數(shù)據(jù)庫設(shè)計中,當(dāng)復(fù)合主鍵的元素大于等于3時,通常還可增加一個沒有實際意義的編號字段作為主鍵,該字段無其他含義,只是用來標(biāo)注記錄的唯一性。在教學(xué)過程中,可以通過設(shè)置score表的主鍵來講解復(fù)合主鍵的概念,強(qiáng)調(diào)復(fù)合主鍵不是指有多個主鍵,而是指將多個字段組成一個整體來共同構(gòu)成主鍵,標(biāo)識記錄的唯一性。

        2.參照完整性

        參照完整性又稱引用完整性,是指兩個表的主鍵與外鍵之間定義的數(shù)據(jù)完整性,表明了兩個表之間的關(guān)系。參照完整性可以保證兩個引用表間數(shù)據(jù)的一致性,可以通過外鍵、檢查、觸發(fā)器和存儲過程等方式實現(xiàn)。

        在score表中的studentno要求必須是student表中已經(jīng)存在的studentno,因此score表中的studentno字段作為外鍵,引用了student表的studentno字段值。同理score表中的courseno也是外鍵,引用了course表的courseno字段值。

        在教學(xué)過程中,為了讓學(xué)生更好地體會并掌握外鍵的概念,可采取以下辦法:

        (1)在score表中添加一條記錄,該記錄中的studentno值在student表中不存在。將返回錯誤信息。測試結(jié)果:記錄將無法添加到score表中。

        (2)同理如果刪除student表中的一個學(xué)生信息,該學(xué)生在score表中有成績信息。

        測試結(jié)果:無法刪除。原因是如果刪除了,score表中對應(yīng)的記錄就將失去意義,無法確定這條信息是那個學(xué)生的成績信息,因為該學(xué)生的信息已經(jīng)在student表中刪除。

        設(shè)定參照完整性之后,student表、course表和score表之間的關(guān)系如圖2所示:

        從圖中可見:student表和score表, course表和score表都是一對多的關(guān)系。

        3.域完整性

        域就是指表中的列,域完整性要求列的數(shù)值具有正確的類型、格式和有效值范圍,并確定是否允許有空值。通常使用有效性檢查強(qiáng)制域完整性,也可以通過限定列中允許的數(shù)據(jù)類型、格式或有效值范圍來強(qiáng)制數(shù)據(jù)完整性。默認(rèn)值、檢查、外鍵、數(shù)據(jù)類型和規(guī)則也可用來實現(xiàn)域完整性。

        如在student表中,email表示學(xué)生的郵箱地址,輸入數(shù)據(jù)時應(yīng)當(dāng)包含一個“@”符號,如果不滿足此要求,則會判斷其是不合法的數(shù)據(jù),并禁止輸入。此時需在student表中添加一條check約束,“email like ‘%@%”。

        4.用戶自定義完整性

        用戶還可以根據(jù)其應(yīng)用環(huán)境的不同,對數(shù)據(jù)庫設(shè)置一些特殊的約束條件(自定義完整性),反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語句要求。用戶自定義完整性涵蓋的內(nèi)容比較多,例如:字段的數(shù)據(jù)類型、字段的約束、觸發(fā)器,等等。

        (1)字段的數(shù)據(jù)類型。在course表中,period字段表示課程的學(xué)時數(shù),數(shù)據(jù)類型為tinyint,credit字段則表示該門課所占的學(xué)分,數(shù)據(jù)類型為numeric,限定了數(shù)據(jù)類型就可以確保對應(yīng)的字段值只能是數(shù)值類型的數(shù)據(jù),避免由于操作錯誤輸入一些非數(shù)字字符。score表中的usually和final字段,數(shù)據(jù)類型都是numeric,不僅避免了非數(shù)字型數(shù)據(jù)的存儲,另外針對兩個數(shù)值型字段,還可以利用表達(dá)式進(jìn)行簡單計算,如令二者各占一定百分值,求出綜合成績。

        在教學(xué)中,要給學(xué)生強(qiáng)調(diào)選擇數(shù)據(jù)類型的重要性,不能將所有字段的數(shù)據(jù)類型都定義為char類型,應(yīng)該根據(jù)語義為字段選擇合適的數(shù)據(jù)類型,SQL Server有許多內(nèi)置的函數(shù)可以用于不同數(shù)據(jù)類型的數(shù)據(jù)上。

        (2)字段的約束。字段的約束是為了保證語義的正確性,定義關(guān)于列中允許值的規(guī)則,是強(qiáng)制實施完整性的標(biāo)準(zhǔn)機(jī)制。如本例中的usually和final項,數(shù)值均要求為0~100,即score表中應(yīng)該添加兩條check約束,“usually>=0 and usually<=100”和“final between 0 and 100”。另外在本例中,student表中的sex字段的取值只能是“男”或“女”,也應(yīng)該添加對應(yīng)的check約束:“sex in(‘男‘女)”。

        在教學(xué)中要特別強(qiáng)調(diào)數(shù)據(jù)庫設(shè)計中字段約束的重要性,這是對其語義的保障,這一工作最好能在數(shù)據(jù)庫設(shè)計時就完成,將會極大程度地減少工作量且更符合規(guī)范化設(shè)計的流程。

        (3)觸發(fā)器。觸發(fā)器是一種響應(yīng)數(shù)據(jù)操作或數(shù)據(jù)定義語言事件而執(zhí)行的特殊類型的存儲過程,是在用戶對某一表中的數(shù)據(jù)進(jìn)行更新、插入和刪除操作時被觸發(fā)執(zhí)行的一段程序。觸發(fā)器功能強(qiáng)大,能夠為數(shù)據(jù)完整性和系統(tǒng)的總體操作增加極大的靈活性。觸發(fā)器在功能上類似于CHECK約束,但是使用更靈活,可以跨表、數(shù)據(jù)庫或觸發(fā)器工作。通常用觸發(fā)器來滿足業(yè)務(wù)邏輯,實現(xiàn)數(shù)據(jù)庫的參照完整性。

        觸發(fā)器是教學(xué)過程中的一個難點,在教學(xué)中要注意兩點:第一,要強(qiáng)調(diào)觸發(fā)器的作用和執(zhí)行過程,觸發(fā)器常用來實現(xiàn)自定義完整性,觸發(fā)器的執(zhí)行不是用戶直接調(diào)用,而是在對某個表執(zhí)行特定的操作,如增加刪除修改后自動的觸發(fā)。可以通過以上案例分析觸發(fā)器是如何實現(xiàn)特定的業(yè)務(wù)邏輯。第二,在編寫觸發(fā)器中,通常會用到系統(tǒng)的兩個臨時表deleted和inserted,如在本例triUpdatescore觸發(fā)器中,修改前記錄信息放在deleted表中,修改后的記錄則放在了inserted表中。

        三、結(jié)論

        本文通過一個完整的案例介紹了數(shù)據(jù)庫課程中的數(shù)據(jù)完整性實現(xiàn)的過程。在實際教學(xué)中,教師也可通過理論講解、案例分析、設(shè)計和實現(xiàn)等多個環(huán)節(jié)相結(jié)合的方式來讓學(xué)生來理解數(shù)據(jù)庫完整性的作用和實現(xiàn)方法,為學(xué)生今后從事相關(guān)數(shù)據(jù)庫開發(fā)工作奠定一定的基礎(chǔ)。

        參考文獻(xiàn):

        [1]姜桂洪.SQL Server 2008數(shù)據(jù)庫應(yīng)用與開發(fā)[M].北京:清華大學(xué)出版社,2015.

        [2](美)Abraham Silberschatz ,(美)Henry F.Korth,(美)S.Sudarshan.數(shù)據(jù)庫系統(tǒng)概念(原書第6版)[M].楊冬青,李紅燕,唐世渭,譯.機(jī)械工業(yè)出版社,2012.

        [3]何玉潔,劉福剛.數(shù)據(jù)庫原理及應(yīng)用[M].北京:人民郵電出版社,2012.

        [4]韓 雪.教學(xué)管理系統(tǒng)的研究與設(shè)計[D].長春:吉林大學(xué),2008.

        [5]陳永強(qiáng),張志強(qiáng).SQL Server 2005 Web應(yīng)用開發(fā)[M].北京:清華大學(xué)出版社,2008.

        [6]金玉明.PB與SQL Server的連接技術(shù)與實現(xiàn)[J].電腦知識與技術(shù),2007(24).

        [7]閆 旭.淺談SQL Server數(shù)據(jù)庫的特點和基本功能[J].價值工程,2012(22):229-231.

        猜你喜歡
        主鍵數(shù)據(jù)類型觸發(fā)器
        基于Go 實現(xiàn)的分布式主鍵系統(tǒng)研究
        詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
        如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
        基于外鍵的E-R圖繪制方法研究
        主從JK觸發(fā)器邏輯功能分析
        電子世界(2017年22期)2017-12-02 03:03:45
        使用觸發(fā)器,強(qiáng)化安全性
        數(shù)據(jù)庫主鍵設(shè)置探討
        對觸發(fā)器邏輯功能轉(zhuǎn)換的分析
        觸發(fā)器邏輯功能轉(zhuǎn)換的兩種方法
        淺談數(shù)據(jù)庫主鍵設(shè)計的原則
        尤物成av人片在线观看| 国产女女做受ⅹxx高潮| 日本a在线看| 亚洲国产色图在线视频| 国产一区二区三区av免费| 成人做受黄大片| 一二三四在线视频社区3| 东京热无码人妻中文字幕| 国产精品一区二区韩国av| 亚洲av永久无码天堂网小说区 | 久久久久久久尹人综合网亚洲 | 久久综合精品人妻一区二区三区| 边喂奶边中出的人妻| 国产一区曰韩二区欧美三区| 女优视频一区二区三区在线观看| 精品国产三级a在线观看不卡| 日本中文字幕一区二区高清在线| 国产高级黄区18勿进一区二区| 免费毛片一区二区三区女同| 亚洲人妻调教中文字幕| 99久久久无码国产精品6| AV永久天堂网| 99国语激情对白在线观看| 精品国产品香蕉在线| 无码a∨高潮抽搐流白浆| 偷拍区亚洲区一区二区| 久草中文在线这里只有精品| 真实国产精品vr专区| 99久久婷婷国产综合亚洲91| 国产麻豆放荡av激情演绎| 国产一区二区视频在线免费观看| 国产suv精品一区二区6| 91成人午夜性a一级毛片| 自拍偷拍韩国三级视频| 97人妻人人做人碰人人爽| 91精品一区国产高清在线gif| 国产精品专区一区二区av免费看| 久久99热国产精品综合| 国产在线不卡一区二区三区| 成人国产精品免费网站 | 综合激情中文字幕一区二区|