韶华将逝,雄心未已;欲与众君,共习此技.

《PHP和MySQL Web开发》学习笔记(十)

上一篇 / 下一篇  2007-07-26 10:27:20 / 天气: 晴朗 / 心情: 平静 / 个人分类:PHP & MySQL

第二篇 使用MySQL
 
第8章 设计Web数据库
 
8.1 关系数据库的概念
 
8.1.1 表格
关系数据库由关系组成,这些关系通常称为表格。
通常一个表具有一个名称,几个数据列,每一列对应于一种不同的数据;以及对应于一个客户的数据行。
 
8.1.2 列
表中的每一列都有唯一的名称,包含不同的数据。此外,每一列都有一个相关的数据类型。有时候,列也叫做域或者属性。
 
8.1.3 行
表中的每一行具有相同的格式,因而也具有相同的属性。行也称为记录。
 
8.1.4 值
每一行由对应于每一列的单个值组成。每个值必须与该列定义的数据类型相同。
 
8.1.5 键
表中的标志列称为键或主键。一个键可能由几列组成。
通常,数据库由多个表组成,可以使用键作为表格之间的引用。当表中的主键出现在其他表的时候,我们就称它为外键
 
8.1.6 模式
数据库整套表格的完整设计称为数据库的模式。它是数据库的设计蓝图。一个模式应该显示表格及表格的列、每个表的主键和外键。一个模式并不会包含任何数据,但是我们可能希望在模式时使用示例数据来解析这些数据的含义。模式可以在非正式的图表中表示、用实体关系图表表示,或者使用文本格式表示。
在一个模式中,带有下划线的元素表示该元素是所在关系的主键。斜体元素表示该元素是其所在关系的外键。
 
8.1.7 关系
外键表示两个表格数据的关系。
关系数据库中有3种基本的关系类型。根据关系双方所含对象的多少,可以将这些关系分为一对一、一对多、多对多3种关系。

一对一关系表示关系双方只有一个对象相互对应。
在一对多关系里,一个表中的一行与另一表中的多行具有相互关联的关系。
在多对多的关系中,表中的多行与另一个表中的多行具有相互关联的关系。
 
8.2 如何设计Web数据库
 
8.2.1 考虑要建模的实际对象
当创建一个数据库时,我们经常为现实世界的实体和关系建立模型,并且存储这些实体对象与关系的信息。
通常,要建模的每一种现实世界对象都需要有自己的表。考虑这样一个问题:我们要保存所有客户的同类信息。如果有一组属于同一类型的数据,就可以很容易根据这些数据创建一个表。
 
8.2.2 避免保存冗余数据
冗余数据的设计会产生两个基本问题:首先是空间的浪费;其次是导致数据更新的不一致,也就是说,在修改数据库之后容易产生数据不一致。数据的完整性将被破坏,以至于我们不知道哪些数据正确,哪些数据不正确,通常这会导致信息的丢失。
需要避免3种情况的更新不规则:修改、插入和删除不规则。
 
8.2.3 使用原子列值
使用原子列值的意思是对每一行的每个属性只存储一个数据。
 
8.2.4 选择有意义的键
应该确认所选择的键是唯一的。
 
8.2.5 考虑需要询问数据库的问题
 
8.2.6 避免多个空属性的设计
 
8.2.7 表格类型的总结
通常,数据库由两种类型的表组成:
描述现实世界对象的简单表。这些表也可能包含其他简单对象的键,这们之间有一对一或一对多的关系。
描述两个现实世界对象的多对多关系的关联表,通常,这些表是与现实世界某种事务处理相联系的。
 
8.3 Web数据库架构
一个典型的Web库事务包含下列步骤:
1) 用户的Web浏览器发出HTTP请求,请求特定Web页面。
2) Web服务器收到页面的请求,获取该文件,并将它传到PHP引擎,要求它处理。例如,用户可能以HTML表单的形式搜索图书,搜索结果网页称为results.php。
3) PHP引擎开始解析脚本。脚本中有一条连接数据库的命令,还有执行一个查询(执行搜索图书)的命令。PHP打开通向MySQL数据库的连接,发送适当的查询。
4) MySQL服务器接受数据库查询并处理。将结果——一个图书的列表——返回到PHP引擎。
5) PHP引擎完成脚本运行,通常,这包括将查询结果格式化成HTML格式。然后再将输出的HTML返回到Web服务器。
6) Web服务器将HTML发送到浏览器。这样用户就可看到她所搜索的图书。
这个 过程基本上与脚本引擎和数据库服务器无头。通常,Web服务器软件,PHP引擎和数据库服务都在同一台机器上运行。但是数据库服务器在另一台机器上运行也是非常常见的。这样做是出于保密、提高性能以及负载平衡的原因而考虑的。从开发的角度来看,要做的事情基本上是一样的,但是它能够明显提高性能。
随着应用程序在大小和复杂度上的不断增加,我们可能会将PHP应用程序分成不同的层——通常,包括与MySQL交互的数据库层、包含了应用程序核心的业务逻辑层和管理HTML输出的表示层。
 
8.4 进一步学习
 
8.5 下一章

TAG: 学习笔记 PHP和MySQL Web开发

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

数据统计

  • 访问量: 73488
  • 日志数: 265
  • 书签数: 19
  • 建立时间: 2007-05-03
  • 更新时间: 2008-04-15

RSS订阅

Open Toolbar