1 / 40

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

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

ros
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 4.1 4.3 4.2 图书管理——一对多关系 图书管理——多对多关系 分组查询和动态图表 第4章 ASP访问数据库(二)

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

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

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

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

  6. 现假定每一本书只有一个作者,但一个作者可能写了若干本书。这就是所谓“一对多”的关系。现假定每一本书只有一个作者,但一个作者可能写了若干本书。这就是所谓“一对多”的关系。 • 为了突出主要问题,对表的结构做了简化,仅保留了少量的字段。 • (1)图书信息表(books)的结构设计如图4-1-1所示。

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

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

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

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

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

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

  13. 4.1.2 项目实现 • 1.案例效果 • 2.制作过程 • (1)首页(index.htm) • (2)“检索结果”网页(fbook.asp) • (3)“详细信息”网页(detail.asp)

  14. 3.知识解析 • (1)LEFT JOIN • (2)INNER JOIN • (3)显示图片时条件语句的应用 • (4)相关图书——即同一作者的其他图书

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

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

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

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

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

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

  21. (3)关系表的设计,如图4-2-3所示。 图4-2-3 关系表(rel)结构设计

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

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

  24. 4.2.2 项目实现 • 1.案例效果 • 2.制作过程 • (1)“检索结果”页(fbook.asp)。 • (2)“详细信息”页(detail.asp)。

  25. 3.知识解析 • (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

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

  27. (2)检索结果页同一本书多条记录的处理 • (3)详细信息页在显示图书信息时如何显示多个作者 • (4)一本书多名作者的排名顺序问题 • (5)作者详细信息的显示 • (6)检索相关图书

  28. 4.3 分组查询和动态图表 • 4.3.1 分组查询 • 1.GROUP BY子句 • 2.HAVING子句 • 3.分组查询常用的SQL函数

  29. (1)函数COUNT( )统计非NULL值记录数。 • (2)函数SUM( )计算某字段的算术和。 • (3)函数AVG( )计算某字段的算术平均值。

  30. (4)函数MAX( )返回某字段中的最大值。 • (5)函数MIN( )返回某字段中的最小值。

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

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

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

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

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

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

  37. 4.3.3 项目实现 • 1.案例效果 • 2.制作过程 • (1)网上调查数据表结构设计如图4-3-4所示。

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

  39. (2)条形图形的制作。 • (3)网上调查首页(index.htm)是一个没有服务器端脚本的普通网页。 • (4)调查投票接收页(vote.asp)。 • (5)投票结果显示页(look.asp)。

  40. 3.知识解析 • (1)分组查询——GROUP BY • (2)Session和Cookies技术 • (3)修改网上调查首页 • (4)动态条形图形的宽度——动态系数K • (5)条形图形的颜色

More Related