数据库原理PTA填空题答案整理(沈师版):从ER图到关系代数的实战解析
数据库原理实战指南:从ER图到关系代数的系统化解析
在数据库原理的学习过程中,许多学生面临一个共同的困境:虽然能够记住零散的知识点和填空题答案,却难以将这些碎片化的信息整合成一个完整的知识体系。本文将以"医院管理系统"、"旅行社数据库"和"工厂生产系统"三个典型场景为主线,带您从ER图设计到关系代数查询,系统掌握数据库设计的核心逻辑。
1. 数据库基础概念与三级模式架构
数据库系统的核心在于其结构化数据管理能力。一个典型的数据库系统由数据库、数据库管理系统(DBMS)、应用系统和数据库管理员组成。理解这些组件的关系是掌握数据库原理的第一步。
数据模型的三大要素构成了数据库设计的理论基础:
- 数据结构:描述系统的静态特性,如表的结构
- 数据操作:描述系统的动态特性,如增删改查
- 完整性约束:保证数据的准确性和一致性
数据库三级模式结构提供了数据抽象的层次:
1. **模式(Schema)**:描述全体数据的逻辑结构和特征 2. **外模式(External Schema)**:描述局部数据的逻辑结构 3. **内模式(Internal Schema)**:定义物理存储组织方式提示:外模式是模式的子集,一个数据库可以有多个外模式,但只有一个模式和一个内模式。
2. ER图设计与实体关系转换
让我们以医院管理系统为例,演示如何从需求分析到ER图设计:
医院系统实体分析:
- 科室(科室名,地址,电话)
- 医生(工号,姓名,职称,年龄)
- 病房(病房号,床位号)
- 病人(病历号,姓名,性别)
关键关系转换规则:
- 1:1关系:可在任一实体中加入对方主键
- 1:N关系:在N端实体中加入1端主键
- M:N关系:需转换为独立关系模式
医院系统的ER图转换结果:
| 实体 | 主键 | 外键 | |--------|---------|-----------| | 医生 | 工号 | 科室名 | | 病人 | 病历号 | 病房号,工号 | | 病房 | 病房号 | 科室名 |3. 关系代数操作实战解析
关系代数是数据库查询的理论基础,包含选择(σ)、投影(Π)、连接(∞)等基本操作。以旅行社管理系统为例:
旅行社数据库关系模式:
- 景点(景点编号,名称,地点,描述)
- 线路(线路编号,名称,描述)
- 导游(工号,姓名,等级,线路编号)
- 团队(团队编号,人数,开始日期,截止日期,线路编号)
典型查询示例:
查询所有"北京"地区的景点名称:
Π名称(σ地点='北京'(景点))查询负责"历史文化线路"的导游姓名:
Π姓名(导游 ∞ σ名称='历史文化线路'(线路))
注意:自然连接(∞)会自动基于相同属性名进行连接,如果属性名不同需使用θ连接。
4. 完整性约束与实战应用
数据库完整性约束确保数据的正确性和一致性,主要包括:
三类完整性约束:
- 实体完整性:主键不能为空(如医生的工号)
- 参照完整性:外键必须引用存在的值(如病人的主管医生必须存在于医生表)
- 用户自定义完整性:如性别只能是"男"或"女"
工厂生产系统中的约束示例:
CREATE TABLE 职工 ( 职工号 CHAR(5) PRIMARY KEY, 姓名 VARCHAR(20) NOT NULL, 工厂编号 CHAR(3), 聘期 DATE, 工资 DECIMAL(10,2), FOREIGN KEY (工厂编号) REFERENCES 工厂(工厂编号), CHECK (工资 >= 0) );5. 综合案例:电商系统数据库设计
结合前面所学,我们设计一个简化的电商系统:
ER图设计:
- 客户(客户号,姓名,性别,年龄,类别)
- 商品(商品号,名称,价格)
- 购物(客户号,商品号,数量,日期)
关系代数查询示例:
查询购买了"智能手机"的客户姓名:
Π姓名(客户 ∞ (购物 ∞ σ名称='智能手机'(商品)))查询消费金额超过1000元的客户信息:
Π客户.*(σ总金额>1000( 客户 ∞ Π客户号,SUM(价格*数量) AS 总金额( 购物 ∞ 商品 ) GROUP BY 客户号 ))
在实际数据库课程学习中,我发现最容易出错的地方是混淆选择和投影操作。记住:σ用于行过滤,Π用于列选择。多次练习不同场景的关系代数表达式,是掌握这一关键技能的最佳途径。
