數(shù)據(jù)庫(kù)實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目錄實(shí)驗(yàn)一關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL.....................................................................1實(shí)驗(yàn)二數(shù)據(jù)庫(kù)完整性技術(shù).................................................................................4實(shí)驗(yàn)三數(shù)據(jù)庫(kù)安全性技術(shù).................................................................................8實(shí)驗(yàn)四數(shù)據(jù)庫(kù)設(shè)計(jì)...........................................................................................15實(shí)驗(yàn)五數(shù)據(jù)庫(kù)恢復(fù)技術(shù)...................................................................................20實(shí)驗(yàn)六數(shù)據(jù)庫(kù)編程...........................................................................................25《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)實(shí)驗(yàn)一關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL【實(shí)驗(yàn)?zāi)康摹吭诮o定的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)MSSQLServer環(huán)境下,通過(guò)實(shí)驗(yàn)學(xué)生能夠:1、MSSQLSERVER認(rèn)識(shí)及其環(huán)境熟悉,了解T-SQL對(duì)標(biāo)準(zhǔn)SQL的擴(kuò)充。2、掌握T-SQL環(huán)境下數(shù)據(jù)定義包括數(shù)據(jù)庫(kù)、基本表、視圖、索引定義。3、掌握T-SQL環(huán)境下數(shù)據(jù)操縱包括數(shù)據(jù)插入、刪除、修改。4、掌握T-SQL環(huán)境下數(shù)據(jù)查詢(xún)及其各種變化?!緦?shí)驗(yàn)性質(zhì)】驗(yàn)證性實(shí)驗(yàn)【實(shí)驗(yàn)導(dǎo)讀】在MSSQLServer的Transact-SQL(簡(jiǎn)稱(chēng)T-SQL)環(huán)境下,一般包括數(shù)據(jù)定義語(yǔ)言(DDL)、數(shù)據(jù)操縱語(yǔ)言(DML)、數(shù)據(jù)控制語(yǔ)言(DCL)等。DDL包括定義數(shù)據(jù)庫(kù)(Database)、定義基本表(Table)、定義視圖(View)、定義索引(Index)等。DML包括插入(Insert)、刪除(Delete)、修改(Update)、查詢(xún)(Select),由于查詢(xún)使用的頻率及其重要性,將其單列出來(lái)。DCL可分為授權(quán)(Grant)與回收(Revoke)。下面給出基本語(yǔ)法,每個(gè)語(yǔ)句的詳細(xì)語(yǔ)法參見(jiàn)“聯(lián)機(jī)從書(shū)”的“Transact-SQL參考”。1、數(shù)據(jù)定義語(yǔ)言(DDL)(1)定義數(shù)據(jù)庫(kù)(Database)CREATEDATABASE<數(shù)據(jù)庫(kù)名><數(shù)據(jù)庫(kù)名>命名規(guī)則遵從一般標(biāo)識(shí)符規(guī)則。在定義表及其它元素之前,必須將查詢(xún)分析器的當(dāng)前數(shù)據(jù)庫(kù)置為<數(shù)據(jù)庫(kù)名>。采用USE<數(shù)據(jù)庫(kù)名>。(2)定義基本表(Table)CREATETABLE<表名>()()給出每一列的說(shuō)明包括列名、數(shù)據(jù)類(lèi)型及長(zhǎng)度,還給出相關(guān)列約束或表約束子句。<表名>、<列名>命名規(guī)則遵從一般標(biāo)識(shí)符規(guī)則。(3)定義視圖(View)CREATEVIEW<視圖名>AS<SELECT語(yǔ)句塊>視圖作為關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)外模式的基本單元,用于定義最終用戶(hù)(End-User)數(shù)據(jù)源。在視圖定義中可以采用復(fù)雜的SELECT語(yǔ)句。(4)定義索引(Index)CREATEINDEX<索引名>2、數(shù)據(jù)操縱語(yǔ)言(DML)插入(Insert)、刪除(Delete)、修改(Update)數(shù)據(jù)只針對(duì)單個(gè)關(guān)系。DML語(yǔ)句可能會(huì)造成數(shù)據(jù)不一致。在每條語(yǔ)句執(zhí)行之前,MSSQLServer會(huì)驗(yàn)證每條語(yǔ)句是否符合完整性要求包括實(shí)體完整性、參考完整性、用戶(hù)定義的完整性。(1)插入數(shù)據(jù)INSERT[INTO]<關(guān)系名>[(column_list)](data_values)數(shù)據(jù)values值與列列表要匹配個(gè)數(shù)與類(lèi)型。以下類(lèi)型的數(shù)據(jù)values值不用使用引號(hào):整型數(shù)據(jù)類(lèi)型(bit,int,smallint,tinyint)、貨幣數(shù)據(jù)類(lèi)型(money,smallmoney)、數(shù)字?jǐn)?shù)據(jù)類(lèi)型(decimal,numeric)、浮點(diǎn)類(lèi)型數(shù)據(jù)(real,float)。對(duì)于以下數(shù)據(jù)類(lèi)型就要對(duì)values值加單引號(hào):字符數(shù)據(jù)類(lèi)型(char,varchar,text)、復(fù)雜的日期/時(shí)間類(lèi)型數(shù)據(jù)(datetime,smalldatetime)。<關(guān)系名>可以是表名或視圖名。(2)刪除數(shù)據(jù)DELETE[FROM]table_name[WHEREsearch_condition]刪除符合條件的元組。(3)更新數(shù)據(jù)1《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)UPDATEtable_nameSETcolumn_name={expression|DEFAULT|NULL}[,...n][FROMtable_name[,...n]][WHEREsearch_condition]刪除滿(mǎn)足條件的元組。3、數(shù)據(jù)查詢(xún)語(yǔ)言(SELECT)SELECT是SQL中使用最頻繁的語(yǔ)句,其變化形式繁多。其基本形式:SELECTquery_expression|column_list|*FROMtable_name_list|view_name_list[WHEREcondition_expression][GROUPBYcolumn_name_list[HAVINGcondition_expression]][ORDERBYorder_expression[ASC|DESC]]常用的統(tǒng)計(jì)函數(shù):SUM()----返回一個(gè)數(shù)字或計(jì)算列的總和AVG()----對(duì)一個(gè)數(shù)字列或計(jì)算求列平均值MIN()----返回一個(gè)數(shù)字或一個(gè)數(shù)字表達(dá)式的最小值MAX()----返回一個(gè)數(shù)字或一個(gè)數(shù)字表達(dá)式的最大值COUNT()----返回滿(mǎn)足SELECT語(yǔ)句中指定條件的元組數(shù)量COUNT(*)----返回找到的行數(shù)4、數(shù)據(jù)控制語(yǔ)言(DCL)MSSQLServer的安全性建立在認(rèn)證和訪問(wèn)許可兩種機(jī)制上即用戶(hù)要經(jīng)過(guò)兩個(gè)安全性階段:身份驗(yàn)證和授權(quán)(權(quán)限驗(yàn)證)。MSSQLServer的安全模式中包括登陸(login)、數(shù)據(jù)庫(kù)用戶(hù)(user)、權(quán)限、角色(role)等。用戶(hù)(user)與登陸(login)是兩個(gè)不同的概念,其中所有的數(shù)據(jù)庫(kù)用戶(hù)(user)必須與某一登陸(login)相匹配。MSSQLServer的權(quán)限分為:對(duì)象權(quán)限:針對(duì)表、視圖、存儲(chǔ)過(guò)程等數(shù)據(jù)庫(kù)對(duì)象(元素)而言,決定了能對(duì)這些對(duì)象執(zhí)行哪些操作。不同類(lèi)型的對(duì)象支持不同的操作。語(yǔ)句權(quán)限:指數(shù)據(jù)庫(kù)用戶(hù)執(zhí)行某些語(yǔ)句的操作權(quán)如創(chuàng)建數(shù)據(jù)庫(kù)、表、視圖等。這些語(yǔ)句雖然包含操作對(duì)象,但這些對(duì)象在操作前并不存在于數(shù)據(jù)庫(kù)中。(教材中說(shuō)明成對(duì)數(shù)據(jù)庫(kù)而言)。(1)授權(quán)GRANT<權(quán)限>ON<對(duì)象名>TO<用戶(hù)名>(2)收回權(quán)限REVOKE<權(quán)限>ON<對(duì)象名>FROM<用戶(hù)名>【實(shí)驗(yàn)內(nèi)容】1、MSSQLSERVER入門(mén)及“聯(lián)機(jī)從書(shū)”介紹。2、熟悉MSSQLSERVER環(huán)境尤其“查詢(xún)分析器”使用。3、數(shù)據(jù)定義、數(shù)據(jù)操縱、數(shù)據(jù)查詢(xún)語(yǔ)句,以下數(shù)字為教材P148作業(yè)題號(hào)。(1)創(chuàng)建數(shù)據(jù)庫(kù),置為當(dāng)前數(shù)據(jù)庫(kù);(2)創(chuàng)建表(3);(3)創(chuàng)建索引;(4)插入數(shù)據(jù);(5)完成數(shù)據(jù)查詢(xún)(4/5);(6)定義視圖并完成查詢(xún)(11);4、根據(jù)實(shí)驗(yàn)數(shù)據(jù)情況,直觀判斷語(yǔ)句的正確性?!緦?shí)驗(yàn)作業(yè)】1、閱讀MSSQLSERVER“聯(lián)機(jī)叢書(shū)”相關(guān)內(nèi)容。2、同一查詢(xún)問(wèn)題有多種寫(xiě)法,它們之間有何差別?3、如何驗(yàn)證SQL語(yǔ)句的正確性?4、請(qǐng)實(shí)例說(shuō)明教材P41第一章習(xí)題11,證明存在“連接陷阱”。2《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)5、在教材P80第二章習(xí)題5基礎(chǔ)上,用SQL:(1)查詢(xún)每項(xiàng)工程使用量最大的零件號(hào),名稱(chēng)和使用量。(2)查詢(xún)使用了兩種以上不同零件的工程名稱(chēng)。(3)查詢(xún)使用零件總量最大的工程號(hào)。(4)查詢(xún)使用零件種類(lèi)最多的工程號(hào)。6、閱讀MSSQLSERVER“聯(lián)機(jī)叢書(shū)”“CREATEDATABASE”語(yǔ)句,創(chuàng)建一個(gè)名為Student的數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)主數(shù)據(jù)文件為Student.mdf,初始大小為1MB,以10%的速度增長(zhǎng),不設(shè)上限;日志文件Student.ldf,初始大小為3MB,以1MB速度增長(zhǎng),最大不超過(guò)15MB。7、閱讀MSSQLSERVER“聯(lián)機(jī)叢書(shū)”“FROM子句”,討論T-SQL的連接形式及其含義。3《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)實(shí)驗(yàn)二數(shù)據(jù)庫(kù)完整性技術(shù)【實(shí)驗(yàn)?zāi)康摹?、掌握完整性的概念;2、熟悉SQLSERVER的完整性技術(shù)。3、了解SQLSERVER的違反完整性處理措施?!緦?shí)驗(yàn)性質(zhì)】綜合性實(shí)驗(yàn)【實(shí)驗(yàn)導(dǎo)讀】1、完整性概述數(shù)據(jù)庫(kù)完整性指數(shù)據(jù)的(邏輯而非物理)正確性和相容性。為了防止數(shù)據(jù)庫(kù)中存在不合語(yǔ)義的數(shù)據(jù),防止錯(cuò)誤數(shù)據(jù)的輸入和輸出。數(shù)據(jù)庫(kù)完整性技術(shù)包括完整性約束條件與完整性檢查兩部分。完整性約束條件指為維護(hù)數(shù)據(jù)庫(kù)的完整性,DBMS提供加在數(shù)據(jù)庫(kù)數(shù)據(jù)之上的語(yǔ)義約束條件,作為數(shù)據(jù)庫(kù)模式的一部分存入數(shù)據(jù)庫(kù)。完整性檢查意味檢查數(shù)據(jù)庫(kù)是否滿(mǎn)足完整性約束條件的機(jī)制。完整性約束條件作用的對(duì)象可以是關(guān)系、元組、列三種。其中列約束主要是列的類(lèi)型、取值范圍、精度、排序等的約束條件。元組的約束是元組中各個(gè)字段間的聯(lián)系的約束。關(guān)系的約束是若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束。完整性約束條件涉及這三類(lèi)對(duì)象,其狀態(tài)可以是靜態(tài)的,也可以是動(dòng)態(tài)的。完整性約束條件一般分為實(shí)體完整性、參考完整性自定義完整性。定義實(shí)體完整性約束條件要考慮修改關(guān)系中主碼的問(wèn)題;定義參考完整性約束條件要考慮外碼能否接受空值問(wèn)題、在被參照關(guān)系中刪除元組的問(wèn)題(級(jí)聯(lián)刪除或受限刪除)、在參照關(guān)系中插入元組時(shí)的問(wèn)題。RDBMS一般提供定義完整性約束條件:作為表定義的一部分在創(chuàng)建表時(shí)創(chuàng)建(采用CREATETABLE);或者添加到尚沒(méi)有完整性約束條件的表中(ALTERTABLE)。2、MSSQLServer完整性控制技術(shù)詳細(xì)內(nèi)容參閱“聯(lián)機(jī)叢書(shū)”中“創(chuàng)建和管理數(shù)據(jù)庫(kù)”->“表”->“設(shè)計(jì)表”->“使用約束、默認(rèn)值和空值”、“創(chuàng)建和管理數(shù)據(jù)庫(kù)”->“表”->“創(chuàng)建和修改表”相關(guān)主題以及“聯(lián)機(jī)從書(shū)”的“Transact-SQL參考”相關(guān)語(yǔ)句。在MSSQLServer中將完整性分為:(1)實(shí)體完整性。實(shí)體完整性將行定義為特定表的唯一實(shí)體。實(shí)體完整性強(qiáng)制表的標(biāo)識(shí)符列或主碼的完整性(通過(guò)索引、UNIQUE約束、PRIMARYKEY約束或IDENTITY屬性)。(2)域完整性。域完整性是指給定列的輸入有效性。強(qiáng)制域有效性的方法有:限制類(lèi)型(通過(guò)數(shù)據(jù)類(lèi)型)、格式(通過(guò)CHECK約束和規(guī)則)或可能值的范圍(通過(guò)FOREIGNKEY約束、CHECK約束、DEFAULT定義、NOTNULL定義和規(guī)則)。(3)引用完整性。在輸入或刪除記錄時(shí),引用完整性保持表之間已定義的關(guān)系。在MSSQLServer中,引用完整性基于外碼與主碼之間或外碼與唯一碼之間的關(guān)系(通過(guò)FOREIGNKEY和CHECK約束)。引用完整性確保鍵值在所有表中一致。這樣的一致性要求不能引用不存在的值,如果鍵值更改了,那么在整個(gè)數(shù)據(jù)庫(kù)中,對(duì)該鍵值的所有引用要進(jìn)行一致的更改。強(qiáng)制引用完整性時(shí),MSSQLServer禁止用戶(hù)進(jìn)行下列操作:當(dāng)主表中沒(méi)有關(guān)聯(lián)的記錄時(shí),將記錄添加到相關(guān)表中。更改主表中的值并導(dǎo)致相關(guān)表中的記錄孤立。從主表中刪除記錄,但仍存在與該記錄匹配的相關(guān)記錄。4《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)(4)用戶(hù)定義完整性。用戶(hù)定義完整性使您得以定義不屬于其它任何完整性分類(lèi)的特定業(yè)務(wù)規(guī)則。所有的完整性類(lèi)型都支持用戶(hù)定義完整性(CREATETABLE中的所有列級(jí)和表級(jí)約束、存儲(chǔ)過(guò)程和觸發(fā)器)。設(shè)計(jì)表時(shí)需要識(shí)別列的有效值并決定如何強(qiáng)制實(shí)現(xiàn)列中數(shù)據(jù)的完整性。MSSQLServer提供多種強(qiáng)制列中數(shù)據(jù)完整性的機(jī)制:PRIMARYKEY約束FOREIGNKEY約束UNIQUE約束CHECK約束DEFAULT定義為空性3、PRIMARYKEY約束表中經(jīng)常有一個(gè)列或列的組合,其值能唯一地標(biāo)識(shí)表中的每一行。這樣的一列或多列稱(chēng)為表的主碼,通過(guò)它可強(qiáng)制表的實(shí)體完整性。當(dāng)創(chuàng)建或更改表時(shí)可通過(guò)定義PRIMARYKEY約束來(lái)創(chuàng)建主碼。一個(gè)表只能有一個(gè)PRIMARYKEY約束,而且PRIMARYKEY約束中的列不能接受空值。由于PRIMARYKEY約束確保唯一數(shù)據(jù),所以經(jīng)常用來(lái)定義標(biāo)識(shí)列。當(dāng)為表指定PRIMARYKEY約束時(shí),MSSQLServer通過(guò)為主碼列創(chuàng)建唯一索引強(qiáng)制數(shù)據(jù)的唯一性。當(dāng)在查詢(xún)中使用主碼時(shí),該索引還可用來(lái)對(duì)數(shù)據(jù)進(jìn)行快速訪問(wèn)。如果PRIMARYKEY約束定義在不止一列上,則一列中的值可以重復(fù),但PRIMARYKEY約束定義中的所有列的組合的值必須唯一。4、FOREIGNKEY約束外碼是用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接的一列或多列。通過(guò)將保存表中主碼值的一列或多列添加到另一個(gè)表中,可創(chuàng)建兩個(gè)表之間的鏈接。這個(gè)列就成為第二個(gè)表的外碼。當(dāng)創(chuàng)建或更改表時(shí)可通過(guò)定義FOREIGNKEY約束來(lái)創(chuàng)建外碼。FOREIGNKEY約束并不僅僅只可以與另一表的PRIMARYKEY約束相鏈接,它還可以定義為引用另一表的UNIQUE約束。盡管FOREIGNKEY約束的主要目的是控制存儲(chǔ)在外碼表中的數(shù)據(jù),但它還可以控制對(duì)主碼表中數(shù)據(jù)的修改。當(dāng)用戶(hù)試圖刪除或更新外碼所指向的碼時(shí),級(jí)聯(lián)引用完整性約束可以定義MSSQLServer所采取的操作。5、UNIQUE約束可使用UNIQUE約束確保在非主碼列中不輸入重復(fù)值。盡管UNIQUE約束和PRIMARYKEY約束都強(qiáng)制唯一性,但在強(qiáng)制下面的唯一性時(shí)應(yīng)使用UNIQUE約束而不是PRIMARYKEY約束:非主碼的一列或列組合。一個(gè)表可以定義多個(gè)UNIQUE約束,而只能定義一個(gè)PRIMARYKEY約束。允許空值的列。允許空值的列上可以定義UNIQUE約束,而不能定義PRIMARYKEY約束。6、CHECK約束CHECK約束通過(guò)限制輸入到列中的值來(lái)強(qiáng)制域的完整性。這與FOREIGNKEY約束控制列中數(shù)值相似。區(qū)別在于它們?nèi)绾闻袛嗄男┲涤行В篎OREIGNKEY約束從另一個(gè)表中獲得有效數(shù)值列表,CHECK約束從邏輯表達(dá)式判斷而非基于其它列的數(shù)據(jù)。對(duì)單獨(dú)一列可使用多個(gè)CHECK約束。按約束創(chuàng)建的順序?qū)ζ淙≈?。通過(guò)在表一級(jí)上創(chuàng)建CHECK約束,可以將該約束應(yīng)用到多列上。7、DEFAULT約束元組中的每一列均必須有值,即使它是NULL??赡軙?huì)有這種情況,當(dāng)向表中裝載新行時(shí)可能不知道某一列的值,或該值尚不存在。如果該列允許空值,就可以將該行賦予空值。由于有時(shí)不希5《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)望有可為空的列,因此如果合適,更好的解決辦法可能是為該列定義DEFAULT定義。當(dāng)將某行裝載到為行定義了DEFAULT的表中時(shí),若沒(méi)有指定列值,則是隱性要求MSSQLServer將默認(rèn)值裝載到該列中8、允許空值列為空性決定該列在表中是否允許空值??罩祷騈ULL并不等于零(0)、空白或零長(zhǎng)度的字符串(如“”),NULL意味著沒(méi)有輸入。NULL的存在通常表明值未知或未定義。例如,pubs數(shù)據(jù)庫(kù)titles表中price列的空值并不表示該書(shū)沒(méi)有價(jià)格,而是指其價(jià)格未知或尚未設(shè)定。總之,由于空值在查詢(xún)和更新時(shí)會(huì)使事情變得更復(fù)雜,而且有其它列選項(xiàng),如PRIMARYKEY約束等不能使用允許空值的列,所以應(yīng)避免允許空值。如果插入某行但沒(méi)有為允許空值的列包括值,則MSSQLServer提供NULL值(除非存在DEFAULT定義或DEFAULT對(duì)象)。指定一列不允許空值而確保行中一列永遠(yuǎn)包含數(shù)據(jù)可以保持?jǐn)?shù)據(jù)的完整性。如果不允許空值,用戶(hù)在向表中寫(xiě)數(shù)據(jù)時(shí)必須在列中輸入一個(gè)值,否則該行不被接收入數(shù)據(jù)庫(kù)?!緦?shí)驗(yàn)內(nèi)容】寫(xiě)出完整、詳盡的SQL語(yǔ)句,根據(jù)實(shí)驗(yàn)記錄結(jié)果并總結(jié)。(以教材P74作業(yè)5為例,也可采用課后練習(xí)題)一、定義完整性/*創(chuàng)建表s、p、j、spj*/定義s表;sno主碼,sname非空、city缺省值定義p表;pno主碼,pname非空、color只能取紅、藍(lán)、綠定義j表;jno主碼,jname非空定義spj表;(sno,pno,jno)主碼,參照sno、pno、jno外碼,qty介于0--1000二、插入數(shù)據(jù)插入合乎約束的數(shù)據(jù)三、設(shè)計(jì)相關(guān)實(shí)驗(yàn)用例數(shù)據(jù)1、針對(duì)下列情況,如果出錯(cuò)的話,給出錯(cuò)誤碼,并說(shuō)明原因;不出錯(cuò)的話,觀察數(shù)據(jù)并說(shuō)明理由。(1)插入違反約束的元組,主碼為null值(2)插入違反約束的元組,主碼取重復(fù)值(3)插入違反約束的元組,用戶(hù)定義完整性(pname非空)(4)插入違反約束的元組,用戶(hù)定義完整性(color只能取紅、藍(lán)、綠)(5)插入違反約束的元組,外碼取null值(6)插入違反約束的元組,外碼取對(duì)應(yīng)主碼沒(méi)有的值(7)修改外碼值,取對(duì)應(yīng)主碼已有的值(8)修改外碼值,取對(duì)應(yīng)主碼沒(méi)有的值(9)刪除被參照表未引用的主碼值(10)刪除被參照表引用的主碼值(11)修改被參照表未引用的主碼值(12)修改被參照表引用的主碼值2、將外碼改成級(jí)聯(lián)刪除、級(jí)聯(lián)修改。6《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)3、在2的基礎(chǔ)上,插入數(shù)據(jù)。針對(duì)下列情況,如果出錯(cuò)的話,給出錯(cuò)誤碼,并說(shuō)明原因;不出錯(cuò)的話,觀察數(shù)據(jù)并說(shuō)明理由。(1)修改外碼值,取對(duì)應(yīng)主碼已有的值(2)修改外碼值,取對(duì)應(yīng)主碼沒(méi)有的值(3)刪除被參照表未引用的主碼值(4)刪除被參照表引用的主碼值(5)修改被參照表未引用的主碼值(6)修改被參照表引用的主碼值【實(shí)驗(yàn)作業(yè)】1、總結(jié)數(shù)據(jù)庫(kù)完整性與安全性異同點(diǎn)。2、如何定義候選碼?3、如何采用觸發(fā)器實(shí)現(xiàn)參考完整性?4、如何采用觸發(fā)器實(shí)現(xiàn)實(shí)體完整性?5、如果違反完整性約束,MSSQLSERVER如何處理?應(yīng)用程序如何處理?6、學(xué)習(xí)SQLSERVER的其它完整性約束。7《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)實(shí)驗(yàn)三數(shù)據(jù)庫(kù)安全性技術(shù)【實(shí)驗(yàn)?zāi)康摹?、理解安全性的概念。2、在理解用戶(hù)及相關(guān)概念的基礎(chǔ)上掌握自主存取控制機(jī)制(DAC)。3、熟悉MSSQLSERVER的安全性技術(shù)?!緦?shí)驗(yàn)性質(zhì)】綜合性實(shí)驗(yàn)【實(shí)驗(yàn)導(dǎo)讀】1、安全性概述數(shù)據(jù)庫(kù)的安全性是指保護(hù)數(shù)據(jù)庫(kù),防止不合法的使用所造成的數(shù)據(jù)泄露和破壞。數(shù)據(jù)庫(kù)系統(tǒng)中保證數(shù)據(jù)安全性的主要措施是進(jìn)行存取控制,即規(guī)定不同用戶(hù)對(duì)于不同數(shù)據(jù)對(duì)象所允許執(zhí)行的操作,并控制各用戶(hù)只能存取他有權(quán)(操作權(quán)力)存取的數(shù)據(jù)。存取控制機(jī)制分為自主存取控制(DAC)與強(qiáng)制存取控制(MAC),主要包括兩部分:一是定義用戶(hù)權(quán)限,并將用戶(hù)權(quán)限登記到數(shù)據(jù)字典中;二是合法權(quán)限檢查。常見(jiàn)數(shù)據(jù)庫(kù)的安全性控制技術(shù)有:(1)用戶(hù)標(biāo)識(shí)與鑒別。(2)自主存取控制(DAC):用戶(hù)對(duì)于不同的數(shù)據(jù)對(duì)象有不同的存取權(quán)限,不同的用戶(hù)對(duì)同一對(duì)象也有不同的權(quán)限,而且用戶(hù)還可將其擁有的存取權(quán)限轉(zhuǎn)授給其他用戶(hù)。因此自主存取控制非常靈活。(3)強(qiáng)制存取控制(MAC):每一個(gè)數(shù)據(jù)對(duì)象被標(biāo)以一定的密級(jí),每一個(gè)用戶(hù)也被授予某一個(gè)級(jí)別的許可證。對(duì)于任意一個(gè)對(duì)象,只有具有合法許可證的用戶(hù)才可以存取。強(qiáng)制存取控制因此相對(duì)比較嚴(yán)格。(4)視圖:進(jìn)行存取權(quán)限控制時(shí)我們可以為不同的用戶(hù)定義不同的視圖,把數(shù)據(jù)對(duì)象限制在一定的范圍內(nèi)即通過(guò)視圖機(jī)制把要保密的數(shù)據(jù)對(duì)無(wú)權(quán)存取的用戶(hù)隱藏起來(lái),從而自動(dòng)地對(duì)數(shù)據(jù)提供一定程度的安全保護(hù)。視圖機(jī)制間接地實(shí)現(xiàn)了支持存取謂詞的用戶(hù)權(quán)限定義。(5)審計(jì)。(6)加密:對(duì)于高度敏感性數(shù)據(jù),例如財(cái)務(wù)數(shù)據(jù)、軍事數(shù)據(jù)、國(guó)家機(jī)密,除以上安全性措施外,還可以采用數(shù)據(jù)加密技術(shù)。2、MSSQLServer安全性控制技術(shù)詳細(xì)內(nèi)容參閱“聯(lián)機(jī)叢書(shū)”中“管理SQLServer”->“安全管理”MSSQLServer的安全性建立在認(rèn)證和訪問(wèn)許可兩種機(jī)制上即用戶(hù)要經(jīng)過(guò)兩個(gè)安全性階段:身份驗(yàn)證和授權(quán)(權(quán)限驗(yàn)證)。身份驗(yàn)證階段使用登錄帳戶(hù)(login)標(biāo)識(shí)用戶(hù)并只驗(yàn)證用戶(hù)連接MSSQLServer實(shí)例的能力。如果身份驗(yàn)證成功,用戶(hù)即可連接到MSSQLServer實(shí)例。然后用戶(hù)需要訪問(wèn)服務(wù)器上數(shù)據(jù)庫(kù)的權(quán)限,為此需授予每個(gè)數(shù)據(jù)庫(kù)中映射到用戶(hù)登錄的帳戶(hù)訪問(wèn)權(quán)限。權(quán)限驗(yàn)證階段控制用戶(hù)在MSSQLServer數(shù)據(jù)庫(kù)中所允許進(jìn)行的活動(dòng)。MSSQLServer的安全模式中包括登陸(login)、數(shù)據(jù)庫(kù)用戶(hù)(user)、權(quán)限、角色(role)等。用戶(hù)(user)與登陸(login)是兩個(gè)不同的概念,其中所有的數(shù)據(jù)庫(kù)用戶(hù)(user)必須與某一登陸(login)相匹配。MSSQLServer身份驗(yàn)證在兩種安全驗(yàn)證模式之一下工作:(1)Windows身份驗(yàn)證模式(Windows身份驗(yàn)證):Windows身份驗(yàn)證模式使用戶(hù)得以通過(guò)MicrosoftWindowsNT4.0或Windows2000用戶(hù)帳戶(hù)進(jìn)行連接。(2)混合模式(Windows身份驗(yàn)證和SQLServer身份驗(yàn)證):混合模式使用戶(hù)得以使用8《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)Windows身份驗(yàn)證或SQLServer身份驗(yàn)證與SQLServer實(shí)例連接。為了靈活起見(jiàn),一般采用混合模式。設(shè)置MSSQLServer認(rèn)證模式可以用“企業(yè)管理器”選擇服務(wù)器,用右鍵單擊服務(wù)器的彈出菜單選擇“屬性”項(xiàng),如圖4.1,點(diǎn)擊“安全性”頁(yè)。圖3.13、定義登陸與用戶(hù)方法一:圖形界面:通過(guò)“企業(yè)管理器”。在選擇服務(wù)器的“安全性”->“登陸”右鍵“添加新登陸”,如圖4.2。9《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)圖3.2單擊“數(shù)據(jù)庫(kù)訪問(wèn)”頁(yè)面,注意允許訪問(wèn)數(shù)據(jù)庫(kù)“test”,如圖4.3圖3.3這樣登陸logtest與同名用戶(hù)logtest(訪問(wèn)數(shù)據(jù)庫(kù)test)就建立起來(lái)了。如果單獨(dú)創(chuàng)建某個(gè)數(shù)據(jù)庫(kù)(如test),可在“企業(yè)管理器”->服務(wù)器->“數(shù)據(jù)庫(kù)”->“用戶(hù)”右鍵單擊用戶(hù)的彈出菜單選擇“新建數(shù)據(jù)庫(kù)用戶(hù)”,如圖3.4所示。10《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)圖3.4方法二:通過(guò)系統(tǒng)存儲(chǔ)過(guò)程(1)添加登陸,如圖4.5。圖3.5(2)添加用戶(hù),如圖4.6。圖3.64、完成授權(quán)/撤銷(xiāo)權(quán)限。觀察授權(quán)前后的變化(以表“部門(mén)”與用戶(hù)“l(fā)ogtest”為例)。(1)授權(quán)方法一:圖形界面,通過(guò)“企業(yè)管理器”->服務(wù)器->“數(shù)據(jù)庫(kù)”->“用戶(hù)”->“l(fā)ogtest”->右鍵“所有任務(wù)”->“管理權(quán)限”,如圖3.7。11《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)圖3.7方法二:GRANT命令。(2)分別以登陸“sa”(連接1)、“l(fā)ogtest”(連接2)連接數(shù)據(jù)庫(kù)“test”,如圖4.8。圖3.8(3)在連接2執(zhí)行查詢(xún),如圖4.9。圖4.9(4)在連接1執(zhí)行授權(quán),如圖3.10。12《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)圖3.10(5)在連接2執(zhí)行查詢(xún),如圖4.9。結(jié)果顯然不同,見(jiàn)圖4.11。圖3.11(5)在連接1執(zhí)行撤銷(xiāo)授予的權(quán)限,再執(zhí)行查詢(xún),其結(jié)果如圖4.9。5、設(shè)計(jì)安全機(jī)制使得用戶(hù)“test”只能查詢(xún)年齡在40歲以上(包括)職工。(1)如果用戶(hù)“test”不存在的話,按照前述方法定義用戶(hù)“test”。(2)創(chuàng)建基于表“職工”且只包含“技術(shù)科”職工視圖。(3)將“技術(shù)科”職工視圖查詢(xún)權(quán)限授予用戶(hù)“l(fā)iming”。6、設(shè)計(jì)角色“學(xué)生”,可以查看“職工”的職工號(hào)與姓名。角色(ROLE):一組權(quán)限的集合。數(shù)據(jù)庫(kù)管理員將數(shù)據(jù)庫(kù)的權(quán)限賦予角色,然后將角色再賦予給數(shù)據(jù)庫(kù)用戶(hù)或登錄帳戶(hù),從而使數(shù)據(jù)庫(kù)用戶(hù)或登錄帳戶(hù)擁有相應(yīng)的權(quán)限。MSSQLServer提供了固定服務(wù)器角色和數(shù)據(jù)庫(kù)角色,用戶(hù)可以修改固定數(shù)據(jù)庫(kù)角色的權(quán)限,也可以自己創(chuàng)建新的數(shù)據(jù)庫(kù)角色,再分配權(quán)限給新的角色。除了系統(tǒng)預(yù)定義的角色外也可以定義(CREATEROLE)。public角色是一個(gè)特殊的數(shù)據(jù)庫(kù)角色,每個(gè)數(shù)據(jù)庫(kù)用戶(hù)都屬于它。(1)定義角色“學(xué)生”。(2)創(chuàng)建基于表“職工”且只包含“職工”的職工號(hào)與姓名的職工視圖。(3)將只包含“職工”的職工號(hào)與姓名的職工視圖查詢(xún)權(quán)限授予角色“學(xué)生”。(4)將用戶(hù)“test”作為成員加入角色“學(xué)生”,這樣用戶(hù)“test”只能查看“職工”的職工號(hào)與姓名。13《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)【實(shí)驗(yàn)內(nèi)容】以教材P300題8、9為例(首先定義數(shù)據(jù)庫(kù)與表)。1、定義用戶(hù)。2、完成授權(quán)/撤銷(xiāo)權(quán)限。3、設(shè)計(jì)安全機(jī)制使得用戶(hù)“l(fā)iming”只能查詢(xún)年齡在40歲以上(包括)職工。4、設(shè)計(jì)安全機(jī)制使得用戶(hù)“l(fā)iming”只能訪問(wèn)“職工”的職工號(hào)、姓名。5、設(shè)計(jì)角色“student”,可以查看“職工”的職工號(hào)、姓名、年齡?!緦?shí)驗(yàn)作業(yè)】1、總結(jié)自主存取控制(DAC)的優(yōu)缺點(diǎn);闡述強(qiáng)制存取控制(MAC)的必要性。2、比較自主存取控制(DAC)與強(qiáng)制存取控制(MAC)的不同。3、如果違反安全性約束,應(yīng)用程序如何處理?4、如何采用觸發(fā)器實(shí)現(xiàn)安全性?例如只能在周一至周五的8:00-17:00修改職工的年齡。5、學(xué)習(xí)MSSQLSERVER的審計(jì)技術(shù)。6、學(xué)習(xí)并嘗試MSSQLServer的其它安全性約束。7、討論登錄帳號(hào)、數(shù)據(jù)庫(kù)用戶(hù)及數(shù)據(jù)庫(kù)角色之間的關(guān)系。8、探討數(shù)據(jù)庫(kù)用戶(hù)、數(shù)據(jù)庫(kù)角色與數(shù)據(jù)庫(kù)對(duì)象之間的關(guān)系,并說(shuō)明直接對(duì)用戶(hù)授權(quán)與間接對(duì)用戶(hù)授權(quán)(系統(tǒng)權(quán)限與對(duì)象權(quán)限)的方法。14《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)實(shí)驗(yàn)四數(shù)據(jù)庫(kù)設(shè)計(jì)【實(shí)驗(yàn)?zāi)康摹勘緦?shí)驗(yàn)通過(guò)學(xué)生一個(gè)應(yīng)用實(shí)例設(shè)計(jì)數(shù)據(jù)庫(kù),達(dá)到:1、掌握規(guī)范化數(shù)據(jù)庫(kù)設(shè)計(jì)包括步驟及其任務(wù)、方法、結(jié)果等。2、掌握數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中關(guān)鍵文檔的寫(xiě)法。3、了解數(shù)據(jù)庫(kù)輔助設(shè)計(jì)工具。【實(shí)驗(yàn)性質(zhì)】驗(yàn)證性實(shí)驗(yàn)【實(shí)驗(yàn)導(dǎo)讀】1、概述數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)模式,建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)(簡(jiǎn)稱(chēng)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)),使之能夠有效地存儲(chǔ)數(shù)據(jù),滿(mǎn)足各種用戶(hù)的應(yīng)用需求(包括信息要求和處理要求)。數(shù)據(jù)庫(kù)設(shè)計(jì)的一個(gè)最基本的問(wèn)題(輸出)是如何建立一個(gè)好的數(shù)據(jù)庫(kù)模式(邏輯結(jié)構(gòu)與物理結(jié)構(gòu)),如果可能的話包括基于數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)原則。即給出一定的硬件與軟件環(huán)境下(主要包括OS與DBMS),對(duì)于一定的信息需求和處理要求(輸入),如何構(gòu)造一個(gè)適合于它們的數(shù)據(jù)模式,使數(shù)據(jù)庫(kù)系統(tǒng)無(wú)論是在數(shù)據(jù)存儲(chǔ)方面,還是在數(shù)據(jù)操縱方面都有較好的性能。按照規(guī)范化設(shè)計(jì)的方法,數(shù)據(jù)庫(kù)設(shè)計(jì)分為以下六個(gè)階段:需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫(kù)實(shí)施、數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)。有些教材還包括規(guī)劃階段。為了敘述方便我們將后兩個(gè)階段合并。2、需求分析需求分析指各種需求的收集和分析、表達(dá),結(jié)果得到數(shù)據(jù)字典(DD)描述的數(shù)據(jù)需求和數(shù)據(jù)流圖(DFD)描述的處理需求。在結(jié)構(gòu)化設(shè)計(jì)方法中,需求分析采用自頂向下、逐層分解的方法。3、概念結(jié)構(gòu)設(shè)計(jì)通過(guò)對(duì)用戶(hù)需求進(jìn)行綜合、歸納與抽象,形成一個(gè)獨(dú)立于具體DBMS的概念模型,用E-R圖表示。E-R模型方法討論了實(shí)體與實(shí)體之間的數(shù)據(jù)聯(lián)系,目標(biāo)是要設(shè)計(jì)一個(gè)“好”的數(shù)據(jù)庫(kù)模型。設(shè)計(jì)E-R圖步驟:1、確定局部應(yīng)用,一般選擇合適的中間層次。在DFD中選擇適當(dāng)層次的DFD,作為設(shè)計(jì)局部E-R圖的出發(fā)點(diǎn)。中層允許有一定的重疊。2、設(shè)計(jì)局部E-R圖。(1)確定實(shí)體,第一步也是關(guān)鍵一步。DFD中數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)源、數(shù)據(jù)目的、數(shù)據(jù)存儲(chǔ)等根據(jù)具體情況決定,經(jīng)常作為實(shí)體。(2)確定聯(lián)系包括聯(lián)系名及其類(lèi)型,即標(biāo)明:1:1,1:n,n:m。原則上:與處理框相關(guān)的輸入流(數(shù)據(jù)流),輸出流(數(shù)據(jù)目的地),輸入或輸出的工作之間的可能存在的聯(lián)系。(3)屬性屬性名盡量和數(shù)據(jù)流中數(shù)據(jù)項(xiàng)名相同。為簡(jiǎn)化E-R圖,屬性可僅在DFD中描述。(4)主關(guān)鍵字屬性中標(biāo)明作為PK(primarykey)的屬性集合。(5)其它建立E-R圖,要完善DD中某些情況:描述產(chǎn)生頻率(每年/月/季),是否長(zhǎng)期保存,變化快慢,保密級(jí)別,存在的約束。3、局部E-R圖15《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)在設(shè)計(jì)局部E-R圖的基礎(chǔ)上,將局部E-R圖兩兩合并集成為全局E-R圖。集成時(shí)要解決的問(wèn)題:消除沖突、消除冗余。合并局部E-R圖中相同部分,盡可能的保留特殊部分,刪除冗余部分,用兩兩累加的方式一次集成兩個(gè)局部E-R圖。4、優(yōu)化全局E-R圖。必要時(shí)應(yīng)對(duì)全局E-R圖進(jìn)行修改,重構(gòu)和優(yōu)化得到最佳的全局E-R圖方案。4、邏輯結(jié)構(gòu)設(shè)計(jì)將概念結(jié)構(gòu)轉(zhuǎn)換為某個(gè)DBMS所支持的數(shù)據(jù)模型一般為關(guān)系模型,并對(duì)其進(jìn)行優(yōu)化。轉(zhuǎn)換時(shí)必須遵從轉(zhuǎn)換規(guī)則,每個(gè)規(guī)則強(qiáng)調(diào)轉(zhuǎn)換時(shí)必須確定每個(gè)關(guān)系的關(guān)系名、構(gòu)成的屬性、碼的確定。轉(zhuǎn)換規(guī)則可以分為三類(lèi)即實(shí)體型的轉(zhuǎn)換、聯(lián)系轉(zhuǎn)換(聯(lián)系可分為二元聯(lián)系與多元聯(lián)系兩類(lèi),二元聯(lián)系劃分成1:1、1:n、n:m三種,一元聯(lián)系同二元聯(lián)系一樣處理)、關(guān)系合并規(guī)則。5、物理結(jié)構(gòu)設(shè)計(jì)為邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(存儲(chǔ)結(jié)構(gòu)和存取方法)。6、實(shí)施與運(yùn)行、維護(hù)數(shù)據(jù)庫(kù)實(shí)施指運(yùn)用DBMS提供的數(shù)據(jù)語(yǔ)言SQL及其宿主語(yǔ)言(例如C),根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果建立數(shù)據(jù)庫(kù),編制與調(diào)試應(yīng)用程序,組織數(shù)據(jù)入庫(kù),并進(jìn)行試運(yùn)行。在編寫(xiě)SQL語(yǔ)句之前,一般會(huì)要求提供詳細(xì)說(shuō)明每個(gè)表的表實(shí)例圖(TableInstanceChart,TIC)。TIC詳細(xì)描述每個(gè)表的屬性、數(shù)據(jù)類(lèi)型及其長(zhǎng)度、各種約束(如主碼、外碼、唯一性、值域等),有些資料稱(chēng)之為數(shù)據(jù)字典(注意與需求分析的結(jié)果數(shù)據(jù)字典區(qū)分開(kāi)來(lái))。數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)經(jīng)過(guò)試運(yùn)行后即可投入正式運(yùn)行。在數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行過(guò)程中必須不斷地對(duì)其進(jìn)行評(píng)價(jià)、調(diào)整與修改。7、設(shè)計(jì)舉例下面設(shè)計(jì)一個(gè)高校教學(xué)管理系統(tǒng)作為示例,簡(jiǎn)要說(shuō)明數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程。(1)數(shù)據(jù)分析各部門(mén)對(duì)教學(xué)管理系統(tǒng)的數(shù)據(jù)要求:學(xué)生處:管理各系班級(jí)學(xué)生的基本情況。對(duì)學(xué)生而言主要有學(xué)生的學(xué)號(hào),姓名,性別,生日,家長(zhǎng),郵編,家庭住址,班編號(hào)等信息。對(duì)班級(jí)而言有班級(jí)的編號(hào),班名稱(chēng),班簡(jiǎn)稱(chēng),班長(zhǎng),層次,人數(shù),入學(xué)年度,系編號(hào)等。教務(wù)處:掌握課程的基本信息以及學(xué)生各門(mén)課程的成績(jī)情況。就課程需要掌握課程的編號(hào),課程名,學(xué)期,學(xué)分,實(shí)習(xí)周數(shù)(對(duì)實(shí)踐類(lèi)課程)。各系:登錄本系學(xué)生各門(mén)課程的成績(jī)按照前述方法,根據(jù)上述數(shù)據(jù)要求,設(shè)計(jì)了其E-R模型,如圖2.1。圖4.1教學(xué)管理E-R模型16《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)(2)E-R模型轉(zhuǎn)換為關(guān)系模型根據(jù)轉(zhuǎn)換規(guī)則將上述E-R模型經(jīng)過(guò)轉(zhuǎn)換得到5個(gè)關(guān)系模式,下劃線為主碼,紅色字體為外碼:系(系編號(hào),系名稱(chēng),系簡(jiǎn)稱(chēng),電話,系主任,班級(jí)數(shù))。對(duì)應(yīng)實(shí)體型“系”。班級(jí)(班編號(hào),班名稱(chēng),班簡(jiǎn)稱(chēng),班長(zhǎng),層次,人數(shù),入學(xué)年度,系編號(hào))。對(duì)應(yīng)實(shí)體型“班級(jí)”,包含了聯(lián)系“擁有”。學(xué)生(學(xué)號(hào),姓名,性別,生日,家長(zhǎng),郵編,家庭住址,班編號(hào))。對(duì)應(yīng)實(shí)體型“學(xué)生”,包含了聯(lián)系“組成”。課程(課程號(hào),課程名,學(xué)期,學(xué)分,實(shí)習(xí)周數(shù))。對(duì)應(yīng)實(shí)體型“課程”。選修成績(jī)(學(xué)號(hào),課程號(hào),成績(jī))。對(duì)應(yīng)聯(lián)系“選修”。(3)數(shù)據(jù)字典為了更好實(shí)施數(shù)據(jù)庫(kù),給出每個(gè)關(guān)系的詳細(xì)說(shuō)明。表名內(nèi)容Department系Class班級(jí)Student學(xué)生Course課程Grade選修成績(jī)1、Department字段名數(shù)據(jù)類(lèi)型及長(zhǎng)度字段中文名約束Dept_IDDecimal(5)系編號(hào)PrimaryKeyDepartmentvarchar(50)系名稱(chēng)NotNullDept_Abbrvarchar(10)系簡(jiǎn)稱(chēng)Phonevarchar(50)電話Directorvarchar(50)系主任No_ClassDecimal(5)班級(jí)數(shù)NotNull,Default02、Class字段名數(shù)據(jù)類(lèi)型及長(zhǎng)度字段中文名約束Class_IDChar(7)班編號(hào)PrimaryKeyDept_IDDecimal(5)系編號(hào)ForeignKeyClassNamevarchar(30)班名稱(chēng)NotNullClass_Abbrvarchar(20)班簡(jiǎn)稱(chēng)Monitorvarchar(24)班長(zhǎng)Levelvarchar(4)層次NotNull,大專(zhuān)、本科、碩士、博士Enroll_Datechar(4)入學(xué)年度NotNullNo_StudentDecimal(5)人數(shù)NotNull,Default017《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)3、Student字段名數(shù)據(jù)類(lèi)型及長(zhǎng)度字段中文名約束Student_IDvarchar(9)學(xué)號(hào)PrimaryKeyClass_IDvarchar(7)班編號(hào)ForeignKeyNamevarchar(24)姓名NotNullGendervarchar(2)性別NotNull,取值:男,女BirthdayDatetime生日NotNullAddressvarchar(50)家庭地址Zip_CodeDecimal(6)郵編HouseholderVarchar(50家長(zhǎng)4、Course字段名數(shù)據(jù)類(lèi)型及長(zhǎng)度字段中文名約束Course_IDvarchar(8)課程編號(hào)PrimaryKeyCoursevarchar(50)課程名NotNullCreditDecimal(5)學(xué)分PeriodDecimal(5)學(xué)期Practice_periodDecimal(5)實(shí)習(xí)周數(shù)5、Grade字段名數(shù)據(jù)類(lèi)型及長(zhǎng)度字段中文名約束Student_IDvarchar(9)學(xué)號(hào)ForeignKeyCourse_IDvarchar(8)課程編號(hào)ForeignKeyPrimaryKeyGradeDecimal(5)成績(jī)NotNull(4)創(chuàng)建表SQL語(yǔ)句(略)【實(shí)驗(yàn)內(nèi)容】1、對(duì)自己熟悉的應(yīng)用領(lǐng)域完成數(shù)據(jù)庫(kù)設(shè)計(jì),可以參照作業(yè)E24。2、編寫(xiě)關(guān)鍵文檔(數(shù)據(jù)流圖與數(shù)據(jù)字典、E-R圖、關(guān)系模型、索引、SQL語(yǔ)句)。3、調(diào)試相應(yīng)的SQL語(yǔ)句。E-R圖中至少3個(gè)以上實(shí)體,每個(gè)實(shí)體5個(gè)以上屬性,至少2種以上聯(lián)系。本實(shí)驗(yàn)強(qiáng)調(diào)文檔的規(guī)范性?!緦?shí)驗(yàn)作業(yè)】1、數(shù)據(jù)庫(kù)設(shè)計(jì)的輸入是什么?2、數(shù)據(jù)庫(kù)設(shè)計(jì)的輸出是什么?3、在規(guī)范化數(shù)據(jù)庫(kù)設(shè)計(jì)方法中哪些步驟對(duì)你比較困難?為什么?你是如何解決的?4、在解答教材“關(guān)系數(shù)據(jù)理論”習(xí)題9或習(xí)題10基礎(chǔ)上,分析歸納兩種設(shè)計(jì)方法的不同特點(diǎn),18《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)并總結(jié)各自的優(yōu)點(diǎn)。5、總結(jié)規(guī)范化數(shù)據(jù)庫(kù)設(shè)計(jì)方法的優(yōu)缺點(diǎn)。6、如有可能,選擇有關(guān)輔助設(shè)計(jì)工具進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)??偨Y(jié)此種工具的特點(diǎn)。19《數(shù)據(jù)庫(kù)系統(tǒng)原理》實(shí)驗(yàn)指導(dǎo)書(shū)實(shí)驗(yàn)五數(shù)據(jù)庫(kù)恢復(fù)技術(shù)【實(shí)驗(yàn)?zāi)康摹?、在掌握事務(wù)的概念基礎(chǔ)上,理解事務(wù)特性。2、掌握數(shù)據(jù)庫(kù)恢復(fù)原理。3、熟悉SQLSERVER的基本恢復(fù)技術(shù)?!緦?shí)驗(yàn)性質(zhì)】驗(yàn)證性實(shí)驗(yàn)【實(shí)驗(yàn)導(dǎo)讀】1、事務(wù)概述事務(wù)是指一個(gè)操作序列,這些操作序列要么全做,要么全都不做,它是一個(gè)不可分割的工作單位。事務(wù)中任何一個(gè)語(yǔ)句執(zhí)行時(shí)出錯(cuò),系統(tǒng)都會(huì)返回到事務(wù)開(kāi)始前的狀態(tài)。事務(wù)是并發(fā)控制的基本單元,是數(shù)據(jù)庫(kù)維護(hù)數(shù)據(jù)一致性的單位。在每個(gè)事務(wù)結(jié)束時(shí),都能保持?jǐn)?shù)據(jù)一致性。事務(wù)中不能包含CREATEDATABASE語(yǔ)句。在MSSQLServer中,對(duì)事務(wù)的管理包含3個(gè)方面:事務(wù)控制語(yǔ)句:控制事務(wù)執(zhí)行的語(yǔ)句。包括將一系列操作定義為一個(gè)工作單元來(lái)處理。封鎖機(jī)制:封鎖正被一個(gè)事務(wù)修改的數(shù)據(jù),防止其他用戶(hù)訪問(wèn)到“不一致”的數(shù)據(jù)。事務(wù)日志:使事務(wù)具有可恢復(fù)性。事務(wù)的控制語(yǔ)句包括以下幾條:BEGINTRAN:標(biāo)識(shí)一個(gè)用戶(hù)定義事務(wù)的開(kāi)始。tran_name為事務(wù)的名字。COMMITTRAN:表示提交事務(wù)中的一切操作,結(jié)束一個(gè)用戶(hù)定義的事務(wù)。ROLLBACKTRAN:回滾一個(gè)事務(wù)到事務(wù)的開(kāi)頭或一個(gè)保存點(diǎn)。表示要撤消該事務(wù)已做的操作,回滾到事務(wù)開(kāi)始前或保存點(diǎn)前的狀態(tài)。SAVETRANsave_name:在事務(wù)中設(shè)置一個(gè)保存點(diǎn)。它可以使一個(gè)事務(wù)內(nèi)的部分操作回滾。不同的數(shù)據(jù)庫(kù)管理系統(tǒng)提供的封鎖類(lèi)型、封鎖協(xié)議、達(dá)到的系統(tǒng)一致性級(jí)別不盡相同。但是其依據(jù)的基本原理和技術(shù)是共同的。2、數(shù)據(jù)庫(kù)恢復(fù)技術(shù)概述數(shù)據(jù)庫(kù)恢復(fù)技術(shù)確保數(shù)據(jù)庫(kù)處于一致性狀態(tài),保證事務(wù)ACID特性的基礎(chǔ)。數(shù)據(jù)庫(kù)的備份與恢復(fù)是兩個(gè)相對(duì)應(yīng)的概念,備份是恢復(fù)的基礎(chǔ),恢復(fù)是備份的目的。數(shù)據(jù)庫(kù)備份是指系統(tǒng)管理員定期或不定期地將數(shù)據(jù)庫(kù)部分或全部?jī)?nèi)容復(fù)制到磁帶或另一個(gè)磁盤(pán)上(或其它存儲(chǔ)設(shè)備)保存起來(lái)的過(guò)程。備份可分為靜態(tài)備份和動(dòng)態(tài)備份。數(shù)據(jù)庫(kù)恢復(fù)是指在數(shù)據(jù)庫(kù)遭到破壞時(shí)使數(shù)據(jù)庫(kù)從有效的備份中恢復(fù)正常。備份期間不允許對(duì)數(shù)據(jù)庫(kù)進(jìn)行任何存取、修改活動(dòng)的備份方式稱(chēng)為靜態(tài)備份。備份期間允許對(duì)數(shù)據(jù)庫(kù)進(jìn)行存取或修改,即各份和用戶(hù)事務(wù)可以并發(fā)執(zhí)行的備份方式稱(chēng)為動(dòng)態(tài)備份。在SQLServer中可創(chuàng)建維護(hù)數(shù)據(jù)庫(kù)的備份設(shè)備,使用EnterpriseManager或系統(tǒng)存儲(chǔ)過(guò)程來(lái)規(guī)劃和執(zhí)行備份操作和恢復(fù)操作。確定備份計(jì)劃主要考慮以下幾個(gè)方面:(1)確定備份的頻率。確定備份頻率要考慮兩個(gè)因素:一是系統(tǒng)恢復(fù)時(shí)的工作量,二是系統(tǒng)活動(dòng)的事務(wù)量。對(duì)于完整數(shù)據(jù)庫(kù)備份,可以是每個(gè)月、每一周甚至是每一天進(jìn)行,而事務(wù)日志備份可以是每一周、每一天甚至是每一小時(shí)進(jìn)行。(2)確定備份的內(nèi)容。確定數(shù)據(jù)庫(kù)中的哪些數(shù)據(jù)需要備份。(3)確定備份的介質(zhì)。確定是使用磁盤(pán)、還是磁帶作為備份的介質(zhì)。(4)確定備份的方式。確定備份采用動(dòng)態(tài)備份還是靜態(tài)備份。(5)估計(jì)備份需要的存儲(chǔ)空間量。在執(zhí)行備份前,應(yīng)該估計(jì)備份需要使用的存儲(chǔ)空間量。(6)確

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論