第 1 頁(yè):?jiǎn)芜x題 |
第 4 頁(yè):應(yīng)用題 |
第 6 頁(yè):設(shè)計(jì)與應(yīng)用題 |
三、設(shè)計(jì)與應(yīng)用題
46在SQL Server 2008中,設(shè)有教師表(教師號(hào),姓名,所在部門(mén)號(hào),職稱)和部門(mén)表(部門(mén)號(hào),部門(mén)名,高級(jí)職稱人數(shù))。請(qǐng)編寫(xiě)滿足下列要求的后觸發(fā)型觸發(fā)器(設(shè)觸發(fā)器名字為tri_zc)。
每當(dāng)在教師表中插入一名具有高級(jí)職稱(“教授”或“副教授”)的教師時(shí),或者將非高級(jí)職稱教師的職稱更改為高級(jí)職稱時(shí),均修改部門(mén)表中相應(yīng)部門(mén)的高級(jí)職稱人數(shù)。(假設(shè)一次操作只插入或更改一名教師的職稱)
參考解析:
【解題思路】
創(chuàng)建觸發(fā)器的SQL語(yǔ)句為:CREATE TRIGGER,其語(yǔ)法格式為:
CREATE TRIGGER[schema_name.]trigger_name
ON{tableIview}
{FOR l AlZl'ER I INSTEAD OF}
{[INSERT][,][DELETE][,][UPDATE]}
AS{sql_statement}
[;]
其中AFFER指定觸發(fā)器為后觸發(fā)型觸發(fā)器,INSERT,UPDATE和DELETE為指定引發(fā)觸發(fā)器執(zhí)行的操作。根據(jù)原題要求,insert觸發(fā)器會(huì)在inserted表中添加一條剛插入的記錄,update觸發(fā)器會(huì)在更新數(shù)據(jù)后將更新前的數(shù)據(jù)保存在deleted表中,更新后的數(shù)據(jù)保存在inserted表中。在教師表中插入或者更新的時(shí)候,都會(huì)在inserted表中增加一條記錄,所以只需在觸發(fā)器查詢inserted表中查詢有沒(méi)有“教授”或者“副教授”的記錄,如果有,則觸發(fā)修改相應(yīng)部門(mén)的高級(jí)職稱人數(shù)即可。
【參考答案】
CREATE TRIGGER tri_ZC
ON教師表
AL TER INSERT,UPDATE
AS
BEGIN
DECLATE@ZC varchar(10),@dept varchar(30)
SELECT@dept=所在部門(mén)號(hào),@2c=職稱FROM inserted
IF@ZC=’教授’or’副教授7
Update部門(mén)表
SET高級(jí)職稱人數(shù)=高級(jí)職稱人數(shù)+1
Where部門(mén)號(hào)=@dept
End
47設(shè)某連鎖商店數(shù)據(jù)庫(kù)中有關(guān)系模式R:
R(商店編號(hào),商品編號(hào),庫(kù)存數(shù)量,部門(mén)編號(hào),負(fù)責(zé)人)
如果規(guī)定:每個(gè)商店的每種商品只在一個(gè)部門(mén)銷售,每個(gè)商店的每個(gè)部門(mén)只有一個(gè)負(fù)責(zé)人,每個(gè)商店的每種商品只有一個(gè)庫(kù)存數(shù)量。(10分)
(1)請(qǐng)根據(jù)上述規(guī)定,寫(xiě)出關(guān)系模式R的函數(shù)依賴集;
(2)請(qǐng)給出關(guān)系模式R的候選碼;
(3)請(qǐng)說(shuō)明關(guān)系模式R屬于第幾范式,并給出理由;
(4)請(qǐng)將R分解成滿足3NF的關(guān)系模式。
參考解析:
(1)【解題思路】
函數(shù)依賴定義:設(shè)R(u)是屬性集U上的關(guān)系模式,X,Y是U的子集,若對(duì)于R(U)的任意一個(gè)可能的關(guān)系r,r中不可能存在兩個(gè)元組在X上的屬性值相等,在Y上的屬性值不等,則稱X函數(shù)確定Y或Y函數(shù)依賴X,記作X->Y。函數(shù)依賴是指關(guān)系R的一切關(guān)系均要滿足的約束條件。
【參考答案】
(商店編號(hào),商品編號(hào))->部門(mén)編號(hào),(商店編號(hào),部門(mén)編號(hào))->負(fù)責(zé)人,(商店編號(hào),商品編號(hào))->庫(kù)存量。
(2)【解題思路】
設(shè)K為R中的屬性或?qū)傩越M合,若u完全依賴于K,則K為R的候選碼。
【參考答案】
(商店編號(hào),商品編號(hào))
(3)【解題思路】
關(guān)系數(shù)據(jù)庫(kù)是要滿足一定要求的。滿足最低要求的叫第一范式,在第一范式中滿足進(jìn)一步要求的為第二范式,其余以此類推。顯然該關(guān)系模式滿足第一范式,接下來(lái)檢查其是否滿足第二范式。在第二范式中,要求關(guān)系模式中不存在部分依賴,每一個(gè)非主屬性完全依賴于碼,而根據(jù)第一空可得如下依賴關(guān)系:(部門(mén)編號(hào),商店編號(hào))->負(fù)責(zé)人,所以屬于第二范式。它的非主屬性(不包含在任何候選碼中的屬性)有3個(gè):部門(mén)編號(hào)、負(fù)責(zé)人和庫(kù)存量,并皆完全函數(shù)依賴于主碼。將(商店編號(hào)、商品編號(hào))記作X,(商店編號(hào)、部門(mén)編號(hào))記作Y,負(fù)責(zé)人記作Z,即x→Y,Y→Z。由此可以看出,存在傳遞依賴,故不屬于第三范式。
【參考答案】
第二范式
(4)【解題思路】
第三范式中要求每一個(gè)屬性既不部分依賴于碼也不傳遞依賴于碼。
【參考答案】
R1(商店編號(hào)、商品編號(hào)、部門(mén)編號(hào)、庫(kù)存量);B2(商店編號(hào)、部門(mén)編號(hào)、負(fù)責(zé)人)。
相關(guān)推薦:
2015計(jì)算機(jī)三級(jí)《數(shù)據(jù)庫(kù)》上機(jī)試題及答案匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |