新書推薦:
《
纳特·特纳的自白
》
售價:HK$
84.0
《
低空经济:中国经济发展新引擎
》
售價:HK$
88.5
《
汉字学理与小学汉字教学
》
售價:HK$
89.6
《
即将到来的能源战争
》
售價:HK$
89.4
《
时刻人文·臆造南洋:马来半岛的神鬼人兽
》
售價:HK$
65.0
《
心智、现代性与疯癫:文化对人类经验的影响
》
售價:HK$
188.2
《
周秦之变的社会政治起源:从天子诸侯制国家到君主官僚制国家(历史政治学与中国政治学自主知识体系论丛)
》
售價:HK$
188.2
《
时刻人文·信用的承诺与风险:一个被遗忘的犹太金融传说与欧洲商业社会的形成
》
售價:HK$
103.0
編輯推薦:
这是一本严格采用“工作过程导向”模式规范编写的Microsoft SQL
Server 2012的教材。本书内容可分为两个部分:数据库的创建和数据库的管理。本书的内容组织以关系数据库理论知识为基础,注重操作技能的培养和实际问题的解决,旨在使学生掌握使用和管理Microsoft
SQL Server 2012。本书以创建“学生管理系统”的数据库为工作任务,具体内容包括设计数据库、创建数据库、创建表、更新和查询记录、Transact-SQL语言、视图和索引、用户定义函数、存储过程、触发器、管理数据库安全、备份和还原数据库、导入和导出数据库中的数据。*后的项目18中介绍了学生管理系统应用程序的设计和实施,从而完成了一个完整的数据库系统。本书贴切实际,结构合理,内容丰富,操作方便。
本书作为Microsoft SQL Server 2012的入门类教材,既可以作为高等职业教育计算机及相关专业的教材,也可作为Microsoft
SQL Server 2012的各种培训班、职业资格等级考试或认证考试的培训教材,还可用于读者自学。
內容簡介:
这是一本严格采用“工作过程导向”模式规范编写的Microsoft SQL Server 2012的教材。本书内容可分为两个部分:数据库的创建和数据库的管理。本书的内容组织以关系数据库理论知识为基础,注重操作技能的培养和实际问题的解决,旨在使学生掌握使用和管理Microsoft SQL Server 2012。本书以创建“学生管理系统”的数据库为工作任务,具体内容包括设计数据库、创建数据库、创建表、更新和查询记录、Transact-SQL语言、视图和索引、用户定义函数、存储过程、触发器、管理数据库安全、备份和还原数据库、导入和导出数据库中的数据。最后的项目18中介绍了学生管理系统应用程序的设计和实施,从而完成了一个完整的数据库系统。本书贴切实际,结构合理,内容丰富,操作方便。
本书作为Microsoft SQL Server 2012的入门类教材,既可以作为高等职业教育计算机及相关专业的教材,也可作为Microsoft SQL Server 2012的各种培训班、职业资格等级考试或认证考试的培训教材,还可用于读者自学。
目錄 :
目录
项目1 设计数据库1
1.1 数据库的基本概念2
1.1.1 数据库2
1.1.2 数据库管理系统3
1.1.3 数据库系统3
1.1.4 数据管理技术的发展4
1.1.5 数据库系统的体系结构4
1.2 数据模型5
1.2.1 数据模型的概念5
1.2.2 数据模型的组成6
1.2.3 数据模型的类型6
1.2.4 数据库的规范化10
1.3 关系代数11
1.3.1 传统的集合运算11
1.3.2 专门的关系运算12
1.4 数据库设计的方法和步骤14
1.4.1 数据库设计的方法15
1.4.2 数据库设计的步骤15
1.5 小型案例实训17
小结18
习题19
项目2 安装SQL Server 201223
2.1 了解SQL Server 201224
2.1.1 SQL Server 2012简介24
2.1.2 SQL Server 2012的版本25
2.1.3 SQL Server 2012的组件25
2.1.4 SQL Server 2012管理工具26
2.2 安装SQL Server 201229
2.2.1 硬件和软件要求29
2.2.2 SQL Server的默认实例和
命名实例29
2.2.3 SQL Server安装中心29
2.3 运行SQL Server 201230
2.4 配置SQL Server 201232
2.5 小型案例实训34
小结34
习题35
项目3 创建数据库37
3.1 SQL Server数据库38
3.1.1 系统数据库38
3.1.2 数据库文件和文件组39
3.1.3 事务日志40
3.2 创建数据库40
3.2.1 创建单个数据文件和日志
文件的数据库40
3.2.2 创建多个数据文件和日志
文件的数据库41
3.2.3 创建有用户文件组的
数据库42
3.3 修改数据库44
3.3.1 添加数据文件44
3.3.2 添加带有数据文件的
文件组45
3.3.3 添加日志文件46
3.3.4 增加文件大小47
3.3.5 收缩文件47
3.3.6 收缩数据库48
3.3.7 删除文件49
3.4 删除数据库49
3.5 查看数据库信息50
3.5.1 查看数据库的数据和日志
空间信息50
3.5.2 查看数据库的属性50
3.6 分离和附加数据库51
3.6.1 分离数据库51
3.6.2 附加数据库51
3.7 小型案例实训52
小结55
习题55
项目4 创建表57
4.1 表58
4.1.1 表的概念58
4.1.2 表的类型58
4.2 创建表59
4.2.1 创建表59
4.2.2 创建带计算列的表61
4.2.3 创建带标识列的表62
4.3 修改表63
4.3.1 重命名列63
4.3.2 添加列64
4.3.3 修改列64
4.3.4 更改列顺序64
4.3.5 删除列64
4.4 删除表65
4.5 数据完整性65
4.5.1 数据完整性的概念66
4.5.2 数据完整性的类型66
4.5.3 主键约束66
4.5.4 唯一约束68
4.5.5 列默认值70
4.5.6 CHECK约束72
4.5.7 外键约束74
4.6 查看表信息77
4.6.1 查看表记录77
4.6.2 查看表属性77
4.6.3 查看表的依赖关系78
4.7 小型案例实训79
小结85
习题85
项目5 创建索引89
5.1 索引90
5.1.1 索引的概念90
5.1.2 索引的类型91
5.1.3 堆91
5.2 创建索引92
5.2.1 创建聚集索引92
5.2.2 创建非聚集索引93
5.2.3 创建唯一索引94
5.2.4 创建带有包含列的索引95
5.2.5 创建筛选索引96
5.3 修改索引97
5.3.1 修改索引列97
5.3.2 禁用索引98
5.3.3 重新生成索引99
5.3.4 重新组织索引99
5.3.5 索引填充因子100
5.4 删除索引101
5.5 设计和优化索引102
5.5.1 索引设计任务102
5.5.2 设计聚集索引102
5.5.3 设计非聚集索引103
5.5.4 设计唯一索引103
5.5.5 设计带有包含列的索引103
5.5.6 设计筛选索引103
5.6.7 优化索引103
5.6 小型案例实训104
小结106
习题107
项目6 创建视图109
6.1 视图110
6.1.1 视图的概念110
6.1.2 视图的类型110
6.2 创建视图111
6.2.1 创建标准视图111
6.2.2 创建加密视图112
6.2.3 创建带更新限制的视图113
6.3 修改视图113
6.4 删除视图114
6.5 使用视图114
6.6 查看视图116
6.7 小型案例实训117
小结118
习题119
项目7 Transact-SQL语言121
7.1 Transact-SQL语言122
7.2 标识符122
7.3 数据库对象名称123
7.4 数据类型123
7.4.1 系统数据类型123
7.4.2 用户定义数据类型126
7.5 常量和变量127
7.6 运算符127
7.7 表达式128
7.8 函数129
7.9 注释131
7.10 Transact-SQL程序要素131
7.10.1 USE132
7.10.2 GO132
7.10.3 PRINT133
7.10.4 RAISERROR函数133
7.10.5 BEGIN...END133
7.10.6 GOTO134
7.10.7 RETURN134
7.10.8 IF...ELSE134
7.10.9 WHILE135
7.10.10 CONTINUE135
7.10.11 BREAK135
7.10.12 WAITFOR136
7.10.13 TRY...CATCH137
7.10.14 THROW138
7.11 小型案例实训138
小结140
习题141
项目8 查询记录143
8.1 SELECT语句144
8.2 SELECT子句144
8.2.1 查询列144
8.2.2 列标题和列计算145
8.2.3 避免重复记录146
8.2.4 限制返回行数146
8.3 FROM子句147
8.3.1 查询单个表147
8.3.2 多表联接148
8.3.3 派生表152
8.4 WHERE子句152
8.4.1 简单比较153
8.4.2 模糊查询154
8.4.3 比较运算符154
8.4.4 满足任一条件155
8.4.5 满足所有条件155
8.4.6 值列表156
8.4.7 值区间156
8.4.8 值为空157
8.5 GROUP BY子句158
8.5.1 按列分组统计158
8.5.2 按表达式结果分组统计159
8.6 HAVING子句159
8.7 ORDER BY子句160
8.7.1 按指定列排序160
8.7.2 按表达式结果排序161
8.7.3 按特定条件列排序162
8.8 INTO子句162
8.9 子查询163
8.9.1 子查询用作单个值163
8.9.2 ALL、ANY和SOME164
8.9.3 IN166
8.9.4 EXISTS167
8.10 集运算符168
8.10.1 UNION168
8.10.2 EXCEPT169
8.10.3 INTERSECT170
8.11 小型案例实训170
小结174
习题174
项目9 插入、更新和删除记录177
9.1 插入记录178
9.1.1 插入单个记录178
9.1.2 插入多个记录178
9.1.3 插入列顺序任意的记录179
9.1.4 插入列具有默认值的记录179
9.1.5 插入含标识列的记录180
9.1.6 插入来自其他表的记录180
9.1.7 限制来自其他表的记录
数量181
9.1.8 向视图插入记录181
9.2 更新记录181
9.2.1 更新单个列181
9.2.2 更新多个列182
9.2.3 更新部分记录182
9.2.4 更新限制数量的记录182
9.2.5 更新列为计算结果182
9.2.6 更新列为默认值183
9.2.7 更新视图183
9.2.8 根据其他表的记录来
更新记录183
9.3 删除记录184
9.3.1 删除所有记录184
9.3.2 删除部分记录184
9.3.3 删除限制数量的记录185
9.3.4 根据其他表的记录来
删除记录185
9.4 比较记录185
9.5 小型案例实训186
小结189
习题189
项目10 使用事务和锁191
10.1 事务192
10.1.1 事务的概念192
10.1.2 事务的属性192
10.1.3 事务的类型193
10.1.4 启动事务193
10.1.5 保存事务193
10.1.6 结束事务193
10.2 并发控制195
10.2.1 并发的负面影响195
10.2.2 并发控制的类型195
10.2.3 数据库引擎中的隔离级别196
10.2.4 自定义事务隔离级别197
10.3 锁定198
10.3.1 锁粒度和层次结构198
10.3.2 锁模式199
10.3.3 锁兼容性200
10.3.4 死锁200
10.4 小型案例实训201
小结203
习题203
项目11 使用游标205
11.1 游标206
11.1.1 游标的概念206
11.1.2 游标的类型206
11.2 使用游标207
11.2.1 使用简单游标的方法207
11.2.2 使用嵌套游标214
11.3 小型案例实训215
小结216
习题217
项目12 创建存储过程219
12.1 存储过程220
12.1.1 存储过程的概念220
12.1.2 存储过程的作用220
12.1.3 存储过程的类型221
12.2 创建存储过程221
12.2.1 创建不带参数的存储
过程221
12.2.2 创建带输入参数的存储
过程222
12.2.3 创建带有默认值的存储
过程223
12.2.4 创建带有输出参数的存储
过程224
12.3 修改存储过程225
12.4 删除存储过程226
12.5 执行存储过程226
12.5.1 执行不带参数的存储过程227
12.5.2 执行带输入参数的存储
过程227
12.5.3 执行带有默认值的存储
过程228
12.5.4 执行带有输出参数的存储
过程229
12.5.5 使用存储过程返回代码值229
12.6 查看存储过程230
12.7 小型案例实训231
小结235
习题235
项目13 创建用户定义函数237
13.1 用户定义函数238
13.1.1 用户定义函数的概念238
13.1.2 用户定义函数的优点238
13.1.3 用户定义函数的类型238
13.2 创建用户定义函数239
13.2.1 创建标量值函数239
13.2.2 创建内联表值函数240
13.2.3 创建多语句表值函数241
13.3 修改用户定义函数242
13.4 删除用户定义函数243
13.5 执行用户定义函数244
13.5.1 执行标量值函数244
13.5.2 执行内联表值函数245
13.5.3 执行多语句表值函数246
13.6 查看用户定义函数246
13.7 小型案例实训247
小结250
习题251
项目14 创建触发器253
14.1 登录触发器254
14.2 DDL触发器255
14.2.1 DDL触发器的概念255
14.2.2 DDL触发器的类型255
14.2.3 DDL触发器的作用域256
14.2.4 创建DDL触发器256
14.2.5 修改DDL触发器257
14.3 DML触发器259
14.3.1 DML触发器的概念259
14.3.2 DML触发器的优点259
14.3.3 DML触发器的类型259
14.4 创建DML触发器260
14.4.1 inserted表和deleted表260
14.4.2 创建包含提醒消息的DML
触发器261
14.4.3 创建在表之间强制实现
业务规则的DML触发器262
14.5 修改DML触发器264
14.5.1 修改DML触发器定义264
14.5.2 指定第一个和最后一个
DML触发器265
14.5.3 禁用DML触发器267
14.5.4 启用DML触发器268
14.6 删除DML触发器269
14.7 查看DML触发器269
14.8 小型案例实训270
小结273
习题273
项目15 备份和还原数据库275
15.1 备份276
15.1.1 备份的概念276
15.1.2 备份的作用276
15.1.3 备份的类型277
15.1.4 备份策略277
15.1.5 备份类型的选择277
15.2 还原和恢复278
15.2.1 还原的概念278
15.2.2 恢复的概念278
15.3 备份设备279
15.3.1 备份设备的概念279
15.3.2 备份磁盘的概念279
15.3.3 介质集的概念279
15.3.4 介质簇的概念279
15.3.5 备份集的概念279
15.3.6 创建备份设备279
15.4 恢复模式280
15.4.1 恢复模式的概念280
15.4.2 恢复模式的类型280
15.5 完整恢复模式下的完整数据库
备份与还原282
15.5.1 完整恢复模式下的完整
数据库备份282
15.5.2 完整恢复模式下的完整
数据库还原283
15.6 完整恢复模式下的差异数据库
备份与还原284
15.6.1 完整恢复模式下的差异
数据库备份284
15.6.2 完整恢复模式下的差异
数据库还原284
15.7 完整恢复模式下的事务日志备份
与还原285
15.7.1 完整恢复模式下的事务
日志备份285
15.7.2 完整恢复模式下的事务
日志还原286
15.7.3 完整恢复模式下的结尾
日志备份287
15.8 完整恢复模式下的文件和
文件组备份与还原288
15.8.1 完整恢复模式下的文件和
文件组备份288
15.8.2 完整恢复模式下的文件和
文件组还原288
15.9 简单恢复模式下的完整数据库
备份与还原289
15.9.1 简单恢复模式下的完整
数据库备份289
15.9.2 简单恢复模式下的完整
数据库还原290
15.9.3 简单恢复模式下的差异
数据库备份290
15.9.4 简单恢复模式下的差异
数据库还原291
15.10 小型案例实训291
小结292
习题293
项目16 导入和导出数据库中的
数据295
16.1 使用SQL Server导入和导出
向导296
16.1.1 启动SQL Server导入和
导出向导296
16.1.2 SQL Server导入和导出
向导界面297
16.2 使用SSIS300
16.2.1 SSIS介绍300
16.2.2 SSIS工作方式300
16.2.3 创建SSIS包301
16.2.4 执行SSIS包304
16.3 小型案例实训305
小结307
习题307
项目17 管理数据库安全309
17.1 数据库权限层次结构310
17.2 身份验证模式311
17.2.1 Windows身份验证模式311
17.2.2 混合验证模式311
17.3 创建登录名312
17.3.1 创建Windows登录312
17.3.2 创建SQL Server登录313
17.3.3 密码策略314
17.4 服务器级别角色315
17.4.1 服务器级别角色的作用315
17.4.2 固定服务器角色316
17.4.3 创建服务器角色316
17.5 数据库用户317
17.5.1 数据库用户的作用317
17.5.2 创建数据库用户317
17.6 数据库级别角色318
17.6.1 数据库级别角色的作用318
17.6.2 固定数据库角色318
17.6.3 创建数据库角色319
17.7 权限320
17.7.1 授予权限320
17.7.2 撤销权限322
17.7.3 拒绝权限322
17.8 小型案例实训323
小结325
习题326
项目18 学生管理系统案例327
18.1 程序设计介绍328
18.1.1 Microsoft Visual Studio
2010集成环境328
18.1.2 C#语言328
18.1.3 ASP.NET329
18.2 小型案例实训330
18.2.1 基于Windows的学生管理
系统330
18.2.2 基于Web的学生管理
系统335
小结341
习题342
附录 各项目习题参考答案343
参考文献365
內容試閱 :
项目1
设计数据库
【项目要点】
* 数据库的基本概念。
* 数据管理技术的发展历史。
* 数据库的三级模式结构。
* 数据模型的概念、组成和类型。
* 概念数据模型的概念。
* 实体-联系模型的基本概念和E-R图。
* 逻辑数据模型的概念和类型。
* 关系模型的基本概念。
* 关系代数。
* 数据库设计的方法和步骤。
【学习目标】
* 掌握数据库的基本概念、数据管理技术的发展历史和数据库三级模式结构。
* 掌握数据模型的概念、组成和类型。
* 掌握概念数据模型的概念。
* 掌握实体-联系模型的基本概念。
* 掌握E-R图的组成和画法。
* 掌握关系模型的基本概念。
* 掌握关系代数表达式的书写。
* 掌握数据库设计的方法和步骤。
1.1 数据库的基本概念
1.1.1 数据库
信息Information是现实世界事物的存在方式或运动状态的反映,其内容描述的是事物之间的相互联系和相互作用。
数据Data是描述事物的符号记录。数据包括文字、图形、图像、声音等。数据包括两个方面,即型和值。型是指数据的类型,是数值类、字符类还是日期类等;值是指数据在给定类型下的值,比如数值类的值可以是12、字符类的值可以是“中国”、日期类的值可以是“2015-3-22”等。
数据和信息之间存在着联系,信息通过数据表示,而信息是数据的含义。
数据库Database,DB是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。数据库中的数据是按照一定的数据模型组织、描述和存储的,有较小的冗余度、较高的数据独立性和易扩展性。
1.1.2 数据库管理系统
数据库管理系统Database Management System,DBMS是使用和管理数据库的系统软件,位于用户与操作系统之间,负责对数据库进行统一的管理和控制。所有对数据库的操作都交由数据库管理系统完成,这使得数据库的安全性和完整性得以保证。
数据库管理系统主要具备6个功能:数据定义,数据的组织、存储和管理,数据操纵,数据库的运行管理和安全保护,数据库的维护,通信和互操作。
数据定义功能用于建立和修改数据库的库结构,数据库管理系统提供数据定义语言Data Definition Language,DDL来完成数据定义功能。
数据的组织、存储和管理功能的目标是提高存储空间利用率,选择合适的存取方法提高存取效率。数据的组织、存储与管理功能主要包括DBMS如何分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等,需确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。
数据操纵功能用于用户对数据库插入、更新、删除和查询数据,数据库管理系统提供数据操纵语言Data Manipulation Language,DML来完成数据操纵功能。
数据库的运行管理和安全保护功能确保数据库系统的正常运行,内容包括多用户环境下的并发控制、安全性检查、存取限制控制、完整性检查、日志的管理、事务的管理和发生故障后数据库的恢复。数据库管理系统提供数据控制语言Data Control Language,DCL来完成数据库的运行管理和安全保护功能。
数据库的维护功能包括数据库的数据输入、转换、转储、数据库的重组织、数据库性能监视和分析等功能,这些功能是由若干实用程序和管理工具来完成的。
通信和互操作功能是指数据库管理系统与其他系统的通信和不同数据库之间的互操作。
1.1.3 数据库系统
数据库系统Database Systems,DBS是指在计算机系统中引入了数据库的系统,专门用于完成特定的业务信息处理。数据库系统包括硬件、软件和用户。其中,软件包括数据库、数据库管理系统、操作系统、应用开发工具和数据库应用程序。用户包括系统分析员、数据库设计人员、程序开发人员、数据库管理员和最终用户。数据库系统的核心是数据库管理系统。
数据库管理员Database Administrator,DBA是专门负责管理和维护数据库系统的人。通常,数据库管理员的工作职责包括参与或负责数据库设计,根据应用来创建和修改数据库,设计系统存储方案并制定未来的存储需求计划,维护数据库的数据安全性、完整性、并发控制,安装和升级数据库服务器以及应用程序工具,管理和监控数据库的用户,监控和优化数据库的性能,制定数据库备份计划,定期进行数据库备份,在灾难出现时对数据库信息进行恢复,等等。在实际工作中,一个数据库系统可能有一个或多个数据库管理员,也可能数据库管理员同时也负责系统中的其他工作。
数据库应用系统Database Application Systems,DBAS是指由数据库、数据库管理系统、数据库应用程序组成的软件系统。
1.1.4 数据管理技术的发展
数据管理技术是指对数据进行分类、组织、编码、存储、检索和维护的技术。数据管理技术的发展大致划分为3个阶段,即人工管理阶段、文件系统阶段和数据库系统阶段。
1 人工管理阶段。20世纪50年代中期之前,计算机刚刚出现,主要用于科学计算。硬件存储设备只有磁带、卡片和纸带;软件方面还没有操作系统,没有专门管理数据的软件。因此,程序员在程序中不仅要规定数据的逻辑结构,还要设计其物理结构,包括存储结构、存取方法、输入输出方式等。数据的组织面向应用,不同的计算程序之间不能共享数据,使得不同的应用之间存在大量的重复数据,数据与程序不独立。数据通过批处理方式进行处理,处理结果不保存,难以重复使用。
2 文件系统阶段。20世纪50年代中期到60年代中期,随着计算机大容量存储设备如硬盘和操作系统的出现,数据管理进入文件系统阶段。在文件系统阶段,数据以文件为单位存储在外存,且由操作系统统一管理。用户通过操作系统的界面管理数据文件。文件的逻辑结构与物理结构相独立,程序和数据分离。用户的程序与数据可分别存放在外存储器上,各个应用程序可以共享一组数据,通过文件来进行数据共享。但是,数据在文件中的组织方式仍然是由程序决定,因此必然存在相当的数据冗余。数据的逻辑结构和应用程序相关联,一方修改,必然导致另一方也要随之修改。此外,简单的数据文件不能体现现实世界中数据之间的联系,只能交由应用程序来进行处理,缺乏独立性。
3 数据库系统阶段。20世纪60年代后,随着计算机在数据管理领域的普遍应用,数据管理开始运用数据库技术,进入了数据库系统阶段。数据库技术以数据为中心组织数据,采用一定的数据模型,数据模型不仅体现数据本身的特征,而且体现数据之间的联系,数据集成性高。根据数据模型建成的数据库数据冗余小,易修改、易扩充,便于共享,程序和数据有较高的独立性。数据库管理系统统一管理与控制数据库,保证了数据的安全性和完整性,可以有效地控制并发管理。
20世纪80年代中期以来,数据库技术与其他新技术相结合,陆续产生了多种类型的数据库,如面向对象数据库、分布式数据库、并行数据库、多媒体数据库、模糊数据库、时态数据库、实时数据库、知识数据库、统计数据库等。随着大数据时代的到来,各行各业不仅越来越多地面对海量数据,更迫切需求信息的挖掘和决策的制定,从而推动数据管理技术的进一步发展。
1.1.5 数据库系统的体系结构
从数据库管理系统角度看,数据库系统通常采用三级模式结构,即数据库系统由外模式、模式和内模式三级组成,如图1-1所示。
图1-1 数据库系统三级模式结构图
* 模式:模式也称逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特性的描述,是所有用户的公共数据视图。模式和数据的物理存储及硬件无关,也和使用的应用程序无关。一个数据库只有一个模式。
* 外模式:外模式也称子模式或用户模式,是数据库用户能够使用的部分数据的逻辑结构和特征的描述,是用户的数据视图。外模式面向用户,描述用户所关心的数据,是模式的子集。一个数据库可以有多个外模式。
* 内模式:内模式也称物理模式或存储模式,是数据库中数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。
数据库系统的三级模式满足了数据库的不同层面的需求。数据库管理系统在三级模式结构之间提供了两层映像,即外模式模式映像和模式内模式映像。这种两层映像机制保证了数据库系统的数据独立性。数据独立性包括逻辑独立性和物理独立性。
* 外模式模式映像:每个外模式和模式之间存在外模式模式映像,是外模式所描述的数据局部逻辑结构和模式所描述的全局逻辑结构之间的对应关系。当模式改变时,只要修改外模式模式的映像,使得外模式保持不变,那么使用外模式的应用程序也保持不变,从而保证了数据的逻辑独立性。逻辑独立性将数据库的结构与应用程序相分离,减少了修改应用程序的工作量。
* 模式内模式映像:模式和内模式之间存在模式内模式映像,是模式所描述的全局逻辑结构和内模式所描述的物理存储结构之间的对应关系。当内模式改变时,只要修改模式内模式的映像,使得模式保持不变,那么外模式以及相关的应用程序都不用修改,从而保证了数据的物理独立性。
1.2 数 据 模 型
1.2.1 数据模型的概念
数据模型是数据库的核心和基础,是对现实世界的抽象描述。数据模型描述现实世界的数据、数据之间的联系、数据的语义和完整性约束。数据模型应能够比较真实地模拟现实世界,容易被人们理解,便于在计算机上实现。通过数据模型的建立,人们完成了从现实世界到信息世界和机器世界之间信息的抽象和表示,使得现实中的问题通过计算机系统得到精准的描述和解决。
1.2.2 数据模型的组成
数据模型描述了数据库系统的静态特征、动态特征和完整性约束条件。数据模型包括数据结构、数据操作和完整性约束3个部分。
1. 数据结构
数据结构是数据库中所有对象类型的集合,是对系统静态特征的描述。数据结构是数据模型的核心。通常根据数据模型中数据结构的类型来命名数据模型,如将采用层次结构、网状结构和关系结构的数据模型命名为层次模型、网状模型和关系模型。
2. 数据操作
数据操作是基于数据结构并对数据库中对象可执行的操作和操作规则的集合,是对系统动态特征的描述。数据操作主要包括数据库中数据的插入、更新、修改和查询的操作。数据模型必须定义这些操作的确切含义、操作符号、操作规则及实现操作的语言。
3. 完整性约束
完整性约束是一组完整性规则的集合。完整性约束规定了数据模型中的数据本身及数据之间所需要遵守的约束条件,以便确保数据库中数据的正确、有效和相容。
1.2.3 数据模型的类型
用计算机解决现实中的问题,这其实就是建立不同阶段的数据模型的过程。通过建立不同阶段的数据模型,人们将现实世界的特征抽象出来,然后转化为能用计算机建立的模型,从而达到解决实际问题的目的。
根据数据建模的不同阶段,数据模型分为概念数据模型、逻辑数据模型和物理数据模型3个类型。
1. 概念数据模型
概念数据模型,也称概念模型,能够真实地反映现实世界,包括事物和相互之间的联系,能满足用户对数据的处理要求,是表示现实世界的一个抽象模型。概念数据模型是用户与数据库设计人员之间进行交流的语言。概念数据模型不依赖于特定的数据库管理系统,但可以转换为特定的数据库管理系统所支持的数据模型。因此,概念数据模型要易于理解、易于扩充和易于向各种类型的逻辑数据模型转换。
概念数据模型有实体-联系模型、面向对象的数据模型、二元数据模型、语义数据模型、函数数据模型等。下面主要介绍实体-联系E-R模型。
实体-联系模型是采用E-R图来描述现实世界的概念模型。E-R图由简单的图形构成,可以直观地表示现实世界中各类对象的特征和对象之间的联系。
1??E-R图的介绍
E-R图的组成元素包括实体集、属性、联系。E-R图中,实体集用矩形表示,内有实体集名称;属性用椭圆形表示,内有属性名称,并以直线与所属实体集或联系相连;联系用菱形表示,内有联系名称,并以直线与实体集相连,并在联系旁边注明联系的类型1∶1、1∶n或者m∶n。如果联系有属性,那么也要用直线将属性和联系相连。
2 实体-联系模型中的基本概念
1 实体:实体是现实世界中可区分的客观对象或抽象概念。例如,一个学生、一门课程。
2 属性:属性是实体所具有的特征。一个实体往往有多个属性。例如,每个学生都有学号、姓名、性别、班级、出生日期等属性。
3 实体集:实体集是具有相同属性描述的实体的集合。例如,所有学生、所有课程。
4 实体型:实体型将实体集抽象为实体的名称和所有属性来表示该类实体。例如,学生学号,姓名,性别,班级,出生日期就是学生实体集的实体型。
5 码:码也称键,是可以将实体集中每个实体进行区分的属性或属性集。例如,每个学生的学号绝不相同,学号这个属性可以作为学生实体集的键。
6 域:域是实体集的各个属性的取值范围。例如,学生的性别属性取值为“男”或“女”。
7 联系:两个实体集之间存在一对一、一对多和多对多3种联系。例如,一个班主任只管理一个班级,一个班级只有一个班主任,班主任和班级之间是一对一的联系;一个班级有多个学生,一个学生只属于一个班级,班级和学生之间是一对多的联系;一门课程有多个学生选修,一个学生选修多门课程,课程和学生之间是多对多的联系。两个实体集之间的3种联系如图1-2所示。
?a??1∶1联系 ? b??1∶n联系 c??m∶n联系
图1-2 两个实体集之间的联系图
单一实体集之间也存在一对一、一对多和多对多3种联系。例如,领导和职工之间,一个领导可以管理多个职工,而领导本人也是职工,如图1-3所示。
两个以上的实体集之间也存在一对一、一对多和多对多3种联系。例如,一门课程由多个教师讲授,一门课程有多个学生学习,一个学生的一门课程可能由多个教师讲授因为有可能存在补考和重修,如图1-4所示。
图1-3 单个实体集之间的一对多联系图 图1-4 3个实体集之间的多对多联系图
班主任、班级、学生、课程4个实体集组成的E-R图如图1-5所示。
图1-5 班主任、班级、学生、课程实体集的E-R图
2. 逻辑数据模型
逻辑数据模型,也称逻辑模型,是与特定的数据库管理系统相关的数据模型。逻辑模型设计的要求是把概念模型转换成所选用的数据库管理系统所支持的特定类型的逻辑模型。
现有的逻辑模型主要包括层次模型、网状模型和关系模型。
1 层次模型
层次模型的总体结构为树形结构,其中结点表示记录类型,每个记录类型包含多个字段,结点之间的连线表示记录类型之间的联系。层次模型有且只有一个根结点,除根结点外的所有结点向上有且只有一个父结点,向下可以有一个或多个子结点。层次模型的优点是数据结构简单,完整性支持良好,但仅适用于数据具有层次性联系的场合,插入和删除结点操作的限制较多,查询必须逐级通过父结点。
2 网状模型
网状模型允许每个结点有零个或多个父结点,还允许结点之间有多个联系。网状模型较层次模型相比更接近现实,存取效率高,但数据独立性复杂,在存取时要指定路径,应用程序访问困难。
3 关系模型
关系模型建立在严格的数学概念基础上,是当前流行的逻辑模型。以二维表为基本结构所建立的模型称为关系模型。关系模型中,表是基础逻辑结构,由行和列组成,如表1-1所示。
表1-1 教师信息表
教师工号
姓 名
性 别
出生日期
职 称
09001
王斌
男
1975-3-26
副教授
09002
李梅
女
1977-6-2
讲师
09003
金志明
男
1957-12-15
教授
09004
王思思
女
1981-3-2
助教
关系模型中以表来表示实体以及实体之间的联系,以表来存储记录,数据结构简单,存取路径透明,具有良好的数据独立性和安全保密性。关系模型中的基本概念如下。
* 关系:表。
* 元组:也称记录,是表中的一行,代表该关系所包含的一个实体。
* 属性:也称字段,是表中的一列,代表该关系所具有的一个特性。
* 码:表中可以唯一确定一个元组的属性或者属性组。
* 候选码:表中所有可以唯一确定一个元组的属性或者属性组的集合。其中,属性组中应没有可去除的属性。
* 主码:表中唯一确定一个元组的属性或者属性组。一个表只能有一个主码。
* 外码:不是表中的码,但与另一个表中的主码相对应的属性或者属性组。
* 域:属性的取值范围。
* 分量:一个元组中的某个属性值。
* 关系模式:对关系的描述,可写成“关系名属性1,属性2,…,属性n”。
关系具有以下7个性质。
* 关系中元组的个数有限。
* 关系中的元组不能重复,
* 关系中的元组可以交换顺序。
* 关系中的属性具有原子性,不可分解。
* 关系中各属性的名称不能重复。
* 关系中的属性可以交换顺序。
* 关系中各元组同一属性值的值域是相同的。
关系模型的数据操作主要包括查询、插入、更新和删除。
关系模型的完整性分为实体完整性、参照完整性和域完整性3类。其中,实体完整性是指关系的主码值不能为空值;参照完整性是指关系的外码值必须为空值或者等于所对应主码所在关系中某个元组的主码值;域完整性是指关系的属性值满足特定的语义要求。
1.2.4 数据库的规范化
既然关系模型是用关系来保存数据,那么是不是关系中只要能装入所有数据就行了呢?答案是否定的。关系模式不是随意设计的。关系模式设计不佳,会导致后续使用出现如数据冗余量过大、插入异常、更新异常、删除异常等问题。
因此,关系模式的设计必须满足一定的标准,这个标准就是范式。关系数据库中的关系模式必须满足一定级别的范式。范式是符合某一种级别的关系模式的集合。目前,关系模式有6种范式,即第一范式1NF、第二范式2NF、第三范式3NF、改进的第三范式BCNF、第四范式4NF和第五范式5NF。满足最低要求的范式是第一范式1NF。在第一范式的基础上进一步满足更多要求的称为第二范式2NF,其余范式依次类推。
第一范式是指关系模式的每一个属性都是不可分割的基本数据项,同一行同一列中不能有多个值。在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系数据库。例如,学生表包含学号、学生姓名、班级编号和联系方式,其中联系方式不能将电话、地址和邮编3类数据合在一列中显示,解决的方法是在学生表中设置电话、地址和邮编3个属性,分别保存这3部分数据。
第二范式建立在第一范式的基础上,即满足第二范式必须先满足第一范式。第二范式要求关系模式的非主属性完全函数依赖于码,不能存在对码的部分函数依赖。例如,成绩表包含学号、学生姓名、班级编号、课程编号、成绩,主码是学号、课程编号和班级编号。但是,只知道学号和课程编号就可以查出该学生的成绩,不需要知道学生的班级编号,因此成绩表的现有结构不符合第二范式。这样设计的表在使用中有很多问题,插入一个学生的所有课程成绩将反复插入该生的基本信息,如果删除该生的所有课程成绩将导致删除该生的基本信息,如果该生的基本信息有变化又需要将其所有的成绩记录进行更新。为了解决数据冗余和重复操作的问题,可以将其中的学号和班级编号分解出来,形成学生表,原有的成绩表保留学号、学生姓名、课程编号和成绩。学生表的主码是学号,成绩表的主码是学号和课程编号,这样调整使得两个表均满足第二范式。
第三范式建立在第二范式的基础上,要求关系模式中的非主属性不依赖于其他非主属性,也就是不存在传递依赖。例如,班级表包含班级编号、班级名称、系编号、系名称,主码是班级编号。如果插入同一个系的两个班级的信息,将产生两条记录,其中系编号和系名称完全一样。其实,系编号决定了系名称,这样又会产生大量的数据冗余。可以添加系表,系表包含系编号、系名称、系简介,主码是系编号,在班级表中删除系名称和系简介,添加系编号。这样使得关系模式满足第三范式。
BCNF建立在第三范式的基础上,是指关系模式的所有非主属性完全函数依赖于码,所有主属性完全函数依赖于不包含它的码,没有属性完全函数依赖于非码的任何属性组。例如,排课表包含课程编号、教师编号和学号。一名教师教一门课程,一名学生上一门课程,一门课程有多名教师任教。由此可见,知道学号和教师编号便可推断课程编号,但根据教师编号也可以推断课程编号。这个关系模式有学号和教师编号及教师编号两个码,虽然满足第三范式,但不满足BCNF。可以将这个关系模式分解成任教表和选课表,任教表包含教师编号和课程编号,选课表包含学号和教师编号。这两个关系模式满足了BCNF。
第一范式到第五范式的6种范式之间的关系:第五范式高于第四范式高于BCNF高于第三范式高于第二范式高于第一范式。但并不是说关系模式分解的数量越多越好,表的数量过多反而会导致连接操作的代价增大,影响数据库的使用效率。一般说来,工程项目中关系数据库设计只需满足第三范式3NF就行了。
1.3 关 系 代 数
关系模型的数据结构是关系,也就是表。对于关系中元组的操作包括插入、更新、删除和查询4种。这些操作可以使用数学理论来进行表述,其中最重要的是关系代数。
1.3.1 传统的集合运算
关系代数中,传统的集合运算包括并、差、交和笛卡儿积。
1 并:假设关系R和关系S,R和S的关系模式完全一样,则R和S并运算的结果是由关系R和关系S中所有的元组组成重复元组需要去除,记作R∪S,如图1-6所示。
图1-6 并运算示意图
2 差:假设关系R和关系S,R和S的关系模式完全一样,则R和S差运算的结果是仅存在于关系R而不存在于关系S的元组组成,记作R-S,如图1-7所示。
图1-7 差运算示意图
3 交:假设关系R和关系S,R和S的关系模式完全一样,则R和S交运算的结果是由关系R和关系S共同存在的元组组成,记作R∩S,如图1-8所示。
图1-8 交运算示意图
4 笛卡儿积:假设关系R和关系S,则R和S笛卡儿积运算的结果是由关系R的元组和关系S的元组拼接组成,笛卡儿积的关系模式同样也是R和S的关系模式的拼接结果,记作R×S,如图1-9所示。
图1-9 笛卡儿积运算示意图
1.3.2 专门的关系运算
关系代数中,专门的关系运算包括选择、投影、连接和除运算。
在使用关系运算时,往往还会使用到比较运算符和逻辑运算符。比较运算符包括、=、、=、=和代表不等于。逻辑运算符包括∧与、∨或和非?。比较运算符和逻辑运算符可以组合使用,就是逻辑表达式。例如,a=0、b3∧c=10、?a=''abc''∧b10。逻辑表达式的结果只能为逻辑值“真”或者“假”。
1 选择:选择运算是在关系R中选择满足给定条件F的元组,记作?FR,其中的F是一个逻辑表达式。选择运算是对关系进行水平分解,也就是说运算结果的模式和原关系的模式完全一样。例如,在关系R中选择属性A值为“a”并且属性C值为1的元组,表达式写作?A=''a''∧C=1R,如图1-10所示。
?A=''a''∧C=1R也可以写作?1=''a''∧3=1R,这里的1=''3''的意思是第一属性列的值等于3,3=1的意思是第三属性列的值等于1。
2 投影:选择运算是在关系R中选择所需的属性列,记作?AR,其中的A是R中的属性列。投影运算是对关系进行垂直分解,也就是说运算结果的模式和原关系的模式不完全一样,属性列少于或等于原有关系,如果出现重复行则需要去除。例如,在关系R中对属性A和属性B进行投影,表达式写作A,BR,如图1-11所示。
图1-10 选择运算示意图 图1-11 投影运算示意图
3 连接:连接也称?连接。连接运算是从关系R和关系S的笛卡儿积运算结果中选择属性值之间满足条件的元组,记作。其中,i和j分别是关系R和关系S上的属性组,值具备可比性,?是比较运算符。
连接运算中有两种最重要的运算,分别是等值运算和自然连接。等值运算是指?为“=”的连接运算。等值运算从是从关系R和关系S的笛卡儿积运算结果中选择属性值相等的元组,记作。自然连接将关系R和关系S中相同属性组具有相同值的元组进行等值连接,结果中相同属性需要去重,记作RS。连接、等值连接和自然连接如图1-12所示。
4 除:假设关系RX,Y和关系SY,Z,其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系PX,P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作R÷S,如图1-13所示。
图1-12 连接、等值连接、自然连接运算示意图
图1-13 除运算示意图
1.4 数据库设计的方法和步骤
数据库设计是指将基于特定的信息内容、操作方法和应用环境来设计数据库的数据模式。数据库设计的目标是为用户提供一个高效、安全的数据库,满足用户的使用需求。大型数据库设计是一项复杂的工程,要求数据库设计人员既要具有坚实的数据库知识,还要具备应用系统开发的能力,同时要了解应用系统的业务使用。因此,数据库设计是一项涉及多学科的综合性技术。系统设计师、程序设计师、数据库管理员和用户代表也应参与整个数据库设计过程。
1.4.1 数据库设计的方法
目前常用的各种数据库设计方法都属于规范设计法,即都是运用软件工程的思想与方法,根据数据库设计的特点,提出了各种设计准则与设计规程。这种工程化的规范设计方法也是在目前技术条件下设计数据库的最实用的方法。规范设计法中,最著名的是新奥尔良New Orleans方法。新奥尔良方法采用软件工程的思想,按照软件开发生命周期来完成数据库的设计,开发过程采取工程化方法,按照步骤来进行,确保数据库设计的质量。
1.4.2 数据库设计的步骤
按照常用的规范设计法——新奥尔良方法来划分,数据库设计分为6个阶段,即需求分析、概念设计、逻辑设计、物理设计、数据库的实施和部署、数据库的运行和维护。
1. 需求分析
需求分析的内容是充分调查研究,收集基础数据,了解系统运行环境,明确用户需求,确定新系统的功能,最终得到系统需求分析说明书,作为设计数据库的依据。需求分析所调查的重点是数据和处理,以获得用户对数据库的以下要求:①用户需要从数据库中获得信息的内容与性质;②用户要完成什么处理功能,处理有哪些业务规则;③数据操作、系统吞吐量、并发访问的性能要求;④安全性和数据完整性的要求;⑤数据库及其应用系统的环境要求。
在做需求分析时,首先要了解用户单位的组织机构组成,然后调查用户单位的日常业务活动流程。在此基础上,明确用户的信息需求和系统概念需求,明确用户对系统的性能和成本的要求,确认数据项,产生系统需求说明书。需求分析的调查方法包括跟班作业、开调查会、请专人调查、发放用户调查表和查阅原系统有关记录。
经过需求分析,可以产生数据字典、数据流图、判定表和判定树等。①数据字典是系统中所有数据及其处理的描述信息的集合。数据字典由数据项、数据结构、数据流、数据存储、处理过程组成。②数据流图是结构化分析方法中使用的图形化工具,描绘数据在系统中流动和处理的过程。数据流图中包括数据流、数据源、对数据的加工处理和数据存储。数据流图根据层级不同分为顶层数据流图、中层数据流图和底层数据流图。顶层数据流图经过细化可以产生中层数据流图和底层数据流图。③判定表和判定树是描述加工的图形工具,分别是表格和树状结构,适合描述问题处理中具有多个判断,而且每个决策与若干条件有关。判定表和判定树给出判定条件和判定决策,以及判定条件的从属关系、并列关系、选择关系。
2. 概念设计
概念设计的任务是根据需求分析说明书对现实世界进行数据抽象,建立概念模型。概念模型的作用是与用户沟通,确认系统的信息和功能,与数据库管理系统无关。
概念设计方法有4种,分别是自顶向下、自底向上、逐步扩张和混合策略。①自顶向下是指先设计概念模型的总体框架,再逐步细化。②自底向上是指先设计局部概念模型,再合并成总体。③逐步扩张是指先设计概念模型的主要部分,再逐步扩充。④混合策略是指将自顶向下和自底向上相结合,先设计概念模型的总体框架,再根据框架来合并各局部概念模型。
概念模型有实体-联系模型、面向对象的数据模型、二元数据模型、语义数据模型、函数数据模型等。
采用实体-联系模型进行概念模型设计的步骤如下。
1 设计局部实体-联系模型。具体任务是确定局部实体-联系模型中的实体、实体的属性、关键字、实体之间的联系和属性,画出局部E-R图。
2 设计全局实体-联系模型。具体任务是合并局部E-R图,生成全局E-R图,并消除局部E-R图合并时产生的冲突。这里的冲突包括属性冲突、命名冲突和结构冲突,仅在合并E-R图时才会发现。①属性冲突是指同名的属性的类型、值域或单位不同;②命名冲突是指业务内容相同的属性命名不同或业务内容不同的属性命名相同;③结构冲突是指实体在其他图中作为联系或属性出现,或是同一实体的属性不同。
3 优化全局E-R模型。具体任务是修改全局E-R图,消除冗余属性、消除冗余联系,得到最终的E-R图。
3. 逻辑设计
逻辑模型设计的任务是把概念模型转换为所使用的数据库管理系统所支持的逻辑模型,定义数据完整性、安全性,评估性能。
将实体-联系模型转换成关系模型的步骤如下。
1 将E-R图转换为关系模式集合。在转换时,E-R图中的一个实体转换为一个关系模式,实体的属性转换为关系模式的属性,实体的码转换为关系模式的关键字。E-R图中的联系也要进行转换,转换方法如下:①一对一的联系可以转换成单个关系模式,也可以与任意一端的实体型转换成的关系模式合并;②一对多的联系可以转换成单个关系模式,也可以与多端的实体型转换成的关系模式合并;③多对多、3个及3个以上的联系只能转换成单个关系模式。
2 对关系模式集合进行规范化处理,满足一定的范式。规范化目的是使结构更合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新。在对关系模式进行规范化时,必须遵从概念单一化原则,即一个关系模式描述一个实体或实体间的一种联系。规范化的操作方法是确定数据依赖,用关系来表示E-R图中的所有实体,对所有数据依赖进行极小化处理,对需要分解的关系模式逐一进行分解,分解后的关系模式集合必须保证不丢失原有关系的信息。实际操作时,并不一定要求全部模式都达到BCNF,有时会故意保留部分冗余便于数据查询。
3 设计外模式。外模式是提供给数据库不同用户的使用接口。对于关系数据库来说,外模式就是视图。视图能够为用户屏蔽不需要的数据库结构,按用户的需求显示数据库中的数据。同时,视图使得用户在使用数据库时,只能使用被视图引用的数据,而不能使用数据库中其他数据,保证了数据库的安全性。在数据库结构发生变化时,只需要修改视图的定义,用户的使用接口保持不变,从而保证了与数据库相关的应用程序无须修改,达到了数据独立性。
4 评价数据库性能并优化关系模式。
4. 物理设计
物理设计是要选取一个最适合数据库的应用环境的物理结构,包括数据库的存储记录格式、存储记录安排和存取方法,使得数据库具有良好的响应速度、足够的事务流量和适宜的存储空间。它与系统硬件环境、存储介质性能和DBMS有关。
在关系模型数据库中,物理设计主要包括存储记录结构的设计、数据存放位置和存取方法。其中,存储记录结构包括记录的组成、数据项的类型和长度,以及逻辑记录到存储记录的映像。数据存放位置是指是否要把经常访问的数据结合在一起。存取方法是指聚集索引和非聚集索引的使用。物理设计还要对综合分析影响数据库的因素,确定系统配置,建立最优化设计方案,使空间利用率达到最大,系统数据操作负荷最小。
5. 数据库的实施和部署
数据库实施的内容包括使用数据库管理系统创建实际数据库结构、加载初始数据、编制和调试相应的应用程序、测试数据库及其应用程序。
数据库部署的内容是指将完成并通过测试的数据库及其应用程序,包括相关的系统软件安装在规定的硬件平台上,在数据库中装入完整的数据,配置系统运行环境,对系统的用户进行操作培训,提交用户手册及系统使用文档。
6. 数据库的运行和维护
数据库的运行和维护主要是由数据库管理员来负责。数据库的运行和维护主要包括调整数据库的结构,重组与重构数据库,调整数据库的安全性和完整性条件,制定合理的数据备份计划,完成备份以及故障恢复任务,监控数据库性能并优化数据库结构。
1.5 小型案例实训
创建一个学生成绩数据库,所涉及的信息包括校内所有的系、班级、学生、课程、教师和学生成绩。
学生成绩数据库的信息内容如下:每个系有系号、系名和系主任,每个班级有班号、班名、入学年份、人数、系号和班主任,每个学生有学号、姓名、性别、出生日期,每门课程有课程号、课程名、学分和学时,每个教师有教师号、姓名、性别、出生日期、职称。每位学生属于一个班级,每个班级属于一个系,每个班级有一个班主任,每个系有一个系主任,每个学生修多门课程,每门课程有多个学生选修,并有课程成绩。学生成绩需要记录该课程的授课教师、学期、成绩。
先画出学生成绩数据库的E-R图,再转换成关系模型。E-R图和关系模式中加下划线的属性分别是该实体集的和关系模式的主码。
由题意可知,学生成绩数据库E-R图中包含5个实体,即系、班级、学生、课程和教师。各实体的属性设计如下:系系号,系名,系主任号,班级班号,班名,入学年份,人数,系号,班主任号,学生学号,姓名,性别,出生日期,班号,课程课程号,课程名,学分,学时,教师教师号,姓名,性别,出生日期,职称,系号。各实体之间的联系包括:班级与系之间的隶属关系,学生与班级之间的隶属关系,教师与系之间的隶属关系,学生选修课程之间的“选修”联系,“选修”联系应有成绩属性。根据以上分析,得到学生成绩数据库的E-R图,如图1-14所示。
图1-14 学生成绩数据库E-R图
根据学生成绩数据库E-R图,转换得到学生成绩数据库关系模式如下。
系系号,系名,系主任号
班级班号,班名,入学年份,人数,系号,班主任号
学生学号,姓名,性别,出生日期,班号
课程课程号,课程名,学分,学时
教师教师号,姓名,性别,出生日期,职称,系号
成绩学号,课程号,教师号,成绩,学期
小 结
数据库Database,DB是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。数据库中的数据是按照一定的数据模型组织、描述和存储的,有较小的冗余度、较高的数据独立性和易扩展性。
数据库管理系统Database Management System,DBMS是使用和管理数据库的系统软件,位于用户与操作系统之间,负责对数据库进行统一的管理和控制。所有对数据库的操作都交由数据库管理系统完成,这使得数据库的安全性和完整性得以保证。
数据库系统Database Systems,DBS是指在计算机系统中引入了数据库的系统,专门用于完成特定的业务信息处理。数据库系统包括硬件、软件和用户。其中,软件包括数据库、数据库管理系统、操作系统、应用开发工具和数据库应用程序。用户包括系统分析员、数据库设计人员、程序开发人员、数据库管理员和系统用户。数据库系统的核心是数据库管理系统。
数据管理技术是指对数据进行分类、组织、编码、存储、检索和维护的技术。数据管理技术的发展大致划分为3个阶段,即人工管理阶段、文件系统阶段和数据库系统阶段。
从数据库管理系统角度看,数据库系统通常采用三级模式结构,即数据库系统由外模式、模式和内模式三级组成。两层映像机制保证了数据库系统的数据独立性,数据独立性包括逻辑独立性和物理独立性。
数据模型是数据库系统的核心和基础,是对现实世界的抽象描述。数据模型描述现实世界的数据、数据之间的联系、数据的语义和完整性约束。数据模型包括数据结构、数据操作和完整性约束3部分。数据模型分为概念数据模型、逻辑数据模型和物理数据模型3类。
实体-联系模型是采用E-R图来描述现实世界的概念模型。E-R图的组成元素包括实体集、属性和联系。
现有的逻辑模型主要包括层次模型、网状模型和关系模型。以二维表为基本结构所建立的模型称为关系模型。
关系数据库中的关系模式必须满足一定级别的范式。目前关系模式有6种范式,即第一范式1NF、第二范式2NF、第三范式3NF、改进的第三范式BCNF、第四范式4NF和第五范式5NF。一般说来,工程项目中关系数据库设计只需满足第三范式3NF即可。
关系代数中,传统的集合运算包括并、差、交和笛卡儿积,专门的关系运算包括选择、投影、连接和除运算。
目前常用的各种数据库设计方法都属于规范设计法,最著名的是新奥尔良New Orleans方法。按照常用的规范设计法——新奥尔良方法来划分,数据库设计分为6个阶段,即需求分析、概念设计、逻辑设计、物理设计、数据库实施和部署、数据库运行和维护。
习 题
1. 填空题
1 数据库是一个____________________________________的数据集合。数据库中的数据是按照一定的____________________________________组织、描述和存储的,有较小的_______________________________、较高的__________________________________和____________________________________。
2??__________________________用于建立和修改数据库的库结构,数据库管理系统提供__________________________来完成该功能。________________________用于用户对数据库插入、更新、删除和查询数据,数据库管理系统提供__________________________来完成该功能。______________________________确保数库系统的正常运行,内容包括多用户环境下的并发控制、安全性检查、存取限制控制、完整性检查、日志的管理、事务的管理和发生故障后数据库的恢复,数据库管理系统提供____________________________来完成该功能。
3 数据库系统包括硬件、软件和用户。其中,软件包括_______________________。用户包括_____________________。数据库系统的核心是__________________________。
4 数据管理技术的发展大致划分为3个阶段,即___________________________、____________________________和_______________________________。
5 从数据库管理系统角度看,数据库系统通常采用三级模式结构,即数据库系统由_______________________________三级组成。_______________________________保证了逻辑独立性,________________________________保证了物理独立性。
6 数据模型包括____________________________、__________________________和____________________________3部分。
7 根据数据建模的不同阶段,数据模型分为_________、________和________三类。
8??____________________________是用户与数据库设计人员之间进行交流的语言。
9??____________________________是采用E-R图来描述现实世界的概念模型。E-R图的组成元素包括___________________________。___________________________用矩形表示,____________________________用椭圆形表示,___________________________用菱形表示,两个实体集之间存在_____________________________3种联系。
10 现有的逻辑模型主要包括____________________________________。
11 以____________________________________为基本结构所建立的模型称为关系模型。关系模型中,表是基础逻辑结构,由____________________________________组成。
12 第一范式是指___________________________。第二范式要求关系模式的非主属性完全函数依赖于码,不能存在对码的________________________。第三范式要求关系模式中的非主属性不依赖于其他非主属性,也就是不存在____________________________。_______________________________是指关系模式的所有非主属性完全函数依赖于码,所有主属性完全函数依赖于不包含它的码,没有属性完全函数依赖于非码的任何属性组。
13 关系代数中,传统的集合运算包括____________________________________,专门的关系运算包括____________________________________。
14 按照常用的规范设计法——____________________________________来划分,数据库设计分为6个阶段,即____________________________________。
2. 操作题
设计一个图书馆管理数据库。图书馆管理数据库的信息内容如下:
每种图书属于一个图书类别,每个图书类别有多种图书。每种图书有ISBN、书名、版次、类型、作者、出版社、价格、可借数量和库存数量。每种图书有多本。每本图书有图书编号、ISBN、状态和状态更新时间。
每个读者属于一个读者类型,每个读者类型有多个读者。每个读者有读者编号、姓名、类型、证件号、性别、联系方式、登记日期、有效日期、已借书数量和是否挂失。
每个读者可以借阅多本图书,每本图书可以被多次借阅。每次借阅记录有借阅编号、图书编号、读者编号、借阅日期、到期日期、处理日期和状态。
先画出图书馆管理数据库的E-R图,再转换成关系模型。