數(shù)據(jù)庫習題解答_第1頁
數(shù)據(jù)庫習題解答_第2頁
數(shù)據(jù)庫習題解答_第3頁
已閱讀5頁,還剩42頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

WORD格式專業(yè)資料整理數(shù)據(jù)庫原理與應(yīng)用教程 ―SQLServer習題解答第1章 習題1.數(shù)據(jù)庫的發(fā)展歷史分哪幾個階段?各有什么特點?答:數(shù)據(jù)庫技術(shù)經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)三個階段。1)人工管理階段這個時期數(shù)據(jù)管理的特點是:數(shù)據(jù)由計算或處理它的程序自行攜帶,數(shù)據(jù)和應(yīng)用程序一一對應(yīng),應(yīng)用程序依賴于數(shù)據(jù)的物理組織,因此數(shù)據(jù)的獨立性差,數(shù)據(jù)不能被長期保存,數(shù)據(jù)的冗余度大等給數(shù)據(jù)的維護帶來許多問題。2)文件系統(tǒng)階段在此階段,數(shù)據(jù)以文件的形式進行組織,并能長期保留在外存儲器上,用戶能對數(shù)據(jù)文件進行查詢、修改、插入和刪除等操作。程序與數(shù)據(jù)有了一定的獨立性,程序和數(shù)據(jù)分開存儲,然而依舊存在數(shù)據(jù)的冗余度大及數(shù)據(jù)的不一致性等缺點。3)數(shù)據(jù)庫系統(tǒng)階段數(shù)據(jù)庫系統(tǒng)的特點如下:1)數(shù)據(jù)結(jié)構(gòu)化2)較高的數(shù)據(jù)共享性3)較高的數(shù)據(jù)獨立性4)數(shù)據(jù)由DBMS?統(tǒng)一管理和控制2.簡述數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫應(yīng)用系統(tǒng)的概念。答:數(shù)據(jù)是描述事物的符號記錄,是信息的載體,是信息的具體表現(xiàn)形式。數(shù)據(jù)庫就是存放數(shù)據(jù)的倉庫,是將數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲,能夠自動進行查詢和修改的數(shù)據(jù)集合。數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心,是為數(shù)據(jù)庫的建立、使用和維護而配置的軟件。它建立在操作系統(tǒng)的基礎(chǔ)上,位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,它為用戶或應(yīng)用程序提供訪問數(shù)據(jù)庫的方法,包括數(shù)據(jù)庫的創(chuàng)建、查詢、更新及各種數(shù)據(jù)控制等。數(shù)據(jù)庫應(yīng)用系統(tǒng):凡使用數(shù)據(jù)庫技術(shù)管理其數(shù)據(jù)的系統(tǒng)都稱為數(shù)據(jù)庫應(yīng)用系統(tǒng)。3.簡述數(shù)據(jù)庫管理系統(tǒng)的功能。答:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心軟件,一般說來,其功能主要包括以下5個方面。數(shù)據(jù)定義和操縱功能數(shù)據(jù)庫運行控制功能數(shù)據(jù)庫的組織、存儲和管理建立和維護數(shù)據(jù)庫1數(shù)據(jù)通信接口4.簡述數(shù)據(jù)庫的三級模式和兩級映像。答:為了保障數(shù)據(jù)與程序之間的獨立性,使用戶能以簡單的邏輯結(jié)構(gòu)操作數(shù)據(jù)而無需考慮數(shù)據(jù)的物理結(jié)構(gòu),簡化了應(yīng)用程序的編制和程序員的負擔,增強系統(tǒng)的可靠性。通常DBMS將數(shù)據(jù)庫的體系結(jié)構(gòu)分為三級模式:外模式、模式和內(nèi)模式。模式也稱概念模式或邏輯模式,是對數(shù)據(jù)庫中全部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。外模式也稱子模式或用戶模式,它是對數(shù)據(jù)庫用戶能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述。內(nèi)模式也稱存儲模式或物理模式,是對數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式,一個數(shù)據(jù)庫只有一個內(nèi)模式。三級模式結(jié)構(gòu)之間差別往往很大, 為了實現(xiàn)這 3個抽象級別的聯(lián)系和轉(zhuǎn)換, DBMS在三級模式結(jié)構(gòu)之間提供了兩級映像:外模式 /模式映像,模式 /內(nèi)模式映像。5.簡述數(shù)據(jù)庫的邏輯獨立性和物理獨立性。答:當模式改變時 (如增加新的關(guān)系、新的屬性、改變屬性的數(shù)據(jù)類型等 ),由數(shù)據(jù)庫管理員對各個外模式 /模式映像作相應(yīng)改變,可以使外模式保持不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的, 因而應(yīng)用程序不必修改, 保證了數(shù)據(jù)與程序的邏輯獨立性, 簡稱邏輯數(shù)據(jù)獨立性。當數(shù)據(jù)庫的存儲結(jié)構(gòu)改變了 (如選用了另一種存儲結(jié)構(gòu) ),由數(shù)據(jù)庫管理員對模式 /內(nèi)模式映像作相應(yīng)改變, 可以保證模式保持小變, 因而應(yīng)用程序也不必改變。 保證了數(shù)據(jù)與程序的物理獨立性,簡稱物理數(shù)據(jù)獨立性。6.信息有哪三種世界,它們各有什么特點,它們之間有什么聯(lián)系?答:現(xiàn)實世界、信息世界和機器世界現(xiàn)實世界就是存在于人腦之外的客觀世界, 客觀事物及其相互聯(lián)系就處于現(xiàn)實世界中。信息世界就是現(xiàn)實世界在人們頭腦中的反映, 又稱概念世界??陀^事物在信息世界中稱為實體,反映事物間聯(lián)系的是實體模型或概念模型。數(shù)據(jù)世界就是信息世界中的信息數(shù)據(jù)化后對應(yīng)的產(chǎn)物。 現(xiàn)實世界中的客觀事物及其聯(lián)系,在數(shù)據(jù)世界中以數(shù)據(jù)模型描述。計算機信息處理的對象是現(xiàn)實生活中的客觀事物,在對客觀事物實施處理的過程中,首先要經(jīng)歷了解、熟悉的過程,從觀測中抽象出大量描述客觀事物的信息, 再對這些信息進行整理、 分類和規(guī)范,進而將規(guī)范化的信息數(shù)據(jù)化, 最終由數(shù)據(jù)庫系統(tǒng)存儲、處理。7.什么是概念模型,什么是數(shù)據(jù)模型?答:概念模型是現(xiàn)實世界的抽象反映,它表示實體類型及實體間的聯(lián)系,是獨立于計算機系統(tǒng)的模型,是現(xiàn)實世界到機器世界的一個中間層次。數(shù)據(jù)模型是對客觀事物及聯(lián)系的數(shù)據(jù)描述,是概念模型的數(shù)據(jù)化,即數(shù)據(jù)模型提供表示和組織數(shù)據(jù)的方法。28.什么是實體、屬性、碼、聯(lián)系?實體的聯(lián)系有哪三種?答:客觀存在并可以相互區(qū)分的事物叫實體。屬性是實體所具有的某些特性,通過屬性對實體進行描述。一個實體往往有多個屬性, 這些屬性之間是有關(guān)系的, 它們構(gòu)成該實體的屬性集合。如果其中有一個屬性或?qū)傩约軌蛭ㄒ粯俗R整個屬性集合,則稱該屬性或?qū)傩约癁樵搶嶓w的碼?,F(xiàn)實世界的事物之間是有聯(lián)系的, 即各實體型之間是有聯(lián)系的。 就兩個實體型的聯(lián)系來說,主要有以下 3種情況:一對一聯(lián)系 (1:1)、一對多聯(lián)系 (1:M)和多對多聯(lián)系 (M:。9.分析層次模型、網(wǎng)狀模型和關(guān)系模型的特點。答:層次模型用樹形結(jié)構(gòu)來表示各類實體以及實體間的聯(lián)系。每個結(jié)點表示一個記錄類型,結(jié)點之間的連線表示記錄類型間的聯(lián)系,這種聯(lián)系只能是父子聯(lián)系。層次模型存在如下特點:1)只有一個結(jié)點沒有雙親結(jié)點,稱為根結(jié)點。2)根結(jié)點以外的其他結(jié)點有且只有一個雙親結(jié)點。網(wǎng)狀數(shù)據(jù)模型是一種比層次模型更具普遍性的結(jié)構(gòu),它去掉了層次模型的兩個限制,允許多個結(jié)點沒有雙親結(jié)點,也允許一個結(jié)點有多個雙親結(jié)點。因此,網(wǎng)狀模型可以方便地表示各種類型的聯(lián)系。網(wǎng)狀模型是一種較為通用的模型,從圖論的觀點看,它是一個不加任何條件的無向圖。用二維表格結(jié)構(gòu)表示實體以及實體之間的聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型。 關(guān)系模型在用戶看來是一個二維表格。10.解釋關(guān)系模型的基本概念: 關(guān)系、元組、屬性、域、關(guān)系模式、候選關(guān)鍵字、主鍵、外鍵、主屬性。答:關(guān)系:一個關(guān)系就是一張二維表。元組:二維表中的行稱為元組,每一行是一個元組。屬性:二維表的列稱為屬性,每一列有一個屬性名,屬性值是屬性的具體值。域:是屬性的取值范圍。關(guān)系模式:對關(guān)系的信息結(jié)構(gòu)及語義限制的描述稱為關(guān)系模式, 用關(guān)系名和包含的屬性名的集合表示。候選關(guān)鍵字:如果在一個關(guān)系中,存在多個屬性 (或?qū)傩越M合)都能用來唯一標識該關(guān)系中的元組,這些屬性(或?qū)傩越M合)都稱為該關(guān)系的候選關(guān)鍵字或候選碼,候選碼可以有多個。主鍵:在一個關(guān)系的若干候選關(guān)鍵字中,被指定作為關(guān)鍵字的候選關(guān)鍵字稱為該關(guān)的主鍵或主碼。主屬性:在一個關(guān)系中,包含在任何候選關(guān)鍵字中的各個屬性稱為主屬性。外鍵:一個關(guān)系的某個屬性(或?qū)傩越M合)不是該關(guān)系的主鍵或只是主鍵的一部分,卻是另一個關(guān)系的主碼,則稱這樣的屬性為該關(guān)系的外鍵或外碼。11.設(shè)某工廠數(shù)據(jù)庫中有四個實體集。一是“倉庫”實體集,屬性有倉庫號、倉庫面積3等;二是“零件”實體集,屬性有零件號、零件名、規(guī)格、單價等;三是“供應(yīng)商”實體集,屬性有供應(yīng)商號、供應(yīng)商名、地址等;四是“保管員”實體集,屬性有職工號、姓名等。設(shè)倉庫與零件之間有“存放”聯(lián)系,每個倉庫可存放多種零件,每種零件可存放于若干倉庫中,每個倉庫存放每種零件要記錄庫存量;供應(yīng)商與零件之間有“供應(yīng)”聯(lián)系,一個供應(yīng)商可供應(yīng)多種零件,每種零件也可由多個供應(yīng)商提供,每個供應(yīng)商每提供一種零件要記錄供應(yīng)量;倉庫與保管員之間有“工作”聯(lián)系,一個倉庫可以有多名保管員,但一名保管員只能在一個倉庫工作。試為該工廠的數(shù)據(jù)庫設(shè)計一個 ER模型,要求標注聯(lián)系類型,可省略實體屬性。答:ER模型零件號零件名規(guī)格單價供應(yīng)商號保管員M工作1倉庫M存放N零件M供應(yīng)N供應(yīng)商地址職工號 姓名 倉庫號 倉庫面積 庫存量 供應(yīng)量 供應(yīng)商名12.某網(wǎng)上訂書系統(tǒng),涉及如下信息:1)客戶:客戶號、姓名、地址、聯(lián)系電話。2)圖書:書號、書名、出版社、單價。3)訂單:訂單號、日期、付款方式、總金額。其中:一份訂單可訂購多種圖書,每種圖書可訂購多本;一位客戶可有多份訂單,一份訂單僅對應(yīng)一位客戶。根據(jù)以上敘述,建立 E-R模型,要求標注聯(lián)系類型。答:訂單號日期付款方式書號客戶號1M訂單MN書名客戶擁有訂購圖書姓名出版社地址聯(lián)系電話總金額數(shù)量單價第2章 習題1.關(guān)系數(shù)據(jù)模型由哪三個要素組成。答:關(guān)系數(shù)據(jù)模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。2.簡述關(guān)系的性質(zhì)。4答:(1)列是同質(zhì)的,即每一列中的分量是同一類型的數(shù)據(jù),來自同一個域。在同一個關(guān)系中,不同的列的數(shù)據(jù)可以是同一種數(shù)據(jù)類型,但各屬性的名稱都必須是互不相同。同一個關(guān)系中,任意兩個元組都不能完全相同。在一個關(guān)系中,列的次序無關(guān)緊要。即列的排列順序是不分先后的。在一個關(guān)系中,元組的位置無關(guān)緊要。即排行不分先后,可以任意交換兩行的位置。關(guān)系中的每個屬性必須是單值,即不可再分,這就要求關(guān)系的結(jié)構(gòu)不能嵌套。這是關(guān)系應(yīng)滿足的最基本的條件。3.簡述關(guān)系的完整性。答:關(guān)系模型允許定義三類完整性約束: 實體完整性、參照完整性和用戶自定義的完整性約束。實體完整性規(guī)則要求關(guān)系中元組在組成主碼的屬性上不能有空值。參照完整性規(guī)則:若屬性(或?qū)傩越M) F是基本關(guān)系 R的外碼,它與基本關(guān)系 S的主碼Ks相對應(yīng)(基本關(guān)系R和S可能是相同的關(guān)系),則對于R中每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值);或者等于S中某個元組的主碼值。用戶定義的完整性規(guī)則由用戶根據(jù)實際情況對數(shù)據(jù)庫中數(shù)據(jù)的內(nèi)容進行的規(guī)定, 也稱為域完整性規(guī)則。4.傳統(tǒng)的集合運算和專門的關(guān)系運算都有哪些。答:(1)傳統(tǒng)的集合操作:并、差、交、笛卡兒積 。專門的關(guān)系操作:投影(對關(guān)系進行垂直分割)、選擇(水平分割)、連接(關(guān)系的結(jié)合)、除法(笛卡兒積的逆運算)等。5.解釋下列術(shù)語的含義:函數(shù)依賴、平凡函數(shù)依賴、非平凡函數(shù)依賴、部分函數(shù)依賴、完全函數(shù)依賴、傳遞函數(shù)依賴、范式。答:函數(shù)依賴:指在關(guān)系R中,X、Y為R的兩個屬性或?qū)傩越M,如果對于R的所有關(guān)系r都存在:對于X的每一個具體值,Y都只有一個具體值與之對應(yīng),則稱屬性Y函數(shù)依賴于屬性X。記作X→Y。當Y不函數(shù)依賴于X時,記作:XY。當X→Y且Y→X時,則記作:X?Y。平凡函數(shù)依賴:設(shè)關(guān)系模式R(U),U是R上的屬性集,X、Y?U;如果X→Y,且Y?X,則稱X→Y為平凡的函數(shù)依賴。非平凡函數(shù)依賴、如果X→Y,且Y不是X的子集,則稱X→Y為非平凡的函數(shù)依賴。完全函數(shù)依賴:設(shè)關(guān)系模式R(U),U是R上的屬性集,X、Y?U;如果X→Y,并且對于X的任何一個真子集Z,Z→Y都不成立,則稱Y完全函數(shù)依賴于X;部分函數(shù)依賴:如果X→Y,但對于X的某一個真子集Z,有Z→Y成立,則稱Y部分函數(shù)依賴于X。傳遞函數(shù)依賴: 設(shè)關(guān)系模式 R(U),X?U,Y?U,Z?U;如果X→Y,Y→Z成立,5Y→X不成立,且Z-X、Z-Y和Y-X均不空,則稱X→Z為傳遞函數(shù)依賴。范式:范式(NormalForm)是符合某一種級別的關(guān)系模式的集合,是衡量關(guān)系模式規(guī)范化程度的標準,達到的關(guān)系才是規(guī)范化的。6.簡述非規(guī)范化的關(guān)系中存在哪些問題。答:①數(shù)據(jù)冗余 ②更新異常 ③插入異常 ④刪除異常7.簡述關(guān)系模式規(guī)范化的目的。答:關(guān)系模式規(guī)范化的目的是解決關(guān)系模式中存在的數(shù)據(jù)冗余、 插入和刪除異常以及更新異常等問題。其基本思想是消除數(shù)據(jù)依賴中的不合適部分,使各關(guān)系模式達到某種程度的分離,使一個關(guān)系描述一個概念、一個實體或?qū)嶓w間的一種聯(lián)系。因此,規(guī)范化的實質(zhì)是概念的單一化。8.根據(jù)給定的關(guān)系模式進行查詢。設(shè)有學生-課程關(guān)系數(shù)據(jù)庫,它由三個關(guān)系組成,它們的模式是:學生S(學號S#,姓名SN,所在系SD,年齡SA)、課程C(課程號C#,課程名CN,先修課號PC#)、SC(學號S#,課程號C#,成績G)。請用關(guān)系代數(shù)分別寫出下列查詢:(1)檢索學生年齡大于等于20歲的學生姓名?!?σ≥20(S))SNSA檢索先修課號為C2的課程號?!荂#(σPC#=?C2?(C))檢索課程號C1的成績?yōu)?0分以上的所有學生姓名。∏SN(σC#=?C1?∧G>=90(S∞SC))檢索001號學生修讀的所有課程名及先修課號。∏CN,PC#(σS#=?001?(C∞SC))檢索年齡為19歲的學生所選修的課程名?!荂N(σSA=19(C∞SC∞S))9.要建立關(guān)于系、學生、班級、研究會等信息的一個關(guān)系數(shù)據(jù)庫。規(guī)定:一個系有若干專業(yè)、每個專業(yè)每年只招一個班,每個班有若干學生,一個系的學生住在同一個宿舍區(qū)。每個學生可參加若干研究會,每個研究會有若干學生。學生參加某研究會,有一個入會年份。描述學生的屬性有:學號、姓名、出生年月、系名、班號、宿舍區(qū)。描述班級的屬性有:班號、專業(yè)名、系名、人數(shù)、入校年份。描述系的屬性有:系號、系名、系辦公室地點、人數(shù)。描述研究會的屬性有:研究會名、成立年份、地點、人數(shù)。試給出上述數(shù)據(jù)庫的關(guān)系模式;寫出每個關(guān)系的基本的函數(shù)依賴集;指出是否存在傳遞函數(shù)依賴,指出各關(guān)系的主碼和外碼。答:關(guān)系模式:學生(學號,姓名,出生年月,系號,班號,宿舍區(qū))班級(班號,專業(yè)名,系號,人數(shù),入校年份)系(系號,系名,系辦公室地點,人數(shù))6研究會(研究會名,成立年份,地點,人數(shù))參加研究會(學號 ,研究會名 ,入會年份)學生關(guān)系的基本函數(shù)依賴集:學號→(姓名,出生年月,系號,班號) ,系號→宿舍區(qū)班級關(guān)系的基本函數(shù)依賴集:班號→(專業(yè)名,系號,人數(shù),入校年份)系關(guān)系的基本函數(shù)依賴集:系號→(系名,系辦公室地點,人數(shù))研究會關(guān)系的基本函數(shù)依賴集:研究會名→(成立年份,地點,人數(shù))參加研究會關(guān)系的基本函數(shù)依賴集:(學號,研究會名)→入會年份10.設(shè)有關(guān)系模式R(運動員編號,姓名,性別,班級,班主任,項目號,項目名,成績)如果規(guī)定:每名運動員只能代表一個班級參加比賽,每個班級只能有一個班主任;每名運動員可參加多個項目,每個比賽項目也可由多名運動員參加;每個項目只能有一個項目名;每名運動員參加一個項目只能有一個成績。根據(jù)上述語義,回答下列問題:寫出關(guān)系模式R的主關(guān)鍵字;分析R最高屬于第幾范式,說明理由。若R不是3NF,將其分解為3NF。答:(1)關(guān)系模式 R的主關(guān)鍵字是 {運動員編號,項目號 }。(2)R最高屬于第一范式。因為存在著姓名,性別,班級和項目名對主關(guān)鍵字{運動員編號,項目號}的部分函數(shù)依賴,沒有達到2NF。3)首先分解為2NF:R1(運動員編號,姓名,性別,班級,班主任),R2(項目號,項目名),R3(運動員編號,項目號,成績)因為R1存在班主任對運動員編號的傳遞函數(shù)依賴,所以沒有達到 3NF,再分解為3NF:R1分解為R1(運動員編號,姓名,性別,班級)和 R4(班級,班主任)11.設(shè)有關(guān)系模式: R(職工號,日期,日營業(yè)額,部門名,部門經(jīng)理)如果規(guī)定:每個職工每天只有一個營業(yè)額,每個職工只在一個部門工作,每個部門只有一個經(jīng)理。根據(jù)上述規(guī)定,寫出模式R主關(guān)鍵字。分析R最高屬于第幾范式,說明理由。若R不是3NF,將其分解為3NF。答:(1)關(guān)系模式 R的主關(guān)鍵字是(職工號,日期)。(2)R最高屬于第一范式。因為存在著部門名對主關(guān)鍵字(職工號,日期)的部分函數(shù)依賴,沒有達到 2NF。3)首先分解為2NF:R1(職工號,部門名,部門經(jīng)理),R2(職工號,日期,日營業(yè)額)因為 R1存在部門經(jīng)理對職工號的傳遞函數(shù)依賴,所以沒有達到 3NF,再分解為3NF:R1分解為R1(職工號,部門名)和 R3(部門名,部門經(jīng)理)第3章 習題71.簡述數(shù)據(jù)庫設(shè)計過程。答:數(shù)據(jù)庫設(shè)計可分為以下六個階段: 需求分析階段、概念結(jié)構(gòu)設(shè)計階段、 邏輯結(jié)構(gòu)設(shè)計階段、數(shù)據(jù)庫物理設(shè)計階段、數(shù)據(jù)庫實施階段以及數(shù)據(jù)庫運行和維護階段。2.簡述數(shù)據(jù)庫設(shè)計過程的各個階段上的設(shè)計任務(wù)。答:需求分析的任務(wù)是通過詳細調(diào)查現(xiàn)實世界要處理的對象 (組織、 部門、 企業(yè)等),充分了解原系統(tǒng)(手工系統(tǒng)或計算機系統(tǒng))工作概況,明確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。概念設(shè)計階段要做的工作不是直接將需求分析得到的數(shù)據(jù)存儲格式轉(zhuǎn)換為 DBMS能處理的數(shù)據(jù)庫模式,而是將需求分析得到的用戶需求抽象為反映用戶觀點的概念模型。邏輯設(shè)計的主要目標是產(chǎn)生一個 DBMS可處理的數(shù)據(jù)模型和數(shù)據(jù)庫模式。該模型必須滿足數(shù)據(jù)庫的存取、一致性及運行等各方面的用戶需求。將邏輯設(shè)計中產(chǎn)生的數(shù)據(jù)庫邏輯模型結(jié)合指定的 DBMS,設(shè)計出最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)的過程,稱為數(shù)據(jù)庫的物理結(jié)構(gòu)設(shè)計。根據(jù)邏輯和物理設(shè)計的結(jié)果,在計算機上建立起實際的數(shù)據(jù)庫結(jié)構(gòu),并裝入數(shù)據(jù),進行試運行和評價的過程,叫做數(shù)據(jù)庫的實施(或?qū)崿F(xiàn)) 。維護工作包括以下內(nèi)容:數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù);數(shù)據(jù)庫的安全性和完整性控制;數(shù)據(jù)庫性能的監(jiān)督、分析和改造;數(shù)據(jù)庫的重組織和重構(gòu)造。3.簡述數(shù)據(jù)庫設(shè)計的概念。答:數(shù)據(jù)庫設(shè)計是對于給定的應(yīng)用環(huán)境, 在關(guān)系數(shù)據(jù)庫理論的指導(dǎo)下, 構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,在數(shù)據(jù)庫管理系統(tǒng)上建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng), 使之能有效地存儲數(shù)據(jù), 滿足用戶的各種需求的過程。4.簡述數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計的方法和設(shè)計步驟。答:方法:(1)自頂向下法 (2)自底向上法 (3)逐步擴張法 (4)混合策略在概念結(jié)構(gòu)設(shè)計時,可以分為兩步。進行數(shù)據(jù)抽象,設(shè)計局部 E-R模型,即設(shè)計用戶視圖;集成各局部 E-R模型,形成全局 E-R模型,即視圖的集成。5.什么是數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計 ?試述其設(shè)計步驟。答:邏輯設(shè)計的主要目標是產(chǎn)生一個 DBMS可處理的數(shù)據(jù)模型和數(shù)據(jù)庫模式。該模型必須滿足數(shù)據(jù)庫的存取、一致性及運行等各方面的用戶需求。其邏輯結(jié)構(gòu)設(shè)計階段一般要分為三步進行:將 E-R圖轉(zhuǎn)化為關(guān)系數(shù)據(jù)模型,關(guān)系模式的優(yōu)化,設(shè)計用戶外模式。6.簡述把 E-R圖轉(zhuǎn)換為關(guān)系模型的轉(zhuǎn)換規(guī)則。答:一個實體轉(zhuǎn)化為一個關(guān)系模式。 實體的屬性就是該關(guān)系模式的屬性。 實體的主碼就是該關(guān)系模式的主碼。兩實體間 1:1聯(lián)系可以轉(zhuǎn)換為一個獨立的關(guān)系模式, 也可以與任意一端對應(yīng)的關(guān)系模式合并。兩實體間 1:N聯(lián)系可以轉(zhuǎn)換為一個獨立的關(guān)系模式,也可以與 N端對應(yīng)的關(guān)系模式合并。8同一實體間的1:N聯(lián)系可在這個實體所對應(yīng)的關(guān)系模式中多設(shè)一個屬性,用來作為與該實體相聯(lián)系的另一個實體的主碼。兩實體間M:N聯(lián)系,必須為聯(lián)系產(chǎn)生一個新的關(guān)系模式。該關(guān)系模式中至少包含被它所聯(lián)系的雙方實體的主碼,若聯(lián)系中有屬性,也要并入該關(guān)系模式中。同一實體間M:N聯(lián)系,必須為聯(lián)系產(chǎn)生一個新的關(guān)系模式。該關(guān)系模式中至少包含被它所聯(lián)系的雙方實體的主碼,若聯(lián)系有屬性,也要并入該關(guān)系模式中。由于這個“聯(lián)系”只涉及一個實體,所以加入的實體的主碼不能相同。兩個以上實體集之間M:N的聯(lián)系,必須為聯(lián)系產(chǎn)生一個新的關(guān)系模式,該關(guān)系模式中至少包含被它所聯(lián)系的所有實體的主碼,若聯(lián)系有屬性,也要并入該關(guān)系模式中。7.將圖1學生信息數(shù)據(jù)庫系統(tǒng)的E-R圖轉(zhuǎn)換為關(guān)系模型。課程名學分學號姓名課程M選修N學生屬于1班級班級名 班主任課程號 成績 性別 年齡圖1習題7圖答:課程(課程號,課程名,學分)學生(學號,姓名,性別,年齡,班級名)班級(班級名,班主任)選修(學號,課程號,成績)8.一個設(shè)備銷售管理系統(tǒng)中有如下信息:設(shè)備:設(shè)備編號、設(shè)備名稱、型號規(guī)格、數(shù)量部門:部門編號、部門名稱、部門經(jīng)理、電話客戶:客戶編號、客戶名稱、地址、電話其中:任何設(shè)備都可以銷售給多個客戶,每個客戶購買一種設(shè)備都要登記購買數(shù)量;一個部門可以管理多種設(shè)備,一種設(shè)備僅由一個部門來調(diào)動管理。根據(jù)以上情況,完成如下設(shè)計:1)設(shè)計系統(tǒng)的E-R圖;2)將E-R圖轉(zhuǎn)換為關(guān)系模式,標出每個關(guān)系模式的主碼。答:(1)E-R圖客戶名稱設(shè)備編號設(shè)備名稱部門編號客戶編號電話客戶M購買NM管理1部門設(shè)備地址地址電話購買數(shù)量數(shù)量型號規(guī)格部門名稱92)關(guān)系模式設(shè)備(設(shè)備編號,設(shè)備名稱,型號規(guī)格,數(shù)量)部門(部門編號,部門名稱,部門經(jīng)理,電話,設(shè)備編號)客戶(客戶編號,客戶名稱,地址,電話)購買情況(客戶編號,設(shè)備編號,購買數(shù)量)某電子商務(wù)網(wǎng)站要求提供下述服務(wù):可隨時查詢庫存中現(xiàn)有物品的名稱、數(shù)量和單價,所有物品均應(yīng)由物品編號唯一標識;可隨時查詢顧客訂貨情況,包括顧客號、顧客名、所訂物品編號、訂購數(shù)量、聯(lián)系方式、交貨地點,所有顧客編號不重復(fù); 當需要時,可通過數(shù)據(jù)庫中保存的供應(yīng)商名稱、電話、郵編與地址信息向相應(yīng)供應(yīng)商訂貨,一個編號貨物只由 1個供應(yīng)商供貨。根據(jù)以上要求,完成如下任務(wù):1)根據(jù)語義設(shè)計出E-R模型;2)將該E-R模型轉(zhuǎn)換為一組等價的關(guān)系模式,并標出各關(guān)系模式的主碼。答:(1)E-R圖顧客編號 物品編號 物品名稱 郵編電話顧客名顧客 M 訂購 N 物品 M 供應(yīng) 1 供應(yīng)商地址聯(lián)系方式交貨地點數(shù)量 單價 供應(yīng)商名稱訂購數(shù)量(2)關(guān)系模式顧客(顧客編號,顧客名,聯(lián)系方式)物品(物品編號,物品名稱,數(shù)量,單價,供應(yīng)商名稱)供應(yīng)商(供應(yīng)商名稱,地址,電話,郵編)訂購情況(顧客編號,物品編號,訂購數(shù)量,交貨地點)根據(jù)轉(zhuǎn)換規(guī)則,將第2章習題第11題中E-R模型轉(zhuǎn)換成關(guān)系模型,要求標注每個關(guān)系模型的主鍵和外鍵(如果存在)。關(guān)系模式:倉庫(倉庫號,倉庫面積)零件(零件號,零件名,規(guī)格,單價)供應(yīng)商(供應(yīng)商號,供應(yīng)商名,地址)保管員(職工號,姓名,倉庫號)庫存(倉庫號,零件號,庫存量)10供應(yīng)(供應(yīng)商號,零件號,供應(yīng)量)根據(jù)轉(zhuǎn)換規(guī)則,將第2章習題第12題中E-R模型轉(zhuǎn)換成關(guān)系模型,要求標明每個關(guān)系模式的主鍵和外鍵。關(guān)系模式:客戶(客戶號,姓名,地址,聯(lián)系電話)圖書(書號,書名,出版社,單價)訂單(訂單號,日期,付款方式,總金額,客戶號)訂購(訂單號,書號,數(shù)量)第4章 習題1.安裝MicrosoftSQLServer2008 系統(tǒng)操作。答:略。2.SQLServer2008主要提供了哪些服務(wù)?如何啟動、暫?;蛲V?SQLServer服務(wù)?答:服務(wù)器管理、對象資源管理、 SQLServer配置管理等。啟動、暫停或停止 SQLServer服務(wù):首先在 SQLServer配置管理器的窗口左邊單擊“SQLServer2008服務(wù)”,此時在窗口右邊會看到已安裝的所有服務(wù),可以選中某個服務(wù),然后單擊窗口上部工具欄中的相應(yīng)按鈕, 或右擊某個服務(wù)名稱, 在彈出的快捷菜單中選擇相應(yīng)的菜單選項來啟動或停止服務(wù)。3.簡述SQLServerManagementStudio的使用。答:略。4.簡述對象資源管理器的功能。答:SQLServerManagementStudio的對象資源管理器組件是一種集成工具,可以查看和管理所有服務(wù)器類型的對象。用戶可以通過該組件操作數(shù)據(jù)庫,包括新建、修改、刪除數(shù)據(jù)庫、表、視圖等數(shù)據(jù)庫對象,新建查詢、設(shè)置關(guān)系圖、設(shè)置系統(tǒng)安全、數(shù)據(jù)庫復(fù)制、數(shù)據(jù)備份、恢復(fù)等操作,SQLServerManagementStudio中最常用、也是最重要的一個組件,類似于SQLServer2000中的企業(yè)管理器。5.了解SQLServer其他管理工具。答:略。6.簡述T-SQL語言的特點。答:(1)綜合統(tǒng)一2)兩種使用方式,統(tǒng)一的語法結(jié)構(gòu)3)高度非過程化4)類似于人的思維習慣,容易理解和掌握7.如何表示數(shù)據(jù)庫對象名?11答:[server_name.[database_name].[schema_name]|database_name.[schema_name]|schema_name.]object_name第5章 習題1.簡述數(shù)據(jù)庫的兩種存儲結(jié)構(gòu)。答:數(shù)據(jù)庫的物理存儲結(jié)構(gòu)指的是保存數(shù)據(jù)庫各種邏輯對象的物理文件是如何在磁盤上存儲的,數(shù)據(jù)庫在磁盤上是以文件為單位存儲的,SQLServer2008將數(shù)據(jù)庫映射為一組操作系統(tǒng)文件。邏輯存儲結(jié)構(gòu):數(shù)據(jù)庫是存儲數(shù)據(jù)的容器,即數(shù)據(jù)庫是一個存放數(shù)據(jù)的表和支持這些數(shù)據(jù)的存儲、檢索、安全性和完整性的邏輯成分所組成的集合。2.數(shù)據(jù)庫由哪幾種類型的文件組成?其擴展名分別是什么?答:(1)主數(shù)據(jù)文件:主數(shù)據(jù)文件是數(shù)據(jù)庫的起點,指向數(shù)據(jù)庫中的其他文件。主數(shù)據(jù)文件的推薦文件擴展名是.mdf。輔助數(shù)據(jù)文件:除主數(shù)據(jù)文件以外的所有其他數(shù)據(jù)文件都是輔助數(shù)據(jù)文件。輔助數(shù)據(jù)文件的推薦文件擴展名是.ndf。事務(wù)日志文件:日志文件包含著用于恢復(fù)數(shù)據(jù)庫的所有日志信息。日志文件的推薦文件擴展名是 .ldf。3.簡述SQLServer2008中文件組的作用和分類。答:為了便于管理和分配數(shù)據(jù)而將文件組織在一起,通??梢詾橐粋€磁盤驅(qū)動器創(chuàng)建一個文件組(FileGroup),將多個數(shù)據(jù)庫文件集合起來形成一個整體。SQLServer中的數(shù)據(jù)庫文件組分為主文件組(PrimaryFileGroup)和用戶定義文件組(user_definedGroup)。4.使用SQLServerManagementStudio創(chuàng)建名為“倉庫庫存”的數(shù)據(jù)庫,并設(shè)置數(shù)據(jù)庫主文件名為倉庫庫存_data,初始大小為10MB,日志文件名為倉庫庫存_log,初始大小為2MB。所有的文件都放在目錄 “ DATA”中。答:略。5.刪除習題 4創(chuàng)建的數(shù)據(jù)庫,使用 T-SQL語句再次創(chuàng)建該數(shù)據(jù)庫,主文件和日志文件的文件名及存放位置同上,要求:倉庫庫存_data最大為無限大,增長速度為20%,日志文件初始大小為2MB,最大為5MB,增長速度為1MB。答:CREATEDATABASE倉庫庫存(NAME='倉庫庫存_data',倉庫庫存_data.MDF',SIZE=10MB,FILEGROWTH=20%)LOGON(NAME='倉庫庫存_log',倉庫庫存_log.LDF',12SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)6.請分別使用 SQLServerManagementStudio和T-SQL語句創(chuàng)建數(shù)據(jù)庫 Student,要創(chuàng)建的數(shù)據(jù)庫的要求如下所示:數(shù)據(jù)庫名稱為 Student,包含3個20MB的數(shù)據(jù)庫文件,210MB的日志文件,創(chuàng)建使用一個自定義文件組,主文件為第一個文件,主文件的后綴名為.mdf,次要文件的后綴名為.ndf;要明確地定義日志文件,日志文件的后綴名為.ldf;自定義文件組包含后兩個數(shù)據(jù)文件,所有的文件都放在目錄 “ DATA”中。答:CREATE DATABASE STUDENTON(NAME=STUDENT1,FILENAME='E:\DATA\STUDENT1.MDF',SIZE=20,MAXSIZE=unlimited),FILEGROUPFG1(NAME=STUDENT2,FILENAME='E:\DATA\STUDENT2.NDF',SIZE=30,MAXSIZE=unlimited) ,(NAME=STUDENT3,FILENAME='E:\DATA\STUDENT3.NDF',SIZE=30,MAXSIZE=unlimited)LOGON(NAME=STUDENTLOG1,FILENAME='E:\DATA\STUDENTLOG1.LDF',SIZE=10,MAXSIZE=unlimited),(NAME=STUDENTLOG2,FILENAME='E:\DATA\STUDENTSLOG .LDF',SIZE=10,MAXSIZE=unlimited)第6章 習題1.在第5章習題創(chuàng)建的 “倉庫庫存”數(shù)據(jù)庫中完成下列操作。(1)創(chuàng)建“商品”表,表結(jié)構(gòu)如表 1:13表1商品表列名數(shù)據(jù)類型長度完整性約束說明商品編號Char6NOTNULL主鍵商品名稱Varchar20NOTNULL,單價 Float生產(chǎn)商 Varchar 30(2)創(chuàng)建“倉庫”表,表結(jié)構(gòu)如表 2:表2倉庫表列名數(shù)據(jù)類型長度完整性約束說明倉庫編號Char3NOTNUL主鍵倉庫地址Varchar20NOTNULL電話Varchar10數(shù)字字符容量int>=總庫存數(shù)量(3)創(chuàng)建“管理員”表,表結(jié)構(gòu)如表3:表3管理員表列名數(shù)據(jù)類型長度完整性約束說明管理員編號Char3NOTNUL主鍵管理員姓名Varchar20NOTNULL性別Char2(男,女)出生年月Datetime1957-1-1~2000-1-1倉庫編號Char3外鍵創(chuàng)建“庫存情況”表,表結(jié)構(gòu)如表4:4庫存情況表列名數(shù)據(jù)類型長度完整性約束說明倉庫編號Char3NOTNULL主鍵、外鍵商品編號Char6NOTNUL主鍵、外鍵庫存數(shù)量int答:(1)USE倉庫庫存GOCREATETABLE 商品(商品編號 char(6) NOT NULLPRIMARYKEY ,商品名稱 char(20) NOT NULL,單價 Float,生產(chǎn)商 Varchar(30))14(2),(3),(4)略。2.建立“商品”表、“倉庫”表、“管理員”表和“庫存情況”表四表之間的關(guān)系圖。答:略。3.分別給“商品”表、“倉庫”表、“管理員”表和“庫存情況”表添加數(shù)據(jù)。答:略。創(chuàng)建一個STUDENT表,包含“學號”、“姓名”和“班級”列,要求能夠與學生表同步插入、修改和刪除數(shù)據(jù)。答:CREATETABLESTUDENT(學號char(7)PRIMARYKEY,姓名char(8)NOTNULL,班級char(10)NULL,)MERGESTUDENTASdUSING 學生表 ASsONs.ProductID=d.ProductIdWHENNOTMA TCHEDBYTARGETTHENINSERT(學號,姓名,班級)VALUES(s.學號,s.姓名,s.班級)WHENNOTMA TCHEDBYSOURCETHENDELETEWHENMATCHEDTHENUPDATESETd.姓名 =s.姓名,d.班級=s.班級;第7章 習題1.針對“教學庫”中的三個表,試用 T-SQL的查詢語句實現(xiàn)下列查詢:1)查詢學生們有哪些專業(yè),只顯示專業(yè)列,過濾掉重復(fù)行。答:SELECTDISTINCT 專業(yè) FROM學生表2)統(tǒng)計有學生選修的課程門數(shù)。答:SELECTCOUNT(DISTINCT 課程號)FROM 選課表3)求選修 C004課程的學生的平均年齡。答:SELECTAVG(年齡)FROM 學生表,選課表WHERE學生表.學號=選課表.學號 and課程號=?C004?4)求學分為 3的每門課程的學生平均成績。答:SELECT課程表.課程號,AVG(成績)FROM 課程表,選課表WHERE 課程表.課程號=選課表.課程號and學分=3GROUPBY 課程表.課程號5)統(tǒng)計每門課程的學生選修人數(shù),超過 3人的課程才統(tǒng)計。要求輸出課程號和選修人數(shù),查詢結(jié)果按人數(shù)降序排列,若人數(shù)相同,按課程號升序排列。答:SELECT課程號,COUNT(*)FROM 選課表GROUPBY 課程號15HAVINGCOUNT(*)>3ORDERBYCOUNT(*)DESC, 課程號6)檢索姓王的學生的姓名和年齡。答:SELECT 姓名,年齡 FROM 學生表WHERE 姓名 LIKE,王%?7)在選課表中檢索成績?yōu)榭罩档膶W生學號和課程號。答:SELECT 學號,課程號 FROM 選課WHERE 成績 ISNULL8)查詢沒有學生選修的課的課程號和課程名。答:SELECT 課程號,課程名 FROM 課程表WHERE 課程號 NOTIN (SELECT 課程號FROM 選課表)9)求年齡大于女同學平均年齡的男學生姓名和年齡。答:SELECT 姓名,年齡 FROM 學生表WHERE 性別=?男?and年齡 >(SELECT AVG(年齡)FROM 學生表WHERE 性別=?女?)10)求年齡大于所有女同學年齡的男學生姓名和年齡。答:SELECT 姓名,年齡 FROM 學生表WHERE 性別=?男?and年齡 >all(SELECT 年齡 FROM 學生表WHERE 性別=?女?)11)查詢所有與王華同年級、同專業(yè),但比王華年齡大的學生的姓名、年齡和性別。答:SELECT姓名,年齡,性別FROM學生表WHERE 年齡 > (SELECT 年齡 FROM 學生表WHERE 姓名=?王華?)AND 年級=(SELECT 年級 FROM 學生表WHERE 姓名=?王華?)AND 專業(yè)=(SELECT 專業(yè) FROM 學生表WHERE 姓名=?王華?)12)檢索選修課程 C002的學生中成績最高的學生的學號。答:SELECT 學號 FROM 選課表WHERE 課程號=?C002? and成績=(SELECTMAX(成績)FROM選課表WHERE課程號=?C002?)13)檢索學生姓名及其所選修課程的課程號和成績。答:SELECT 姓名,課程號,成績 FROM 學生表,選課表WHERE學生表.學號=選課表.學號14)檢索選修4門以上課程的學生總成績(不統(tǒng)計不及格的課程),并要求按總成績的降序排列出來。16答:SELECT學號,SUM(成績)FROM 選課表WHERE 成績>=60GROUPBY學號HAVINGCOUNT(*)>=4ORDERBYSUM(成績)DESC15)檢索選修 2門及以上課程的學生平均成績只取前五名。答:SELECTTOP5學號,AVG(成績)FROM 選課表GROUPBY學號HAVINGCOUNT(*)>=2ORDERBYAVG(成績)DESC16)查詢每個學生的總學分。答:SELECT學號,SUM(學分)FROM 選課表,課程表WHERE選課表.課程號=課程表.課程號GROUPBY學號針對“倉庫庫存”數(shù)據(jù)庫中的三個表,試用T-SQL的查詢語句實現(xiàn)下列查詢:1)查詢青島海爾生產(chǎn)的商品信息。答:SELECT*FROM 商品 WHERE 生產(chǎn)商=?青島海爾?2)查詢001號倉庫儲存的商品的編號和數(shù)量。答:SELECT商品編號,數(shù)量 FROM 庫存情況 WHERE 倉庫編號=?001?3)查詢所有商品的種類名稱。答:SELECTDISTINCT 商品名稱 FROM 商品4)查詢商品的單價在 2000到3000之間的商品信息。答:SELECT*FROM 商品 WHERE5)查詢“商品表”中所有商品的信息,其中單價打八折顯示。答:SELECT商品編號,商品名稱,單價*0.8 單價八折,生產(chǎn)商 FROM 商品6)查詢青島海爾和青島海信生產(chǎn)的商品的信息。答:SELECT*FROM 商品 WHERE 生產(chǎn)商=?青島海爾?AND 生產(chǎn)商=?青島海信?7)查詢李立平管理的倉庫存儲的商品信息。答:SELECT*FROM 商品 WHERE 商品編號 INSELECT商品編號FROM庫存情況WHERE倉庫編號IN(SELECT倉庫編號FROM管理員表WHERE管理員姓名=?李立平?))8)查詢2號樓101倉庫的管理員的姓名和年齡。答:SELECT姓名,年齡 FROM 管理員表 WHERE 倉庫編號=SELECT倉庫編號FROM倉庫WHERE倉庫地址=?2號樓101?)9)查詢不是青島生產(chǎn)的商品的信息。答:SELECT*FROM 商品 WHERE 生產(chǎn)商 NOTLIKE ,青島%?10)查詢庫存總量最少的倉庫的編號。答:SELECTTOP1倉庫編號 FROM 庫存情況17GROUPBY 倉庫編號ORDERBYSUM(數(shù)量) ASC11)查詢各生產(chǎn)廠家的商品庫存總量,并存入”庫存總量”表。答:SELECT生產(chǎn)商,SUM(數(shù)量)AS庫存總量INTO庫存總量FROM 商品,庫存情況WHERE商品.商品編號=庫存情況.商品編號GROUPBY 生產(chǎn)商12)將2號樓101倉庫的管理員的姓名改為 “張黎明”。答:UPDATE管理員表 SET管理員姓名=?張黎明?WHERE倉庫編號=(SELECT 倉庫編號 FROM 倉庫 WHERE 倉庫地址=?2號樓101?)13)刪除四川長虹的產(chǎn)品的庫存信息。答:DELETE 庫存情況 WHERE 商品編號 INSELECT商品編號FROM商品WHERE生產(chǎn)商=?四川長虹?)8章習題1.什么是標識符?答:標識符是用來標識事物的符號,其作用類似于給事物起的名稱。T-SQL中有幾種標識符?它們的區(qū)別是什么?標識符分為兩類:常規(guī)標識符和分隔標識符。 符合所有標識符格式規(guī)則的標識符為常規(guī)標識符,可以使用分隔符, 也可以不使用分隔符。 不符合標識符格式規(guī)則的標識符必須使用分隔符。3.什么是局部變量?什么是全局變量?如何表示它們?答:全局變量由系統(tǒng)提供且預(yù)先聲明,通過在名稱前加兩個 “@”符號區(qū)別于局部變量。用戶只能使用全局變量,不能對它們進行修改。全局變量的作用范圍是整個SQLServer系統(tǒng),任何程序都可以隨時調(diào)用它們。T-SQL語言中的變量是可以保存單個特定類型的數(shù)據(jù)值的對象,也稱為局部變量,只在定義它們的批處理或過程中可見。在名稱前加一個 “@”符號為局部變量。4.以下變量名中,哪些是合法的變量名,哪些是不合法的變量名?A1,1a,@x,@@y,&變量1,@姓名,姓名,#m,##n,@@@abc##,@my_name答:合法的變量名: @x,@@y,@姓名,@my_name不合法的變量名: A1,1a,&變量1,姓名,#m,##n,@@@abc##5.SQLServer2008所使用的運算符類別有哪些?答:SQLServer2008系統(tǒng)中,可以使用的運算符可以分為算術(shù)運算符、邏輯運算符、賦值運算符、字符串串聯(lián)運算符、按位運算符、一元運算符及比較運算符等。6.利用T-SQL語句計算下列表達式,并給出運算結(jié)果。(1)9-3*5/2+6%4 (2)5&2|4 (3)'你們'+'好' (4)~10答:(1)4(2)4(3)你們好 (4)-11187.給出以下 T-SQL語句的運行結(jié)果。DECLARE@dSMALLDATETIMESET@d='2007-1-26'SELECT@d+10,@d-10答:2007-02-05,2007-01-168.什么是批處理?使用批處理有何限制?批處理的結(jié)束符是什么?答:批處理是包含一個或多個 T-SQL語句的集合,從應(yīng)用程序一次性地發(fā)送到 SQLServer2008進行執(zhí)行,因此可以節(jié)省系統(tǒng)開銷。 SQLServer 將批處理的語句編譯為一個可執(zhí)行單元,稱為執(zhí)行計劃,批處理的結(jié)束符為 “GO”。9.注釋有幾類,它們分別是什么?答:在T-SQL中可使用兩類注釋符:ANSI標準的注釋符“--”用于單行注釋;(2)與C語言相同的程序注釋符號,即“/*??*/,”“/*用”于程序注釋開頭,“*/用”語程序注釋結(jié)尾,可以在程序中多行文字標示為注釋。10.針對“教學庫”,利用流程控制語句,查詢學號為 0101001的學生的各科成績,如果沒有這個學生的成績,就顯示 “此學生無成績 ”。答:IFEXISTS(SELECT*FROM 選課表 WHERE 學號='0101001')SELECT 課程號,成績 FROM 選課表WHERE 學號='0101001'ELSEPRINT'此學生無成績 '11.針對“教學庫”,用函數(shù)實現(xiàn):求某個學院選修了某門課的學生人數(shù)。答:CREATEFUNCTIONrenshu(@pchar(10),@cnchar(4))RETURNSfloatASBEGINDECLARE@coutfloatSELECT@cou=(SELECTcount(*)FROM 學生表,選課表WHERE學生表.學生號=選課表.學生號and課程號=@cnand專業(yè)=@p)RETURN@couEND12.針對“教學庫”,用函數(shù)實現(xiàn):查詢某個學院所有學生所選的每門課的平均成績。答:CREATEFUNCTIONaverage(@pchar(10))RETURNSfloatASBEGINDECLARE@averfloatSELECT@aver=(SELECT 課程號,avg(成績)FROM 學生表,選課表WHERE學生表.學生號=選課表.學生號 and 專業(yè)=@p19GROUPBY 課程號)RETURN@averEND13.針對“倉庫庫存”中的“商品”表,查詢商品的價格等級,商品號、商品名和價格等級(單價1000元以內(nèi)為“低價商品”,1000~3000元為“中等價位商品”,3000元以上為“高價商品”)。答:SELECT 商品號,商品名,CASEWHEN 單價<1000then'低價商品'WHEN 單價<3000then'中等價位商品 'WHEN 單價>=3000then'高價商品'ENDAS 價格等級FROM 商品表14.簡述游標的概念及類型。答:游標是處理數(shù)據(jù)的一種方法,它允許應(yīng)用程序?qū)Σ樵冋Z句 SELECT 返回的結(jié)果集中每一行進行相同或不同的操作, 而不是一次對整個結(jié)果集進行同一種操作。 為了查看或者處理結(jié)果集中的數(shù)據(jù), 游標提供了在結(jié)果集中一次以行或者多行前進或向后瀏覽數(shù)據(jù)的能力,我們可以把游標當作一個指針, 它可以指定結(jié)果中的任何位置, 然后允許用戶對指定位置的數(shù)據(jù)進行處理。SQLServer支持三種類型的游標: T-SQL游標,API 服務(wù)器游標和客戶游標。由于API 游標和T-SQL游標使用在服務(wù)器端, 所以被稱為服務(wù)器游標, 也被稱為后臺游標,而客戶端游標被稱為前臺游標。 服務(wù)器游標包含以下四種:靜態(tài)游標、動態(tài)游標、只進游標、鍵集驅(qū)動游標。15.利用T-SQL擴展方式聲明一個游標,查詢學生表中所有男生的信息,并讀取數(shù)據(jù)。要求:(1)讀取最后一條記錄。(2)讀取第一條記錄。(3)讀取第5條記錄。(4)讀取當前記錄指針位置后第3條記錄。答:略。第9章 習題1.引入視圖的主要目的是什么 ?答:數(shù)據(jù)庫的基本表是按照數(shù)據(jù)庫設(shè)計人員的觀點設(shè)計的,并不一定符合用戶的需求。SQLServer2008可以根據(jù)用戶需求重新定義表的數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)就是視圖。視圖是關(guān)系數(shù)據(jù)庫系統(tǒng)提供給用戶以多種角度觀察數(shù)據(jù)庫中數(shù)據(jù)的重要機制, 其結(jié)構(gòu)和數(shù)據(jù)是建立在對表的查詢基礎(chǔ)上的。2.當刪除視圖時所對應(yīng)的數(shù)據(jù)表會刪除嗎 ?答:不會。3.簡述視圖的優(yōu)點。20答:使用視圖有很多優(yōu)點,主要表現(xiàn)在:為用戶集中數(shù)據(jù),簡化用戶的數(shù)據(jù)查詢和處理。保證數(shù)據(jù)的邏輯獨立性。重新定制數(shù)據(jù),使得數(shù)據(jù)便于共享;合并分割數(shù)據(jù),有利于數(shù)據(jù)輸出到應(yīng)用程序中。數(shù)據(jù)保密。4.可更新視圖必須滿足哪些條件?答:(1)任何修改(包括 UPDATE、INSERT和DELETE 語句)都只能引用一個基本表的列。①如果視圖數(shù)據(jù)為一個表的行、列子集,則可更新(包括 UPDATE、INSERT和DELETE語句);但如果視圖中包含的列為表定義時不允許取空值又沒有給默認值的列,則此視圖不可以插入數(shù)據(jù)。②如果視圖所依賴的基本表有多個時,不能向該視圖添加( INSERT)數(shù)據(jù)。③若視圖依賴于多個基本表,那么一次修改只能修改( UPDATE)一個基本表中的數(shù)據(jù)。④若視圖依賴于多個基本表,那么不能通過視圖刪除( DELETE)數(shù)據(jù)。如果視圖中沒有包含表中某個不允許取空值又沒有默認值約束的列,則不能利用視圖插入數(shù)據(jù)。視圖中被修改的列必須直接引用表列中的基礎(chǔ)數(shù)據(jù)。不能是通過任何其他方式對這些列進行派生而來的數(shù)據(jù), 比如通過聚合函數(shù)、 計算(如表達式計算)、集合運算等。(4)被修改的列不應(yīng)是在創(chuàng)建視圖時受 GROUPBY、HAVING、DISTINCT 或TOP子句影響的。5.創(chuàng)建索引的必要性和作用是什么 ?答:數(shù)據(jù)庫的索引就類似于書籍的目錄,如果想快速查找而不是逐頁查找指定的內(nèi)容,可以通過目錄中章節(jié)的頁號找到其對應(yīng)的內(nèi)容。 類似地,索引通過記錄表中的關(guān)鍵值指向表中的記錄,這樣數(shù)據(jù)庫引擎就不用掃描整個表而定位到相關(guān)的記錄。 相反,如果沒有索引,則會導(dǎo)致 SQLServer搜索表中的所有記錄,以獲取匹配結(jié)果。6.索引的優(yōu)點包括:1)大大加快數(shù)據(jù)的檢索速度,這是創(chuàng)建索引的最主要的原因。2)創(chuàng)建唯一性索引,保證表中每一行數(shù)據(jù)的唯一性。3)加速表和表之間的連接。4)在使用分組和排序子句進行數(shù)據(jù)檢索時,同樣可以顯著減少查詢中分組和排序的時間。5)查詢優(yōu)化器可以提高系統(tǒng)的性能,但它是依靠索引起作用的。7.聚集索引和非聚集索引有何異同 ?答:聚集索引會對表和視圖進行物理排序, 所以這種索引對查詢非常有效, 在表和視圖中只能有一個聚集索引。 非聚集索引不會對表和視圖進行物理排序。 如果表中不存在聚21集索引,則表是未排序的。8.在SQLServerManagementStudio中創(chuàng)建一個倉庫庫存信息視圖, 要求包含倉庫庫存數(shù)據(jù)庫中四個表的所有列。答:略。9.利用T-SQL語句創(chuàng)建一個查詢每個學生的平均成績的視圖,要求包含學生的學號和姓名。答:CREATEVIEW 學生_平均成績ASSELECT 學生表.學號,姓名,avg(成績)AS平均成績FROM 學生表,選課表WHERE 學生表.學號=選課表.學號GROUPBY學生表.學號,姓名利用T-SQL語句創(chuàng)建一個每個年級、每個專業(yè)各科平均成績的視圖。答:CREATEVIEW平均成績ASSELECT 年級,專業(yè),課程號,avg(成績)AS平均成績FROM 學生表,選課表WHERE 學生表.學號=選課表.學號GROUPBY年級,專業(yè),課程號11.在SQLServerManagementStudio中按照選課表的成績列升序創(chuàng)建一個普通索引 (非唯一、非聚集)。答:略。12.利用T-SQL語句按照商品表的單價列降序創(chuàng)建一個普通索引。答:CREATEINDEXindex_ 商品單價 ON商品(單價DESC)第10章 習題1.簡述存儲過程和觸發(fā)器的優(yōu)點。答:存儲過程最主要的特色是當寫完一個存儲過程后即被翻譯成可執(zhí)行碼存儲在系統(tǒng)表內(nèi),當作是數(shù)據(jù)庫的對象之一, 一般用戶只要執(zhí)行存儲過程, 并且提供存儲過程所需的參數(shù)就可以得到所要的結(jié)果而不必再去編輯 T-SQL命令。由于在觸發(fā)器中可以包含復(fù)雜的處理邏輯,因此,應(yīng)該將觸發(fā)器用來保持低級的數(shù)據(jù)的完整性,而不是返回大量的查詢結(jié)果。使用觸發(fā)器主要可以實現(xiàn)以下操作:強制比CHECK約束更復(fù)雜的數(shù)據(jù)的完整性使用自定義的錯誤提示信息實現(xiàn)數(shù)據(jù)庫中多張表的級聯(lián)修改比較數(shù)據(jù)庫修改前后數(shù)據(jù)的狀態(tài)22調(diào)用更多的存儲過程維護非規(guī)范化數(shù)據(jù)2.簡述SQLServer2008中存儲過程和觸發(fā)器的分類。答:存儲過程分為系統(tǒng)存儲過程、 本地存儲過程、臨時存儲過程、遠程存儲過程和擴展存儲過程。觸發(fā)器:DML觸發(fā)器是當數(shù)據(jù)庫服務(wù)器中發(fā)生數(shù)據(jù)操作語言 (DML)事件時會自動執(zhí)行的存儲過程。DDL觸發(fā)器是在響應(yīng)數(shù)據(jù)定義語言(DDL)語句時觸發(fā),一般用于數(shù)據(jù)庫中執(zhí)行管理任務(wù)。3.創(chuàng)建存儲過程,從課程表中返回指定的課程的信息。該存儲過程對傳遞的參數(shù)進行模式匹配,如果沒有提供參數(shù),則返回所有課程的信息。答:CREATEPROCEDUREPcourse@namevarchar(20)='%'ASSELECT*FROM 課程表WHERE 課程名 LIKE@name4.創(chuàng)建存儲過程,計算指定學生(姓名)的總成績,存儲過程中使用一個輸入?yún)?shù) (姓名)和一個輸出參數(shù) (總成績)。答:CREATEPROCEDURESname@S_nvarchar(20),@sum1 intOUTPUTASSELECT@sum1=sum(成績)FROM 選課表,學生表WHERE 姓名=@S_n and學生表.學號=選課表.學號5.在倉庫庫存數(shù)據(jù)庫創(chuàng)建存儲過程,某商品(如編號為 ds-018的商品)進了一批貨,則如果某倉庫目前根本沒有任何商品的庫存, 就存入此倉庫;否則,修改庫存總量最少的那個倉庫的庫存,如果那個倉庫目前沒有這種商品,就直接向庫存情況表添加一行,否則修改該商品的庫存數(shù)量的值為原值加上進貨量(用形參變量表示進貨量) 。答:CREATEPROCEDUREUpdatekucun @spnochar(6),@numberintASDECLARE@cnochar(3)IFexists(SELECT*FROM 倉庫 WHERE 倉庫編號 NOTIN(SELECT 倉庫編號 FROM 庫存情況))BEGINSELECTTOP1@cno=倉庫編號 FROM 倉庫 WHERE 倉庫編號 NOTIN(SELECT 倉庫編號 FROM 庫存情況)INSERT庫存情況 VALUES(@cno,@spno,@number)ENDELSEBEGINSELECTTOP1@cno=倉庫編號 FROM庫存情況GROUP BY倉庫編號23ORDERBYSUM(數(shù)量)IFexists(SELECT*FROM 庫存情況 WHERE 倉庫編號=@cnoand商品編號=@spno)UPDATE庫存情況SET數(shù)量=數(shù)量+@numberWHERE倉庫編號=@cnoand商品編號=@spnoELSEINSERT 庫存情況 VALUES(@cno,@spno,@number)END6.為dept表創(chuàng)建一個實現(xiàn)級聯(lián)刪除的觸發(fā)器,當執(zhí)行刪除時,激活該觸發(fā)器同時刪除gongcheng表中相應(yīng)記錄(leader列)。答:CREATETRIGGERd_trONdeptFORdeleteASdeletefromgongchengwhereleader=(SELECTleaderFROMdeleted)7.在教學庫中建一個學生黨費表,屬性(學號,姓名,黨費) ,學號是主鍵,也是外鍵(參考學生表的學號);創(chuàng)建一個觸發(fā)器, 保證只能在每年的 6月和12月交黨費,如果在其它時間錄入則顯示提示信息。答:CREATETABLE 學生黨費表(學號 CHAR(7)primarykey foreignkeyreferences 學生表(學號),姓名 char(6),黨費 int)CREATETRIGGERtrg_學生黨費表on學生黨費表 forinsertASifnot(datepart(mm,getdate())='06'ordatepart(mm,getdate())='12')BEGINprint'對不起,只能在每年的 6月和12月交黨費'rollbackEND8.在倉庫庫存情況表上創(chuàng)建一個觸發(fā)器,用于實現(xiàn)復(fù)雜的約束:在對庫存進行插入和修改時,按倉庫的容量進行約束。例如,在修改001號倉庫的庫存數(shù)量時,觸發(fā)了觸發(fā)器,如圖1。24圖1習題7的觸發(fā)器功能答:CREATE TRIGGER kucun_tr1ON庫存情況FORINSERT,UPDATEASDECLARE@SINT,@S1INT,@NOCHAR(3)SELECT@S=SUM(庫存情況.數(shù)量)FROM 庫存情況,insertedWHERE 庫存情況.倉庫編號=inserted.倉庫編號SELECT@S1=容量,@NO=inserted.倉庫編號 FROM 倉庫,insertedWHERE 倉庫.倉庫編號=inserted.倉庫編號IF@S>@S1BEGINPRINT@NO+'號倉庫的容量為 '+CAST(@s1aschar(3))+',已滿。'ROLLBACKEND第11章 習題1.什么是事務(wù)?如果要提交或取消一個事務(wù),使用什么語句 ?答:事務(wù)處理是數(shù)據(jù)庫的主要工作,事務(wù)由一系列的數(shù)據(jù)操作組成,是數(shù)據(jù)庫應(yīng)用程序的基本邏輯單元,用來保證數(shù)據(jù)的一致性。提交或取消一個事務(wù):COMMITTRANSACTION或ROLLBACKTRANSACTION語句。2.事務(wù)分為哪幾類?答:根據(jù)系統(tǒng)的設(shè)置,SQLServer2008將事務(wù)分為兩種類型:系統(tǒng)提供的事務(wù)和用戶定義的事務(wù)。25根據(jù)運行模式的不同,SQLServer2008將事務(wù)分為4種類型:顯示事務(wù)、隱式事務(wù)、自動提交事務(wù)和批處理級事務(wù)。3.簡述事務(wù)回滾機制。答:(1)如果不指定回滾的事務(wù)名稱或保存點,則ROLLBACKTRANSACTION命令會將事務(wù)回滾到事務(wù)的起點。(2)在嵌套事務(wù)時,該語句將所有內(nèi)層事務(wù)回滾到最遠的 BEGINTRANSACTION 語句,transaction_name也只能是來自最遠的 BEGINTRANSACTION 語句的名稱。(3)在執(zhí)行COMMITTRANSACTION 語句后不能回滾事務(wù)。如果在觸發(fā)器中發(fā)出ROLLBACKTRANSACITON命令,將回滾對當前事務(wù)中所做的所有數(shù)據(jù)修改,包括觸發(fā)器所做的修改。(5)事務(wù)在執(zhí)行過程中出現(xiàn)任何錯誤, SQLServer都將自動回滾事務(wù)。4.簡述鎖機制,鎖分為哪幾類。答:鎖是防止其他事務(wù)訪問指定的資源、 實現(xiàn)并發(fā)控制的一種手段, 是多個用戶能夠同時操縱同一個數(shù)據(jù)庫中的數(shù)據(jù)而不發(fā)生數(shù)據(jù)不一致現(xiàn)象的重要保障。鎖分為(1)共享鎖(SharedLock)(2)排它鎖(ExclusiveLock)(3)更新鎖(UpdateLock)(4)意向鎖(IntentLock)(5)模式鎖(SchemaLock)(6)大容量更新鎖 (BulkUpdateLock)5.分析各類鎖之間的兼容性。在一個事務(wù)已經(jīng)對某個對象鎖定的情況下,另一個事務(wù)請求對同一個對象的鎖定,此時就會出現(xiàn)鎖定兼容性問題。當兩種鎖定方式兼容時,可以同意對該對象的第二個鎖定請求。如果請求的鎖定方式與已掛起的鎖定方式不兼容, 那么就不能同意第二個鎖定請求。相反,請求要等到第一個事務(wù)釋放其鎖定,并且釋放所有其他現(xiàn)有的不兼容鎖定為止。詳細內(nèi)容見書表 11-1。6.簡述死鎖及其解決辦法。答:產(chǎn)生死鎖的情況一般包括以下兩種:第一種情況,當兩個事務(wù)分別鎖定了兩個單獨的對象,這時每一個事務(wù)都要求在另外一個事務(wù)鎖定的對象上獲得一個鎖,因此每一個事務(wù)都必須等待另外一個事務(wù)釋放占有的鎖,這時,就發(fā)生了死鎖。這種死鎖是最典型的死鎖形式。第二種情況,當在一個數(shù)據(jù)庫中時,有若干個長時間運行的事務(wù)執(zhí)行并行的操作,當查詢分析器處理一種非常復(fù)雜的查詢例如連接查詢時,那么由于不能控制處理的順序,有可能發(fā)生死鎖現(xiàn)象。在數(shù)據(jù)庫中解決死鎖常用的方法有:(1)要求每個事務(wù)一次就將要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行。(2)允許死鎖發(fā)生,系統(tǒng)來用某些方式診斷當前系統(tǒng)中是否有死鎖

溫馨提示

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

最新文檔

評論

0/150

提交評論