16-17 数据库试卷1
![preview](https://dl-preview.csdnimg.cn/86287261/0001-34a382e7a7dade7823dba515f064bf85_thumbnail.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
数据库原理及应用试题详解 1. 现代数据库系统通过使用数据抽象和两级映射来实现数据的独立性。数据独立性分为物理独立性和逻辑独立性。物理独立性允许数据库管理系统(DBMS)在不影响应用程序的情况下改变数据的存储方式。逻辑独立性则确保即使数据的逻辑结构发生变化,应用程序也不受影响。数据模式遵循的范式并非越高越好,因为更高的范式可能带来更多的分解,导致数据冗余减少,但可能导致查询效率降低。因此,实际设计中需要在数据完整性和查询性能之间找到平衡。 2. 在给定的住房管理系统中: - 房间表的主键是房间号,外键是无,因为房间本身不依赖其他表。 - 客人表的主键是身份证号,外键是无,因为客人信息是独立的。 - 住宿表的主键是(房间号,身份证号),因为一个房间和一个客人的组合是唯一的;外键是房间号(指向房间表的房间号)和身份证号(指向客人表的身份证号)。 3. SQL 查询语句: - (1)查找预定了编号为210号房的客人姓名:`SELECT 客人.姓名 FROM 住宿 JOIN 客人 ON 住宿.身份证号 = 客人.身份证号 WHERE 住宿.房间号 = '210'` - (2)查询预定过所有房间的客人的姓名:`SELECT DISTINCT 客人.姓名 FROM 住宿 GROUP BY 客人.身份证号 HAVING COUNT(DISTINCT 住宿.房间号) = (SELECT COUNT(*) FROM 房间)` - (3)查询2016年1月份只有一人预定的房间号及客人姓名:`SELECT 房间号, 客人.姓名 FROM 住宿 JOIN 客人 ON 住宿.身份证号 = 客人.身份证号 WHERE MONTH(入住日期) = 1 AND YEAR(入住日期) = 2016 GROUP BY 房间号, 客人.姓名 HAVING COUNT(*) = 1` - (4)查询累计订房次数超过60次的客人,每位客人单月预订房间的最大次数及对应年份与月份:`SELECT 客人.姓名, MAX(预订次数) AS 最大预订次数, YEAR(入住日期) AS 年份, MONTH(入住日期) AS 月份 FROM (SELECT 客人.身份证号, COUNT(*) AS 预订次数, YEAR(入住日期) AS 年份, MONTH(入住日期) AS 月份 FROM 住宿 GROUP BY 客人.身份证号, YEAR(入住日期), MONTH(入住日期)) AS 订房统计 WHERE 预订次数 > 60 GROUP BY 客人.身份证号` 4. 是的,相对于层次和网状数据库,关系型数据库系统的查询优化更重要。这是因为关系型数据库普及广泛,数据量通常更大,同时查询复杂度更高,所以优化对于提高查询效率至关重要。 5. 使用“OR”在SQL查询的where子句中可能导致查询计划的优化困难,因为它可能阻止数据库利用索引来有效过滤数据。当数据库无法使用索引时,它可能选择全表扫描,这在大数据集上会显著降低查询速度。 6. 问题(1):这种方案不正确。因为如果同时进行转账和计息业务,可能会导致数据不一致。例如,如果在计算利息之前,A账户已经转账到B账户,那么计算的利息将基于错误的原始金额。 问题(2):并发调度后的结果为A=96, B=84, S=20。并发调度是不正确的,因为它违反了读已写(Read-After-Write, RAW)一致性,T1先写入A,而T2随后读取到的A值不是T1之前的值。 7. 在介质失效恢复时,对运行记录中上一检查点以前的已提交事务应该重做(redo)。因为这些事务在检查点前已完成,但在介质失效时可能未被持久化,重做可以确保这些事务的更新被正确地应用到数据库中。 8. 定义触发器实现无退房日期的Insert语句回滚(MySQL示例): ```sql CREATE TRIGGER no_checkout_date_trigger BEFORE INSERT ON 住宿 FOR EACH ROW BEGIN IF NEW.退房日期 IS NULL THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '缺少退房日期,插入操作被回滚。'; END IF; END; ``` 这个触发器会在Insert操作执行前检查退房日期,如果为NULL则中止并回滚操作,向用户返回错误消息。请注意,不同的数据库系统可能有不同的触发器语法。
![](https://csdnimg.cn/release/download_crawler_static/86287261/bg1.jpg)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar](https://profile-avatar.csdnimg.cn/8bea0dde30b140e199236eb7cf9bc5b7_weixin_35833704.jpg!1)
- 粉丝: 22
- 资源: 311
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)
评论0