参考答案:
详细解析:
阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某论坛的部分关系模式如下:
用户(用户编号,帐号,密码,积分,级别)
栏目(栏目编号,父栏目编号,名称,版主,描述)
主题(主题编号,标题,类型,点击率,内容,发布时间,栏目编号,用户编号,附件)
回复主题(回复主题编号,标题,主题编号,内容,发布时间,用户编号,附件)
其中:
(1)用户编号唯一标识一个用户。用户的积分根据其发布的主题信息按积分规则计算。级别的值来自集合{‘高级用户’, 普通用户’, ‘初级用户’},当用户开始注册时,积分为100,级别为初级用户;当用户积分到达1000时,级别为普通用户;当用户积分到达5000时,级别为高级用户。
(2)栏目编号唯一标识一个栏目。栏目分两级,包括父栏目和子栏目。每个栏目必须有且仅有一个版主,版主是一个用户。
(3)主题编号唯一标识一个主题。类型的值来自集合{ ‘精华’, ‘置顶’, ‘普通’}。
(4)回复主题编号唯一识别一个回复主题。一个回复主题对应一个主题,而一个主题可以有多个回复主题。
【问题1】
请将下列SQL语句的空缺部分补充完整。
(1)假设已经创建好用户关系,现在想增加一个属性“个性签名” ,类型为VARCHAR(60),请给出相关的SQL语句。
(a) ;
(2)假设已经创建好用户关系,下面是创建栏目关系的SQL语句,请将空缺部分补充完整。
CREATE TABLE 栏目(
栏目编号 VARCHAR(8) PRIMARY KEY,
父栏目编号 VARCHAR(8),
名称 VARCHAR(40),
版主 VARCHAR(8) NOT NULL,
描述 VARCHAR(100),
(b) ,
(c) );
【问题2】
请将下列SQL语句的空缺部分补充完整。
(1)查询标题或内容包含“SQL”的主题标题,按发布时间降序排序。
SELECT DISTINCT 标题
FROM 主题
(d)
(e) ;
(2)查找名称为“数据库技术”的栏目及其子栏目中的精华主题的标题和点击率。
SELECT 标题,点击率
FROM 主题
WHERE 类型= ‘ 精华’
AND 栏目编号 (f) (SELECT 栏目编号
FROM 栏目
WHERE 名称= ‘数据库技术’
(q)
SELECT 栏目编号
FROM 栏目
WHERE (h) (SELECT 栏目编号
FROM 栏目
WHERE 名称=‘ 数据库技术’ ));
【问题3】
假设所有关系模式已创建,回复主题关系模式的“主题编号”是外键,参照主题关系模式的“主题编号” 。现在要删除编号为“T005”的主题及其相关的回复主题,下面是对应的删除语句,这些语句组成一个事务。
DELETE 主题 WHERE 主题编号 = ‘T005 ’;
DELETE 回复主题 WHERE 主题编号= ‘T005’;
(1)请问这些删除语句能否完成功能?若不能,请说明为什么?(100字以内)
(i)
(2)假设现在希望仅通过“DELETE 主题 WHERE 主题编号 = ‘ T005’ ;”这一条语句就能完成此删除功能,应如何实现? (100字以内)
(j)
【问题4】
为了了解每个栏目用户关注的主题,对原创主题创建视图主题_view,属性包括主题编号、标题、用户帐号、栏目名称、回复数、点击率和发布时间。
CREATE VIEW 主题_view (主题编号,标题,用户帐号,栏目名称,回复数,点击率,发布时间) AS SELECT 主题.主题编号,标题,帐号,名称,回复数,点击率,发布时间
FROM 主题,用户,栏目, ( (k)
FROM 回复主题
(l) ) AS A
WHERE 主题.用户编号=用户.用户编号 AND 主题.栏目编号=栏目.栏目编号 AND (m) ;
参考答案:
详细解析: