版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中英語情態(tài)動(dòng)詞專項(xiàng)練習(xí)冊(cè)
- 城鎮(zhèn)污水管道改造項(xiàng)目技術(shù)可行性報(bào)告
- 塑料板凳注塑模具結(jié)構(gòu)設(shè)計(jì)方案
- 小學(xué)抽樣統(tǒng)計(jì)教學(xué)及教案設(shè)計(jì)理念
- 小學(xué)生硬筆書法規(guī)范字帖
- 外包項(xiàng)目合同及人員配置模板
- 三年級(jí)語文閱讀理解專項(xiàng)練習(xí)
- 學(xué)習(xí)小組組織管理策略與實(shí)踐
- 建筑施工項(xiàng)目進(jìn)度管理方案模板
- 高??萍汲晒D(zhuǎn)化流程指南
- 2025江西江新造船有限公司招聘70人模擬筆試試題及答案解析
- 重慶市豐都縣2025屆九年級(jí)上學(xué)期1月期末考試英語試卷(不含聽力原文及音頻答案不全)
- 2026年黨支部主題黨日活動(dòng)方案
- 干爐渣運(yùn)輸合同范本
- 品牌設(shè)計(jì)報(bào)價(jià)方案
- 2024年地理信息技術(shù)與應(yīng)用能力初級(jí)考試真題(一)(含答案解析)
- 初中英語必背3500詞匯(按字母順序+音標(biāo)版)
- 《國(guó)家基層高血壓防治管理指南2025版》解讀 2
- 實(shí)施指南(2025)《HG-T 6214-2023 鄰氨基苯酚》
- 安全生產(chǎn)相關(guān)工作主要業(yè)績(jī)及研究成果
- 2025廣西百色能源投資發(fā)展集團(tuán)有限公司招聘7人(第一批)筆試歷年參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論