数据库设计及其应用程序开发

数据库设计及其应用程序开发"

作者:周汉平
ISBN:9787302215257
定价:¥36
字数:千字
页数:
出版时间:2010.01.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书从关系型数据库模型设计、数据库服务器端SQL程序设计和数据库客户端程序设计三个方面介绍数据库设计及其应用程序开发的实用技术。第一部分介绍范式理论的运用和如何使用PowerDesigner依据需求建立正确合理的概念模型;第二部分介绍如何进行SQL程序设计以解决典型的应用问题;第三部分介绍使用Delphi、C# for .Net以及采用J2EE架构,进行C/S和B/S多层结构的数据库应用程序开发的基本方法。

本书可作为大学计算机本科专业的教材和计算机软件开发人员进行数据库设计和SQL程序设计的实用指导书,也可作为使用Delphi、C# for .Net和J2EE平台和架构开发数据库客户端和中间层应用程序的程序员入门参考书。

前言

20世纪90年代初,我独立承接了一个期货交易所会员单位的保证金和交易管理系统的开发项目,那时不懂什么是数据库,更不懂数据库理论,但就凭着对计算机技术的浓厚兴趣,硬是夜以继日地把该项目做了下来,并得到了用户单位的好评。此后就一发不可收拾,十几年中独立开发或参与开发了很多大大小小的数据库应用系统,但对数据库理论的学习和研究却是几年以后的事了,其一是因为项目的开发越来越规范,尤其团队开发的情况下,各人的数据库设计方法各不相同,仅凭经验很难说服别人遵从自己的设计,那时也确实没有办法系统地论证某一种设计的优越性,所以迫切需要用理论知识来武装自己;其二是因为教学上的需要,我必须为计算机本科专业的学生开设“数据库系统概论”课程。

在学习数据库理论的过程中,发现最大的问题是理论和实践的脱节,过去软件设计过程中的疑难问题一一闪现,但很难在书上找到答案或从书上的实例中受到启发,原因是大多数数据库理论书籍告诉我们的是“理论是什么”,而很少告诉我们“为什么”或“怎么用”的问题,书中的实例也侧重于说明怎么做才符合理论,而没有告诉我们怎么用理论去指导设计和解决实际开发中的问题。

其次,目前关系型数据库理论已成体系,但其中只有一小部分内容对软件开发有实际意义,而大多数内容是从事数据库理论研究的人员所必须具备的知识,这是大学生在工作后,从事数据库应用系统的设计开发过程中,普遍感到在校学习的数据库理论没有用的主要而真实的原因所在。

此后学校又安排我开设“数据库应用程序设计”课程,我以为终于找到了把数据库理论和我所掌握的实践技能结合起来传授给学生的机会了,于是我开始找教材,目标很明确:教材要包含设计和开发数据库应用系统的所有实用的知识和技能,包括能直接指导数据库设计的理论、方法和工具、侧重实践的数据库服务器端的程序开发与基于目前主流语言和平台的客户端应用程序开发技术,遗憾的是,我竟然没有找到一本这样的书籍。

即便把两本甚至三本书合起来作为教材,在理论和实践的结合方面仍然不能令人满意,一些书只讲理论,而另一些书只讲实践,造成这种现象的原因很简单,从事软件开发的人,很少有时间、精力或兴趣去从事理论研究和出版书籍,而有条件搞理论研究的人又很缺乏从业经验,一些人为了获取经验投身到软件开发的第一线,但很

少有人再回过来利用这些经验去搞理论研究,这就是我们国家软件行业理论与实践关系之现状。

于是只能根据选出的内容制作课件,同时编写上机实验指导,经过对该课程的多次的教学实践,不断调整和充实了课件内容,然后以课件内容为核心编写了本书。

本书所涉及的知识和技能是进行规范高效的数据库应用程序设计和开发所必需的,也是与计算机相关的技术应用型本科专业学生所必须具备的。本书的最大特点是与应用的紧密结合,阐述理论和技术的重点不在于解决“是什么”的问题,而在于“怎么用”和“如何用更好”的问题,着力使读者能对具体问题的分析能力上有所提高。

第一部分包含了实用的数据库设计所要用到的理论、技术和工具,阐述了数据库的理论怎样在实践中得以应用又反过来证实和充实了理论,解析了实践中的一些典型案例,比较和分析了各种常见的设计方法的特点和在性能、效率上的优劣。第二部分包含了各种数据库服务器端的程序开发技术,重点讨论各种技术的特点和应用场合,讨论实现一个需求使用何种技术更好的问题,也包含了如何在实践中充分挖掘某种技术的功能,用简单的方法实现复杂的算法,其中用实例对SQL和核心语句SELECT应用技巧方面进行了深入和独特的介绍。第三部分使读者在选择应用系统结构时,对相关技术在短期内有一个直观的具体的了解,而在选定了某个系统结构后,能使读者对相关技术快速入门。所有的实例解析都是作者在软件行业长期从事数据库应用系统设计和开发过程中所探索的知识和经验的积累,具有典型性和一定的深度。

归纳起来,本书的主要特色体现在:

* 理论和概念部分的解析以实际的应用问题为背景,以提出问题、分析问题,然后解决问题为主线。

* 在概念和功能上不求面面俱到,重点放在对实践应用中的实用、常用技术方法的分析上,包括同一应用问题不同处理方法的分析和比较。

* 对某些理论、概念以及和实践结合上存在的认识上的分歧和误区进行了分析,并给出了最终的结论。如对1NF进行深入而全面的剖析,指出了国内很多书籍和文章对1NF认识上的误区和局限性,从实践角度论证1NF的重要意义。

* 用实例比较全面地阐述范式与冗余的关系。

* 使用数据库的建模工具PowerDesigner,结合实例说明如何建立正确的概念数据模型以及建立正确的概念数据模型的重要性,详细阐述概念数据模型与其产生的物理数据模型的关系。

* 包含作者长期从事数据库软件开发过程中所积累的SQL语言尤其是SELECT语句独特的应用技巧的分析和介绍。

* 对复杂问题承上启下,问题的难度循序渐进,并且力求前后关联,逐步展开,最终对一个问题构成一个比较完整的解决方案。

* 通过实例介绍使用Delphi和C# for .Net的开发技术,结合实例对其数据库访问技术进行了深入浅出的剖析。

* 使用BEA Weblogic和Eclipse,以最简单的方式帮助读者跨过J2EE技术的门槛。

读者只需要具备计算机以及编程的基础知识,对实际应用问题具备一定的理解能力就可通读本书并由此获益,如果对面向对象程序设计的思想具有一定的了解,学习并理解了一定的数据库的理论知识并具备一定的软件开发经验,相信一定能从中获益。如果按部就班地按书上的指导完成具有实战价值的实例,并体会其中的技术思想,更可以把这些实践积累作为今后理解和掌握计算机领域其他知识的应用背景。经过近20年的软件设计、开发和研究,作者深刻地认识到,具备一定的应用背景是理解和掌握计算机软件开发技术非常重要的条件和途径。

本书由上海市第二工业大学周汉平编著,尽管书中所有内容经过作者的反复斟酌和论证测试,但错误在所难免,欢迎读者批评指正。

                                                                编    者

2009年8月于上海

目录

第1篇  关系数据库设计技术

第1章  关系模型和关系型数据库管理系统 3

1.1  问题的引出 3

1.2  关系模型 5

1.2.1  关系模型的数据结构 5

1.2.2  关系模型的数据操作 7

1.2.3  关系模型的数据约束 12

1.3  关系型数据库管理系统RDBMS 14

第2章  范式及其对数据库设计的指导意义 16

2.1  问题的引出 16

2.2  范式理论概述 17

2.3  1NF及对实践的指导意义 19

2.3.1  1NF的最常见的表述及认识上的误区 19

2.3.2  1NF另一种表述和全面理解1NF 20

2.4  函数依赖 21

2.5  2NF及对实践的指导意义 22

2.6  3NF及对实践的指导意义 23

2.7  BCNF——扩充的第三范式 25

2.8  范式应用实例分析 26

2.8.1  正确理解1NF——树结点的数据表设计 26

2.8.2  3NF在实践中的应用问题 29

2.9  范式的局限——对冗余的进一步讨论 33

2.9.1  范式无法消除的冗余——计算列问题 33

2.9.2  范式无法消除的其他冗余 34

2.9.3  突破范式限制 36

2.9.4  冗余的代价 37

2.9.5  小结 38

第3章  数据库静态结构设计和实现 39

3.1  概念模型一般概念 39

3.1.1  概念模型的两个要素 39

3.1.2  实体关系图 42

3.1.3  概念模型向关系模型转换的方法和规则 43

3.1.4  确定实体属性的重要规则 44

3.2  PowerDesigner概述 44

3.2.1  概念数据模型CDM概述 45

3.2.2  CDM分析设计的一般流程 45

3.2.3  建立CDM的一般操作 47

3.3  实体——域、数据项和属性 48

3.3.1  域 48

3.3.2  数据项 49

3.3.3  实体 51

3.4  实体之间的关系 53

3.4.1  关系 54

3.4.2  关联和关联连接 59

3.4.3  小结 60

3.5  继承 61

3.6  概念数据模型实例分析 63

3.6.1  单据的概念数据模型 63

3.6.2  考勤系统的概念数据模型 64

3.6.3  商品多供应商问题的概念数据模型 66

3.6.4  单据相关人员的概念数据模型 67

3.7  物理数据模型PDM 72

3.8  数据库的建立 76

第2篇  SQL程序设计

第4章  查询语句和视图 81

4.1  单表查询 81

4.2  数据源中数据表的各种连接 86

4.2.1  交叉连接和内连接 87

4.2.2  外连接 88

4.2.3  自连接 90

4.2.4  外连接条件和选择条件 90

4.3  子查询及其逻辑运算符 92

4.4  关系集合运算的实现 94

4.4.1  并运算 95

4.4.2  交和差运算 95

4.4.3  除运算 96

4.5  视图 98

4.6  典型查询实例分析 101

4.6.1  不同选择条件的聚合列的查询 101

4.6.2  一行数据归属多个分组的查询 106

4.6.3  分组列值最大(小)值所在行的查询 112

4.6.4  交叉表的查询 114

4.6.5  汇总表的查询 117

4.7  查询语句小结 124

第5章  修改语句及其子查询的运用 126

5.1  插入行 126

5.1.1  插入单行 126

5.1.2  插入子查询结果 127

5.2  更新行 127

5.2.1  简单的更新 128

5.2.2  WHERE条件带子查询的更新 128

5.2.3  表达式包含子查询的更新 129

5.3  删除行 131

第6章  数据库中数据的安全控制 133

6.1  问题的引出 133

6.2  用户和角色 135

6.3  授权和回收 137

6.4  视图机制控制用户的权限 138

6.4.1  单个基表的视图 139

6.4.2  多个基表的视图 140

6.4.3  通过视图修改基表的应用意义 142

第7章  数据库行为特征设计——SQL程序设计 144

7.1  SQL程序基础 144

7.1.1  批处理 145

7.1.2  变量的声明和使用 146

7.1.3  流程控制语句 149

7.2  函数和表达式 151

7.2.1  表达式和标准函数 151

7.2.2  自定义函数——标量函数 160

7.2.3  表值函数 162

7.3  存储过程 166

7.3.1  存储过程的创建和调用 166

7.3.2  存储过程实例分析——月初库存的生成 169

7.4  触发器 181

7.4.1  创建触发器 181

7.4.2  触发器应用实例 182

7.5  临时表和表变量 187

7.6  游标 193

7.6.1  游标及游标变量的声明 193

7.6.2  打开游标 195

7.6.3  移动游标指针并取得当前行数据 195

7.6.4  关闭和释放游标 196

7.6.5  使用游标实例 196

7.7  事务 200

7.7.1  事务定义方法及基本特性 200

7.7.2  加锁 204

7.7.3  隔离级别 207

7.7.4  SQL Server的事务管理模式 210

7.7.5  事务应用实例 211

第3篇  数据库应用程序界面和中间层设计

第8章  数据库应用程序开发技术概述 215

8.1  数据库应用系统的体系结构 216

8.2  可视化程序设计概述 218

8.3  可视化程序设计实例 218

8.4  数据存取技术 221

第9章  C/S结构在线式数据库应用程序设计 224

9.1  数据库应用程序界面设计需求 224

9.2  Delphi简介 225

9.2.1  Delphi集成开发环境 225

9.2.2  Object Pascal语言概要 227

9.3  界面设计 228

9.4  建立数据模块(Data Module) 230

9.5  控件数据和数据表数据的同步 233

9.5.1  设置属性建立同步 233

9.5.2  数据同步机制解析 234

9.6  实现按钮功能的程序 235

9.7  计算列的计算程序 238

9.8  报表的设计和输出 239

9.9  数据表的打开和窗口的创建 241

9.10  小结 242

第10章  C/S结构断开式数据库应用程序设计 244

10.1  ADO.NET 244

10.2  数据库应用程序界面设计需求 245

10.3  创建项目和界面控件设置 246

10.4  程序方式实现界面控件与数据库数据的交互 248

10.4.1  控件和数据库数据的交互机制概述 249

10.4.2  连接、加载和简单绑定——学生信息的显示 249

10.4.3  详细讲述绑定 251

10.4.4  DataGrid和Relation——学生选课及成绩的显示 258

10.4.5  进一步探究dataSet 260

10.4.6  把dataSet数据存入数据库——保存功能的实现 264

10.4.7  尝试断开式连接的有效性 269

10.5  数据集及绑定的可视化设计和实现 269

10.5.1  类型化和非类型化dataSet 269

10.5.2  构建类型化dataSet 270

10.5.3  设置控件的绑定属性 271

10.6  报表设计 271

10.6.1  水晶报表(Crystal Report)概述 271

10.6.2  简单报表——学生基本信息表 272

10.6.3  使用子报表——学生成绩单格式一 277

10.6.4  运用主从关系——学生成绩单格式二 279

第11章  B/S多层架构入门 281

11.1  基础准备 281

11.1.1  安装JDK 281

11.1.2  安装Eclipse和MyEclipse 282

11.1.3  安装和启动Weblogic 282

11.1.4  在MyEclipse中配置Weblogic 283

11.1.5  SQL Server的设置和安装JDBC 284

11.2  开始第一个程序 284

11.2.1  JDBC连接池 285

11.2.2  配置Data Source和JNDI技术 286

11.2.3  编写Java应用程序 287

11.2.4  编译Java应用程序 288

11.2.5  运行Java应用程序 289

11.2.6  在MyEclispe中运行程序 290

11.2.7  Java应用程序的存储结构 291

11.3  J2EE和EJB简述 293

11.4  实用的用户验证需求 294

11.5  无状态SessionBean——用户验证和密码修改 295

11.5.1  创建和部署无状态SessionBean 296

11.5.2  客户端调用SessionBean 300

11.5.3  增加修改用户密码的方法 307

11.6  有状态SessionBean--保留用户信息 311

11.6.1  创建有状态SessionBean 311

11.6.2  JSP调用有状态的SessionBean 314

11.6.3  有状态和无状态SessionBean特点 317

11.7  EntityBean——修改密码 320

11.7.1  EntityBean——不包含主键类 320

11.7.2  EntityBean——包含主键类 323

11.7.3  Java程序测试EntityBean 326

11.8  常见错误及处理 333

附录A  DEMO数据库中数据表结构及数据 335

附录B  完整的Delphi程序 339

附录C  完整的C#窗口Frm_Std_Grade程序 345

附录D  CrystalReport设计界面 363

附录E  MyEclipse中实例项目清单 365

参考文献 368

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个