試題2
閱讀以下某工廠信息管理數(shù)據(jù)庫(kù)的設(shè)計(jì)說(shuō)明,根據(jù)要求回答問(wèn)題1~問(wèn)題4。(15分)
【說(shuō)明】
某工廠有多個(gè)部門,每個(gè)部門有多位職工,每位職工屬于并且僅屬于一個(gè)部門,每個(gè)部門有一位負(fù)責(zé)人,每個(gè)辦公室有一部電話。每位職工的月工資大致是:800≤月工資≤4 500元。
軟件開(kāi)發(fā)公司A為該工廠開(kāi)發(fā)的信息管理數(shù)據(jù)庫(kù)的部分關(guān)系模式如下所示。
職工(職工號(hào),姓名,年齡,月工資,部門號(hào),電話,辦公室)
部門(部門號(hào),部門名,負(fù)責(zé)人代碼,任職時(shí)間)
其中“職工”和“部門”的關(guān)系示例分別見(jiàn)表8和表9。
表8 “職工”關(guān)系示例表
職 工 號(hào) |
姓 名 |
年 齡 |
月 工 資 |
部 門 號(hào) |
電 話 |
辦 公 室 |
1001 |
鄭俊華 |
26 |
1000 |
1 |
8001234 |
主樓201 |
1002 |
王平 |
27 |
1100 |
1 |
8001234 |
主樓201 |
2001 |
王曉華 |
38 |
1300 |
2 |
8001235 |
1號(hào)樓302 |
2002 |
李力 |
24 |
800 |
2 |
8001236 |
1號(hào)樓303 |
3001 |
黎運(yùn)軍 |
42 |
1300 |
3 |
8001237 |
主樓202 |
4001 |
李源 |
24 |
800 |
3 |
8001245 |
2號(hào)樓102 |
4002 |
李興民 |
36 |
1200 |
4 |
8001246 |
2號(hào)樓103 |
5001 |
趙欣 |
25 |
0 |
Null |
… |
… |
… |
… |
… |
… |
… |
… |
… |
表9 “部門”關(guān)系示例表
部 門 號(hào) |
部 門 名 |
負(fù)責(zé)人代碼 |
任 職 時(shí) 間 |
1 |
人事處 |
1002 |
2004-8-3 |
2 |
機(jī)關(guān) |
2001 |
2004-8-3 |
3 |
銷售科 |
||
4 |
生產(chǎn)科 |
4002 |
2003-6-1 |
5 |
車間 |
【問(wèn)題1】(2分)
請(qǐng)使用“關(guān)系模式標(biāo)記規(guī)則”(見(jiàn)本題附錄),給出上述各關(guān)系模式的主鍵和外鍵。
【問(wèn)題1】答案解析:
這是一道要求考生根據(jù)題目給定的關(guān)系模式,以及屬性間的函數(shù)依賴關(guān)系和給定的關(guān)系實(shí)例來(lái)確定各關(guān)系模式主鍵和外鍵的綜合分析題。本試題的解答思路如下。
(1)由試題中給出的關(guān)鍵信息“某工廠有多個(gè)部門,每個(gè)部門有多位職工,每位職工屬于并且僅屬于一個(gè)部門,每個(gè)部門有一位負(fù)責(zé)人,……每位職工的月工資大致是:800≤月工資≤4500元”,可以整理出如表8所示的關(guān)系模式主要屬性、含義及約束。
表10 主要屬性、含義及約束表
屬 性 |
含義及約束 |
職工號(hào) |
唯一標(biāo)識(shí)每個(gè)職工的編號(hào),每個(gè)職工屬于并且僅屬于一個(gè)部門 |
部門號(hào) |
唯一標(biāo)識(shí)每個(gè)部門的編號(hào),每個(gè)部門有一個(gè)負(fù)責(zé)人,且他也是一位職工 |
月工資 |
f 500≤月工資≤5000元 |
(2)設(shè)K為R(U,F(xiàn))中的屬性的組合,若 ,且對(duì)于K的任何一個(gè)真子集 ,都有 不能決定U,則K為R的候選碼(候選關(guān)鍵字)。若有多個(gè)候選碼,則選一個(gè)作為主碼(主鍵)。
(3)部門關(guān)系模式的主鍵和外鍵。
由題目中給出的關(guān)鍵信息“某工廠有多個(gè)部門,……每個(gè)部門有一位負(fù)責(zé)人”,并且結(jié)合試題所給出的“部門”關(guān)系示例(見(jiàn)表9)可知,僅用“部門號(hào)”作為主鍵,可以唯一區(qū)分部門關(guān)系中的每一個(gè)元組。同時(shí)考慮到部門負(fù)責(zé)人應(yīng)該來(lái)自職員,所以“負(fù)責(zé)人代碼”應(yīng)為部門關(guān)系模式的外鍵。最后可得部門關(guān)系模式的主鍵和外鍵如下。
部門(部門號(hào),部門名,負(fù)責(zé)人代碼,任職時(shí)間)
(4)職工關(guān)系模式的主鍵和外鍵。
由題干中給出的關(guān)鍵信息“每位職工屬于并且僅屬于一個(gè)部門”可知,僅用“職工號(hào)”作為主鍵,可以唯一區(qū)分職工關(guān)系中的每一個(gè)元組。同時(shí)考慮到“部門號(hào)”是部門關(guān)系模式的主鍵,所以它應(yīng)是職工關(guān)系模式的外鍵。最后可得職工關(guān)系模式的主鍵和外鍵如下。
職工(職工號(hào),姓名,年齡,月工資,部門號(hào),電話,辦公室)
(3)參照完整性定義。定義格式如下:
FOREIGN KEY(屬性名) REFERENCES 表名(屬性名)
[ON DELETE CASCADE | SET NULL]
參照完整性是通過(guò)使用保留字“FOREIGN KEY”定義哪些列為外碼;REFERENCES用于指明外鍵對(duì)應(yīng)于哪個(gè)表的主鍵;ON DELETE CASCADE指明刪除被參照關(guān)系的元組時(shí),同時(shí)刪除參照關(guān)系中的元組;SET NULL表示置為空值方式。
相關(guān)推薦:考試吧策劃:2010年軟件水平考試完全指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |