第 1 页:单选题 |
第 4 页:应用题 |
第 6 页:设计与应用题 |
三、设计与应用题
46在SQL Server 2008中,设有教师表(教师号,姓名,所在部门号,职称)和部门表(部门号,部门名,高级职称人数)。请编写满足下列要求的后触发型触发器(设触发器名字为tri_zc)。
每当在教师表中插入一名具有高级职称(“教授”或“副教授”)的教师时,或者将非高级职称教师的职称更改为高级职称时,均修改部门表中相应部门的高级职称人数。(假设一次操作只插入或更改一名教师的职称)
参考解析:
【解题思路】
创建触发器的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指定触发器为后触发型触发器,INSERT,UPDATE和DELETE为指定引发触发器执行的操作。根据原题要求,insert触发器会在inserted表中添加一条刚插入的记录,update触发器会在更新数据后将更新前的数据保存在deleted表中,更新后的数据保存在inserted表中。在教师表中插入或者更新的时候,都会在inserted表中增加一条记录,所以只需在触发器查询inserted表中查询有没有“教授”或者“副教授”的记录,如果有,则触发修改相应部门的高级职称人数即可。
【参考答案】
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(商店编号,商品编号,库存数量,部门编号,负责人)
如果规定:每个商店的每种商品只在一个部门销售,每个商店的每个部门只有一个负责人,每个商店的每种商品只有一个库存数量。(10分)
(1)请根据上述规定,写出关系模式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(商店编号、部门编号、负责人)。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |