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

下載本文檔

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

文檔簡介

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

習題參考答案

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

電話公司使用數(shù)據(jù)庫存儲客戶基本信息、客戶的每次通話信息以及雇員基本信息、雇員

業(yè)績信息等。典型的數(shù)據(jù)處理包括電話收費、生成客戶長途電話話單、計算雇員工資等

圖書館使用數(shù)據(jù)庫存儲圖書資料信息、讀者基本信息、圖書借閱信息等。典型的數(shù)據(jù)處

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

稅務局使用數(shù)據(jù)庫存儲納稅人(個人或公司)信息、納稅人繳納稅款信息等。典型的數(shù)

據(jù)處理包括納稅、退稅處理、統(tǒng)計各類納稅人納稅情況等。

銀行使用數(shù)據(jù)庫存儲客戶基本信息、客戶存貸款信息等。典型的數(shù)據(jù)處理包括處理客戶

存取款等。

超市使用數(shù)據(jù)庫存儲商品的基本信息、會員客戶基本信息、客戶每次購物的詳細清單。

典型的數(shù)據(jù)處理包括收銀臺記錄客戶每次購物的清單并計算應交貨款。

1.2DBMS是數(shù)據(jù)庫管理系統(tǒng)的簡稱,是種重要的程序設計系統(tǒng)。它由一個相互關聯(lián)的

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

數(shù)據(jù)庫是持久儲存在計算機中、有組織的、可共享的大量數(shù)據(jù)的集合。數(shù)據(jù)庫中的數(shù)據(jù)

按一定的數(shù)據(jù)模型組織、描述和存儲,可以被各種用戶共享,具有較小的冗余度、較高的數(shù)

據(jù)獨立性,并且易于擴展。

數(shù)據(jù)庫系統(tǒng)由數(shù)據(jù)庫、DBMS(及其開發(fā)工具)、應用系統(tǒng)和數(shù)據(jù)庫管理員組成。

數(shù)據(jù)模型是一種形式機制,用于數(shù)據(jù)建模,描述數(shù)據(jù)、數(shù)據(jù)之間的聯(lián)系、數(shù)據(jù)的語義、

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

數(shù)據(jù)庫模式是數(shù)據(jù)庫中使用數(shù)據(jù)模型對數(shù)據(jù)建模所產(chǎn)生設計結果。對于關系數(shù)據(jù)庫而

言,數(shù)據(jù)庫模式由一組關系模式構成。

數(shù)據(jù)字典是DBMS維護的?系列內(nèi)部表,用來存放元數(shù)據(jù)。所謂元數(shù)據(jù)是關于數(shù)據(jù)的

數(shù)據(jù)。

1.3DBMS提供如下功能:

(1)數(shù)據(jù)定義:提供數(shù)據(jù)定義語言DDL,用于定義數(shù)據(jù)庫中的數(shù)據(jù)對象和它們的結構。

(2)數(shù)據(jù)操縱:提供數(shù)據(jù)操縱語言DML,用于操縱數(shù)據(jù),實現(xiàn)對數(shù)據(jù)庫的基本操作(查

詢、插入、刪除和修改)。

(3)事務管理和運行管理:統(tǒng)一管理數(shù)據(jù)、控制對數(shù)據(jù)的并發(fā)訪問,保證數(shù)據(jù)的安全性、

完整性,確保故障時數(shù)據(jù)庫中數(shù)據(jù)不被破壞,并且能夠恢復到一致狀態(tài)。

(4)數(shù)據(jù)存儲和查詢處理:確定數(shù)據(jù)的物理組織和存取方式,提供數(shù)據(jù)的持久存儲和有

效訪問:確定查詢處理方法,優(yōu)化查詢處理過程。

(5)數(shù)據(jù)庫的建立和維護:提供實用程序,完成數(shù)據(jù)庫數(shù)據(jù)批量裝載、數(shù)據(jù)庫轉儲、介

質故障恢復、數(shù)據(jù)庫的重組和性能監(jiān)測等。

(6)其他功能:包括DBMS其它軟件通信、異構數(shù)據(jù)庫之間數(shù)據(jù)轉換和互操作等。

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

(1)數(shù)據(jù)整體結構化:在數(shù)據(jù)庫中,數(shù)據(jù)的組織面向整個機構、面向所有可能的應用,

而不是某個具體部門或某個特定的應用。數(shù)據(jù)結構不僅描述現(xiàn)實世界的對象,而且

描述對象之間的聯(lián)系。

(2)數(shù)據(jù)可以充分共享:數(shù)據(jù)庫中的數(shù)據(jù)的面向整個機構組織使得它能夠更好地被多個

用戶、多個應用程序共享。

(3)數(shù)據(jù)獨立性:數(shù)據(jù)獨立性是指數(shù)據(jù)與應用程序相互獨立,包括數(shù)據(jù)的物理獨立性和

數(shù)據(jù)的邏輯獨立性。數(shù)據(jù)的結構用數(shù)據(jù)模型定義,無需程序定義和解釋。

(4)數(shù)據(jù)由DBMS同管理和控制,使得系統(tǒng)能夠為數(shù)據(jù)管理提供更多的支持。這些支

持包括:提供事務支持、增強安全性、保證完整性、平衡相互沖突的請求和面對故

障的彈性。

(5)標準化:使用數(shù)據(jù)庫進行信息管理有利于制定部門標準、行業(yè)標準、工業(yè)標準、國

家標準和國際標準,促進數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫開發(fā)工具的研制、開發(fā),推動數(shù)

據(jù)管理應用的健康發(fā)展。

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

數(shù)據(jù)結構:描述數(shù)據(jù)庫的對象和對象之間的聯(lián)系,是對數(shù)據(jù)的靜態(tài)描述。

數(shù)據(jù)操作:數(shù)據(jù)庫中各種對象允許的操作和操作規(guī)則,使對系統(tǒng)的動態(tài)描述。

完整性約束:一組完整性規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫狀態(tài)利狀態(tài)的變化,保

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

對于關系數(shù)據(jù)庫而言,關系模型只有一種數(shù)據(jù)結構——關系?,F(xiàn)實世界中的對象和對象

之間的聯(lián)系都用關系表示。關系是元組的集合。從用戶角度來看,關系是一張二維表。

在關系模型中,定義數(shù)據(jù)操作的方法有兩種:關系代數(shù)和關系演算。關系代數(shù)顯式地定

義了?些關系運算,而關系演算的基礎是?階謂詞邏輯,它用邏輯公式表示查詢結果必須滿

足的條件。

關系模型的完整性約束包括實體完整性、參照完整性和用戶定義的完整性。其中實體完

整性和參照完整性是通用完整性約束,由關系模型明確定義。

1.6數(shù)據(jù)庫系統(tǒng)的三級模式是指外模式、模式和內(nèi)模式。外模式是特定數(shù)據(jù)庫用戶的數(shù)據(jù)視

圖,是與某?具體應用相關的數(shù)據(jù)局部邏輯結構的描述。模式是數(shù)據(jù)庫中全體數(shù)據(jù)的總體邏

輯結構描述,是所有用戶的公共數(shù)據(jù)視圖。內(nèi)模式是數(shù)據(jù)物理結構和存儲方式的描述,定義

數(shù)據(jù)在數(shù)據(jù)庫內(nèi)部的表示方式。

數(shù)據(jù)庫系統(tǒng)的三級模式提供了三個層次的數(shù)據(jù)抽象。這樣做的一個優(yōu)點是可以隱蔽數(shù)據(jù)

存儲細節(jié),從而隱蔽系統(tǒng)內(nèi)部的復雜性,簡化系統(tǒng)的用戶界面。另一個優(yōu)點是可以帶來數(shù)據(jù)

的獨立性。

1.7所謂數(shù)據(jù)獨立性是指數(shù)據(jù)獨立于應用程序,分數(shù)據(jù)的邏輯獨立性和數(shù)據(jù)的物理獨立性兩

種。

數(shù)據(jù)的邏輯獨立性是指應用程序叮數(shù)據(jù)庫的邏輯結構之間的相互獨立性。當數(shù)據(jù)的邏輯

結構改變時,通過修改外模式-模式映像,保持外模式不變,從而使得建立在外模式上的應

用程序也可以不變。

數(shù)據(jù)的物理獨立性是指應用程序與存儲在磁盤上的數(shù)據(jù)庫中數(shù)據(jù)之間的相互獨立性。

當數(shù)據(jù)的物理存儲結構改變時,通過修改模式-內(nèi)模式映像,保持模式不變。由于外模式是

定義在模式上的,模式不變,則外模式不需要改變,從而使得建立在外模式上的應用程序也

可以不變。

數(shù)據(jù)的邏輯獨立性是指數(shù)據(jù)的邏輯結構改變不影響應用程序,而數(shù)據(jù)的物理獨立性是指

數(shù)據(jù)的物理組織(存儲結構)改變不影響應用程序。

1.8DBA的主要職責包括:

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

(2)決定數(shù)據(jù)庫的存儲結構和存取策略。

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

(4)數(shù)據(jù)庫系統(tǒng)的日常維護:周期性轉儲數(shù)據(jù)庫、故障恢復、監(jiān)督系統(tǒng)運行、優(yōu)化系統(tǒng)

性能、設置必要的審計。

(5)重組和重構數(shù)據(jù)庫。

第2章實體-聯(lián)系模型

部分習題參考答案

2.1解釋術語:

實體是客觀存在并且可以相互區(qū)分的任何事物。

實體集是具有相同屬性的實體的集合。

聯(lián)系是多個實體之間的相互關聯(lián)。

聯(lián)系集是相同類型聯(lián)系的集合。形式地說,設區(qū),4,…,&是〃(?>2)個實體集,它

們不必互不相同。聯(lián)系集是的一個子集,其中⑶,

R{3,ez,e?)|eteE\,e2GE2,eneE”}

?2,…,e”)e火是一個聯(lián)系,并稱e:(1474〃)是該聯(lián)系的參與者,〃是聯(lián)系的度(兀)。

簡單屬性是不能劃分成更小的部分的屬性。

復合屬性是可以劃分成更小部分的屬性(即可以分成一些其他屬性)。

單值屬性是一個特定的實體在該屬性上只能取單個值的屬性。

多值屬性是特定的實體在該屬性曰可以取多個值的屬性。

基本屬性是其值不能通過其他屬性的值推導出來的屬性。

派生屬性又稱計算屬性,是其值可以從其他相關屬性或實體計算得到的屬性。

碼是主碼或候選碼的簡稱。

主碼是指數(shù)據(jù)庫的設計者選中的,用來區(qū)分同一實體集中不同實體的候選碼。

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

超碼:其值可以惟一確定實體集中每個實體的屬性集稱為該實體集的超碼。

一對一聯(lián)系:如果當中的每個實體最多與耳中的一個實體相關聯(lián),并且瓦中的每個

實體也最多與Ei中的一個實體相關聯(lián),則稱巴和民之間聯(lián)系為一對一聯(lián)系。

一對多聯(lián)系:如果中的每個實體都可以與段中任意多個實體相關聯(lián),而及中的每

Ex

個實體最多與Ei中一個實體相關聯(lián),則稱這種聯(lián)系為?到殳的一對多聯(lián)系。

多對一聯(lián)系:如果中的每個實體最多與當中的一個實體相關聯(lián),而殳中的每個實

Ex

體都可以與巴中任意多個實體相關聯(lián),則稱這種聯(lián)系為昂到E2的多對?聯(lián)系。

多對多聯(lián)系:如果£1中的每個實體都可以與段中任意多個實體相關聯(lián),并且段中的

每個實體也可以與當中任意多個實體相關聯(lián),則稱和房之間聯(lián)系為多對多聯(lián)系。

Ex

2.2商品應當包含如下屬性:

商品條碼:標識商品。

商品名稱:用戶識別。

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

生產(chǎn)商:

生產(chǎn)時間:

進價:

銷售價:

存貨數(shù)量:

2.3所有部門形成一個實體集,所有經(jīng)理形成一個實體集。假定每個部門最多只有一個經(jīng)理,

而每個人只能在一個部門出任經(jīng)理,那么部門與經(jīng)理之間的聯(lián)系“管理”是一對一聯(lián)系。如

果允許部門經(jīng)理空缺,但一個人是經(jīng)理的話,必須在一個部門任職,那么經(jīng)理對聯(lián)系“管理”

的參與是全部參與,而部門是部分參叮。

所有學生形成一個實體集,所有院系形成一個實體集。每個院系由多個學生,而每個學

生只能在一個院系。因此,學生與院系之間的聯(lián)系是多對一聯(lián)系。通常,一個學生總在一個

院系中,而每個院系都有學生。因此,學生和院系對該聯(lián)系都是全部參與。

商品是一個實體集,訂單是一個實體集。每個訂單可以包括多種商品,而一種商品可以

被多個訂單訂購。這樣,商品與訂單之間的聯(lián)系“訂購”是多對多聯(lián)系。通常,每個訂單至

少包含一種商品,而每種商品都會被某個訂單訂購(否則就不再銷售這種商品)。這樣,商

品和訂單對該聯(lián)系的參與都是全部參與。

2.4按以下要求各舉一個實際例子:(1)三個實體集兩兩之間都存在多對多聯(lián)系(在你的例

子中,三個實體集之間還存在有意義的聯(lián)系嗎?),(2)三個實體集之間存在多對多聯(lián)系(在

你的例子中,其中兩個實體集之間還存在有意義的聯(lián)系嗎?)。

(1)實體集教師、課程和學生兩兩之間的多對多聯(lián)系

教師和課程之間的聯(lián)系“講授”是多對多的:一個教師教多門課程,一門課程由多位教

師講授

課程和學生之間的聯(lián)系“選修”是多對多的:一門課程可以被多個學生選修,一個學生

可以選多門課程。

學生和教師之間的聯(lián)系“師生”也是多對多的:一個學生可以有多位教師,一個教師可

以有多個學生。

教師、課程和學生三者之間也存在有意義的聯(lián)系,表明特定的學生選修了特定教師講授

的特定課程。

(2)供應商、零件和項目之間的多對多聯(lián)系“供應”

?個供應商向多個項目提供多種零件;一種零件由多個供應商提供,并用于多個項目;

一個項目使用多個供應商提供的多種零件。

這三個實體集中兩個實體集之間的有意義聯(lián)系實際上“供應”的投影。

2.5弱實體集的主碼可以通過它與強實體集的聯(lián)系推斷。如果將強實體集的主碼屬性添加到

弱實體集,那么這些屬性將通過實體集和聯(lián)系兩種方式提供,從而導致冗余。此外,實體集

應當只包含描述該實體的屬性,強實體集的主碼屬性并不是描述弱實體集的,因此添加它們

使得模型不清晰。

2.6如果一部分實體集通過E-R圖的一條路徑相連接,則這些實體集是相關的,或許是間接

相關的。一個非連通的圖意味一部分實體集與另一部分實體集是不相關的。如果我們將E-R

圖劃分成連通分支,則事實上我們就有了一些分離的數(shù)據(jù)庫,每個對應一個連通分支。

如上所述,一對實體集之間的路徑指明這兩個實體集之間的一種聯(lián)系(可能是間接的)。

如果圖中存在環(huán),則環(huán)中每對實體集至少可以通過兩種不同的方式相關聯(lián)。如果E-R圖是無

環(huán)的,則每對實體集之間至多存在一條路徑,因此每對實體集之間至多存在一種聯(lián)系。

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

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

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

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

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

損壞估計最好作為聯(lián)系“發(fā)生”的屬性,因為損壞估計不僅與事故有關,而且與特定客

戶的特定汽車有關。

E-R圖如圖2.1所示。

圖2.1習題2.7的E-R圖

2.8假定一個客戶可以有多個賬戶,但一個賬戶只屬于一個客戶。

涉及的實體集有:賬戶、支行、客戶和貸款。題中已經(jīng)清楚描述。

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

賬戶-支行:賬戶與支行之間的多對一聯(lián)系,其中賬戶全部參與。

貸款-支行:貸款與支行之間的多對一聯(lián)系,其中貸款全部參與。

借貸:客戶與貸款之間的多對一聯(lián)系,其中貸款全部參與。

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

存取款:客戶與賬戶之間的多對多聯(lián)系,包括屬性存取金額和存取日期。

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

E-R圖如圖2.2所示。

圖2.2習題2.8的E-R圖

2.9方法一:使用弱實體

建立弱實體集“貸款償還”,包括屬性:償還編號(順序號)、償還日期、償還金額;

建立建立“貸款償還”與其標識實體集“貸款”之間的標識性聯(lián)系“還貸”

方法二:使用多值屬性

將“貸款償還”作為貸款的多值復合屬性,它包括屬性:償還編號(順序號)、償還日

期、償還金額

方法三:使用強實體集

建立強實體集“貸款償還”,包括屬性:貸款編號、償還編號(順序號)、償還日期、償

還金額;

建立建立“貸款償還”與“貸款”之間的聯(lián)系“還貸”

方法」最好,方法三最差,理由與職工-家屬的例子類似。

2.10假定:

每位職工在同一時間段只從事一項工作。

每位職工不能同時在多個部門工作,也不能是多個部門的經(jīng)理。

每位職工不能同時參加多個項目。

每位職工的辦公室唯一。

?個項目只由一個部門承擔。

■-個辦公室職能屬于一個部門。

該問題涉及的實體集有:部門、職工、項目、辦公室和職工的工作經(jīng)歷,其中工作經(jīng)歷

存在依賴于職工,是弱實體集,其余是強實體集。

電話只有一個屬性“電話號碼”,不把它視為實體集。一個辦公室有多部電話,但假定

每位職工只有一部電話。

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

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

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

圖2.3習題2.10的E-R圖

承擔:部門與項目之間一對多聯(lián)系

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

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

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

屬于:弱實體集工作簡歷與標識實體集職工之間的多對一聯(lián)系

E-R圖如圖2.3所示。

第3章關系模型

習題參考答案

3.1解釋術語:

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

笛卡爾積:給定〃個域。2,…,(它們不必互不相同)上的笛卡爾積記作"X

Z)2X...xZ)?,定義為{(J|,心,…,d?)\J|eZ>iAdzw£>2A...Adne£>?}。

關系:域口,。2,…,a上的關系r是笛卡爾積AxAx...*。,,的任意子集。

元組:笛卡爾積或關系的每個元素(必,4,…,4)稱為一個"-元組(簡稱元組)

屬性:關系用一個二維表表示。列通常是命名的,稱為屬性。

關系的碼:關系7?的屬性集K是它的碼,如果K是H的超碼,并且K的任何真子集都

不是R的超碼(即K是極小超碼)?;騒是關系R的超碼,如果“和乃是R的任意實例中

的元組,并且小同=殳因,則“=,2。

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

主碼:由多個碼中選出的作為惟一識別關系元組的碼

外碼:如果FK是關系H的屬性集,并且不是尺的碼,但是FK與關系夕的主碼K對

應,則稱FK是關系7?的外碼。

關系模式:關系模式用關系模式名、關系模式的諸屬性和屬性對應的域,以及屬性間的

數(shù)據(jù)依賴集定義。通常簡單地用關系模式名和屬性列表表示R(4,4,…,4)。

關系數(shù)據(jù)庫模式:山若干域的定義和?組定義在這些域上的關系模式組成。

3.2實體完整性:關系R的所有元組在主碼上的值必須惟一,并且在主碼的任何屬性上都

不能取空值。

參照完整性:如果屬性集展是關系R的外碼,它參照關系S的主碼給,則R的任何

元組在FK上的值或者等于S的某個元組在主碼Ks上的值,或者為空值。

3.3除了語義約束之外,關系數(shù)據(jù)庫對關系的主要限制是:

(1)在關系數(shù)據(jù)庫中,我們只考慮有限關系(笛卡爾積的有限子集),因為無限關系既不能

顯式存儲,也不能有效地顯示。

(2)關系的每個屬性都必須是原子的,即每個屬性只能取原子值。在關系數(shù)據(jù)庫中,原子值

是數(shù)據(jù)訪問的最小單位。屬性的原子性要求是規(guī)范化關系的基本要求。

3.4事實上,關系R的外碼參照被參照關系S(目標關系)反映R的某些元組每個都與S的

某個特定元組之間存在聯(lián)系。有些實際問題允許R的某些元組與S的任何元組都沒有聯(lián)系,

在這種情況卜一,允許7?的這些元組在外碼上取空值。例如,在關系EmployeesEname,

Salary,Dno)中,Dno是外碼。有些公司允許某些職工(如公司總裁)不屬于任何特定的部門,

這些職工的元組在Dno上可以取空值。

假定所有的關系模式都是E-R圖轉換得到的。

(1)如果關系R是聯(lián)系集轉換的,則R代表聯(lián)系集,其外碼的值代表參與聯(lián)系的特定實體集

的?個特定實體。此時,R外碼都不能取空值。

(2)設關系R的外碼及參照被參照關系5。如果關系R是實體集所轉換的,則當必然通過

某個聯(lián)系R'與S對應的實體集相關聯(lián)。當這種聯(lián)系不要求是完全的時,R的某些元組可

以不參照S的任何元組,此時外部碼a的屬性值可以為空;反之不能為空。

3.5自然連接和等值連接的相同之處是二者都是根據(jù)屬性值相等進行連接。二者的不同之處

是:自然連接在相同屬性上進行相等比較,并投影去掉重復屬性;等值連接并不要求一定在

相同屬性上進行相等比較,也不刪除重復屬性。

3.6由強實體集得到的關系模式:

Employees(Eno,Ename,Salary)

Departments(Dno,Dptname)

Suppliers(Sno,Sname,Saddress)

Items(Ino,Iname,Stocks)

Orders(Ono,Data)

Customers(Cno,Cname,Caddress,Balance)

其中主碼用下橫線標示(下同)。注意,Departments的Dptname也是碼,但我們選擇Dno

為主碼。由弱實體集Dependents得到如下關系模式:

Dependents(Eno,Dname,ReltoEmp,Birthday)

將聯(lián)系轉換成關系模式時,不再考慮弱實體集的存在依賴聯(lián)系。其余6個聯(lián)系產(chǎn)生如下

關系模式:

Manages(Dno,Eno)

Worksin(Eno,Dno)

Carries(Dno,Ino)

Supplies(Sno,Ino,Price)

Includes(Ono,Ino,Quantity)

Placedby(Cno,Ono)

其中Worksin和Manages有相同的屬性,但它們的實際意義不同。

下一步,我們合并具有相同碼的關系模式。首先,考慮Manages。它與Employees和

Departments都包含相同的碼。Maneges與Employees合并更容易回答“某職工的經(jīng)理是誰”

這類問題,而與Departments合并更容易回答“某部門的經(jīng)理是誰”這類問題??紤]到后一

類問題更經(jīng)常出現(xiàn),我們決定將Manages合并到Departments,并將Manages中屬性Eno改

名為Mrgno(表示經(jīng)理的職工號),得到如下關系模式:

Departments(Dno,Dptname,Mrgno)

還有三對關系具有相同的碼,它們是Employees和Works_in,Items和Carries,Orders

和Placed_byo它們都可以直接合并。最后,我們得到圖3.11所示E-R模型的一組關系模式:

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(EnoJDname,ReltoEmp,Birthday)

Supplies(Sno,Ino,Price)

Includes(Ono,Ino,Quantity)

3.7習題3.6的關系模式的模式圖如圖3.1所示?

DepartmentsEmployeesDependents

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

3.8得到的一組關系模式如下:

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

汽車(車輛編號,車型,出廠年份,車主ID)

事故(事故編號,發(fā)生時間,事故地點)

發(fā)生(駕照號,車輛編號,事故編號,損壞估計)

其中,客戶與汽車之間的聯(lián)系已經(jīng)合并到關系模式“汽車”中,并將“客戶ID”改為“車

主ID”。

3.9由實體集得到如卜關系模式:

賬戶(賬號,余額)

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

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

貸款(貸款號,貸款日期,貸款金額)

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

賬戶-支行(賬號,支行名稱)

貸款-支行(貸款號,支行名稱)

借貸(客戶ID,貸款號)

存取款(客戶ID,賬號,存取金額,存取II期)

屬于(賬號,客戶ID)

合并具有相同碼的關系模式:

賬戶、賬戶-支行、屬于具有相同碼,合并成一個關系模式賬戶,并用開戶行替換支行

名稱,開戶人替換客戶標識。合并后的關系模式如下:

賬戶(賬號,余額,開戶行,開戶人)

貸款和貸款-支行具有相同碼,合并成一個關系模式貸款,并用貸款支行替換支行名稱。

合并后的關系模式如下:

貸款(貸款號,貸款H期,貸款金額,貸款支行)

最后得到的一組關系模式如下:

賬戶(賬號,余額,開戶行,開戶人)

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

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

貸款(貸款號,貸款日期,貸款金額,貸款支行)

借貸(客戶ID,貸款號)

存取款(客戶ID,賬號,存取金額,存取日期)

3.10電話號碼是多值屬性,需要創(chuàng)建一個關系模式。我們稱該關系模式為電話,它的碼為

電話號碼。該關系模式定義如下:

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

由強實體集得到如下關系模式:

部門(部門號,部門名稱,預算)

項目(項EI名稱,項目預算)

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

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

由弱實體集“工作筒歷”得到如下關系模式:

工作簡歷(職工號,開始時間,任務,工資,截止時間)

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

承擔(項目名稱,部門號)

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

管理(職工號,部門號)

參加(職工號,項目名稱)

工作(職工號,部門號)

職-辦(職工號,辦公室名稱)

合并具有相同碼的關系模式:

項目與承擔具有相同碼,合并為項目,并將部門號改為承擔部門,得到:

項目(項目名稱,項目預算,承擔部門)

辦公室與部-辦具有相同碼,合并為辦公室,并將部門號改為所屬部門,得到:

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

管理有兩個碼,可以與職工合并(有利于回答“某職工的經(jīng)理是誰”這類問題),也可

以與部門合并(有利于回答“某部門的經(jīng)理是誰”這類問題)??紤]“某部門的經(jīng)理是誰”

這類問題更常出現(xiàn),決定于部門合并,并將職工號改為經(jīng)理,得到:

部門(部門號,部門名稱,預算,經(jīng)理)

職工、參加、工作和職-辦都具有相同碼,合并為職工,得到:

職工(職工號,姓名,地址,電話號碼,項目名稱,部門號,辦公室名稱)

最后,我們得到如下關系模式:

部門(部門號,部門名稱,預算,經(jīng)理)

項目(項目名稱,項目預算,承擔部門)

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

職工(職工號,姓名,地址,電話號碼,項目名稱,部門號,辦公室名稱)

工作簡歷(職工號,開始時間,任務,工資,截止時間)

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

3.11

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

CTscity='i.?'(Suppliers)

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

5city=?上沙(Projects)

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

bQuantityNlOOAQuantity<l50(SPJ)

(4)求為工程JI提供零件的供應商號。

兀Sno(bjno=,jr(SPJ))

(5)求供應工程J1紅色零件的供應商號。

兀sno(°jno=,u1八Color』紅暫(SPJxParts))

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

兀Sname(%oiou紅w(SuppliersXSPJxParts))

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

心皿(Suppliers)-^^^(^^^(SupplierstXSPJ))

(8)求沒有使用天津供應商生產(chǎn)的紅色零件的工程號。

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

兀加(%點尸天*(Suppliers)XSPJXbcuoL位?(Parts))

該題的解

丁(Projects)-兀尸天*(Suppliers)XSPJXbca°i0,(Parts))

(9)求使用了本地供應商提供的零件的工程號和工程名稱。

巧n°jnamc(%i『jciiy(ProjectsXSPJXSuppliers))

(10)求未使用本地供應商提供的零件的工程號和工程名稱。

丐nojnamc(Projects)-%wmc(%iWci,y(Pr°jectsXSPJxSuppliers))

(11)求至少用了供應商S1所供應的全部零件的工程號。

兀nJo,Pno(SPJ)+npnoSsnb,s/SPJ))

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

7lSnamvKSno.Pno(SPJ>小。(PartS))XSupplierS)

3.12對于供應商-工程-零件數(shù)據(jù)庫,用元組/域關系演算表示習題3.9中的查詢

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

{“Suppliers。)A“Scity尸上海')}

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

{/1Projects(Z)A“Jcity尸鄭州,)}

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

{/1SPJ(/)A/[Quantity]>100A/[Quantity]<150)}

(4)求為工程JI提供零件的供應商號。

{/(1)|0〃)(SPJQ)八〃[Jno.'jr八/[Sno]=w[Sno])}

(5)求供應工程J1紅色零件的供應商號。

{/(,)|(32/)(3v)(SPJ(zz)AParts(v)Aw[Pno]=v[Pno]A

w[Jno]=,JrAv[Color尸紅色,Ar[Sno]=w[Sno])}

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

{/(,)|(3z/)(3v)(3w)(Suppliers(w)ASPJ(V)AParts(w)Az/[Sno]=v[Sno]A

v[Pno]=w[Pno]Ay[Color]=,紅色,A/[Sname]=w[Sname]))

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

{/(,)|(3z/)(Suppliers(w)A/[Sname]=w[Sname]A

-I(3V)(SPJ(V)Aw[Sno]=v[Sno]Av[Pno]=,P2,))}

(8)求沒有使用天津供應商生產(chǎn)的紅色零件的工程號。

{/(1)|(3w)(Projects(w)AZ[Jno]=w[Jno]A

—i((3vl)(3v2)(3v3)(Suppliers(vl)ASPJ(V2)AParts(v3)A

w[Jno]=v2[Jno]AVI[Sno]=v2[SnoO]Av2[Pno]=v3[Pno]A

川Scity尸天津,Ap3[Cok)r尸紅色,))}

(9)求使用了本地供應商提供的零件的工程號和工程名稱。

{產(chǎn))|(3w)(3v)(3w)(Projects(w)ASPJ(V)ASuppliers(w)A

w[Jno]=v[Jno]Av[Sno]=w[Sno]AwJcity]=w[Scity.]A

r[Jno]=w[Jno]A/[Jname]=z/[Jname])}

(10)求未使用本地供應商提供的零件的工程號和工程名稱。

{產(chǎn))|(35)(Projects(5)

((3w)(3v)(3w)(Projects(w)ASPJ(V)ASuppliers(w)A

w[Jno]=v[Jno]Av[Sno]=vv[Sno]AWJcity]=w[Scity]A

r[Jno]=w[Jno]A/[Jname]=w[Jname])

(11)求至少用了供應商SI所供應的全部零件的工程號。

{r(1)|(3w)(Projects(w)Ar[Jno]=z/[Jno]A

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

-i(3w)(SPJ(w)Aw[Jno]=w[Jno]Av[Sno]=w[Sno])))}

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

{/(1)|(3w)(Suppliers(w)△z[Sname]=w[Sname]A

-i(3v)(Parts(v)

—i(3w)(SPJ(w)Aw[Sno]=w[Sno]Av[Pno]=w[Pno])))}

3.13用域關系演算完成例3.12和例3.13中的查詢

例3.12

(1)列出系編號為MA(數(shù)學系)的所有學生的詳細信息。

{ai,X2/3/4X5,'MA')|Students(xi,X2K3/4X5,'MA')}

(2)列出所有課程的課程號、課程名和學分。

{(X]/2K3)I(3^)(Courses(xlrr2^A3))}

⑶列出年齡不超過45歲的所有副教授的姓名、性別和年齡。

{(為-)I6yl/2)(TeachersSxg^,'副教授力2))}

(4)列出選修了課程號為CS201的課程的所有學生的學號。

{(x)|(』)(SC8,CS20r,y))}

例3.13

(1)列出選修了課程號為CS201的課程的所有學生的學號和姓名。

{(xg)|(*3X4X5d6)0y)(Students(xg,X3K4口536)ASC(X1/CS2O1?)}

(2)列出每個學生選修的每門課程的成績,要求列出的學號、姓名、課程名和成績。

{(3/2用/4)I081O3j4)ez)aW,W2,W3,W4)(Studentsai/2,為)20344)A

SC(jq,W]N)ACourses(Wj,W2,W3,W4)}

(3)求評估得分高于90分的教師所在院系名稱、教師姓名、課程名和評估得分。

{(X1/2用M)|03J2)0Z|/2N3/4,Z5)0W]M2M3)(3v)(Departments(y血及)人

Teachers(zg/2N3,Z4/5)△Courses?*3M2,W3)A

Teaches(xi,助,v))}

3.14

(1)求提供了零件的供應商的個數(shù)。

Pcount-distinct(Sno)(SPJ)

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

9avg(Weight)(Parts)

(3)求供應商S1提供的每種零件的總數(shù)量。

Pno^sum(Quantity)(OSno='Sl'(SPJ))

(4)求供應商SI供應工程JI的每種零件的總重量。

Pno^sum(Weight)(^Pno,Weight(^Sno^'S1'AJno='J1,(PartsXSPJ)))

3.15右外連接

R>CS=(RX5)u{(null,null)}x(S-攻RX5))

kYJ

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

全外連接

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

f---------人--------\

Rtx£S=(7?XS)u(R-71R(RXS))X{(null,null)}u

{(null,..nullj}x(S-雙HXS))

v

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

3.16

(1)將Cno、Cname、Caddress和Balance分別為C0199、李華、鄭州市大學北路46號、6000

的客戶信息插入Customerso

Customers—Customersu{(C0199,李華,鄭州市大學北路46號,6000)}

(2)從Dependents(家屬)中刪除刪除1979年前出生的子女(ReltoEmp='子女’)。

Dependents<-Dependents-5,ear(Birthday)<i979八ReitoEmp=r女,(Dependents)

(3)將銷售部門(Dname='銷售')的職工工資(Salary)提高4%。

Employees《-71Eno,Ename,Sa[ary*1.04,Dno(^bname='削仰'(EmployeesXDepartments))D

(Employees一乃En。,Ename,Salary,Dno(Obname-^ifr(EmployeestxiDepartments)))

第4章關系數(shù)據(jù)庫標準語言SQL

習題參考答案

4.1SQL的基本特點是:

(1)集多種數(shù)據(jù)庫語言于一體:SQL語言集數(shù)據(jù)定義、數(shù)據(jù)操縱和數(shù)據(jù)控制(DCL)功能

于一體,語言簡潔、風格統(tǒng)一,使用SQL就可以獨立完成數(shù)據(jù)管理的核心操作。

(2)高度非過程化:使用SQL語言時,用戶只需要說明做什么,而不必指出怎么做。

(3)面向集合的操作方式:SQL語言采用集合操作方式,其運算對象、運算結果均是元組

的集合。

(4)一種語法兩種使用方式:SQL既可以作為一種自含式語言獨立使用,也可以作為一種

嵌入式語言與通用程序設計語言配合使用。在兩種使用方式下,SQL語言的語法結構

基本一致。

(5)功能強大,語言簡潔:SQL是一種完整地數(shù)據(jù)庫語言,其功能涵蓋數(shù)據(jù)定義、數(shù)據(jù)操

縱、數(shù)據(jù)控制等數(shù)據(jù)管理的主要需求。但SQL語言相對比較簡潔,其核心動詞只有9

個。另外,SQL語言的語法簡單,與英語口語的風格類似,易學易用。

4.2SQL的基本功能包括:

(1)SQL的數(shù)據(jù)定義語言(DDL)提供了模式定義、修改和刪除,基本表定義、修改和刪

除、域定義修改和刪除。

(2)SQL的數(shù)據(jù)操縱語言(DML)提供了數(shù)據(jù)查詢子語言.SQL的數(shù)據(jù)查詢子語言是關系

完備的,并且具有關系代數(shù)和關系演算的雙重特征。

(3)SQLDML不僅包括數(shù)據(jù)查詢,而且包括數(shù)據(jù)更新(數(shù)據(jù)插入、刪除和修改)語句,

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

(4)SQLDDL還允許用戶定義視圖,并且SQLDML允許用戶對視圖進行查詢和受限的更

新操作。

(5)SQLDDL允許用戶定義各種完整性約束條件,并在數(shù)據(jù)庫訪問時自動檢查,確保數(shù)據(jù)

庫操作不會破壞完整性約束條件。

(6)SQLDDL還包括授權定義,用來定義用戶對數(shù)據(jù)庫對象(基本表、視圖等)的訪問權

限,防止非法訪問,確保數(shù)據(jù)庫的安全性。

(7)SQL還支持事務,提供了定義事務開始和結束的語句。

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

模式定義、修改和刪除;

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

域定義、修改和刪除;

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

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

授權的定義與回收。

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),

FOREIGNKEYSnoREFERENCESSuppliers(Sno),

FOREIGNKEYPnoREFERENCESParts(Pno),

FOREIGNKEYJnoREFERENCESProjects(Jno));

4.5

3.8題對應的表

CREATETABLEClients

(DriverjdCHAR(IO)PRIMARYKEY,

CnameCHAR(8)NOTNULL,

AddressCHAR(20));

CREATETABLECars

(Car_noCHAR(10)PRIMARYKEY,

ModelCHAR(20),

YearDATE);

CREATETABLEAccidents

(Report_noCHAR(8)PRIMARYKEY,

AccidentDateDateTime,

LocationCHAR(40));

CREATETABLEParticipated

(DriverjdCHAR(10),

Car_noCHAR(10),

ReportnoCHAR(8)

DamageamountNUMERIC(8,2),

PRIMARYKEY(Driverid,Car_no,Report_no),

FOREIGNKEYDriver_idREFERENCESClients(Driverjd),

FOREIGNKEYCar_noREFERENCESCars(Car_no),

FOREIGNKEYReport_noREFERENCESAccidents(Report_no));

3.9題對應的表

CREATETABLEAccounts

(Account_noCHAR(10)PRIMARYKEY,

BalanceNUMERIC。1,2),

BranchnameCHAR(20),

ClientidCHAR(18),

FOREIGNKEYBranchnameREFERENCESBranchs(Branchname),

FOREIGNKEYClient_idREFERENCESClients(Client_id));

CREATETABLEBranches

(BranchnameCHAR(20)PRIMARYKEY,

CityCHAR(10),

StreetCHAR(20)

AssetNUMERIC(11,2));

CREATETABLEClients

(ClientidCHAR(18)PRIMARYKEY,

CnameCHAR(8)NOTNULL,

AddressCHAR(40),

PhoneCHAR(ll));

CREATETABLELoans

(LoanidCHAR(5)PRIMARYKEY,

LoanDateDATE,

AmountNUMERIC(11,2),

BranchnameCHAR(20),

FOREIGNKEYBranch_nameREFERENCESBranchs(Branch_name));

CREATETABLEBorrow

(Client_idCHAR(18),

LoanidCHAR(5),

PRIMARYKEY(Client_id,Loan_id),

FOREIGNKEYClientJdREFERENCESClients(Client_id),

FOREIGNKEYLoan_idREFERENCESLoans(Loanid));

CREATETABLEDeposit

(Client_idCHAR(18),

AccountnoCHAR(10),

AmountNUMERIC(11,2),

DepositDateDATE,

PRIMARYKEY(Client_id,Account_no),

FOREIGNKEYClientJdREFERENCESClients(ClientJd),

FOREIGNKEYAccount_idREFERENCESAccounts(Account_id));

3.10題對應的表

部門(部門號,部門名稱,預算,經(jīng)理)

項目(項目名稱,項目預算,承擔部門)

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

職工(職工號,姓名,地址,電話號碼,項目名稱,部門號,辦公室名稱)

工作簡歷(職工號,開始時間,任務,工資,截止時間)

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

CREATETABLEDepartments

(DnoCHAR(5)PRIMARYKEY,

DptnameCHAR(20),

BudgetNUMERIC(11,2),

MrgnoCHAR(8),

FOREIGNKEYEnoREFERENCESEmployees(Eno));

CREATETABLEProjects

(PnameCHAR(20)PRIMARYKEY,

PbudgetNUMERIC(11,2),

DnoCHAR(5),

FOREIGNKEYDnoREFERENCESDepartments(Dno));

CREATETABLEOffices

(OnameCHAR(20)PRIMARYKEY,

LocationCHAR(20),

DnoCHAR(5),

FOREIGNKEYDnoREFERENCESDepartments(Dno));

CREATETABLEEmployees

(EnoCHAR(8)PRIMARYKEY,

EnameCHAR(8),

AddressCHAR(40),

PhoneCHAR(ll),

PnameCHAR(20),

DnoCHAR(5),

OnameCHAR(20),

FOREIGNKEYPnameREFERENCESProjects(Pname),

FOREIGNKEYDnoREFERENCESDepartments(Dno),

FOREIGNKEYOnameREFERENCESOffices(Oname));

CREATETABLEResume

(EnoCHAR(8),

Start_timeDATE,

TaskCHAR(20),

SalaryNUMERIC(8,2),

EndtimeDATE,

PRIMARYKEY(Eno,Start_time),

FOREIGNKEYEnoREFERENCESEmployees(Eno));

CREATETABLEPhones

(Phone-noCHAR(ll)PRIMARYKEY,

OnameCHAR(20)

FOREIGNKEYOnameREFERENCESOffices(Oname));

4.6

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

SELECT*

FROMSuppliers

WHEREScity-上海彳

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

SELECT*

FROMProjects

WHEREJcity=,鄭州,;

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

SELECT*

FROMSPJ

WHEREQuantityBETWEEN100AND150;

(4)求為工程JI提供零件的供應商號

SELECTSno

FROMSPJ

WHEREJno=cJT;

(5)求供應工程JI紅色零件的供應商號

SELECTSno

FROMSPJ,Parts

WHERESPJ.Pno=Parts.PnoANDJno=4J1'ANDColor='紅色';

(6)求至少提供?種紅色零件的供應商名稱

SELECTSname

FROMSPJ,Parts,Suppliers

WHERESPJ.Pno=Parts.PnoANDSPJ.Sno=Suppliers.SnoANDColoU紅色

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

SELECTSname

FROMSuppliers

WHERENOTEXISTS

(SELECT*

FROMSPJ

WHERESPJ.Sno=SuppIiers.SnoANDPno='P2');

(8)求沒有使用天津供應商生產(chǎn)的紅色零件的工程號

SELECTJno

FROMProjects

WHERENOTEXISTS

(SELECT*

FROMSPJ,Parts,Suppliers

溫馨提示

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

評論

0/150

提交評論