第 4 章 ASP 访问数据库(二)

40
4 4 ASP ASP 第第第第第 第第 () 第第第第第 第第 () 第第—— 第第第第 4.1 第第——第第第第第 4.2 第第第第第第第第第 4.3

description

4.1. 4.3. 4.2. 图书管理 —— 一对多关系. 图书管理 —— 多对多关系. 分组查询和动态图表. 第 4 章 ASP 访问数据库(二). 4.1 图书管理 —— 一对多关系. 4.1.1 一对多关系概述 下面用一个实例来说明什么是 “ 一对多 ” 关系。 这是一个简单的图书管理系统。包括图书信息和作者信息。图书信息包括:编号、书名、出版时间、内容简介等;作者信息包括:姓名、性别、国籍、生卒年份等。. - PowerPoint PPT Presentation

Transcript of 第 4 章 ASP 访问数据库(二)

Page 1: 第 4 章   ASP 访问数据库(二)

第第 44 章 章 ASPASP 访问数据库(二)访问数据库(二)

图书管理——一对多关系4.1

图书管理——多对多关系4.2

分组查询和动态图表4.3

Page 2: 第 4 章   ASP 访问数据库(二)

4.1 4.1 图书管理——一对多关系图书管理——一对多关系

4.1.1 一对多关系概述 下面用一个实例来说明什么是“一对多”关系。 这是一个简单的图书管理系统。包括图书信息和作者信息。图书信息包括:编号、书名、出版时间、内容简介等;作者信息包括:姓名、性别、国籍、生卒年份等。

Page 3: 第 4 章   ASP 访问数据库(二)

如果在数据库中只建立一个表,把图书信息和作者信息都放在里面,就有可能造成大量存储空间的浪费。比如,某个作者写了很多本书,这些书的作者信息就是相同的,这不仅浪费存储空间;也不便于修改维护,如果要修改他的信息,就要改动他的每一本书的记录,这就非常不方便。

Page 4: 第 4 章   ASP 访问数据库(二)

另外,可能只有一部分图书有作者信息,另一部分图书根本没有作者的信息,这部分图书的作者信息部分就全是空字段,这是造成存储空间浪费的另一个原因。

Page 5: 第 4 章   ASP 访问数据库(二)

所以,要分成两个表来建立:图书信息表与作者信息表。这样,不仅节约存储空间,在作者信息变动时,只需修改一条记录就可以了。

Page 6: 第 4 章   ASP 访问数据库(二)

现假定每一本书只有一个作者,但一个作者可能写了若干本书。这就是所谓“一对多”的关系。 为了突出主要问题,对表的结构做了简化,仅保留了少量的字段。

( 1 )图书信息表( books )的结构设计如图 4-1-1 所示。

Page 7: 第 4 章   ASP 访问数据库(二)

图 4-1-1 图书信息表( books )的结构设计

Page 8: 第 4 章   ASP 访问数据库(二)

( 2 )作者信息表( writers )结构设计如图 4-1-2 所示。

Page 9: 第 4 章   ASP 访问数据库(二)

图 4-1-2 作者信息表( writers )结构设计

Page 10: 第 4 章   ASP 访问数据库(二)

( 3 )图书信息表的内容如图 4-1-3 所示。

图 4-1-3 图书信息表的内容

Page 11: 第 4 章   ASP 访问数据库(二)

( 4 )作者信息表的内容如图 4-1-4 所示。

图 4-1-4 作者信息表的内容

Page 12: 第 4 章   ASP 访问数据库(二)

为了简单起见,这里假设作者的中文名字是没有重名的。这样就直接使用中文姓名作为作者表的主关键字段。对于没有详细信息的作者,作者表中就根本没有他的记录。

Page 13: 第 4 章   ASP 访问数据库(二)

1 .案例效果2 .制作过程

( 1 )首页( index.htm )( 2 )“检索结果”网页( fboo

k.asp )( 3 )“详细信息”网页( detai

l.asp )

4.1.2 项目实现

Page 14: 第 4 章   ASP 访问数据库(二)

( 1 ) LEFT JOIN

( 2 ) INNER JOIN

( 3 )显示图片时条件语句的应用

( 4 )相关图书——即同一作者的其他图书

3 .知识解析

Page 15: 第 4 章   ASP 访问数据库(二)

4.2.1 多对多关系概述 前面所讲的“一对多”关系,是假设每一本书只有一个作者,但一个作者可能写了多本书。实际上,不仅一个作者可能有多本书,一本书也可能有多个作者。这就是所谓“多对多”关系了。

4.2 4.2 图书管理——多对多关系图书管理——多对多关系

Page 16: 第 4 章   ASP 访问数据库(二)

下面仍然以图书管理系统为例。在这个例子里,除了图书信息表( books )与作者信息表( writers )之外,还有一个起“中介”作用的关系表( rel ),图书与作者之间的关系,全部保存在这个表中。

Page 17: 第 4 章   ASP 访问数据库(二)

( 1 )图书信息表的结构设计,表中没有“作者”字段,如图 4-2-1 所示。

Page 18: 第 4 章   ASP 访问数据库(二)

图 4-2-1 图书信息表( books )的结构设计

Page 19: 第 4 章   ASP 访问数据库(二)

( 2 )作者信息表结构设计,主关键字段不是姓名,而是作者编号。这样做,即使作者中有同名同姓的也不会搞错。如图 4-2-2 所示。

Page 20: 第 4 章   ASP 访问数据库(二)

图 4-2-2 作者信息表( writers )结构设计

Page 21: 第 4 章   ASP 访问数据库(二)

( 3 )关系表的设计,如图 4-2-3所示。

图 4-2-3 关系表( rel )结构设计

Page 22: 第 4 章   ASP 访问数据库(二)

“ 多对多”的关系就是通过这个表( rel )来确定图书与作者之间的相互联系,如图 4-2-4 所示。

Page 23: 第 4 章   ASP 访问数据库(二)

图 4-2-4 图书与作者之间的相互联系

Page 24: 第 4 章   ASP 访问数据库(二)

1 .案例效果2 .制作过程

( 1 )“检索结果”页( fbook.asp )。

( 2 )“详细信息”页( detail.asp )。

4.2.2 项目实现

Page 25: 第 4 章   ASP 访问数据库(二)

( 1 ) SQL 查询语句中使用了两次“ LEFT JOIN” :

rs.Open "SELECT * FROM books LEFT JOIN (rel LEFT JOIN writers " _

& " ON rel.writerID = writers.wID) ON books.bID = rel.bookID" & s1 _

& " ORDER BY bID" ,cn,1

3 .知识解析

Page 26: 第 4 章   ASP 访问数据库(二)

由于有 3 个表,所以用了两次“ LEFT JOIN” 。之所以用“ LEFT JOIN” 而不是“ INNER JOIN” ,是考虑到可能有的图书没有作者,或不知道有没有作者,而图书本身仍然能够被正常地检索。

Page 27: 第 4 章   ASP 访问数据库(二)

( 2 )检索结果页同一本书多条记录的处理

( 3 )详细信息页在显示图书信息时如何显示多个作者

( 4 )一本书多名作者的排名顺序问题

( 5 )作者详细信息的显示( 6 )检索相关图书

Page 28: 第 4 章   ASP 访问数据库(二)

4.3.1 分组查询1 . GROUP BY 子句2 . HAVING 子句3 .分组查询常用的 SQL 函数

4.3 4.3 分组查询和动态图表分组查询和动态图表

Page 29: 第 4 章   ASP 访问数据库(二)

( 1 )函数 COUNT( ) 统计非 NULL 值记录数。

( 2 )函数 SUM( ) 计算某字段的算术和。

( 3 )函数 AVG( ) 计算某字段的算术平均值。

Page 30: 第 4 章   ASP 访问数据库(二)

( 4 )函数 MAX( ) 返回某字段中的最大值。

( 5 )函数 MIN( ) 返回某字段中的最小值。

Page 31: 第 4 章   ASP 访问数据库(二)

动态图表是网页中能够随着数据库中数据的变化而变化的图表(直方图、折线图、圆饼图等)。可以利用 ActiveX控件或 Java Applet 等技术来实现。

4.3.2 动态图表

Page 32: 第 4 章   ASP 访问数据库(二)

使用 ActiveX控件显示动态图表,对客户端(浏览器端)的平台有一定要求:CPU必须是 x86体系(如奔腾)、操作系统必须是 Windows 、浏览器软件必须是微软的 IE ( Internet Explorer )。

Page 33: 第 4 章   ASP 访问数据库(二)

这意味着 Linux 用户可能无法看到网页中的动态图表。另外,有些客户为了预防“病毒”,在浏览器的“安全”设置中“禁用”了 ActiveX控件,这意味着部分Windows 用户也看不到网页中的动态图表。

Page 34: 第 4 章   ASP 访问数据库(二)

使用 Java Applet技术显示动态图表,与平台无关。 Linux 系统的客户端也可以看到动态图表。但 Java 程序设计并非每个网页开发人员都能够胜任。

Page 35: 第 4 章   ASP 访问数据库(二)

也可以使用 Flash技术显示动态图表。这需要开发人员有利用 Flash MX ActionScript进行程序设计的能力。

Page 36: 第 4 章   ASP 访问数据库(二)

网页中最常见的动态图表是直方图(条形图和柱形图),它最容易实现,实际使用的也最多。在 ASP 网页中,不需要其他的技术,只用 ASP 的 VBScript 编写简单程序,就可以实现动态直方图。下面的例子将介绍 ASP 如何实现动态直方图。

Page 37: 第 4 章   ASP 访问数据库(二)

1 .案例效果2 .制作过程

( 1 )网上调查数据表结构设计如图 4-3-4 所示。

4.3.3 项目实现

Page 38: 第 4 章   ASP 访问数据库(二)

图 4-3-4 网上调查数据表结构设计

Page 39: 第 4 章   ASP 访问数据库(二)

( 2 )条形图形的制作。( 3 )网上调查首页( index.htm )

是一个没有服务器端脚本的普通网页。 ( 4 )调查投票接收页( vote.asp )。( 5 )投票结果显示页( look.asp )。

Page 40: 第 4 章   ASP 访问数据库(二)

( 1 )分组查询—— GROUP BY

( 2 ) Session 和 Cookies技术( 3 )修改网上调查首页( 4 )动态条形图形的宽度——

动态系数 K

( 5 )条形图形的颜色

3 .知识解析