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

        ?

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

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

        向瑜

        一 、概述

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

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

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

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

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

        1.實(shí)體完整性

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

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

        2.參照完整性

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

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

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

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

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

        測(cè)試結(jié)果:無(wú)法刪除。原因是如果刪除了,score表中對(duì)應(yīng)的記錄就將失去意義,無(wú)法確定這條信息是那個(gè)學(xué)生的成績(jī)信息,因?yàn)樵搶W(xué)生的信息已經(jīng)在student表中刪除。

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

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

        3.域完整性

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

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

        4.用戶自定義完整性

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

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

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

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

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

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

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

        三、結(jié)論

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

        參考文獻(xiàn):

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

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

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

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

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

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

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

        猜你喜歡
        主鍵數(shù)據(jù)類型觸發(fā)器
        基于Go 實(shí)現(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ù)庫(kù)主鍵設(shè)置探討
        對(duì)觸發(fā)器邏輯功能轉(zhuǎn)換的分析
        觸發(fā)器邏輯功能轉(zhuǎn)換的兩種方法
        淺談數(shù)據(jù)庫(kù)主鍵設(shè)計(jì)的原則
        40岁大乳的熟妇在线观看| 精品久久一品二品三品| 亚洲综合精品中文字幕| 亚洲国产精品日韩av专区| 中文在线中文a| 中文字幕无码不卡一区二区三区| 免费国产一级特黄aa大片在线| 美女福利视频网址导航| 各类熟女熟妇激情自拍| 国产精品久久久久久福利| 六月丁香婷婷色狠狠久久| 美女极度色诱视频国产免费| 美女与黑人巨大进入免费观看 | 国产精品会所一区二区三区| 人妻少妇边接电话边娇喘| 欧美国产日本精品一区二区三区| 青青青草视频手机在线| 久久久久99精品成人片欧美| 国产影片中文字幕| 国产午夜视频免费观看| 女优av福利在线观看| 一区二区亚洲精品在线| 国产亚洲欧美精品久久久| 国产又色又爽又刺激视频| 国产美女冒白浆视频免费| 国产成人无码av一区二区在线观看| 人妻在线日韩免费视频| 久久久久成人精品免费播放网站| 精品人妻码一区二区三区红楼视频| 国产精品爽爽久久久久久竹菊| 深夜福利小视频在线观看| 国产熟女精品一区二区三区| 日本妇女高清一区二区三区 | 国产精品玖玖玖在线资源| 五月婷婷激情六月开心| 国产日本精品视频一区二区 | 国产在线观看免费一级| 国产精品亚洲av高清二区| 欧美最大胆的西西人体44| 亚洲丁香五月激情综合| 中文字幕一区乱码在线观看|