三、SQL语言
1、权限控制
:授权
授权关键字:GRANT
语法:GRANT(增、删、改、查)[,···n](字段) ON(表、视图) TO WITH GRANT OPTION(WITH GRANT OPTION级联授予,允许这个用户在将相同的权限授予其他用户)
:收回
收回关键字:REVOKE
语法:REVOKE(增、删、改、查)[,···n](字段) ON(表、视图) FROM RESTRICT(默认)/ CASEADE(收回级联)
四、并发控制
:事务特性(ACID)
1.原子性(执行):要么都做(COMMIT事务提交),要么都不做(ROLLBACK事务回滚)
2.一致性(结果):事务执行结果必须保证数据库从一个一致性状态变为另一个一致性状态
3.隔离性(过程):当多个事务并发执行,一个事务在提交或回滚之前,对其他事务是不可见的
4.持续性(数据):事务一旦提交,数据是持久保存的
:并发问题
1.脏读:事务处理数据提交前,被另一事务读到,A操作数据90-10=80,B读取数据80,A数据回滚90
2.数据丢失:多个事务同时操作同一数据,A先读,B后读,B先操作,A后操作,使得A事务更新的数据被覆盖
3.不可重复读:同一事务,多次读取,结果不一致,A读数据100,B操作数据100-10,A再次读取90
:封锁协议
S封锁:共享锁,对于事务中读数据可以重复加S锁,在数据加S锁之后,不能再加S锁以外的其他锁
X封锁:排他锁,对数据加入X锁之后,在事务提交之前,不能再加入其他锁
五、数据库设计
:答题技巧
1.结合题干(站在出题人角度去分析),详细分析试题说明
2.熟练掌握基本知识:如ER图,联系类型判断(一对多···),ER图转关系模式(R={U,F}),主/外键判断,规范化理论(范式判断)
:例题
)1、例题
分析:
(1)分析:部门(编号,名称,电话,经理),部门:员工 为 1:*
(2)分析:员工(工号,姓名,岗位,电话,工资),主键为工号
(3)分析:客房(房号,类型,收费,状态),主键为房号
(4)分析:客户(客户号,单位名称,联系人,联系电话,地址),主键为客户号
(5)分析:预定(申请号,客户号,入住时间,入住天数,客房类型,客房数量),预定:客户 为 1:1,客户:预定 为 1:多,
(6)分析:入住安排(申请号,业务员,房号,姓名,性别,身份证号,入住时间,天数,电话),主键为身份证号+入住时间,外键为房号,申请号,员工:预定 为 1:* ,员工:房号 1:*,房号:预定 *:*
问题1:补充2-1ER图 4个联系
通过以上分析,得出ER图联系:
联系一、经理:部门 1:1
联系二、员工:部门 *:1
联系三、客户:预定申请 *:1
联系四(三元联系)、员工:预定申请 1:*,员工:客房 1:*,预定申请:客房 *:*,所以得出三元联系结论:员工:客房:预定申请 = 1:*:*
问题2:补充关系模式
a:部门ID 外键
b:客户号 主键+单位名称 非主属性
c:申请号ID 主键 + 客户号 外键
d:身份证号+入住时间 主键
问题3:客房是否有规范化理论
1.答案:存在
2.依据:根据题描述,客房房号为主键,收费标准取决于客房类型。已知函数依赖 客房类型=>收费标准,客房类型并非主属性,所以不满足第三范式(单属性满足第二范式,但每一个非主属性须由主属性直接传递),所以会出现大量冗余及插入/修改/删除异常
3.改进:将客房{房号,类型,收费,状态}分开为 客房1{房号,类型,状态},客房2{类型,收费}
)2、例题
解:分析:
员工(工号,身份证号,姓名,性别,手机号) 主键:工号
商品(条码,名称,所在超市,采购价格,销售价格,商品介绍) 主键:条码
顾客(ID,姓名,身份证号,手机号,收货地址) 主键:ID
托运公司(ID,公司名,电话,地址) 主键:ID
订单关系(订单ID,货运方式,顾客ID,商品数量,支付条码) 订单ID,外键顾客ID
采购关系(代购ID,订单ID,工号,商品条码)订单:商品 1:*,商品:采购员 1:1,订单:采购员 1:*,其中属性为联合主键,均为主属性
运送关系(运送ID,订单ID,配送ID,货运公司ID,发货时间)主键:运送ID,外键:订单ID,配送ID,货运公司ID
问题1:补充ER图
1.配送员:货运公司 *:*
2.货运公司:订单 1:*
3.配送员:订单 1:*
所以得出三元联系:配送员:货运公司:订单 = *:*:*
问题2:补充空缺ab
a.顾客ID,商品条码
b.订单ID,商品条码
问题3:增加弱实体顾客收货地址需求,并修改【运送】关系模式
1.收货地址{地址ID,顾客ID,收货地址} 地址ID为主键,顾客ID为外键
2.运送关系{运送ID,订单ID,配送ID,货运公司ID,发货时间,地址ID}
)3:例题
解:分析:
1:球队(编号,名称,成立时间,人数,主场地址,球队主教练)
2:球员(姓名,身份证号,出生日期,申告,家庭地址)
3:教练(姓名,身份证号,出生日期,资格证书号,级别)
4:裁判(姓名,身份证号,出生日期,资格证书号,获取证书时间,级别)
5:球队关系(球队编号,队员编号)1:*
6:比赛(比赛ID,主球队ID,客球队ID,裁判ID,比分,日期)
问题1:补充ER图
1:球员:球队 *:1
2:二元联系:主队球队:裁判 *:* 客队球队:裁判 *:*
问题2:补充关系模式
1:球队ID外键
2:球队ID外键
问题3:增加赞助实体,赞助商:球队 1:* 赞助商:球员 *:*,修改ER图和关系模式
新增 赞助实体,赞助商:球队 1:* 赞助商:球员 *:*