●試題3
閱讀以下說明和表,回答問題l至問題4,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
某醫(yī)院信息管理系統(tǒng)的需求分析和部分關(guān)系模式設(shè)計的結(jié)果描述如下:
(1)醫(yī)院有多個部門,每個部門有一名負責(zé)人、一間辦公室、一部電話、多名醫(yī)生(護士),每個醫(yī)生(護士)最多屬于一個部門,負責(zé)人也是一名醫(yī)院醫(yī)生(護士)。
(2)醫(yī)院醫(yī)生(護士)的月工資大于等于1000元且小于等于8000元。
(3)數(shù)據(jù)庫的部分關(guān)系模式設(shè)計如下:
醫(yī)護人員(編號,姓名,月工資,部門號,辦公室,電話)
部門(部門號,部門名,負責(zé)人代碼,任職時間)
(4)“醫(yī)護人員”和“部門”的關(guān)系示例分別見表7.3和表7.4。
表7.3 “醫(yī)護人員”關(guān)系
編號 | 姓名 | 月工資 | 部門號 | 辦公室 | 電活 |
60801 | 汪俊華 | 1000 | 3 | A座201 | 68831226 |
60802 | 楊曉軍 | 3200 | 1 | A座202 | 68831227 |
60803 | 王曉華 | 1200 | 2 | B座202 | 68831256 |
60804 | 呂靖原 | 3200 | 4 | A座301 | 6883 1258 |
60805 | 牟雪松 | 2800 | 3 | B座302 | 68831266 |
60806 | 周黎 | 4300 | 2 | A座202 | 6883 1227 |
60807 | 程文馳 | 0 | Null |
部門號 | 部門名 | 負責(zé)人代碼 | 任職時間 |
1 | 財務(wù)部 | 60802 | 2001—8—52 |
2 | 住院部 | 60803 | 2002—6—33 |
3 | 醫(yī)藥部 | 60805 | 2002—6—34 |
4 | 門診部1 | 60810 | 2003—8—15 |
5 | 門診部2 | 60821 | 2004—6—3 |
【問題1】
根據(jù)上述說明,請給出
(1)“醫(yī)護人員”關(guān)系模式的主鍵和外鍵。
(2)“部門”關(guān)系模式的主鍵和外鍵。
【問題2】
(1)用SQL定義“醫(yī)護人員”關(guān)系模式,請在空缺處填入正確的內(nèi)容。
Create Table“醫(yī)護人員”(編號CHAR(5)(a),
姓名CHAR(8),
月工資NUMBER(4),
部門號CHAR(1),
辦公室CHAR(20),
電話CHAR(8),
(b)(部門號),
CHECK(月工資>=1000 AND月工資<=8000));
(2)針對人數(shù)大于等于2的部門創(chuàng)建視圖D—View(Dept,D—num,D—Totals,D—AvgPay),其中, Dept為部門號,D—num為部門人數(shù),D_Totals為工資總數(shù),D—AvgPay為平均工資,請在空缺處填入正確的內(nèi)容。
Create View D—View(Dept,D—num,D_TotMs,D—AvgPay)As
(Select部門號,(C)
from醫(yī)護人員
(d)count(*)>=2 WHERE部門號IS NOT NULL);
【問題3】
對于表7.3、表7.4所示的“醫(yī)護人員”和“部門”關(guān)系,請指出下列各行是否可以插入“醫(yī)護人員”關(guān)系,為什么?
表7.5
60811 | 蘆峰 | 800 | 1 | A座201 | 68831226 |
60802 | 李曉嘯 | 3500 | 2 | B座202 | 68831236 |
60812 | 高亞南 | 2600 |
原來的“醫(yī)護人員”關(guān)系模式存在什么問題?在不增加新關(guān)系模式的前提下,請給出修改后的“醫(yī)護人員”和“部門”關(guān)系模式。
【問題1】解答:
(1)“醫(yī)護人員”關(guān)系模式的主鍵和外鍵分別是編號和部門號。
(2)“部門”關(guān)系模式的主鍵是部門號或部門名,外鍵是負責(zé)人代碼。
【問題2】解答:
編號是主鍵,所以(a)處填入PRIMARY KEY。部門號是外鍵,所以(b)處填入FOREIGN KEY(部門號)REFERENCES部門。
根據(jù)字段要求,(c)處填入Count(*),Sum(月工資),Avg(月工資),(d)處填入GROUP BY部門號HAVING。以上答案中的單詞不區(qū)分大小寫。
【問題3】解答:
第一行不能插入,原因是他的工資小于1000。
第二行也不能插入,因為編號60802已經(jīng)存在于表中。
第三行可以插入,盡管后三個屬性為空,它表示該人員尚未分配部門。
【問題4】解答:
“醫(yī)護人員”關(guān)系模式存在的問題有,①數(shù)據(jù)冗余,同一部門有多少員工,部門的辦公司和電話就要重復(fù)記錄多少次。②數(shù)據(jù)一致性,當(dāng)某部門的辦公司變化時,可能會導(dǎo)致某些人的屬性修改了,而某些未修改。
將關(guān)系模式修改為:
醫(yī)護人員(編號,姓名,月工資,部門號)
部門(部門號,部門名,負責(zé)人代碼,任職時間,辦公室,電話)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |