试题一(共15分)
阅读下列说明,回答问题l至问题4,将解答填入答题纸的对应栏内。
【说明】
某证券交易所为了方便提供证券交易服务,欲开发一证券交易平台,该平台的主要功能如下:
(1)开户。根据客户服务助理提交的开户信息,进行开户,并将客户信息存入客户记录中,账户信息(余额等)存入账户记录中;
(2)存款。客户可以向其账户中存款,根据存款金额修改账户余额;
(3)取款。客户可以从其账户中取款,根据取款金额修改账户余额;
(4)证券交易。客户和经纪人均可以进行证券交易(客户通过在线方式,经纪人通过电话),将交易信息存入交易记录中;
(5)检查交易。平台从交易记录中读取交易信息,将交易明细返回给客户。
现采用结构化方法对该证券交易平台进行分析与设计,获得如图1-1所示的上下文数一据流图和图1-2所示的O层数据流图。
【问题1](3分)
使用说明中的词语,给出图1-1中的实体E1-E3的名称。
【问题2】(3分)
使用说明中的词语,给出图1-2中的数据存储D1-D3的名称。
【问题3】(4分)
根据说明和图中的术语,补充图1-2中缺失的数据流及其起点和终点。
【问题4】(5分)
实际的证券交易通常是在证券交易中心完成的,因此,该平台的“证券交易”功能需将交易信息传递给证券交易中心。针对这个功能需求,需要对图1-1和图1-2进行哪些修改,请用200字以内的文字加以说明。
试题二(共15 分)
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
天津市某银行信息系统的数据库部分关系模式如下所示:
客户 (客户号,姓名,性别,地址,邮编,电话)
账户 (账户号,客户号,开户支行号,余额)
支行 (支行号,支行名称,城市,资产总额)
交易 (交易号,账户号,业务金额,交易日期)
其中,业务金额为正值表示客户向账户存款;为负值表示取款。
【问题1】(3 分)
以下是创建账户关系的SQL语句,账户号唯一识别一个账户,客户号为客户关系的唯一标识,且不能为空。账户余额不能小于1.00元。请将空缺部分补充完整。
CREATE TABLE 账户(
账户号 CHAR(19) (a) ,
客户号 CHAR(10) (b) ,
开户支行号 CHAR(6) NOT NULL ,
余额 NUMBER(8,2) (c) );
【问题2】 (7 分)
(1)现银行决策者希望查看在天津市各支行开户且2009年9月使用了银行存取服务的所有客户的详细信息,请补充完整相应的查询语句。 (交易日期形式为’2000-01-01’)
SELECT DISTINCT 客户.*
FROM 客户, 账户, 支行, 交易
WHERE 客户.客户号 = 账户.客户号 AND
账户.开户支行号 = 支行.支行号 AND
(d) AND
交易.账户号 = 账户.账户号 AND
(e) ;
上述查询优化后的语句如下,请补充完整。
SELECT DISTINCT 客户.*
FROM 客户, 账户, (f) AS 新支行, (g) AS 新交易
WHERE 客户.客户号 = 账户.客户号 AND
账户.开户支行号 = 新支行.支行号 AND
新交易.账户号 = 账户.账户号;
(2)假定一名客户可以申请多个账户,给出在该银行当前所有账户余额之和超过百万的客户信息并按客户号降序排列。
SELECT *
FROM 客户
WHERE (h)
(SELECT 客户号 FROM 账户 GROUP BY 客户号 (i) )
ORDER BY (j) ;
【问题3】(5 分)
(1)为账户关系增加一个属性“账户标记” ,缺省值为0,取值类型为整数;并将当前账户关系中所有记录的“账户标记”属性值修改为0。请补充相关SQL语句。
ALTER TABLE 账户 (k) DEFAULT 0 ;
UPDATE 账户 (l) ;
(2)对于每笔金额超过10万元的交易,其对应账户标记属性值加1,给出触发器实
现的方案。
CREATE TRIGGER 交易_触发器 (m) ON 交易
REFERENCING NEW ROW AS 新交易
FOR EACH ROW
WHEN (n)
BEGIN ATOMIC
UPDATE 账户 SET 账户标记 = 账户标记 + 1
WHERE (o) ;
COMMIT WORK ;
END
试题二(共 15 分)
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
天津市某银行信息系统的数据库部分关系模式如下所示:
客户 (客户号,姓名,性别,地址,邮编,电话)
账户 (账户号,客户号,开户支行号,余额)
支行 (支行号,支行名称,城市,资产总额)
交易 (交易号,账户号,业务金额,交易日期)
其中,业务金额为正值表示客户向账户存款;为负值表示取款。
【问题1】(3 分)
以下是创建账户关系的SQL语句,账户号唯一识别一个账户,客户号为客户关系的唯一标识,且不能为空。账户余额不能小于1.00元。请将空缺部分补充完整。
CREATE TABLE 账户(
账户号 CHAR(19) (a) ,
客户号 CHAR(10) (b) ,
开户支行号 CHAR(6) NOT NULL ,
余额 NUMBER(8,2) (c) );
【问题2】(7 分)
(1)现银行决策者希望查看在天津市各支行开户且2009年9月使用了银行存取服务的所有客户的详细信息,请补充完整相应的查询语句。 (交易日期形式为’2000-01-01’)
SELECT DISTINCT 客户.*
FROM 客户, 账户, 支行, 交易
WHERE 客户.客户号 = 账户.客户号 AND
账户.开户支行号 = 支行.支行号 AND
(d) AND
交易.账户号 = 账户.账户号 AND
(e) ;
上述查询优化后的语句如下,请补充完整。
SELECT DISTINCT 客户.*
FROM 客户, 账户, (f) AS 新支行, (g) AS 新交易
WHERE 客户.客户号 = 账户.客户号 AND
账户.开户支行号 = 新支行.支行号 AND
新交易.账户号 = 账户.账户号
(2)假定一名客户可以申请多个账户,给出在该银行当前所有账户余额之和超过百万的客户信息并按客户号降序排列。
SELECT *
FROM 客户
WHERE (h)
(SELECT 客户号 FROM 账户 GROUP BY 客户号 (i) )
ORDER BY (j) ;
【问题3】(5 分)
(1)为账户关系增加一个属性“账户标记” ,缺省值为0,取值类型为整数;并将当前账户关系中所有记录的“账户标记”属性值修改为0。请补充相关SQL语句。
ALTER TABLE 账户 (k) DEFAULT 0 ;
UPDATE 账户 (l) ;
(2)对于每笔金额超过10万元的交易,其对应账户标记属性值加1,给出触发器实现的方案。
CREATE TRIGGER 交易_触发器 (m) ON 交易
REFERENCING NEW ROW AS 新交易
FOR EACH ROW
WHEN (n)
BEGIN ATOMIC
UPDATE 账户 SET 账户标记 = 账户标记 + 1
WHERE (o) ;
COMMIT WORK ;
END ;
A.1 000
B.5 000
C.100 000
D.200 000