吉林大学数据库系统概念2015年期末试题自做答案

简答题

1数据库中常用的完整性约束包括哪些?

答:not null

unique

check

primary key

foreign key

2简述数据库系统与文件系统的主要区别。

答:参考课本19页1.8

  • 这两个系统都包含了数据集合和一组程序。数据库协调数据的物理和逻辑访问,当文件系统只能协调物理访问。
  • 数据库系统通过确保所有程序都可以使用一块物理数据来减少数据重复的数量。而在文件系统中的一个程序的数据在写的时候可能无法被另一个程序所读取。
  • 数据库系统被设计允许对数据进行灵活的访问(即查询),当文件系统的设计目的是为了允许预先确定的访问(即编译程序)。
  • 数据库管理系统被设计用来协调多用户管理相同的数据,文件处理系统通常被设计成允许一个或多个程序同时访问相同的数据。文件处理系统通常被设计成一个或多个程序同时访问不同的数据文件。在文件系统中,只有当两个程序对文件操作权限都是只读的时候才可以同时访问。

3一般情况下,关系R与关系S要进行自然连接,需要满足什么条件?

答:至少有一个同名属性列。

4为什么要在数据库中引入事务的概念?

答:因为有些操作的集合要么全都发生,要么由于出错全都不发生,比如从支票账户到储蓄账户的资金转账,为了让这些操作能一起执行,把单一操作逻辑的集认为一个独立单元,即事务。

5已知视图 faculty的定义:create view faculty as select id, name,dept name from
instructor;当发布 insert into faculty values(130765’,‘Green,(Music’))命
令时,数据库系统如何执行?

答:参考书69页

这个插入必须被表示为对instructor的插入,这样必须给出salary的值,为此数据库有两种执行方案

1.拒绝插入,并向用户返回一个错误信息。

2.向instructor关系插入元组(‘130765’,‘Green,(Music’),null)

6用基本关系代数表达式来表示R ∩ \cap S.

答: R ∩ S = R − ( R − S ) R\cap S=R-(R-S) RS=R(RS)

7某银行为不同储蓄金额执行不同利率:低于10万元一年支付4.2%的利息,10万元以上(包括10万)一年支付4.5%的利息。假设储蓄账户表 account(aid(account_id),balance, branch_name),写出与上述业务相对应的SQL语句,如何保证其执行结果的正确性?

答:

UPDATE account
SET balance= CASE
WHEN balance<100000 THEN balance*1.042
ELSE balance*1.045
END;

CASE结构的存在可以被利用来在一条UPDATE语句中执行前面的两种更新,避免前面发生的问题!这样就能保证其执行结果的正确性,如果不使用case语句,考虑到加上利息后余额可能超过10万,应该先更新大于10万的,再更新小于十万的。

UPDATE account
SET balance=balance*1.045
WHERE balance>=100000;
UPDATE account
SET balance=balance*1.042
WHERE balance<100000;

复习,case结构一般如下

case
 when pred1 then result1
 when pred2 then result2
 ...
 when predn then resultn
 else result0
end;

不确定

8什么样的关系模式满足BCNF?

答:对于 F + F^+ F+的所有形如 α → β \alpha\to\beta αβ的函数依赖(其中 α ⊆ R , β ⊆ R \alpha\subseteq R,\beta\subseteq R αR,βR),下面至少有一项成立。

1. α → β \alpha\to\beta αβ是平凡的函数依赖

2. α \alpha α是模式 R R R的一个超码

9关系数据库中,超码、候选码、主码有什么区别?

答:超码就一个或多个属性的集合,这些属性的组合可以在一个关系中唯一地标识一个元组。

如果一个超码的任意真子集都不能称为一个超码,那它就是一个候选码,候选码是最小的超码。

数据库设计者从候选码中任意选取一个码,叫做主码。

10关系代数中,选择操作的功能是什么?

答:选择运算选出满足给定谓词的元组。

投影运算返回作为参数的关系,但把某些关系排除在外。

集合差运算使得我们可以找出一个在一个关系中而不在另一个关系中的元组。

笛卡尔积运算可以把任意两个关系组合起来。

11简述数据库中引入封锁机制的优缺点。

答:优点:有效防止“丢失更新”,保证可重复读和不读“脏”数据

​ 缺点:产生了活锁,饿死和死锁的问题。

12数据库中,调度指的是什么?

答:调度指的是指令在系统中执行的时间顺序,一组事务的一个调度一定包含了这组事务的所有指令,而且必须保持指令在各个事务中出现的时间顺序。

13事务由哪几个状态组成?判断当手机支付已提交,但由于网络信号消失而导致支付失败,此时,事务处于何种状态?

答:

由活动的、部分提交的、失败的、中止的、提交的

事务处于失败状态。

14在MySQL中定义foreign key时,与标准SQL有何区别?

答:主外键约束在标准SQL下体现的是一种一对多的关系,但是经过MySQL的拓展之后可以表现出“多对多”的关系。搞不懂,应该不会考

15MySQL 中不支持 INTERSECT语句,可以用哪些语句来代替?

答:有关系R S,求R INTERSECT S语句,可以这样

SELECT *

FROM R EXCEPT

(

SELECT *

FROM R EXCEPT S

)

R ∩ S = R − ( R − S ) R\cap S=R-(R-S) RS=R(RS)

16数据库中如何判断死锁是否发生?

答:死锁的检测需要维护一个资源等待图,周期性的激活一个在等待图中搜索环的算法,如果检测到了环的存在,那么判断死锁已经发生。

拓展知识点

从死锁中恢复

1.选择牺牲者

2.回滚

3.饿死

17什么样的调度一定能够保证数据的一致性?

答:可串行化调度。

18为了保证数据库的并发性,引入了哪些锁?

答:共享锁:事务T可读但不可写数据项Q

排他锁:事务T可读又可写数据项Q

19为什么事务非正常结束时会影响数据库数据的正确性,请举例说明。

答:如果在A转账给B的过程中,A扣款成功了,但是此时事务非正常结束,此时B没有收到欠款,数据库处于不一致状态,这影响了数据库数据的正确性。

20.利用 Armstrong公理证明伪传递律:若有A→B,CB→D,则有AC→D.

答:Armstrong公理有自反律、传递律,增补律

推广有合并律、分解律、伪传递律

使用增补律

A C → C B AC\to CB ACCB

使用传递律

A C → D AC\to D ACD

得证。

扩展Armstrong公理证明合并律的正确有效性(提示,使用增补率可证,若 α → β \alpha\to\beta αβ α → α β \alpha\to\alpha\beta ααβ。再次使用增补律,利用 α → γ \alpha\to\gamma αγ。然后使用伪传递率)

答: α → β \alpha\to\beta αβ 自带的

α α → α β \alpha\alpha\to\alpha\beta αααβ 增补律

α → α β \alpha\to\alpha\beta ααβ 合并

α → γ \alpha\to\gamma αγ 给定

α β → γ β \alpha\beta\to\gamma\beta αβγβ 增补律

α → β γ \alpha\to\beta\gamma αβγ 传递律

二.分析题(每题5分,共20分)

1两个人分别在去哪儿网和携程网上购买2017年7月2日,CZ6147次航班,从长春飞往北京,但该航班的经济舱只剩一张票,两个人同时下单,数据库中要如何控制?

答:使用事务并发控制,对这两个事务进行可串行化调度。

2很多在线手机游戏都支持离线操作,即当网络不通时,可以离线玩,等联网之后再进行数据同步,在这个过程中,可能涉及数据库的哪些概念?

答:涉及事务管理,补偿事务,一致性,持久性。这个问题我不会

3用户到银行开了一个储蓄账户(account表),可以随时对该账户进行存钱、取钱等管理,分别对应数据库中的什么操作?在ATM机上取钱,当卡内余额不足时,ATM机不做任何支付,如何将此规则定义在该表上?

答:存取都钱对应UPDATE操作,对account的余额balance添加域约束

check(balance>=0);在执行扣款事务的时候,余额不足余额会小于0,这时事务会失败并回滚。

4.吉林大学一卡通实现了与银行的绑定,当一卡通内余额小于某一设定的金额的时候,可以通过银行卡直接转账,请问如何实现自动转账?转账的金额在数据库端如何设定?

答:创建一个触发器,当一卡通内余额被修改时启动触发器,如果修改过后余额小于设定金额,就执行转账事务。这个问题我也不会

设计题

1某金融公司为客户提供理财服务。公司提供股票、基金、外币等多种投资理财项目,并且为每位用户配备一个理财经理,为客户提供投资咨询服务,客户可以购买一种或多种理财产品,根据买卖的时间和购买的金额来计算收益。每个客户还可以推荐下线客户,每个客户只能有一个上线。

1.根据上述需求,画出E-R模型

在这里插入图片描述

2.将E-R模型转化为对应的关系模型,并说明每个关系模式种需要设置的完整性约束。

注:实体的属性根据实际情况自行设定,每个实体不少于三个属性,不多于五个属性。

理 财 项 目 ( 项 目 i d ‾ , 项 目 名 , 项 目 计 划 ) 理财项目(\underline{项目id},项目名,项目计划) (id) 主键项目id

买 卖 信 息 ( 买 卖 i d ‾ , 买 时 间 , 卖 时 间 , 买 卖 金 额 ) 买卖信息(\underline{买卖id},买时间,卖时间,买卖金额) (id)主键买卖id

客 户 ( 客 户 i d ‾ , 经 理 i d , 客 户 名 , 客 户 电 话 ) 客户(\underline{客户id},经理id,客户名,客户电话) (idid)主键客户id和经理id,外键经理id参考理财经理

理 财 经 理 ( 经 理 i d ‾ , 经 理 名 , 经 理 电 话 ) 理财经理(\underline{经理id},经理名,经理电话) (id)主键经理id

购 买 ( 项 目 i d ‾ , 客 户 i d ‾ , 买 卖 i d ‾ ) 购买(\underline{项目id},\underline{客户id},\underline{买卖id}) (ididid)主键项目id客户id买卖id外键也是它们,参考理财项目、买卖信息和客户

发 展 客 户 ( 客 户 i d ‾ , 下 线 i d ‾ ) 发展客户(\underline{客户id},\underline{下线id}) (id线id)对下线id有unique约束,主键是客户id下线id

计算题

1设有如图所示调度S,判别S是否为冲突可串行化调度?如果是,则给出与S等价的一个串行调度。

在这里插入图片描述

答:先画出优先图
在这里插入图片描述

可以看出有环的存在,所以肯定不能进行可串行化调度。

2设有关系模式R(A,B,C,D,E,F,G,H,I),其中各属性分别代表A交通肇事编号;B交通肇事发生时间,C交通肇事具体原因,D违章扣分,E违章罚款金额,F交通肇事发生车辆车牌号码,G交通肇事车型号及颜色,H违章驾驶员驾照号,I驾照已扣分数。其中:

  • 司机与车辆之间的联系为1:1,车辆与违章之间的联系为m:n
  • 一辆车只能由一个车牌号码,且车牌号码唯一
  • 一个人只能由一个驾照,且驾照号码唯一

完成以下任务:

(1)根据语义给出R的函数依赖

(2)将该关系模式分解为3NF

答:(1) H → I F , F → G H , A → B C , A F → D E H \to IF,F \to GH,A\to BC,AF \to DE HIFFGH,ABC,AFDE

(2)求候选码

左边属性有HFA

右边属性有IFGHBCDE

所以左部属性是A

右部属性是BCDEIG

双部属性是FH

A F + = A B C D E F G H I {AF}^+=ABCDEFGHI AF+=ABCDEFGHI

A H + = A B C D E F G H I AH^+=ABCDEFGHI AH+=ABCDEFGHI

其中AF已经在里面了,所以不需要再加

得分解结果为{HIF},{FGH},{ABC},{AFDE}

应用题

1某连锁超市商品管理系统中,包含如下关系模式

门店MD(门店编号Mid,门店名称Mname,店员人数MRnum,地址Maddress)

商品SP(商品编号Pid,商品名称Pname,价格Price)

所属关系MP(门店编号Mid,商品编号Pid,商品数量Pnum)

1用关系代数表达式查询:店员人数不少于50人的门店名称和地址。
Π M n a m e , M a d d r e s s ( σ M R u n > = 50 ( M D ) ) \Pi_{Mname,Maddress}(\sigma_{MRun>=50}(MD)) ΠMname,Maddress(σMRun>=50(MD))

2用关系代数表达式查询:找出至少供应了代号为“256”的商店所供应的全部商品的其它商店名和地址。
Π M n a m e , M a d d r e s s ( M D ⋈ ( σ P i d < > 256 ( M P ÷ Π P i d ( σ M i d = 256 ( M P ) ) ) ) ) \Pi_{Mname,Maddress}(MD⋈ (\sigma_{Pid<>256}(MP\div\Pi_{Pid}(\sigma_{Mid=256}(MP))))) ΠMname,Maddress(MD(σPid<>256(MP÷ΠPid(σMid=256(MP)))))

3用SQL语句查询:库存数量小于10件的商品名称及所在的门店名称

select distinct Pname,Mname
from sp natural join mp natural join md
where Pnum<10 ;

4用SQL语句查询:各门店名称和所拥有的商品的总价格

select distinct Mname,sum(Price*Pnum) as APrice
from sp natural join mp natural join md
group by Mname,Mid;

5用SQL语句,将“256”号门店的“泉阳泉”的数量增加2000

update mp
set Pnum=Pnum+2000
where Mid=256 and Pid=(
select Pid
from sp
where Pname='泉阳泉'
) ;

mySQL测试本题使用代码

CREATE TABLE MD ( Mid INT, Mname VARCHAR ( 20 ),MRnum INT, Maddress VARCHAR ( 50 ), PRIMARY KEY ( Mid ) );
CREATE TABLE SP ( Pid INT, Pname VARCHAR ( 20 ), Price INT, PRIMARY KEY ( Pid ) );
CREATE TABLE MP (
	mid int,
	pid int,
	pnum int,
	primary key ( mid,pid),
foreign key ( mid) references md ( mid ),
foreign key (pid) references sp(pid)
);

INSERT INTO md VALUES(256,'家乐福',60,'霹雳大街');
INSERT into md values(254,'家家乐',7,'桂林路');
INSERT into md values(255,'沃尔玛',7,'保利罗兰香谷');
INSERT into md values(252,'家家乐',17,'万达广场');

insert into sp values(12,'棉花糖',25);
insert into sp values(15,'泉阳泉',10);
insert into sp values(11,'农夫山泉',2);
insert into sp values(10,'桃子汽水',6);

insert into mp values(256,12,30);#家乐福棉花糖
insert into mp values(256,15,3);#家乐福泉阳泉
insert into mp values(254,12,5);#家家乐棉花糖
insert into mp values(254,15,8);#家家乐泉阳泉
insert into mp values(254,11,10);#家家乐农夫山泉
insert into mp values(255,11,12);#沃尔玛农夫山泉
insert into mp values(255,15,6);#沃尔玛泉阳泉
insert into mp values(252,10,60);#家家乐桃子汽水


select distinct Pname,Mname
from sp natural join mp natural join md
where Pnum<10 ;

select distinct Mname,sum(Price*Pnum) as APrice
from sp natural join mp natural join md
group by Mname,Mid;

update mp
set Pnum=Pnum+2000
where Mid=256 and Pid=(
select Pid
from sp
where Pname='泉阳泉'
) ;
  • 65
    点赞
  • 257
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
供应链商品销售数据分析 1、分析背景 在市面上,各种商品层出不穷、琳琅满目,实体店的基数也非常庞大。但不是每一个商品、实体店都能做得红火。有很多实体店因为没有正确分析市场,进而关门倒闭。对已知数据的门面类型、商品种类、销售程度等利用Python进行数据分析,可以得到一个很合理的选择和决策。 A市客户有意加盟380开设连锁门店,我们将根据A市已有销售点的销售数据分析,给予该客户铺货支持和经营策略建议。通过对部门的运营情况、财务状况、物流管理等不同维度的分析,评估该部门健康状况和发展趋势,指导平台发现问题并进行优化。帮助客户更好的经营店铺,将收益在理想环境下提升到最大值。 2、学习目标 (1)学习如何运用Python数据分析、数据可视化等技术; (2)了解并运用 pandas、matplotlib、seaborn库可视化分析数据; (3)为从事数据挖掘相关工作累积数据分析项目的方法、流程和经验; (4)熟悉企业的工作环境,在规定时间内完成项目需求、提升专业技术、锻炼团队协作能力与沟通能力; 3、理解数据 本次拟分析的数据有一个——供应链商品数据包含: 商品代号:Tape;Safety;Adhesive 销售月份:January——December 销售点类型:CBD店;社区店 销售额(万元) 4、思路分析 5、数据分析 5.1分析新开拓销售点的选址 任务描述 380设置两种店面类型,分别为CBD店和社区店。CBD店面向广,有更好的消费者流动性。社区店较稳定,消费者比较固定,回头客更多。如何去选择也是非常重要的一点。相同商品,只要分析消费者更倾向于CBD店还是社区店便能确定选择何种模式的销售点。 任务分析 通过加和,将CBD店的总收益和社区店的总收益做比较对比什么店销售额更高。通过CBD店和社区店单个商品的总销售额做对比,判断何种商品在不同的销售点卖得更好。 通过观察发现,两种店的商品销售额除开Safety8外,几乎相差不大。很明显,差距是商品Safety8拉开的。 小结: 很明显,客户选址为CBD店更为合理。因为在CBD店中,消费者更愿意购买Safety8。同时应多推销Safety8,并多进货Safety8。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值