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