第六套操作题
第46题
假定要建立一个学校科研项目管理的信息系统,需要管理如下信息:
教师:教师编号、教师姓名;
项目:项目编号、项目名称、资助额:
学生:学生编号、学生姓名、学位,学生按学位分为本科生和研究生。 其中带下划线的属性是唯一标识,其他需满足的要求如下:
每位教师可以负责多个项目:
每个项目只能有一位教师作为项目负责人;
每位本科生只能参加一个项目:
每位研究生可以参加多个项目;
一个项目可以有多位本科生和研究生参加。 (1)请根据以上描述,试画出相应的ER图。
提示:父子实体关系请使用下图表示 (2) 将所画的ER图转换为相应的关系模式,并标出主键。
(1) ER图如下:
(2)
第47题
设在SQL Server某数据库中有房屋出租表,表的定义如下:
CREATE TABLE出租表(
房屋号 char(10)
出租日期 datetime,
租期 int not null,-月数
到期日期 datetime,
PRIMARY KEY(房屋号,出租日期);
🔺现要创建一个具有如下功能的触发器:
每当在出租表中插入一行数据(房屋号,出租日期,租期)时,自动计算出本行数据的"到期日期”。请补全下列代码。
CREATE TRIGGER tri ON __出租表____FOR insert
AS
UPDATE出租表SET到期日期=dateadd( month 租期,出租日期)
VHERE房屋号=(SELECT房屋号FROMinserted )
and出租日期=(ELECT出租日期FROM inserted)
评价:sss!
第48题
某商品经营管理系统使用SQL Server数据库。在数据库中存在销售单据表,建表语句为:
CREATE TABLE销售单据表(
销售单据编号char(20),
付款总金额money,.
销售日期datetime,
销售人员编号varchar(8),
收银台编号varchar(6)
由于该表数据量巨大,因此建立了销售单据历史表,将1年以前的数据从销售单据表转入销售单据历史表。销售单据历史表的建表语句如下:
CREATE TABLE销售单据历史表(
销售单据编号char(20),
付款总金额money,.
销售日期datetime,
销售人员编号varchar(8),
收银台编号varchar(6)
其中销售单据编号为主键,在收银台编号和销售人员编号上有索引。
[]在系统运行一段时间后,发现如下语句执行速度缓慢:
SELECT销售单据编号,付款总金额,销售日期FROM销售单据表VHERE收银台编号=‘O01000’
union
SELECT销售单据编号,付款总金额,销售日期FROM销售单据历史表VHERE收银台编号=‘O01000’
请给出该语句执行速度缓慢的原因,并给出SQL语句的优化方案。
[2]在系统运行过程中,磁盘i/o很重,数据库数据量近200G且磁盘写入性能要求非常高。考虑对硬件进行升级,3位工程师给出了不同配置方案:
方案1:CPU保特不变,内存16G,2块300 GB SAS硬盘,使用硬件RAID卡做RAID1
方案2:CPU保特不变,内存8G,4块300 GB SAS硬盘,使用硬件RAID卡做RAID0
·方案3:CPU保持不变,内存16G,3块146 GB SAS硬盘,使用硬件RAID卡做RAID5
在不考虑成本的情况下,请指出哪种方案更适合此应用并给出原因。
答案:
[1]union有一个distinct的动作,需要进行并运算的数据量越大,其操作执行越慢。只需把unioni改为union all,就会取消这个distinct操作,速度将会大幅增加。
[2]由于题目已提及1/O很高,
方案1的RAD1方案对于/O没有帮助,所以否决。
方案2的RAD0方案虽然对磁盘I/O的提升最大,但是由于RAD0对于数据的可靠性没有任何帮助,暂时候选。
方案3采用RAID5方案。RAID5的读取性能与RAID0接近,但写入速度比单个磁盘稍慢,而数据的可靠性高于RAID0.
结合题目提及对于磁盘写入性能要求非常高,所以只能选方案2,因为方案1对读写性能没有提升,而方案3本题中十分看重的降低了写入性能。