數(shù)據(jù)庫(kù)課后習(xí)題答案(全)_第1頁
數(shù)據(jù)庫(kù)課后習(xí)題答案(全)_第2頁
數(shù)據(jù)庫(kù)課后習(xí)題答案(全)_第3頁
數(shù)據(jù)庫(kù)課后習(xí)題答案(全)_第4頁
數(shù)據(jù)庫(kù)課后習(xí)題答案(全)_第5頁
已閱讀5頁,還剩119頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章數(shù)據(jù)庫(kù)系統(tǒng)概述

習(xí)題參考答案

1.1數(shù)據(jù)處理和數(shù)據(jù)庫(kù)應(yīng)用的例子:

電話公司使用數(shù)據(jù)庫(kù)存儲(chǔ)客戶基本信息、

客戶的每次通話信息以及雇員基本信息、雇

員業(yè)績(jī)信息等。典型的數(shù)據(jù)處理包括電話收

費(fèi)、生成客戶長(zhǎng)途電話話單、計(jì)算雇員工資

圖書館使用數(shù)據(jù)庫(kù)存儲(chǔ)圖書資料信息、讀

者基本信息、圖書借閱信息等。典型的數(shù)據(jù)

處理包括新書登記、處理讀者借還圖書等

稅務(wù)局使用數(shù)據(jù)庫(kù)存儲(chǔ)納稅人(個(gè)人或公

司)信息、納稅人繳納稅款信息等。典型的

數(shù)據(jù)處理包括納稅、退稅處理、統(tǒng)計(jì)各類納

稅人納稅情況等。

銀行使用數(shù)據(jù)庫(kù)存儲(chǔ)客戶基本信息、客戶

存貸款信息等。典型的數(shù)據(jù)處理包括處理客

戶存取款等。

超市使用數(shù)據(jù)庫(kù)存儲(chǔ)商品的基本信息、會(huì)

員客戶基本信息、客戶每次購(gòu)物的詳細(xì)清

單。典型的數(shù)據(jù)處理包括收銀臺(tái)記錄客戶每

次購(gòu)物的清單并計(jì)算應(yīng)交貨款。

1.2DBMS是數(shù)據(jù)庫(kù)管理系統(tǒng)的簡(jiǎn)稱,是一

種重要的程序設(shè)計(jì)系統(tǒng)。它由一個(gè)相互關(guān)聯(lián)

的數(shù)據(jù)集合和一組訪問這些數(shù)據(jù)的程序組

成。

數(shù)據(jù)庫(kù)是持久儲(chǔ)存在計(jì)算機(jī)中、有組織

的、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)中的

數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和存儲(chǔ),

可以被各種用戶共享,具有較小的冗余度、

較高的數(shù)據(jù)獨(dú)立性,并且易于擴(kuò)展。

數(shù)據(jù)庫(kù)系統(tǒng)由數(shù)據(jù)庫(kù)、DBMS(及其開發(fā)

工具)、應(yīng)用系統(tǒng)和數(shù)據(jù)庫(kù)管理員組成。

數(shù)據(jù)模型是一種形式機(jī)制,用于數(shù)據(jù)建

模,描述數(shù)據(jù)、數(shù)據(jù)之間的聯(lián)系、數(shù)據(jù)的語

義、數(shù)據(jù)上的操作和數(shù)據(jù)的完整性約束條

件。

數(shù)據(jù)庫(kù)模式是數(shù)據(jù)庫(kù)中使用數(shù)據(jù)模型對(duì)

數(shù)據(jù)建模所產(chǎn)生設(shè)計(jì)結(jié)果。對(duì)于關(guān)系數(shù)據(jù)庫(kù)

而言,數(shù)據(jù)庫(kù)模式由一組關(guān)系模式構(gòu)成。

數(shù)據(jù)字典是DBMS維護(hù)的一系列內(nèi)部表,

用來存放元數(shù)據(jù)。所謂元數(shù)據(jù)是關(guān)于數(shù)據(jù)的

數(shù)據(jù)。

1.3DBMS提供如下功能:

(1)數(shù)據(jù)定義:提供數(shù)據(jù)定義語言DDL,

用于定義數(shù)據(jù)庫(kù)中的數(shù)據(jù)對(duì)象和它們的

結(jié)構(gòu)。

(2)數(shù)據(jù)操縱:提供數(shù)據(jù)操縱語言DML,

用于操縱數(shù)據(jù),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的基本操

作(查詢、插入、刪除和修改)。

(3)事務(wù)管理和運(yùn)行管理:統(tǒng)一管理數(shù)據(jù)、

控制對(duì)數(shù)據(jù)的并發(fā)訪問,保證數(shù)據(jù)的安

全性、完整性,確保故障時(shí)數(shù)據(jù)庫(kù)中數(shù)

據(jù)不被破壞,并且能夠恢復(fù)到一致狀態(tài)。

(4)數(shù)據(jù)存儲(chǔ)和查詢處理:確定數(shù)據(jù)的物

理組織和存取方式,提供數(shù)據(jù)的持久存

儲(chǔ)和有效訪問;確定查詢處理方法,優(yōu)

化查詢處理過程。

(5)數(shù)據(jù)庫(kù)的建立和維護(hù):提供實(shí)用程序,

完成數(shù)據(jù)庫(kù)數(shù)據(jù)批量裝載、數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)、

介質(zhì)故障恢復(fù)、數(shù)據(jù)庫(kù)的重組和性能監(jiān)

測(cè)等。

(6)其他功能:包括DBMS與其它軟件通

信、異構(gòu)數(shù)據(jù)庫(kù)之間數(shù)據(jù)轉(zhuǎn)換和互操作

等。

1.4使用數(shù)據(jù)庫(kù)進(jìn)行信息管理具有如下優(yōu)

八占、、.?

(1)數(shù)據(jù)整體結(jié)構(gòu)化:在數(shù)據(jù)庫(kù)中,數(shù)據(jù)

的組織面向整個(gè)機(jī)構(gòu)、面向所有可能的

應(yīng)用,而不是某個(gè)具體部門或某個(gè)特定

的應(yīng)用。數(shù)據(jù)結(jié)構(gòu)不僅描述現(xiàn)實(shí)世界的

對(duì)象,而且描述對(duì)象之間的聯(lián)系。

(2)數(shù)據(jù)可以充分共享:數(shù)據(jù)庫(kù)中的數(shù)據(jù)

的面向整個(gè)機(jī)構(gòu)組織使得它能夠更好地

被多個(gè)用戶、多個(gè)應(yīng)用程序共享。

(3)數(shù)據(jù)獨(dú)立性:數(shù)據(jù)獨(dú)立性是指數(shù)據(jù)與

應(yīng)用程序相互獨(dú)立,包括數(shù)據(jù)的物理獨(dú)

立性和數(shù)據(jù)的邏輯獨(dú)立性。數(shù)據(jù)的結(jié)構(gòu)

用數(shù)據(jù)模型定義,無需程序定義和解釋。

(4)數(shù)據(jù)由DBMS同一管理和控制,使得

系統(tǒng)能夠?yàn)閿?shù)據(jù)管理提供更多的支持。

這些支持包括:提供事務(wù)支持、增強(qiáng)安

全性、保證完整性、平衡相互沖突的請(qǐng)

求和面對(duì)故障的彈性。

(5)標(biāo)準(zhǔn)化:使用數(shù)據(jù)庫(kù)進(jìn)行信息管理有

利于制定部門標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn)、工業(yè)標(biāo)

準(zhǔn)、國(guó)家標(biāo)準(zhǔn)和國(guó)際標(biāo)準(zhǔn),促進(jìn)數(shù)據(jù)庫(kù)

管理系統(tǒng)和數(shù)據(jù)庫(kù)開發(fā)工具的研制、開

發(fā),推動(dòng)數(shù)據(jù)管理應(yīng)用的健康發(fā)展。

1.5數(shù)據(jù)模型的三個(gè)基本要素是:

數(shù)據(jù)結(jié)構(gòu):描述數(shù)據(jù)庫(kù)的對(duì)象和對(duì)象之間

的聯(lián)系,是對(duì)數(shù)據(jù)的靜態(tài)描述。

數(shù)據(jù)操作:數(shù)據(jù)庫(kù)中各種對(duì)象允許的操作

和操作規(guī)則,使對(duì)系統(tǒng)的動(dòng)態(tài)描述。

完整性約束:一組完整性規(guī)則,用以限定

符合數(shù)據(jù)模型的數(shù)據(jù)庫(kù)狀態(tài)和狀態(tài)的變化,

保證數(shù)據(jù)的正確、有效和相容。

對(duì)于關(guān)系數(shù)據(jù)庫(kù)而言,關(guān)系模型只有一種

數(shù)據(jù)結(jié)構(gòu)——關(guān)系?,F(xiàn)實(shí)世界中的對(duì)象和對(duì)

象之間的聯(lián)系都用關(guān)系表示。關(guān)系是元組的

集合。從用戶角度來看,關(guān)系是一張二維表。

在關(guān)系模型中,定義數(shù)據(jù)操作的方法有兩

種:關(guān)系代數(shù)和關(guān)系演算。關(guān)系代數(shù)顯式地

定義了一些關(guān)系運(yùn)算,而關(guān)系演算的基礎(chǔ)是

一階謂詞邏輯,它用邏輯公式表示查詢結(jié)果

必須滿足的條件。

關(guān)系模型的完整性約束包括實(shí)體完整性、

參照完整性和用戶定義的完整性。其中實(shí)體

完整性和參照完整性是通用完整性約束,由

關(guān)系模型明確定義。

1.6數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式是指外模式、模

式和內(nèi)模式。外模式是特定數(shù)據(jù)庫(kù)用戶的數(shù)

據(jù)視圖,是與某一具體應(yīng)用相關(guān)的數(shù)據(jù)局部

邏輯結(jié)構(gòu)的描述。模式是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)

的總體邏輯結(jié)構(gòu)描述,是所有用戶的公共數(shù)

據(jù)視圖。內(nèi)模式是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式

的描述,定義數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的表示方

式。

數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式提供了三個(gè)層次

的數(shù)據(jù)抽象。這樣做的一個(gè)優(yōu)點(diǎn)是可以隱蔽

數(shù)據(jù)存儲(chǔ)細(xì)節(jié),從而隱蔽系統(tǒng)內(nèi)部的復(fù)雜

性,簡(jiǎn)化系統(tǒng)的用戶界面。另一個(gè)優(yōu)點(diǎn)是可

以帶來數(shù)據(jù)的獨(dú)立性。

1.7所謂數(shù)據(jù)獨(dú)立性是指數(shù)據(jù)獨(dú)立于應(yīng)用程

序,分?jǐn)?shù)據(jù)的邏輯獨(dú)立性和數(shù)據(jù)的物理獨(dú)立

性兩種。

數(shù)據(jù)的邏輯獨(dú)立性是指應(yīng)用程序與數(shù)據(jù)

庫(kù)的邏輯結(jié)構(gòu)之間的相互獨(dú)立性。當(dāng)數(shù)據(jù)的

邏輯結(jié)構(gòu)改變時(shí),通過修改外模式-模式映

像,保持外模式不變,從而使得建立在外模

式上的應(yīng)用程序也可以不變。

數(shù)據(jù)的物理獨(dú)立性是指應(yīng)用程序與存儲(chǔ)

在磁盤上的數(shù)據(jù)庫(kù)中數(shù)據(jù)之間的相互獨(dú)立

性。當(dāng)數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu)改變時(shí),通過

修改模式-內(nèi)模式映像,保持模式不變。由于

外模式是定義在模式上的,模式不變,則外

模式不需要改變,從而使得建立在外模式上

的應(yīng)用程序也可以不變。

數(shù)據(jù)的邏輯獨(dú)立性是指數(shù)據(jù)的邏輯結(jié)構(gòu)

改變不影響應(yīng)用程序,而數(shù)據(jù)的物理獨(dú)立性

是指數(shù)據(jù)的物理組織(存儲(chǔ)結(jié)構(gòu))改變不影

響應(yīng)用程序。

1.8DBA的主要職責(zé)包括:

(1)決定數(shù)據(jù)庫(kù)中的信息內(nèi)容和數(shù)據(jù)的邏

輯結(jié)構(gòu)。

(2)決定數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)和存取策略。

(3)定義數(shù)據(jù)的安全性要求和完整性約束

條件。

(4)數(shù)據(jù)庫(kù)系統(tǒng)的日常維護(hù):周期性轉(zhuǎn)儲(chǔ)

數(shù)據(jù)庫(kù)、故障恢復(fù)、監(jiān)督系統(tǒng)運(yùn)行、優(yōu)

化系統(tǒng)性能、設(shè)置必要的審計(jì)。

(5)重組和重構(gòu)數(shù)據(jù)庫(kù)。

第2章實(shí)體.聯(lián)系模型

部分習(xí)題參考答案

2.1解釋術(shù)語:

實(shí)體是客觀存在并且可以相互區(qū)分的任

何事物。

實(shí)體集是具有相同屬性的實(shí)體的集合。

聯(lián)系是多個(gè)實(shí)體之間的相互關(guān)聯(lián)。

聯(lián)系集是相同類型聯(lián)系的集合。形式地

說,設(shè)Eg,…國(guó)是匕(n>2)個(gè)實(shí)體集,

它們不必互不相同。聯(lián)系集火是{(3,口…,

的)|白£E、,e2eene曷}的一個(gè)子集,

其中(白,與,…,的)GR是一個(gè)聯(lián)系,并稱《

(1<Z<^7)是該聯(lián)系的參與者,笈是聯(lián)系的

度(元)。

簡(jiǎn)單屬性是不能劃分成更小的部分的屬

性。

復(fù)合屬性是可以劃分成更小部分的屬性

(即可以分成一些其他屬性)。

單值屬性是一個(gè)特定的實(shí)體在該屬性上

只能取單個(gè)值的屬性。

多值屬性是特定的實(shí)體在該屬性上可以

取多個(gè)值的屬性。

基本屬性是其值不能通過其他屬性的值

推導(dǎo)出來的屬性。

派生屬性又稱計(jì)算屬性,是其值可以從其

他相關(guān)屬性或?qū)嶓w計(jì)算得到的屬性。

碼是主碼或候選碼的簡(jiǎn)稱。

主碼是指數(shù)據(jù)庫(kù)的設(shè)計(jì)者選中的,用來區(qū)

分同一實(shí)體集中不同實(shí)體的候選碼。

候選碼:其真子集都不是超碼的極小超碼

稱為候選碼。

超碼:其值可以惟一確定實(shí)體集中每個(gè)實(shí)

體的屬性集稱為該實(shí)體集的超碼。

一對(duì)一聯(lián)系:如果£i中的每個(gè)實(shí)體最多與

E2中的一個(gè)實(shí)體相關(guān)聯(lián),并且E2中的每個(gè)

實(shí)體也最多與Ei中的一個(gè)實(shí)體相關(guān)聯(lián),則稱

Ei和殳之間聯(lián)系為一對(duì)一聯(lián)系。

一對(duì)多聯(lián)系:如果Ex中的每個(gè)實(shí)體都可以

與民中任意多個(gè)實(shí)體相關(guān)聯(lián),而耳中的每

個(gè)實(shí)體最多與Ei中一個(gè)實(shí)體相關(guān)聯(lián),則稱這

種聯(lián)系為Ei到E2的一對(duì)多聯(lián)系。

多對(duì)一聯(lián)系:如果Ex中的每個(gè)實(shí)體最多與

E2中的一個(gè)實(shí)體相關(guān)聯(lián),而E2中的每個(gè)實(shí)

體都可以與田中任意多個(gè)實(shí)體相關(guān)聯(lián),則稱

這種聯(lián)系為Ei到E2的多對(duì)一聯(lián)系。

多對(duì)多聯(lián)系:如果?中的每個(gè)實(shí)體都可以

與£2中任意多個(gè)實(shí)體相關(guān)聯(lián),并且£2中的

每個(gè)實(shí)體也可以與巴中任意多個(gè)實(shí)體相關(guān)

聯(lián),則稱巴和耳之間聯(lián)系為多對(duì)多聯(lián)系。

2.2商品應(yīng)當(dāng)包含如下屬性:

商品條碼:標(biāo)識(shí)商品。

商品名稱:用戶識(shí)別。

商品類別:用于商品分類。

生產(chǎn)商:

生產(chǎn)時(shí)間:

進(jìn)價(jià):

銷售價(jià):

存貨數(shù)量:

2.3所有部門形成一個(gè)實(shí)體集,所有經(jīng)理形

成一個(gè)實(shí)體集。假定每個(gè)部門最多只有一個(gè)

經(jīng)理,而每個(gè)人只能在一個(gè)部門出任經(jīng)理,

那么部門與經(jīng)理之間的聯(lián)系“管理”是一對(duì)

一聯(lián)系。如果允許部門經(jīng)理空缺,但一個(gè)人

是經(jīng)理的話,必須在一個(gè)部門任職,那么經(jīng)

理對(duì)聯(lián)系“管理”的參與是全部參與,而部

門是部分參與。

所有學(xué)生形成一個(gè)實(shí)體集,所有院系形成

一個(gè)實(shí)體集。每個(gè)院系由多個(gè)學(xué)生,而每個(gè)

學(xué)生只能在一個(gè)院系。因此,學(xué)生與院系之

間的聯(lián)系是多對(duì)一聯(lián)系。通常,一個(gè)學(xué)生總

在一個(gè)院系中,而每個(gè)院系都有學(xué)生。因此,

學(xué)生和院系對(duì)該聯(lián)系都是全部參與。

商品是一個(gè)實(shí)體集,訂單是一個(gè)實(shí)體集。

每個(gè)訂單可以包括多種商品,而一種商品可

以被多個(gè)訂單訂購(gòu)。這樣,商品與訂單之間

的聯(lián)系“訂購(gòu)”是多對(duì)多聯(lián)系。通常,每個(gè)

訂單至少包含一種商品,而每種商品都會(huì)被

某個(gè)訂單訂購(gòu)(否則就不再銷售這種商品)。

這樣,商品和訂單對(duì)該聯(lián)系的參與都是全部

參與。

2.4按以下要求各舉一個(gè)實(shí)際例子:(1)三

個(gè)實(shí)體集兩兩之間都存在多對(duì)多聯(lián)系(在你

的例子中,三個(gè)實(shí)體集之間還存在有意義的

聯(lián)系嗎?),(2)三個(gè)實(shí)體集之間存在多對(duì)

多聯(lián)系(在你的例子中,其中兩個(gè)實(shí)體集之

間還存在有意義的聯(lián)系嗎?)o

(1)實(shí)體集教師、課程和學(xué)生兩兩之間的多

對(duì)多聯(lián)系

教師和課程之間的聯(lián)系“講授”是多對(duì)多

的:一個(gè)教師教多門課程,一門課程由多位

教師講授

課程和學(xué)生之間的聯(lián)系“選修”是多對(duì)多

的:一門課程可以被多個(gè)學(xué)生選修,一個(gè)學(xué)

生可以選多門課程。

學(xué)生和教師之間的聯(lián)系“師生”也是多對(duì)

多的:一個(gè)學(xué)生可以有多位教師,一個(gè)教師

可以有多個(gè)學(xué)生。

教師、課程和學(xué)生三者之間也存在有意義

的聯(lián)系,表明特定的學(xué)生選修了特定教師講

授的特定課程。

(2)供應(yīng)商、零件和項(xiàng)目之間的多對(duì)多聯(lián)系

“供應(yīng)”

一個(gè)供應(yīng)商向多個(gè)項(xiàng)目提供多種零件;一

種零件由多個(gè)供應(yīng)商提供,并用于多個(gè)項(xiàng)

目;一個(gè)項(xiàng)目使用多個(gè)供應(yīng)商提供的多種零

件。

這三個(gè)實(shí)體集中兩個(gè)實(shí)體集之間的有意

義聯(lián)系實(shí)際上“供應(yīng)”的投影。

2.5弱實(shí)體集的主碼可以通過它與強(qiáng)實(shí)體集

的聯(lián)系推斷。如果將強(qiáng)實(shí)體集的主碼屬性添

加到弱實(shí)體集,那么這些屬性將通過實(shí)體集

和聯(lián)系兩種方式提供,從而導(dǎo)致冗余。止匕外,

實(shí)體集應(yīng)當(dāng)只包含描述該實(shí)體的屬性,強(qiáng)實(shí)

體集的主碼屬性并不是描述弱實(shí)體集的,因

此添加它們使得模型不清晰。

2.6如果一部分實(shí)體集通過E-R圖的一條路

徑相連接,則這些實(shí)體集是相關(guān)的,或許是

間接相關(guān)的。一個(gè)非連通的圖意味一部分實(shí)

體集與另一部分實(shí)體集是不相關(guān)的。如果我

們將E-R圖劃分成連通分支,則事實(shí)上我們

就有了一些分離的數(shù)據(jù)庫(kù),每個(gè)對(duì)應(yīng)一個(gè)連

通分支。

如上所述,一對(duì)實(shí)體集之間的路徑指明這

兩個(gè)實(shí)體集之間的一種聯(lián)系(可能是間接

的)。如果圖中存在環(huán),則環(huán)中每對(duì)實(shí)體集

至少可以通過兩種不同的方式相關(guān)聯(lián)。如果

E-R圖是無環(huán)的,則每對(duì)實(shí)體集之間至多存

在一條路徑,因此每對(duì)實(shí)體集之間至多存在

一種聯(lián)系。

2.7假定每輛汽車只屬于一位客戶。

涉及的實(shí)體集有:客戶、汽車和事故。

需要建立如下聯(lián)系:

擁有:客戶與汽車之間的多對(duì)一聯(lián)系

發(fā)生:客戶、汽車和事故之間的多對(duì)多聯(lián)

系。

損壞估計(jì)最好作為聯(lián)系“發(fā)生”的屬性,

因?yàn)閾p壞估計(jì)不僅與事故有關(guān),而且與特定

客戶的特定汽車有關(guān)。

E-R圖如圖2.1所示。

2.8假定一個(gè)客戶可以有多個(gè)賬戶,但一個(gè)

賬戶只屬于一個(gè)客戶。

涉及的實(shí)體集有:賬戶、支行、客戶和貸

款。題中已經(jīng)清楚描述。

建立如下聯(lián)系:

賬戶-支行:賬戶與支行之間的多對(duì)一聯(lián)

系,其中賬戶全部參與。

貸款-支行:貸款與支行之間的多對(duì)一聯(lián)

系,其中貸款全部參與。

借貸:客戶與貸款之間的多對(duì)一聯(lián)系,其

中貸款全部參與。

賬戶與客戶之間有兩種聯(lián)系:

存取款:客戶與賬戶之間的多對(duì)多聯(lián)系,

包括屬性存取金額和存取日期。

屬于:客戶與賬戶之間的一對(duì)多聯(lián)系。

E-R圖如圖2.2所示。

2.9方法一:使用弱實(shí)體

建立弱實(shí)體集“貸款償還”,包括屬性:

償還編號(hào)(順序號(hào))、償還日期、償還金額;

建立建立“貸款償還”與其標(biāo)識(shí)實(shí)體集“貸

款”之間的標(biāo)識(shí)性聯(lián)系“還貸”

方法二:使用多值屬性

將“貸款償還”作為貸款的多值復(fù)合屬性,

它包括屬性:償還編號(hào)(順序號(hào))、償還日

期、償還金額

方法三:使用強(qiáng)實(shí)體集

建立強(qiáng)實(shí)體集“貸款償還”,包括屬性:

貸款編號(hào)、償還編號(hào)(順序號(hào))、償還日期、

償還金額;

建立建立“貸款償還”與“貸款”之間

的聯(lián)系“還貸”

方法一最好,方法三最差,理由與職工-

家屬的例子類似。

2.10假定:

每位職工在同一時(shí)間段只從事一項(xiàng)工作。

每位職工不能同時(shí)在多個(gè)部門工作,也不

能是多個(gè)部門的經(jīng)理。

每位職工不能同時(shí)參加多個(gè)項(xiàng)目。

每位職工的辦公室唯一。

一個(gè)項(xiàng)目只由一個(gè)部門承擔(dān)。

一個(gè)辦公室職能屬于一個(gè)部門。

該問題涉及的實(shí)體集有:部門、職工、項(xiàng)

目、辦公室和職工的工作經(jīng)歷,其中工作經(jīng)

歷存在依賴于職工,是弱實(shí)體集,其余是強(qiáng)

實(shí)體集。

電話只有一個(gè)屬性“電話號(hào)碼”,不把它

視為實(shí)體集。一個(gè)辦公室有多部電話,但假

定每位職工只有一部電話。

需要建立如下聯(lián)系:

管理:職工與部門之間一對(duì)一聯(lián)系

圖2.3習(xí)題2.10的E-R圖

工作:職工與部門之間多對(duì)一聯(lián)系

承擔(dān):部門與項(xiàng)目之間一對(duì)多聯(lián)系

部-辦:部門與辦公室之間一對(duì)多聯(lián)系

參加:職工與項(xiàng)目之間多對(duì)一聯(lián)系

職-辦:職工與辦公室之間多對(duì)一聯(lián)系

屬于:弱實(shí)體集工作簡(jiǎn)歷與標(biāo)識(shí)實(shí)體集職

工之間的多對(duì)一聯(lián)系

E-R圖如圖2.3所示。

第3章關(guān)系模型

習(xí)題參考答案

3.1解釋術(shù)語:

域是具有相同類型的值的集合。

笛卡爾積:給定〃個(gè)域。1,。2,…,功(它

們不必互不相同)上的笛卡爾積記作Ax

D?x…xDg定義為{(4,力…,D)|diwDi八

&£Z)2A…△或0

關(guān)系:域。1,。2,…,。"上的關(guān)系尸是笛卡

爾積?XD?X…xDn的任意子集。

元組:笛卡爾積或關(guān)系的每個(gè)元素(0,

〃2,…,4)稱為一個(gè)及-元組(簡(jiǎn)稱元組)

屬性:關(guān)系用一個(gè)二維表表示。列通常是

命名的,稱為屬性。

關(guān)系的碼:關(guān)系火的屬性集K是它的碼,

如果K是火的超碼,并且K的任何真子集

都不是R的超碼(即K是極小超碼)。或X

是關(guān)系R的超碼,如果h和揚(yáng)是火的任意實(shí)

例中的兀組,并且=,2底],則,1=及。

候選碼:所有的碼都稱候選碼。

主碼:由多個(gè)碼中選出的作為惟一識(shí)別關(guān)

系元組的碼

外碼:如果展是關(guān)系R的屬性集,并且

不是火的碼,但是尸K與關(guān)系£的主碼K,

對(duì)應(yīng),則稱萬K是關(guān)系R的外碼。

關(guān)系模式:關(guān)系模式用關(guān)系模式名、關(guān)系

模式的諸屬性和屬性對(duì)應(yīng)的域,以及屬性間

的數(shù)據(jù)依賴集定義。通常簡(jiǎn)單地用關(guān)系模式

名和屬性列表表示火(4,4,…,4)。

關(guān)系數(shù)據(jù)庫(kù)模式:由若干域的定義和一組

定義在這些域上的關(guān)系模式組成。

3.2實(shí)體完整性:關(guān)系R的所有元組在主碼

上的值必須惟一,并且在主碼的任何屬性上

都不能取空值。

參照完整性:如果屬性集FK是關(guān)系R的

外碼,它參照關(guān)系S的主碼Ks,則R的任

何元組在FK上的值或者等于S的某個(gè)元組

在主碼Ks上的值,或者為空值。

3.3除了語義約束之外,關(guān)系數(shù)據(jù)庫(kù)對(duì)關(guān)系

的主要限制是:

(1)在關(guān)系數(shù)據(jù)庫(kù)中,我們只考慮有限關(guān)系

(笛卡爾積的有限子集),因?yàn)闊o限關(guān)系

既不能顯式存儲(chǔ),也不能有效地顯示。

(2)關(guān)系的每個(gè)屬性都必須是原子的,即每

個(gè)屬性只能取原子值。在關(guān)系數(shù)據(jù)庫(kù)中,

原子值是數(shù)據(jù)訪問的最小單位。屬性的原

子性要求是規(guī)范化關(guān)系的基本要求。

3.4事實(shí)上,關(guān)系R的外碼參照被參照關(guān)系

S(目標(biāo)關(guān)系)反映R的某些元組每個(gè)都與S

的某個(gè)特定元組之間存在聯(lián)系。有些實(shí)際問

題允許R的某些元組與S的任何元組都沒有

聯(lián)系,在這種情況下,允許及的這些元組在

外碼上取空值。例如,在關(guān)系Employees(Eno,

Ename,Salary,Dno)中,Dno是夕卜碼。有些公

司允許某些職工(如公司總裁)不屬于任何

特定的部門,這些職工的元組在Dno上可以

取空值。

假定所有的關(guān)系模式都是E-R圖轉(zhuǎn)換得到

的。

(1)如果關(guān)系火是聯(lián)系集轉(zhuǎn)換的,則火代表

聯(lián)系集,其外碼的值代表參與聯(lián)系的特定

實(shí)體集的一個(gè)特定實(shí)體。此時(shí),R外碼都

不能取空值。

(2)設(shè)關(guān)系R的外碼FR參照被參照關(guān)系S。

如果關(guān)系R是實(shí)體集所轉(zhuǎn)換的,則所必

然通過某個(gè)聯(lián)系火'與S對(duì)應(yīng)的實(shí)體集相關(guān)

聯(lián)。當(dāng)這種聯(lián)系不要求是完全的時(shí),R的

某些元組可以不參照S的任何元組,此時(shí)

外部碼入的屬性值可以為空;反之不能為

空。

3.5自然連接和等值連接的相同之處是二者

都是根據(jù)屬性值相等進(jìn)行連接。二者的不同

之處是:自然連接在相同屬性上進(jìn)行相等比

較,并投影去掉重復(fù)屬性;等值連接并不要

求一定在相同屬性上進(jìn)行相等比較,也不刪

除重復(fù)屬性。

3.6由強(qiáng)實(shí)體集得到的關(guān)系模式:

Employees(Eno,Ename,Salary)

Departments(Dno,Dptname)

Suppliers(Sno,Sname,Saddress)

Items(Ino,Iname,Stocks)

Orders(Ono,Data)

Customers(Cno,Cname,Caddress,

Balance)

其中主碼用下橫線標(biāo)示(下同)。注意,

Departments的Dptname也是碼,但我們選

擇Dno為主碼。由弱實(shí)體集Dependents得

到如下關(guān)系模式:

Dependents(Eno,Dname,ReltoEmp,

Birthday)

將聯(lián)系轉(zhuǎn)換成關(guān)系模式時(shí),不再考慮弱實(shí)

體集的存在依賴聯(lián)系。其余6個(gè)聯(lián)系產(chǎn)生如

下關(guān)系模式:

Manages(Dno,Eno)

Worksin(Eno,Dno)

Carries(Dno,Ino)

Supplies(Sno,Ino,Price)

Includes(Ono,Ino,Quantity)

Placedby(Cno,Ono)

其中Worksin和Manages有相同的屬性,

但它們的實(shí)際意義不同。

下一步,我們合并具有相同碼的關(guān)系模

式。首先,考慮Manageso它與Employees

和Departments都包含相同的碼。Maneges

與Employees合并更容易回答“某職工的經(jīng)

理是誰”這類問題,而與Departments合并

更容易回答“某部門的經(jīng)理是誰”這類問題o

考慮到后一類問題更經(jīng)常出現(xiàn),我們決定將

Manages合并到Departments,并將Manages

中屬性Eno改名為Mrgno(表示經(jīng)理的職工

號(hào)),得到如下關(guān)系模式:

Departments(Duo,Dptname,Mrgno)

還有三對(duì)關(guān)系具有相同的碼,它們是

Employees和Worksin,Items和Carries,

Orders和Placed_by。它們都可以直接合并。

最后,我們得到囪3.11所示E-R模型的一組

關(guān)系模式:

Employees(Eno,Ename,Salary,Dno)

Department(Dno,Dptname,Mrgno)

Suppliers(Sno,Sname,Saddress)

Items(Ino,Iname,Stocks,Dno)

Orders(Ono,Data,Cno)

Customers(Cno,Cname,Caddress,

Balance)

Dependents(Eno,Dname,ReltoEmp,

Birthday)

Supplies(Sno,Ino,Price)

Includes(Ono,Ino,Quantity)

3.7習(xí)題3.6的關(guān)系模式的模式圖如圖3.1

所示。

DepartmentsEmployeesDependents

圖3.1某公司數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)庫(kù)模式圖

3.8得到的一組關(guān)系模式如下:

客戶(客戶ID,姓名,地址,電話)

汽車(車輛編號(hào),車型,出廠年份,車

主ID)

事故(事故編號(hào),發(fā)生時(shí)間,事故地點(diǎn))

發(fā)生(駕照號(hào),車輛編號(hào),事故編號(hào),

損壞估計(jì))

其中,客戶與汽車之間的聯(lián)系已經(jīng)合并到關(guān)

系模式“汽車”中,并將“客戶ID”改為“車

主LD”。

3.9由實(shí)體集得到如下關(guān)系模式:

賬戶(賬號(hào),余額)

支行(支行名稱,城市,街道,資產(chǎn))

客戶(客戶ID,姓名,地址,聯(lián)系電話)

貸款(貸款號(hào),貸款日期,貸款金額)

由聯(lián)系得到如下關(guān)系模式:

賬戶-支行(賬號(hào),支行名稱)

貸款-支行(貸款號(hào),支行名稱)

借貸(客戶ID,貸款號(hào))

存取款(客戶ID,賬號(hào),存取金額,存

取日期)

屬于(賬號(hào),客戶ID)

合并具有相同碼的關(guān)系模式:

賬戶、賬戶.支行、屬于具有相同碼,合并

成一個(gè)關(guān)系模式賬戶,并用開戶行替換支行

名稱,開戶人替換客戶標(biāo)識(shí)。合并后的關(guān)系

模式如下:

賬戶(賬號(hào),余額,開戶行,開戶人)

貸款和貸款一支行具有相同碼,合并成一個(gè)

關(guān)系模式貸款,并用貸款支行替換支行名

稱。合并后的關(guān)系模式如下:

貸款(貸款號(hào),貸款日期,貸款金額,

貸款支行)

最后得到的一組關(guān)系模式如下:

賬戶(賬號(hào),余額,開戶行,開戶人)

支行(支行名稱,城市,街道,資產(chǎn))

客戶(客戶標(biāo)識(shí),姓名,地址,聯(lián)系電

話)

貸款(貸款號(hào),貸款日期,貸款金額,

貸款支行)

借貸(客戶ID,貸款號(hào))

存取款(客戶ID,賬號(hào),存取金額,存

取日期)

3.10電話號(hào)碼是多值屬性,需要?jiǎng)?chuàng)建一個(gè)關(guān)

系模式。我們稱該關(guān)系模式為電話,它的碼

為電話號(hào)碼。該關(guān)系模式定義如下:

電話(電話號(hào)碼,辦公室名稱)

由強(qiáng)實(shí)體集得到如下關(guān)系模式:

部門(部門號(hào),部門名稱,預(yù)算)

項(xiàng)目(項(xiàng)目名稱,項(xiàng)目預(yù)算)

辦公室(辦公室名稱,位置)

職工(職工號(hào),姓名,地址,電話號(hào)碼)

由弱實(shí)體集“工作簡(jiǎn)歷”得到如下關(guān)系模

式:

工作簡(jiǎn)歷(職工號(hào),開始時(shí)間,任務(wù),

工資,截止時(shí)間)

由聯(lián)系集得到如下關(guān)系模式:

承擔(dān)(項(xiàng)目名稱,部門號(hào))

部-辦(辦公室名稱,部門號(hào))

管理(職工號(hào),部門號(hào))

參加(職工號(hào),項(xiàng)目名稱)

工作(職工號(hào),部門號(hào))

職■辦(職工號(hào),辦公室名稱)

合并具有相同碼的關(guān)系模式:

項(xiàng)目與承擔(dān)具有相同碼,合并為項(xiàng)目,并

將部門號(hào)改為承擔(dān)部門,得到:

項(xiàng)目(項(xiàng)目名稱,項(xiàng)目預(yù)算,承擔(dān)部門)

辦公室與部-辦具有相同碼,合并為辦公

室,并將部門號(hào)改為所屬部門,得到:

辦公室(辦公室名稱,位置,所屬部門)

管理有兩個(gè)碼,可以與職工合并(有利于

回答“某職工的經(jīng)理是誰”這類問題),也

可以與部門合并(有利于回答“某部門的經(jīng)

理是誰”這類問題)??紤]“某部門的經(jīng)理

是誰”這類問題更常出現(xiàn),決定于部門合并,

并將職工號(hào)改為經(jīng)理,得到:

部門(部門號(hào),部門名稱,預(yù)算,經(jīng)理)

職工、參加、工作和職-辦都具有相同碼,

合并為職工,得到:

職工(職工號(hào),姓名,地址,電話號(hào)碼,

項(xiàng)目名稱,部門號(hào),辦公室名稱)

最后,我們得到如下關(guān)系模式:

部門(部門號(hào),部門名稱,預(yù)算,經(jīng)理)

項(xiàng)目(項(xiàng)目名稱,項(xiàng)目預(yù)算,承擔(dān)部門)

辦公室(辦公室名稱,位置,所屬部門)

職工(職工號(hào),姓名,地址,電話號(hào)碼,

項(xiàng)目名稱,部門號(hào),辦公室名稱)

工作簡(jiǎn)歷(職工號(hào),開始時(shí)間,任務(wù),

工資,截止時(shí)間)

電話(電話號(hào)碼,辦公室名稱)

3.11

⑴求上海的所有供應(yīng)商的信息。

Oscity='上海'(Suppliers)

⑵求位于鄭州的所有工程的信息。

5city='上?!?Projects)

(3)求數(shù)量在100?150之間的供應(yīng)。

^Quantity>100AQuantity<l50(SPJ)

(4)求為工程JI提供零件的供應(yīng)商號(hào)。

兀Sno(^Jno=,Jr(SPJ))

(5)求供應(yīng)工程J1紅色零件的供應(yīng)商號(hào)。

兀Sno(0no='Jl'△Coior=,紅色,(SPJxParts))

(6)求至少提供一種紅色零件的供應(yīng)商名稱。

兀Sname(,:oiou紅色,(SuppliersxSPJxParts))

(7)求不提供零件P2的供應(yīng)商名稱

兀Sname(SupplierS)-

兀Sname(6no=,P2,(SupplierSxSPJ))

(8)求沒有使用天津供應(yīng)商生產(chǎn)的紅色零件

的工程號(hào)。

使用了天津供應(yīng)商生產(chǎn)的紅色零件的工

程號(hào)

兀Jno(]Scity='天津^Suppliers)xSPJxaColor=4紅

色,(Parts))

該題的解

兀jno(Projects)兀Jno(/city='天

津,(Suppliers)xSPJxbcoiou紅色,(Parts))

⑼求使用了本地供應(yīng)商提供的零件的工程

號(hào)和工程名稱。

(c^(ProjectSxSPJxSuppliers

兀Jnojnamecity=Jcity

))

(10)求未使用本地供應(yīng)商提供的零件的工

程號(hào)和工程名稱。

兀JnoJname(PrQjeCtS)一

兀Jno,Jname(/city=Jcity(Pr°jectSxSPJxSuppliers

))

(11)求至少用了供應(yīng)商S1所供應(yīng)的全部零

件的工程號(hào)。

兀Jno,Pno(SPJ)丁兀Pno(OSno=,Sl,(SPJ))

(12)求提供所有零件的供應(yīng)商名稱。

兀Sname兀Sno,Pno(SPJ)丁兀Pno

(Parts))cxSuppliers)

3.12對(duì)于供應(yīng)商-工程-零件數(shù)據(jù)庫(kù),用元組/

域關(guān)系演算表示習(xí)題3.9中的查詢

(1)求上海的所有供應(yīng)商的信息。

{t|Suppliers(Z)A“Scity]='上海')}

(2)求位于鄭州的所有工程的信息。

{/1Projects(Z)A“Jcity]='鄭州’)}

⑶求數(shù)量在100?150之間的供應(yīng)。

|SPJ(/)A/[Quantity]>100A

/[Quantity]<150)}

(4)求為工程JI提供零件的供應(yīng)商號(hào)。

"⑴|0〃)(SPJ(〃)Ai/[Jno]=,Jl,A

Z[Sno]=z/[Sno])}

(5)求供應(yīng)工程JI紅色零件的供應(yīng)商號(hào)。

”⑴|0〃)(3v)(SPJ(w)AParts(v)A

w[Pno]=v[Pno]A

u[Jno]=^JVAv[Color]=,紅色,△

Z[Sno]=z/[Sno])}

(6)求至少提供一種紅色零件的供應(yīng)商名

稱。

"⑴|(3z/)(3v)(3w)(Suppliers(w)ASPJ(V)

AParts(w)Az/[Sno]=v[Sno]A

v[Pno]=w[Pno]Au[Cok)H=,紅色,A

/[Sname]=u[Sname])}

(7)求不提供零件P2的供應(yīng)商名稱

”⑴|(3z/)(Suppliers(z/)A

Z[Sname]=w[Sname]A

—i(3v)(SPJ(v)Aw[Sno]=v[Sno]A

v[Pno]=,P2,)))

(8)求沒有使用天津供應(yīng)商生產(chǎn)的紅色零

件的工程號(hào)。

”⑴[0〃)(Projects(u)A“Jno]=〃[Jno]A

「((3vl)(3v2)(3v3)(Suppliers(vl)A

SPJ(v2)AParts(v3)A

w[Jno]=v2[Jno]AVI[Sno]=v2[SnoO]

Av2[Pno]=v3[Pno]A

vl[Scity]='天津,Av3[Color]='紅

色'))}

(9)求使用了本地供應(yīng)商提供的零件的工

程號(hào)和工程名稱。

{/(2)|(3i/)(3v)(3w)(Projects(w)ASPJ(V)A

Suppliers(w)A

z/[Jno]=v[Jno]

Av[Sno]=w[Sno]Ai/Jcity]=w[Scity]A

Z[Jno]=z/[Jno]A/[Jname][Jname])}

(10)求未使用本地供應(yīng)商提供的零件的工

程號(hào)和工程名稱。

"⑵|(35)(Projects(5)

」((3z/)(3v)(3w)(Projects?)ASPJ(V)

ASuppliers(w)A

w[Jno]=v[Jno]

Av[Sno]=w[Sno]Ai/Jcity]=w[Scity]A

Z[Jno]=w[Jno]A/[Jname]=z/[Jname])

(11)求至少用了供應(yīng)商SI所供應(yīng)的全部零

件的工程號(hào)。

*⑴|(Projects(^)AZ[Jno]=z/[Jno]A

」(3v)(SPJ(v)Av[Sno]="SrA

-i(3w)(SPJ(w)Az/[Jno]=w[Jno]A

v[Sno]=w[Sno])))}

(12)求提供所有零件的供應(yīng)商名稱。

"⑴|0〃)(Suppliers^)A

/[Sname]=z/[Sname]A

—i(3v)(Parts(v)

—i(3w)(SPJ(w)Az/[Sno]=w[Sno]A

v[Pno]=w[Pno])))}

3.13用域關(guān)系演算完成例3.12和例3.13中

的查詢

例3.12

(1)列出系編號(hào)為MA(數(shù)學(xué)系)的所有學(xué)

生的詳細(xì)信息。

{(X1,X2,X3,X4,X5,'MA')I

Students(xi,X2,X3X4,X5,'MA')}

⑵列出所有課程的課程號(hào)、課程名和學(xué)分。

{(占其2其3)|0y)(Cowrses(xi,X2j,X3))}

(3)列出年齡不超過45歲的所有副教授的

姓名、性別和年齡。

{(占/2內(nèi))|(方1,乃)(Teachers(yi,xi,X2,X3,'

副教授力2))}

(4)列出選修了課程號(hào)為CS201的課程的所

有學(xué)生的學(xué)號(hào)。

{(x)I(3y)(SC(x「CS201,4))}

例3.13

⑴列出選修了課程號(hào)為CS201的課程的所

有學(xué)生的學(xué)號(hào)和姓名。

{(修通)|

0X3,X4,X5,X6)Qy)(StudentS(XiJX2,X3,X4,X5,X6)△

SC(xi,,CS20r,y))}

(2)列出每個(gè)學(xué)生選修的每門課程的成績(jī),

要求列出的學(xué)號(hào)、姓名、課程名和成績(jī)。

(3(yby2^3?y4)(3z)(3wbW2?W3,vv4)(Students(xiyX2?

為,乃沙3山)A

SC(xbwi,z)A

Courses(wi,W2,W3,W4)}

(3)求評(píng)估得分高于90分的教師所在院系

名稱、教師姓名、課程名和評(píng)估得分。

{(占其2,工3其4)|

081必)(±1/2/3/4/5)0陰"2M3)

(3v)(Departments加孫以)A

Teachers(zi,X2/2,Z3,Z4,Z5)A

Courses(wi,X3,W2,W3)A

Teaches(xi,wi,v))}

3.14

(1)求提供了零件的供應(yīng)商的個(gè)數(shù)。

5count-distinct(Sno)(SPJ)

(2)求所有零件的平均重量。

0avg(Weight)(Parts)

⑶求供應(yīng)商S1提供的每種零件的總數(shù)量。

Pno^sum(Quantity)(^Sno=,Sl,(SPJ))

(4)求供應(yīng)商S1供應(yīng)工程J1的每種零件的總

重量。

Pno兔um(Weight)(兀Pno,Weight(OSno='Sl‘AJno='Jl'

(PartSxSPJ)))

3.15右外連接

RtxCS=(RXS)u{(null,null)}x(S-原RX5))

K------Y------Z

限制在R的不屬于S的屬性

全外連接

限制在S的不屬于R的屬性上

/----A----\

RtxCS=(RX5)u(R-兀R(RXS))X{(null,null)}u

{(null,..nullj}x(S-7TS(RXS))

限制在R的不屬于S的屬性上

3.16

(1)將Cno>Cname>Caddress和Balance

分別為C0199、李華、鄭州市大學(xué)北路46

號(hào)、6000的客戶信息插入Customers。

Customers-Customersu{(C0199,李華,

鄭州市大學(xué)北路46號(hào),6000)}

(2)從Dependents(家屬)中刪除刪除1979

年前出生的子女(ReltoEmp='子女')。

Dependents?-

Dependents一qear(Birthday)<1979/\ReltoEmp='子

女,(Dependents)

⑶將銷售部門(Dname='銷售')的職工

工資(Salary)提高4%。

Employees-7CEno,Ename,Salary*1.04,

Dn。(①name='銷售,(EmployeesxDepartments))u

(Employees—7lEno,Ename,Salary,

Dno(<^Dname='銷

售,(EmployeesxDepartments)))

第4章關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語言SQL

習(xí)題參考答案

4.1SQL的基本特點(diǎn)是:

(1)集多種數(shù)據(jù)庫(kù)語言于一體:SQL語言集

數(shù)據(jù)定義、數(shù)據(jù)操縱和數(shù)據(jù)控制(DCL)

功能于一體,語言簡(jiǎn)潔、風(fēng)格統(tǒng)一,使用

SQL就可以獨(dú)立完成數(shù)據(jù)管理的核心操

作。

(2)高度非過程化:使用SQL語言時(shí),用戶

只需要說明做什么,而不必指出怎么做。

(3)面向集合的操作方式:SQL語言采用集

合操作方式,其運(yùn)算對(duì)象、運(yùn)算結(jié)果均是

元組的集合。

(4)一種語法兩種使用方式:SQL既可以作

為一種自含式語言獨(dú)立使用,也可以作為

一種嵌入式語言與通用程序設(shè)計(jì)語言配

合使用。在兩種使用方式下,SQL語言的

語法結(jié)構(gòu)基本一致。

(5)功能強(qiáng)大,語言簡(jiǎn)潔:SQL是一種完整

地?cái)?shù)據(jù)庫(kù)語言,其功能涵蓋數(shù)據(jù)定義、數(shù)

據(jù)操縱、數(shù)據(jù)控制等數(shù)據(jù)管理的主要需

求。但SQL語言相對(duì)比較簡(jiǎn)潔,其核心動(dòng)

詞只有9個(gè)。另外,SQL語言的語法簡(jiǎn)單,

與英語口語的風(fēng)格類似,易學(xué)易用。

4.2SQL的基本功能包括:

(1)SQL的數(shù)據(jù)定義語言(DDL)提供了模

式定義、修改和刪除,基本表定義、修改

和刪除、域定義修改和刪除。

(2)SQL的數(shù)據(jù)操縱語言(DML)提供了

數(shù)據(jù)查詢子語言。SQL的數(shù)據(jù)查詢子語言

是關(guān)系完備的,并且具有關(guān)系代數(shù)和關(guān)系

演算的雙重特征。

(3)SQLDML不僅包括數(shù)據(jù)查詢,而且包

括數(shù)據(jù)更新(數(shù)據(jù)插入、刪除和修改)語

句,允許用戶更新數(shù)據(jù)庫(kù)。

(4)SQLDDL還允許用戶定義視圖,并且

SQLDML允許用戶對(duì)視圖進(jìn)行查詢和受

限的更新操作。

(5)SQLDDL允許用戶定義各種完整性約

束條件,并在數(shù)據(jù)庫(kù)訪問時(shí)自動(dòng)檢查,確

保數(shù)據(jù)庫(kù)操作不會(huì)破壞完整性約束條件。

(6)SQLDDL還包括授權(quán)定義,用來定義

用戶對(duì)數(shù)據(jù)庫(kù)對(duì)象(基本表、視圖等)的

訪問權(quán)限,防止非法訪問,確保數(shù)據(jù)庫(kù)的

安全性。

(7)SQL還支持事務(wù),提供了定義事務(wù)開始

和結(jié)束的語句。

4.3SQL的數(shù)據(jù)定義語言DDL包括

模式定義、修改和刪除;

基本表定義、修改和刪除;

域定義、修改和刪除;

視圖的定義、修改和刪除;

斷言的定義、修改和刪除;

授權(quán)的定義與回收。

4.4

CREATETABLESuppliers

(SnoCHAR(8)PRIMARYKEY,

SnameCHAR(8)NOTNULL,

StatusINT,

ScityCHAR(IO));

CREATETABLEParts

(PnoCHAR(8)PRIMARYKEY,

PnameCHAR(16)NOTNULL,

ColorCHAR(4),

WeightNUMERIC(7,2));

CREATETABLEProjects

(JnoCHAR(8)PRIMARYKEY,

JnameCHAR(20)NOTNULL,

JcityCHAR(IO));

CREATETABLESPJ

(SnoCHAR(8),

PnoCHAR(8),

JnoCHAR(8),

QuantityINT,

PRIMARYKEY(Sno,Pno,Jno),

FOREIGNKEYSnoREFERENCES

Suppliers(Sno),

FOREIGNKEYPnoREFERENCES

Parts(Pno),

FOREIGNKEYJnoREFERENCES

Projects(Jno));

4.5

3.8題對(duì)應(yīng)的表

CREATETABLEClients

(DriveridCHAR(10)PRIMARY

KEY,

CnameCHAR(8)NOTNULL,

AddressCHAR(20));

CREATETABLECars

(CarnoCHAR(10)PRIMARY

KEY,

ModelCHAR(20),

YearDATE);

CREATETABLEAccidents

(ReportnoCHAR(8)PRIMARY

KEY,

AccidentDateDateTime,

LocationCHAR(40));

CREATETABLEParticipated

(Driver_idCHAR(IO),

CarnoCHAR(10),

ReportnoCHAR(8)

Damage_amountNUMERIC(8,2),

PRIMARYKEY(Driverid,Carno,

Reportno),

FOREIGNKEYDriverid

REFERENCESClients(Driverid),

FOREIGNKEYCarno

REFERENCESCars(Carno),

FOREIGNKEYReportno

REFERENCESAccidents(Reportno));

3.9題對(duì)應(yīng)的表

CREATETABLEAccounts

(AccountnoCHAR(10)

PRIMARYKEY,

BalanceNUMERIC(11,2),

BranchnameCHAR(20),

ClientidCHAR(18),

FOREIGNKEYBranchname

REFERENCESBranchs(Branchname),

FOREIGNKEYClientid

REFERENCESClients(Clientid));

CREATETABLEBranches

(BranchnameCHAR(20)

PRIMARYKEY,

CityCHAR(IO),

StreetCHAR(20)

AssetNUMERICAL2));

CREATETABLEClients

(ClientidCHAR(18)PRIMARY

KEY,

CnameCHAR(8)NOTNULL,

AddressCHAR(40),

PhoneCHAR(ll));

CREATETABLELoans

(LoanidCHAR(5)PRIMARY

KEY,

LoanDateDATE,

AmountNUMERIC(11,2),

BranchnameCHAR(20),

FOREIGNKEYBranchname

REFERENCESBranchs(Branchname));

CREATETABLEBorrow

(Client_idCHAR(18),

LoanidCHAR(5),

PRIMARYKEY(Clientid,

Loanid),

FOREIGNKEYClientid

REFERENCESClients(Clientid),

FOREIGNKEYLoanid

REFERENCESLoans(Loanid));

CREATETABLEDeposit

(ClientidCHAR(18),

AccountnoCHAR(IO),

AmountNUMERIC(11,2),

DepositDateDATE,

PRIMARYKEY(Clientid,

Accountno),

FOREIGNKEYClientid

REFERENCESClients(Clientid),

FOREIGNKEYAccountid

REFERENCESAccounts(Accountid));

3.10題對(duì)應(yīng)的表

部門(部門號(hào),部門名稱,預(yù)算,經(jīng)理)

項(xiàng)目(項(xiàng)目名稱,項(xiàng)目預(yù)算,承擔(dān)部門)

辦公室(辦公室名稱,位置,所屬部門)

職工(職工號(hào),姓名,地址,電話號(hào)碼,

項(xiàng)目名稱,部門號(hào),辦公室名稱)

工作簡(jiǎn)歷(職工號(hào),開始時(shí)間,任務(wù),

工資,截止時(shí)間)

電話(電話號(hào)碼,辦公室名稱)

CREATETABLEDepartments

(DnoCHAR(5)PRIMARYKEY,

DptnameCHAR(20),

BudgetNUMERIC(11,2),

MrgnoCHAR(8),

FOREIGNKEYEnoREFERENCES

Employees(Eno));

CREATETABLEProjects

(PnameCHAR(20)PRIMARY

KEY,

PbudgetNUMERIC(11,2),

DnoCHAR(5),

FOREIGNKEYDno

REFERENCESDepartments(Dno));

CREATETABLEOffices

(OnameCHAR(20)PRIMARY

KEY,

LocationCHAR(20),

DnoCHAR(5),

FOREIGNKEYDno

REFERENCESDepartments(Dno));

CREATETABLEEmployees

(EnoCHAR(8)PRIMARY

KEY,

EnameCHAR(8),

AddressCHAR(40),

PhoneCHAR(ll),

PnameCHAR(20),

DnoCHAR(5),

OnameCHAR(20),

FOREIGNKEYPname

REFERENCESProjects(Pname),

FOREIGNKEYDno

REFERENCESDepartments(Dno),

FOREIGNKEYOname

REFERENCESOffices(Oname));

CREATETABLEResume

(EnoCHAR(8),

Start_timeDATE,

TaskCHAR(20),

SalaryNUMERIC(8,2),

EndtimeDATE,

PRIMARYKEY(Eno,Start_time),

FOREIGNKEYEnoREFERENCES

Employees(Eno));

CREATETABLEPhones

(Phone-noCHAR(ll)PRIMARY

KEY,

OnameCHAR(20)

FOREIGNKEYOname

REFERENCESOffices(Oname));

4.6

(1)求上海的所有供應(yīng)商的信息

SELECT*

FROMSuppliers

WHEREScity=,上海,;

(2)求位于鄭州的所有工程的信息

SELECT*

FROMProjects

WHEREJcity=,鄭州,;

(3)求數(shù)量在100?150之間的供應(yīng)

SELECT*

FROMSPJ

WHEREQuantityBETWEEN100

AND150;

(4)求為工程JI提供零件的供應(yīng)商號(hào)

SELECTSno

FROMSPJ

WHEREJno='Jl';

(5)求供應(yīng)工程JI紅色零件的供應(yīng)商號(hào)

SELECTSno

FROMSPJ,Parts

WHERESPJ.Pno=Parts.PnoAND

Jno='Jl'ANDColoU紅色';

(6)求至少提供一種紅色零件的供應(yīng)商名稱

SELECTSname

FROMSPJ,Parts,Suppliers

WHERESPJ.Pno=Parts.PnoAND

SPJ.Sno=Suppliers.SnoANDColor='紅色';

(7)求不提供零件P2的供應(yīng)商名稱

SELECTSname

FROMSuppliers

WHERENOTEXISTS

(SELECT*

FROMSPJ

WHERESPJ.Sno=Suppliers.Sno

ANDPno=,P2');

(8)求沒有使用天津供應(yīng)商生產(chǎn)的紅色零件

的工程號(hào)

SELECTJno

FROMProjects

WHERENOTEXISTS

(SELECT*

FROMSPJ,Parts,Suppliers

WHERESPJ.Sno=Suppliers.Sno

AND

Parts.Pno=SPJ.PnoAND

Colors6紅色'AND

Scity=,天津,);

(9)求使用了本地供應(yīng)商提供的零件的工程

號(hào)和工程名稱

SELECTJno,Jname

FROMProjects,Suppliers,SPJ

WHERESPJ.Sno=Suppliers.Sno

AND

Projects.Jno=SPJ.JnoAND

Projects.Jcity=

Suppliers.Scity;

SELECTJno,Jname

FROMProjects

WHEREEXISTS

(SELECT*

FROMSPJ,Suppliers

WHERESPJ.Sno=Suppliers.Sno

AND

Projects.Jno=SPJ.Jno

AND

Projects.Jcity=

Suppliers.Scity);

(10)求未使用本地供應(yīng)商提供的零件的工

程號(hào)和工程名稱

SELECTJno,Jname

FROMProjects

WHERENOTEXISTS

(SELECT*

FROMSPJ,Suppliers

WHERESPJ.Sno=Suppliers.Sno

AND

Projects.Jno=SPJ.Jno

AND

Projects.Jcity=

Suppliers.Scity);

(11)求至少用了供應(yīng)商SI所供應(yīng)的全部零

件的工程號(hào)

SELECTJno

FROMProjects

WHERENOTEXISTS

(SELECT*

FROMSPJSPJ1

WHERESPJl.Sno="STAND

NOTEXISTS

(SELECT*

FROMSPJSPJ2

WHERESPJ2.Jno=

Projects.JnoAND

SPJ2.Pno=

SPJl.Pno));

(12)求提供所有零件的供應(yīng)商名稱

SELECTSname

FROMSuppliers

WHERENOTEXISTS

(SELECT*

FROMSPJSPJ1

WHERENOTEXISTS

(SELECT*

FROMSPJSPJ2

WHERESPJ2.Sno=

Suppliers.SnoAND

SPJ2.Pno=

SPJl.Pno));

4.7

(1)求提供了零件的供應(yīng)商的個(gè)數(shù)

SELECTdistinctSno

FROMSPJ;

(2)求所有零件的平均重量

SELECTavg(weight)

FROMParts;

(3)求供應(yīng)商SI供應(yīng)工程JI的每種零件的

總重量

SELECTsum(weight)

FROMParts,SPJ

WHERESPJ.Pno=Parts.PnoAND

Sno^srANDJno='Jl'

GROUPBYPno;

(4)求供應(yīng)商SI提供的每種零件的總數(shù)量

SELECTPno,sum(weight)

FROMSPJ

WHERESno=6Sr

GROUPBYPno;

4.8

(1)將Cno、Cname>Caddress和Balance分

別為C0199、李華、鄭州市大學(xué)北路46號(hào)、

6000的客戶信息插入Customers

INSERTINTOCustomers

,,

VALUESCC0199?李華:鄭州市大

學(xué)北路46號(hào)16000)

(2)從Dependents(家屬)中刪除刪除1979

年前出生的子女(ReltoEmpd子女D

DELETEFROMDependents

WHEREReltoEmp=6子女’AND

year(Birthday)<1979;

(3)將銷售部門(Dname='銷售')的職工工

資(Salary)提高4%

UPDATEEmployees

SETSalary=Salary*1.04

WHEREDnoIN

(SELECTDno

FROMDepartments

WHEREDname-銷售I

4.9

(1)找出2006年其車輛出過事故的總?cè)藬?shù)

SELECTCount(DistinctDriverid)

FROMParticipated,Accidents

WHEREParticipated.Report_no=

Accidents.Reportno

ANDDate=2006;

(2)找出與王明的車有關(guān)的事故數(shù)量

SELECTCount(Reportno)

FROMParticipated,Clients

WHEREParticipated.Driver_id=

Clients.DriveridANDCname='王明';

(3)刪除李莉的Mazada車

DELETEFROMCars

WHEREModel='Mazada'AND

CarnoIN

(SELECTCarno

FROMOwns,Clients

WHERE

Owns.Driver_id=Clients.DriveridAND

Cname='李莉');

(4)對(duì)于一個(gè)新事故,需要將相應(yīng)信息插入

表Accidents和Participated中。

4.10所謂基本表是其關(guān)系元組存儲(chǔ)在數(shù)據(jù)

庫(kù)中的表。視圖是一種用查詢定義的命名的

導(dǎo)出表,其關(guān)系不存儲(chǔ)在數(shù)據(jù)庫(kù)中,而是在

查詢時(shí)執(zhí)行定義視圖的查詢,由基本表導(dǎo)

出。

基本表與視圖之間的主要區(qū)別是前者對(duì)

應(yīng)的關(guān)系存儲(chǔ)在數(shù)據(jù)庫(kù)中,而后者對(duì)應(yīng)的關(guān)

系不在數(shù)據(jù)庫(kù)中存儲(chǔ)(物化視圖除外)。從

使用角度而言,對(duì)于查詢,二者沒有區(qū)別;

而對(duì)于更新,只有可更新視圖才可以更新。

二者之間的聯(lián)系體現(xiàn)在:所有視圖都是直

接或間接由基本表定義的。

4.1

溫馨提示

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

評(píng)論

0/150

提交評(píng)論