数据库系统工程师下午试题总结

数据流图(DFD)是一种面向数据流的建模方法,包括数据流、加工、数据存储和外部实体。在绘制DFD时应注意保持父图与子图的平衡,正确命名,避免控制流等。ER图用于实体间关系的表示,常见情况包括两方、三方联系、弱实体等。SQL的相关知识点包括完整性约束、视图创建以及触发器。此外,文章还讨论了关系规范化、两段锁协议及其在避免死锁中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据流图(DFD)
数据流图---面向数据流来建模的
数据流:命名--尊重原文  
加工:圆角矩形
数据存储:表示存储的数据,要有名字
外部实体:指出系统所需要数据的发源地和系统所产生数据的归宿地

需要注意的问题:
1、适当命名
2、画数据流而不要画控制流
3、每条数据流的输入或输出是加工
4、一个加工的输出数据流不能与输入数据流同名
5、允许加工有多条数据流流出,也允许同个输出数据流流向不同加工
6、保持父图与子图的平衡!!!!!!!   
如何保持父图与子图的平衡:父图中某加工的输入输出数据流必须与它的子图的输入输出数据流在数量和名字上相同。如果父图中的一个输入(输出)数据流对应于子图中的几个输入(输出)数据流,
而子图中组成这些数据流的数据项全体正好是父图中的这一个数据流,那么它们仍然算是平衡的。

7、若一个数据存储首次出现时只与一个加工有关,则不必画出
8、保持数据守恒
9、每个加工都既有输入数据流,又有输出数据流
10、整套数据流图中,每个数据存储既要有读的数据流,也要有写的数据流。某张子图中可以不两者均有


总结---做题方法:
1、每个小标题对应一个加工,逐字逐句阅读题干中说明,将每句话与途中的数据流对应
2、按上诉过程可对应找到实体E和数据存储D,命名时按照题干说明结合实际语义命名
3、若某句话暂时存疑,先做标记,等所有内容读完后再进行判断
4、根据缺失数据流的分值估算需要找几条数据流,优先在答题卡上写有把握的。
5、保持父图与子图平衡的话背下来!
ER图
问题:
1、补充E-R图
2、补充关系模式中的属性

常考的几种情况:
1、两方联系:类似(AB BA)
2、三方联系:类似(AB BC)
3、弱实体:一个实体的存在必须以另一个实体为前提  //双边矩形,,对强实体的联系用双边菱形
4、聚合:A和B先产生联系,再这个整体再和C产生联系
5、子实体:一个实体集可以按照某些特征区分为几个子实体。----参照题目的画法。

三方联系与聚合的区别:三方联系必须要三方实体同时参与,缺一不可。而聚合是有先后顺序的,两个实体先产生联系,再与第三个实体产生联系。

画E-R图的方法:
1、依据需求分析中的文字说明判断
2、依据逻辑结构设计(关系模式)判断
3、依据现实中的生活经验判断


SQL
主要记住相关的基础语言

1、完整性约束
PRIMARY KEY
REFERENCES 表名(属性名)
FOREIGN KEY 属性名  REFERENCES 表名(属性名)
CHECK (属性名 BETWEEN XX AND  XX)  或者   CHECK(属性名 IN ('XX','XX')
CASCADE //级联
DEFAULT GETDATE()  //默认获取系统当前时间

2、创建视图
VIEW
COUNT(*)   // 或者还需给它重命名  +AS 题目/代码中所表示的名称
GROUP BY
HAVING
ORDER BY
UNION  //并
SUM() //求和

3、其他功能
EXCEPT  //差

4、触发器
TRIGGER
BEFORE / AFTER
FOR EACH ROW  //行级触发器
FOR EACH STATEMENT  //语句级触发器
SET  〈触发动作〉 WHERE 〈触发条件〉
ROLLBACK //回滚
COMMIT  //提交

插入--引用nrow  删除--引用orow  更新--都引用

关系规范化
常考的几个问题:
1、找候选码

2、是否满足某一范式,或最高可达到第几范式
有非主属性对码的部分函数依赖的,不满足2NF
有非主属性对码的传递函数依赖的,不满足3NF
有主属性对码的部分和传递函数依赖的,不满足BCNF
有多值依赖的,形如X-〉-〉Y,X和Y必在一个关系模式,且只有X和Y,不能有其他多余属性。如果有,不满足4NF

3、分解关系模式
有部分函数依赖的情况
有传递函数依赖的情况
有多值函数依赖的情况
一般是都将依赖的左右两侧写在一起即可

总结:
1、找候选码
确定主码和外码,明确主属性和非主属性
2、找函数依赖集
3、确定范式
4、分解关系模式


问关系模式存在哪些问题?
一般回答:存在数据冗余、更新、插入、删除异常

不属于4NF的理由:   存在嵌入式的多级依赖:(把多级依赖抄下来)

两段锁协议(2PL)
什么是两段锁协议:指同一事务对任何数据进行读写之前必须对该数据加锁;在释放一个封锁之后,该事务不再申请和获得任何其他封锁。

"两段"的含义:事务氛围两个阶段。第一阶段是获得封锁,也称为扩展阶段。第二阶段是释放封锁,也称为收缩阶段。

两段锁协议能否避免死锁: 采用两段锁协议也有可能产生死锁,这是因为每个事务都不能及时解除被封锁的数据,可能会导致多个事务都要求对方已经封锁的数据而不能继续运行。
若不能避免,应采取:死锁预防、死锁避免、死锁检测、死锁解除这四种方法来解决。

写执行序列的题:
1、将原有信息写成列表的形式
2、若下列有写的操作,直接加排它锁;//在写之前加锁,在读之后解锁,中间原有不变
(若题目要求持有锁的时间最短,先对第一个事务进行加锁、解锁操作,待第一个事务的所有操作完成之后  再对  第二个事务进行加锁解锁操作。  这样所有事务持有锁的时间均最短)
3、将确定的执行过程按执行顺序誊抄到答题卡上
多个数据要进行多次加锁和解锁





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾夜不眠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值