乐观 发表于 2015-1-16 22:35:08

MYSQL网站制作之数据库正轨化和计划技能(1)

”由于MySQL已经是一个运行了众多知名Web2.0网站的数据,包括Craigslist、Digg、Wikipedia和Google等,或许我们可以说每一个Web2.0公司实质上是一个使用MySQL数据库的公司。技能|计划|数据|数据库在静态网站的计划中,数据库计划的主要性不问可知。假如计划不妥,查询起来就十分费劲,程序的功能也会遭到影响。不管你利用的是mySQL大概Oracle数据库,经由过程举行正轨化的表格计划,能够令你的PHP代码更具可读性,更简单扩大,从而也会提拔使用的功能。

  复杂说来,正轨化就是在表格计划时,打消冗余性和不和谐的附属干系。在本文中,我将经由过程五个渐进的历程来告知你在计划中应当懂得的正轨化技能。从而创建一个可行并且效力高的数据库。本文也会具体剖析一下能够使用的干系范例。

  这里假定我们要创建一个用户信息的表格,个中要存储用户的名字、公司、公司地点和一些团体的保藏夹或url。在入手下手时,你大概界说一个以下的表格布局:

  零形态情势

  users

  namecompanycompany_addressurl1url2

  JoeABC1WorkLaneabc.comxyz.com

  JillXYZ1JobStreetabc.comxyz.com

  因为没有举行任何的正轨化处置,我们将这类情势的表称为零形态情势的表。寄望个中的url1和url2字段---假如我们在使用中必要第三个url呢?如许你就要在表格中多加一列,很分明,这不是一个好举措。假如你要创立一个富有扩大性的体系,你就要思索利用第一个正轨化的情势,而且使用到该表格中。

  第一级正轨化情势

  1.打消每一个表格中反复的组

  2.为每套相干的数据创建一个自力的表格

  3.利用一个主键来标识每套相干的数据

  以上的表格分明违背了下面第一条的划定,那末第三条的主键又是甚么意义呢?很复杂,它只是在每一个纪录中到场一个独一的、主动增添的整型值。经由过程这个值,就能够将两个姓名一样的纪录辨别开来。经由过程使用第一级正轨化情势,我们失掉了以下的表格:

  users

  userIdnamecompanycompany_addressurl

  1JoeABC1WorkLaneabc.com

  1JoeABC1WorkLanexyz.com

  2JillXYZ1JobStreetabc.com

  2JillXYZ1JobStreetxyz.com

  如今我们的表格能够说已处在第一级正轨化的情势了,它已办理了url字段的限定成绩,不外如许的处置后又带来了一个新的成绩。每次在user表中拔出一笔记录的时分,我们都必需反复一切的公司和用户数据。如许不但令数据库比之前年夜了,并且很简单堕落。因而还要经由第二级正轨化处置。
MySQL的低成本来自于其简单性吗?它的普及性是由于其低成本吗?其实,在MySQL的最“好”与最“不好”的功能之间没有明显的分界线,但它们组合在一起就形成了一副让我们欣赏的作品。

透明 发表于 2015-1-19 17:48:03

比如日志传送、比如集群。。。

不帅 发表于 2015-1-24 16:34:01

记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。

活着的死人 发表于 2015-2-2 10:53:41

至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。

再现理想 发表于 2015-2-7 18:26:56

总感觉自己还是不会SQL

蒙在股里 发表于 2015-2-22 22:41:12

语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!

第二个灵魂 发表于 2015-3-7 03:52:43

连做梦都在想页面结构是怎么样的,绝非虚言

柔情似水 发表于 2015-3-14 11:23:00

where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。

只想知道 发表于 2015-3-21 05:19:45

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。
页: [1]
查看完整版本: MYSQL网站制作之数据库正轨化和计划技能(1)