数据库设计实战:E-R模型到关系模式转换与SQL查询
需积分: 20 150 浏览量
更新于2024-08-15
收藏 734KB PPT 举报
"数据库设计的相关习题解析"
本资料是关于数据库设计的习题课,旨在帮助学习者巩固《数据库原理与应用》课程中的知识。题目涵盖了E-R模型设计以及SQL查询的实践应用。通过解决这些习题,学习者可以深化对数据库概念的理解,提升实际操作技能。
首先,题目要求设计一个E-R模型,描述了一个工厂的生产环境,其中产品和零件之间存在多对多的关系。每个产品有产品号和产品名,每个零件有零件号和零件名。设计时,我们需要考虑如何体现产品与零件之间的关联,并确定关系模式的主键。在E-R模型中,可以创建一个"产品零件"实体来连接产品和零件,它的属性可能包括产品号和零件号。转换成关系模式后,主键可能是产品号和零件号的组合,表示为`ProductPart(Product#, Part#)`。
接下来是几个SQL查询的示例:
1. 查询"程军"老师所授课程的课程号(C#)和课程名(CName)。这可以通过简单的SELECT语句实现,如:`SELECT C#, CName FROM C WHERE Teacher = '程军'`。
2. 查询年龄大于21岁的男学生学号(S#)和姓名(SName)。对应的SQL语句为:`SELECT S#, SName FROM S WHERE Age > 21 AND Sex = '男'`。
3. 查询"李四"同学不学的课程号(C#)。这个查询需要用到NOT EXISTS子句,SQL实现如下:`SELECT C# FROM C WHERE NOT EXISTS (SELECT * FROM S, SC WHERE S.Sname = '李四' AND S.S# = SC.S# AND SC.S# = C.C#)`。
4. 查询所有学生都选修的课程的课程号(C#)和课程名(CName)。这个查询比较复杂,可能需要使用除法操作,或者先找出所有学生的学号,然后找出被所有学生选修的课程:`SELECT C#, CName FROM C WHERE C# IN (SELECT C# FROM C GROUP BY C# HAVING COUNT(DISTINCT SC.S#) = (SELECT COUNT(DISTINCT S.S#) FROM S))`。
5. 查询选修了包含"程军"老师所授课程之一的学生学号(S#)。这个查询可以通过JOIN操作实现:`SELECT DISTINCT S.S# FROM S JOIN SC ON S.S# = SC.S# JOIN C ON SC.C# = C.C# WHERE C.Teacher = '程军'`。
6. 查询个人平均成绩大于60分的学生信息。这个查询涉及到计算平均成绩,可能需要自定义函数或子查询:`SELECT S#, SName FROM S JOIN (SELECT S#, AVG(Grade) AS AvgGrade FROM SC GROUP BY S#) AS AvgGrades ON S.S# = AvgGrades.S# WHERE AvgGrades.AvgGrade > 60`。
7. 将选修了操作系统课程的考试成绩加5。这是一个更新操作,可以使用UPDATE语句完成:`UPDATE SC SET Grade = Grade + 5 WHERE C# IN (SELECT C# FROM C WHERE CName = '操作系统')`。
这些SQL查询展示了如何从基本的表选择、条件过滤到更复杂的联接、子查询和聚合函数的应用,对于理解和掌握数据库查询语言至关重要。通过解答这些习题,学习者可以提升自己的数据库查询能力,为实际工作中的数据库管理和分析打下坚实基础。
2022-07-13 上传
2023-01-08 上传
2011-12-23 上传
2021-05-22 上传
2023-01-08 上传
2023-08-02 上传
2009-05-17 上传
涟雪沧
- 粉丝: 21
- 资源: 2万+
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码