《PHP和MySQL Web 开发》 第8章 设计Web数据库 (8.2)
2018-07-20 17:23
239 查看
LCL WARNING
这是我学习《PHP和MySQL Web 开发》的读书笔记,一些重要的知识点我会记录下来,当然只会写我觉得重要的。
如果有幸有人看到这个学习笔记了,你要结合着书看,不要光看这个笔记。
在笔记里我会记录一些我学习中遇到的问题和解决办法与注意事项。
为了方便管理和查找,文章或者说笔记的目录我就按照书里的排了,方便对比着看。
不是教学!重要的是说一遍!我是PHP和MySQL 的初学者,我本身是个前端,为了面向工资编程,拓宽知识面才学的。
其实还是有一些私心得,因为都说教学相长 和 小黄鸭调试法,我这个是小老虎学习法,对着小老虎讲知识点,保证自己学的扎实,能挣钱。
欢迎探讨和指教,须知一山更比一山高,但是拒绝杠精!
前情提要
《PHP和MySQL Web 开发》 第8章 设计Web数据库 (8.1)
内容太多了,不好编辑,我就没放在一起。前情提要见如上链接吧。
李重楼
本章主要是介绍了:
关系数据库的概念和术语
Web数据库的设计与架构
基础知识还是要有的,方便了解一些专有名词,包括数据库是干啥的,后端说的时候你听了至少不懵逼。开始吧!
这是我写的测试数据,后续你写的时候也可以添加一些自己的数据,很有意思的。目前先看书就可以。
书中这句话就涵盖了标题的意思。
这一节也没啥好说的,你保证能理解数据库表,列,行,字段,值,这些概念,看的懂书中给出图例的键,外键就可以。
也别着急实际操作,切勿操之过急。毕竟古人云:捷克,斯洛伐克 嘛。
别笑,我之前默念了好几年的“沉余”,不会,读错不丢人,丢人的是 不会,还不学。再读一遍“ 冗(rǒng )余”。
这一节开篇没啥说的做了一下自问自答,你先看吧。
看完咱们来画重点。
重点来了!!!
三个"不规则"
1.修改不规则
书中举了Juile在下了订单后搬家了,需要在三个地方更新她的地址,进行三次同样的操作。
这很容易使我们在一个地方修改数据,从而导致数据库中的数据不一致,因为问题发生在修改数据库的时候所以称为“修改不规则”。
2.插入不规则
每次必须检查Juile的数据(地址)是否与表中当前行一致,如果不检查,可能会有两行关于Juile相互冲突的数据,比如一条数据告诉我们Juile住二环,另一条则可能表命明她住南四环。
因为出现在插入数据的时候,所以称之为“插入不规则”。
3.删除不规则
如果订单交货,需要将Juile的订单信息从数据库删除,也意味着她的地址没有了。她下次再订货,还要单独的提交一遍地址。
因为从数据库中删除一行的时候发生的,所以称之为“删除不规则”。(这点尤为重要,在电商公司拼命的获取用户隐私,地址这么重要的数据,你在用户收到快递就给删了?!这么设计表你能被老大打死!)
通常,数据库的设计不应该出现上述不规则中的任何一种。
书里说的很含蓄,“通常”不这么干。我给你翻译翻译就是:除了DEMO 和入门学习!别鸡儿这么干!(你们技术老大,或者负责人让你这么干!你让他写下来签字!)
这里主要是介绍一些数据库设计的基本原则,业界通用的,所以别烦躁,好好看,万丈高楼平地起,辉煌还得靠自己!
有哪不懂的吗?
没有?
太好了!
我有!
使用原子列值得意思是对每一行的每个属性只储存一个数据。
你给我解释一下这句话,或者你脑子过一下,这句话什么意思。
如果你能毫不费劲的答出这句话什么意思,我觉得你不应该看我的笔记,因为我觉得没必要。
如果你一带而过,没有深入思考过这句话,或者我问了你,你解释不上来,那么,不要难过,为啥呃?
因为我第一遍,还没写笔记看的时候,也是一带而过,因为我觉得木有用,不用深入看,不影响我搞后面的内容。
但是!
是谁说的来着?但是之前的话毫无意义!
我要写笔记给你看的时候,我被这句卡住了!我解释不上来!
我百度,我谷歌这句话,基本上全是照着书抄!根本没解释这句话!
经过我不懈的翻书以及修改关键词,我搜到了!
原文章见此处:一个小时学会MySQL数据库 ,我截取文章见此处:数据库规范化。
原文中对MySQL数据库有概要介绍,包括数据库的历史。大致阅读时间半个小时。
而我呢,截取其中 1.4 部分,用来解释上面那句话!
所谓第一范式(1NF)是指在关系模型中,对列添加的一个规范要求,所有的列都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。
即实体中的某个属性有多个值时,必须拆分为不同的属性。
在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。
简而言之,第一范式就是无重复的域。
这是其中第一范式的解释,其中说:原子性,即实体中的某个属性有多个值时,必须拆分为不同的属性。对“使用原子列值得意思是对每一行的每个属性只储存一个数据”。进行了解释。
如果不懂去看原文,我都能看懂,你应该也行。还是不懂,私信我。咱俩一起学习!
补充一下:推荐看原文,别嫌弃麻烦!至少我截取的部分 数据库规范化 要看,多看几遍,不累的。
所以说,写阅读笔记出来,对自己也是一种提高,逼着自己仔细看书,学的扎实~
上面的 “答案:略” 是不是在初高中参考书里经常见啊?
我是经常见,很烦人,但是那两节我真的没有要记得,所以略就略吧。
这三节主要是联系上下文,传达基础理论知识的。多看几遍没坏处,我觉得没必要是因为我记脑子里了~啦啦啦啦
书里的图8-9
一个典型的Web数据库事务包含下列步骤,这些步骤在图8-9已经标出。以Book-O-Rama书店为例,我们逐个解释这些步骤。
1)用户的Web浏览器发出HTTP请求,请求特定Web页面。例如,该用户可能以HTML表单的形式,要求搜索Book-O-Rama书店里所有由Laura Thomson编写的图书。搜索结果网页称为results.php。
2)Web服务器收到results.php的请求,获取该文件,并将它传到PHP引擎,要求它处理。
3)PHP引擎开始解析脚本。脚本中有一条连接数据库的命令,还有执行一个查询(执行搜索图书)的命令。PHP打开通向MySQL数据库的连接,发送适当的查询。
4)MySQL服务器接受数据库查询并处理。将结果(一个图书的列表)返回到PHP引擎。
5)PHP引擎完成脚本运行,通常,这包括将查询结果格式化成HTML格式。然后再将输出的HTML返到Web服务器。
6)Web服务器将HTML发送到浏览器。这样用户就可看到她所搜索的图书。
这个过程基本上与脚本引擎和数据库服务器无关。通常,Web服务器软件,PHP引擎和数据库服务器都在同一台机器上运行。
但是,数据库服务器在另外一台机器上运行也是非常常见的。这样做是出于保密、提高性能以及负载平衡的原因而考虑的。从开发的角度来看,要做的事情基本上是一样的,但是它能够明显提高性能。
这一节我是纯照书敲的,如过你搞过前端开发,应该一看就懂。
不懂就熟读三遍,学完了整本书你再回来看这段,你就会发现真的没有什么要说的,啦啦啦啦~
第8章的内容完毕了,其实你要是跟着我这笔记看,包括反复阅读加理解,时间往宽了说,一天!8个小时~绝对能整明白的,不要怕难~加油哦~看好你哦~
请看下集:
这是我学习《PHP和MySQL Web 开发》的读书笔记,一些重要的知识点我会记录下来,当然只会写我觉得重要的。
如果有幸有人看到这个学习笔记了,你要结合着书看,不要光看这个笔记。
在笔记里我会记录一些我学习中遇到的问题和解决办法与注意事项。
为了方便管理和查找,文章或者说笔记的目录我就按照书里的排了,方便对比着看。
不是教学!重要的是说一遍!我是PHP和MySQL 的初学者,我本身是个前端,为了面向工资编程,拓宽知识面才学的。
其实还是有一些私心得,因为都说教学相长 和 小黄鸭调试法,我这个是小老虎学习法,对着小老虎讲知识点,保证自己学的扎实,能挣钱。
欢迎探讨和指教,须知一山更比一山高,但是拒绝杠精!
前情提要
《PHP和MySQL Web 开发》 第8章 设计Web数据库 (8.1)
内容太多了,不好编辑,我就没放在一起。前情提要见如上链接吧。
李重楼
本章主要是介绍了:
关系数据库的概念和术语
Web数据库的设计与架构
基础知识还是要有的,方便了解一些专有名词,包括数据库是干啥的,后端说的时候你听了至少不懵逼。开始吧!
8.2设计Web数据库
书中是以 Book-O-Rama(拉玛的书店?)的内容为例的,我也尽量吧。customers +------------+-----------------+--------------------+--------------------+ | customerid | name | address | city | +------------+-----------------+--------------------+--------------------+ | 1 | 刘能 | 牡丹江大街 | 牡丹江 | | 2 | 李重楼 | 北京中弘像素 | 北京 | | 3 | 谢广坤 | 保定市 | 保定 | | 4 | Alan Wong | 1/47 Haines Avenue | 保定 | | 5 | Michelle Arthur | 357 North Road | Yarraville | | 6 | Melissa Jones | 红庄 c3-1 | Nar Nar Goon North | +------------+-----------------+--------------------+--------------------+
order +---------+------------+--------+------------+ | orderid | customerid | amount | date | +---------+------------+--------+------------+ | 1 | 3 | 69.98 | 2018-06-27 | | 2 | 1 | 49.99 | 2018-06-26 | | 3 | 2 | 74.98 | 2018-06-25 | | 4 | 3 | 24.99 | 2018-06-24 | +---------+------------+--------+------------+
books +---------------+-------------------+-------------------------------------+-------+ | isbn | author | title | price | +---------------+-------------------+-------------------------------------+-------+ | 0-672-31697-8 | Michael Morgan | Java 开发 | 38.49 | | 0-672-31745-1 | Thomas Down | Linux 开发 | 27.49 | | 0-672-31509-2 | Pruitt,et al. | 时间管理 | 27.49 | | 0-672-31769-9 | Thomas Schenk | 开放系统管理 | 54.99 | | 0-672-31000-1 | 李重楼 | web开发笔记 | 99.99 | | 0-672-31000-4 | Nicholas C.Zakas | JavaScript高级程序设计(第3版) | 99.99 | | 0-672-31000-5 | 李重楼 | web插入数据库 | 53.20 | | 0-672-31000-6 | 李重楼 | 网站建设与拆毁 | 44.36 | +---------------+-------------------+-------------------------------------+-------+
这是我写的测试数据,后续你写的时候也可以添加一些自己的数据,很有意思的。目前先看书就可以。
8.2.1考虑要建模的实际对象
当创建一个数据库时,我们经常为现实世界的实体和关系建立模型,并且储存这些实体对象与关系的信息。书中这句话就涵盖了标题的意思。
这一节也没啥好说的,你保证能理解数据库表,列,行,字段,值,这些概念,看的懂书中给出图例的键,外键就可以。
也别着急实际操作,切勿操之过急。毕竟古人云:捷克,斯洛伐克 嘛。
8.2.2避免保存冗余数据
来,跟我读:避免保存冗(rǒng )余数据。(多余的重复或啰嗦内容(包括信息、语言、代码、结构、服务、软件、硬件等等)均称为冗余)别笑,我之前默念了好几年的“沉余”,不会,读错不丢人,丢人的是 不会,还不学。再读一遍“ 冗(rǒng )余”。
这一节开篇没啥说的做了一下自问自答,你先看吧。
看完咱们来画重点。
重点来了!!!
三个"不规则"
1.修改不规则
书中举了Juile在下了订单后搬家了,需要在三个地方更新她的地址,进行三次同样的操作。
这很容易使我们在一个地方修改数据,从而导致数据库中的数据不一致,因为问题发生在修改数据库的时候所以称为“修改不规则”。
2.插入不规则
每次必须检查Juile的数据(地址)是否与表中当前行一致,如果不检查,可能会有两行关于Juile相互冲突的数据,比如一条数据告诉我们Juile住二环,另一条则可能表命明她住南四环。
因为出现在插入数据的时候,所以称之为“插入不规则”。
3.删除不规则
如果订单交货,需要将Juile的订单信息从数据库删除,也意味着她的地址没有了。她下次再订货,还要单独的提交一遍地址。
因为从数据库中删除一行的时候发生的,所以称之为“删除不规则”。(这点尤为重要,在电商公司拼命的获取用户隐私,地址这么重要的数据,你在用户收到快递就给删了?!这么设计表你能被老大打死!)
通常,数据库的设计不应该出现上述不规则中的任何一种。
书里说的很含蓄,“通常”不这么干。我给你翻译翻译就是:除了DEMO 和入门学习!别鸡儿这么干!(你们技术老大,或者负责人让你这么干!你让他写下来签字!)
这里主要是介绍一些数据库设计的基本原则,业界通用的,所以别烦躁,好好看,万丈高楼平地起,辉煌还得靠自己!
8.2.3使用原子列值
你看到这的时候,我默认你是看完8.2.3这一节了。有哪不懂的吗?
没有?
太好了!
我有!
使用原子列值得意思是对每一行的每个属性只储存一个数据。
你给我解释一下这句话,或者你脑子过一下,这句话什么意思。
如果你能毫不费劲的答出这句话什么意思,我觉得你不应该看我的笔记,因为我觉得没必要。
如果你一带而过,没有深入思考过这句话,或者我问了你,你解释不上来,那么,不要难过,为啥呃?
因为我第一遍,还没写笔记看的时候,也是一带而过,因为我觉得木有用,不用深入看,不影响我搞后面的内容。
但是!
是谁说的来着?但是之前的话毫无意义!
我要写笔记给你看的时候,我被这句卡住了!我解释不上来!
我百度,我谷歌这句话,基本上全是照着书抄!根本没解释这句话!
经过我不懈的翻书以及修改关键词,我搜到了!
原文章见此处:一个小时学会MySQL数据库 ,我截取文章见此处:数据库规范化。
原文中对MySQL数据库有概要介绍,包括数据库的历史。大致阅读时间半个小时。
而我呢,截取其中 1.4 部分,用来解释上面那句话!
所谓第一范式(1NF)是指在关系模型中,对列添加的一个规范要求,所有的列都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。
即实体中的某个属性有多个值时,必须拆分为不同的属性。
在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。
简而言之,第一范式就是无重复的域。
这是其中第一范式的解释,其中说:原子性,即实体中的某个属性有多个值时,必须拆分为不同的属性。对“使用原子列值得意思是对每一行的每个属性只储存一个数据”。进行了解释。
如果不懂去看原文,我都能看懂,你应该也行。还是不懂,私信我。咱俩一起学习!
补充一下:推荐看原文,别嫌弃麻烦!至少我截取的部分 数据库规范化 要看,多看几遍,不累的。
所以说,写阅读笔记出来,对自己也是一种提高,逼着自己仔细看书,学的扎实~
8.2.4 选择有意义的键
答案:略。8.2.5考虑需要询问数据库的问题
答案:略。8.2.6 避免多个空属性的设计
答案:略。8.2.7避免多个空属性的设计
答案:略。上面的 “答案:略” 是不是在初高中参考书里经常见啊?
我是经常见,很烦人,但是那两节我真的没有要记得,所以略就略吧。
这三节主要是联系上下文,传达基础理论知识的。多看几遍没坏处,我觉得没必要是因为我记脑子里了~啦啦啦啦
8.3 Web数据库架构
书里的图8-9
一个典型的Web数据库事务包含下列步骤,这些步骤在图8-9已经标出。以Book-O-Rama书店为例,我们逐个解释这些步骤。
1)用户的Web浏览器发出HTTP请求,请求特定Web页面。例如,该用户可能以HTML表单的形式,要求搜索Book-O-Rama书店里所有由Laura Thomson编写的图书。搜索结果网页称为results.php。
2)Web服务器收到results.php的请求,获取该文件,并将它传到PHP引擎,要求它处理。
3)PHP引擎开始解析脚本。脚本中有一条连接数据库的命令,还有执行一个查询(执行搜索图书)的命令。PHP打开通向MySQL数据库的连接,发送适当的查询。
4)MySQL服务器接受数据库查询并处理。将结果(一个图书的列表)返回到PHP引擎。
5)PHP引擎完成脚本运行,通常,这包括将查询结果格式化成HTML格式。然后再将输出的HTML返到Web服务器。
6)Web服务器将HTML发送到浏览器。这样用户就可看到她所搜索的图书。
这个过程基本上与脚本引擎和数据库服务器无关。通常,Web服务器软件,PHP引擎和数据库服务器都在同一台机器上运行。
但是,数据库服务器在另外一台机器上运行也是非常常见的。这样做是出于保密、提高性能以及负载平衡的原因而考虑的。从开发的角度来看,要做的事情基本上是一样的,但是它能够明显提高性能。
这一节我是纯照书敲的,如过你搞过前端开发,应该一看就懂。
不懂就熟读三遍,学完了整本书你再回来看这段,你就会发现真的没有什么要说的,啦啦啦啦~
第8章的内容完毕了,其实你要是跟着我这笔记看,包括反复阅读加理解,时间往宽了说,一天!8个小时~绝对能整明白的,不要怕难~加油哦~看好你哦~
请看下集:
《PHP和MySQL Web 开发》 第9章 创建Web数据库
相关文章推荐
- 《PHP和MySQL Web 开发》 第8章 设计Web数据库(8.1)
- 《PHP和MySQL Web 开发》 第9章 创建Web数据库 (9.8-9.10)
- 《PHP和MySQL Web 开发》 第10章 使用Web数据库
- 《PHP和MySQL Web 开发》 第9章 创建Web数据库 (9.1-9.7)
- PHP和MySQL . Web开发 中文 第4版
- PHP与MySQL学习笔记8:重要概念与设计Web数据库
- 软件开发全套视频教程汇总(javaSE,javaEE,linux,android开发,C# ,web前端,大数据云计算,数据挖掘,web前端,php开发,UI设计,C++开发,3D视频)
- Windows7/8搭建web(Apache+PHP+MySQL)开发环境
- 使用Microsoft Web Platform Installer在windows平台搭建IIS+PHP+MySQL开发环境
- 搭建LNAMP(Linux+Apache+Nginx+MySQL+PHP)前后端Web(PHP)开发环境
- [web开发]建立本地php MySQL Apache测试服务器
- Web前端开发与PHP设计
- Web 开发工具箱之 Apache PHP MySQL 绿色套装版
- PHP与MySQL学习笔记8:重要概念与设计Web数据库
- PHP 和MySQL Web开发
- 《PHP和MySQL Web 开发,原书第4版》光盘/源代码/资源/下载
- PHP学习笔记《PHP和MySQL web 开发》
- PHP 和 MySQL Web 开发书籍推荐
- 《PHP和MySQL Web 开发》 第四章 字符串操作与表达式
- php web开发之分类设计