手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年09月的文章

精通MYSQL数据库——连载十六

将数据库转为范式的过程中,需要把一系列数据表关联起来,这种关联用数据库术语来说就是“关系”。一般来说,两个数据表之间的关系大致有三种:
1、1:1关系。两个表之间是1:1,代表了第一个数据表里的每一条记录分别对应着第二个数据表里的一条记录,同时第二个表的记录也分别对应着第一个表中的一条记录,实际工作中,很少见到这种关系,因为既然是1:1,那么证明他们是可以合并为一张表的(但在WEB处理的时候就不是这样,比如用户基本信息,用户扩展信息,他们肯定是1:1的,但如果扩展信息中有TEXT字段,而用户信息又经常被读取,那么我们就会把经常读取的字段分为一张表,不是经常读取的或者是含有TEXT内容的字段分拆为另外一张表,以加快读取速度。)
2、1:N关系。两个表之间是1:N,代表第一个数据表里的一条数据可以对应着第二个数据表里的多条记录。(大多数举例都是用工厂和产品来进行举例,从WEB方面来说,我们可以从用户表来分析,一个用户可以有多条地址簿,家庭、工作单位等,看淘宝在下单时选择地址就知道了)
3、N:M关系。两个表之间是N:M时,代表第一个数据表的一条记录可以对应着第二个数据表里的多条数据记录。同时第二个表中某条记录也可以对应着第一个数据表的多条记录。这里一般是用订单来做介绍:一个订单可以购买多个产品,一个产品也可能存在于多个订单中。

1:1关系
这种类型的表起源通常因为人们把某个数据表拆分成两个使用同一个主键的数据表。把1:1表分拆大致有两种原因,一种是信息安全方面考虑,还有一种就是上文说的效率方面的考虑。

1:N关系
1:N关系是最常见的两表之间的关系了。只要在第一个表的数据记录里有一个特定字段引用了第二个表中的数据列,就会形成1:N关系。
一般来说,1:N有点象1:1表,大多数情况下都是采用主键关联,只有这样才会保证1:N,而不是N:M,例如:分类表与文章表、用户表与地址簿表,论坛主题与跟贴,用户表与订单表,员工表与员工履历表等,这些都属于1:1表。

N:M关系
其实1:N在设计的不太好时,很容易就会变成N:M表。N:N表大致用于订单与产品、用户表与回贴表、员工表与考勤表等等

Tags: mysql, 连载

精通MYSQL数据库——连载十五

当你需要把分类表显示为树形时,肯定是需要进行一些妥协,就象前面文章中所说的,对数据进行这种处理意味着要无数的SQL查询命令或者复杂的客户端代码打交道。
可供选择的解决方案之一是在分类表中增加两列:sort,deepth,SORT字段负责给出各条数据记录将出现在层次关系树的第几行(假设同一层次的记录将分类名进行排序),DEEPTH字段则负责该分类所在的层次深度。
这种方式的好处是可以通过在MYSQL程序中执行下面这条简单查询的办法得到证明。例如:SELECT CONCAT( SPACE(deepth * 2) ,catename ) as category , sort , deepth FROM categories ORDER BY sort.其中concat函数的功能是把两个字符串并为一个,space函数的功能是生成指定个数的空格字符,AS关键字是给整个表达式起一个新的名字(别名,可能更容易理解一些)。
执行这样的SQL后,可以生成一个简单的树结构,树的尝试都是通过deepth的空格来显示的(这里显示简单的例子)
CATENAME          SORT    DEEPTH
主分类            0       0
一级分类          1       1
二级分类         2       2
重复一级分类         3       1
重复二级分类         4       2
三级分类           5       3
大致结构如上。
那么sort值和deepth的值是怎么来的呢?我们会进行一个简单的演示:
1、新建一个[新的三级分类],它被插入到[二级分类]下一级。而二级分类有关的数据是sort=2,deepth=2
2、那么我们首先要找到[二级分类]下是否已经有数据插入,SQL为:WHERE parentId = [二级分类]ID
3、将数据追加到二级分类下(即SORT+1,深度=)
4、更新相关数值
在这里面就涉及到一些问题,二级分类下如果有多个三级分类,三级分类还有四级分类,这时候SORT值的取值就比较难以控制。插入值后,它的SORT值其实是覆盖了原来的重复一级分类的SORT,那么,原来的SORT值>=当前SORT值的,都需要自动加1.
由此可见,虽然SORT值和DEEPTH值简化了查询工作,但实际上他的写操作变得频繁和复杂了。如果需要更新其中的一条记录,所涉及的操作还会更多。因为他必须要相应的调整sort值和deepth值。
因此,在实际情况中,你必须决定是对读操作进行优化还是对写操作进行优化。一般情况下,对于这种分类表,我都比较倾向于一次读出,然后利用 PHP语言进行深度的处理 也就是说,我是一般不会用SORT和DEEPTH字段的。因为大多数情况下,分类表都是一种比较固定的表,不大会读写,而在后台的读写,也不会影响到前台的操作。。

好象有点乱。

Tags: mysql, 连载

不会爬就会走会影响孩子的智力吗

昨天上课的时候,副班长说了一例不会爬行影响社交的案例,回家查了一下网络,发现不会爬就直接会走导致的一些问题,现在记录下来,一是给自己点警惕,二来也是让看到本文的爸爸妈妈注意一下。

第一篇:(已经找不到原作者了,我在这里转载的:http://baby.qqyy.com/yeq/0904/30/14ffa.html)

  不会爬就会走的孩子不会影响智力,但的确容易出现心智问题。上海市人口与发展中心在母婴健康社区行的调研中显示,不会爬就会走的幼儿比例高达24.4%(61/250)。
人的脑神经系统是人所有活动的指挥中心,指挥中心拥有错综复杂的网络结构,目标是传递信号和发布命令。
但刚出生的宝宝脑指挥中心是不会指挥的,经过1年的工夫(即在婴儿时期),宝宝通过眼看、耳听、皮肤触、舌头味觉、鼻嗅等过程(医学上称感觉统合过 程),脑中的各种信号路径就建立和发达起来,这其中伴随着宝宝的运动能力的顺序发展,从3个月把头抬起来,5个月时会爬了,6-7个月孩子会坐了,9个月 孩子站起来,1岁会迈步行走,宝宝的运动发展直接影响感觉统合过程。
宝宝如果爬行少或爬行练习不足或没有经历爬行,将引起对称性颈紧张反射的 动作不成熟,表现为身体的上半部和下半部不自觉地对抗,就容易发生感觉统合失调症,如视觉和听觉不协调、视觉和动作不协调、听觉和动作不协调等。在幼儿期 家长还看不出危害,但当孩子上学后,危害就逐渐表现出来了,孩子情绪不稳定,固执、容易有侵略性,有挫折感、难适应学习环境、注意力不集中,不能持久地干 一件事情,不能长时间坐着,身体动来动去等,这些都直接影响孩子的学业和社会交往能力。那时家长就会着急了,感到孩子脑子挺聪明,可是怎么学习能力这样 差,老在学校闯祸呢。
可见,智力和心智不是一回事,感觉统合失调症就是心智方面异常了。并不是所有不会爬就会走的孩子都将影响心智,不过出现 不同程度心智异常的比例是非常高的。对于错过爬行期的孩子,家长不必紧张,也不能消极等待,应该积极尽早补上爬行环节(即进行运动性心智训练)。预防感觉 统合失调发生,这才是明智之举。

第二篇 :http://www.psytopic.com/mag/post/1024.html

爬行不是必经阶段:虽然大多数宝宝都会经过爬这个阶段,但爬行并不是宝宝生长发育的必经阶段。爬行是宝宝从会坐到会站、会走的一个过渡动作,也就是说,爬行是宝宝站、走的准备动作。而有的宝宝并不经历爬的阶段而直接学会站和走,妈妈也不必为此担心。

爬行好处多多:虽然说爬行不是必经阶段,但是爬行对宝宝的成长,的确好处多多。
首先,爬需要抬高并左右转动头部,还需要胳膊及手腕的力量支撑整个上半身,因此有利于强化宝宝手、脚、颈部的关节,并使腹部、颈部、四肢的骨骼关节和小肌肉群得到锻炼,可促进骨骼的生长、增强体力,并为将来的动作发展打下基础。

其次,爬行时,需要上肢及下肢的共同参与,是全身的协调动作,因此爬行可以增进大脑对四肢及眼睛的控制能力,锻炼手、脚、眼的协调性,有效预防感觉统合失调。

最 后,充分爬行可扩大孩子的活动范围,扩展他的视野,能促进大脑发育,开发孩子智力潜能。当孩子在襁褓中时,视听所及的范围很小;当他坐着或躺着时,视听范 围略有扩大,但得到的刺激仍然不多;而当孩子在会爬行时,姿态由静到动,范围由点到面,他所接触和观察到的事物逐渐增多,认识世界的范围也在扩大。同时, 他的思维、语言与想像能力也相应地得到了发展与提高。

建议
一.不会爬的宝宝怎么办?
1.多提供机会:宝宝在三四个月大时,如果老把宝宝放在推车里,宝宝很难有机会主动去爬。
2.模仿爬行:有些宝宝不会爬,可能是因为不知道怎么做。小宝宝的模仿能力极强,这时可以找一个会爬的小朋友来玩,两个宝宝在一起,鼓励他们爬。当宝宝看到另外的小伙伴爬行时,他也就会模仿,很快学会爬。
3. 适当辅助:当有些宝宝不会爬,这时父母就要略微帮点忙了!宝宝在爬行时四肢如何协调一致地运动是个最大的难题,他们经常是顾得了手却顾不了脚。这时父母可 以站在宝宝身后,两个手掌放在宝宝脚底,推动宝宝一只脚,当他往前爬一点时,再推动另一只脚,如此协助,帮他渡过爬行关。 

二.会爬,但是不太爱爬的宝宝怎么办?
1. 创造良好环境:选择一个宽敞安全的地方作为宝宝的小小游乐区,将宝宝趴着放在地面上,在宝宝面前150公分左右的地方放一个宝宝喜欢的玩具。玩具能够吸引 宝宝的注意力,促使宝宝向前移动身体。宝宝爬过来时,妈妈可以一点点往后腿,让宝宝向前爬得更多。当宝宝够到玩具时,要让宝宝玩一会儿,并表扬宝宝,增强 他的成就感。 

2.增加爬行的趣味性:家里若是有装冰箱、洗衣机的空纸箱,可以制成宝宝的爬行玩具。将纸箱横放在地上,把宝宝放在纸箱一头,然后妈妈到另一边,从纸箱里看宝宝,鼓励他(她)钻“山洞”,爬到妈妈这边来。宝宝早晨起来时,妈妈还可以让宝宝从被子的这头爬到另一头。

爱心小提示:有的宝宝在爬行时,一侧身体无力,需要另一条腿拖着向前移,并伴有其他动作发展迟缓时,妈妈就要小心了。最好去医院做个检查,排除神经系统发育障碍和一些脑损伤状况。

 

 

Tags: 智力,

精通MYSQL数据库——连载十四

分类表是一种典型的层次化关系的表,从数据库设计工作的角度看,让每个分类记录的parentId字段指向它们父分类的Id即可。
把层次关系转化为数据表并不困难,而且层次还相对比较清晰,但在这种表面现象的背后还有许多难题在等待着用户解决。比如,我们无法只用一个简单的SELECT就把指定分类的父分类或者子分类全部查询出来,而必须通过多次查询才能解决这个问题(或者一次查出后,用程序来进行处理)。
事实上,数据库设计和SQL编程有着千丝万缕的联系,很难将他们完全区分开来,再者,如果SQL不足以把想要查询的数据从数据表里提取出来,那么,想拿出一个优秀的数据为设计方案就只能是一句空谈。
想要通过数据表去管理和使用层次关系,得解决很多难题,而这些难题几乎都与SQL语言不能递归查询这一事实有关。以分类表为例:
1、只用一个查询就把指定分类的所有父分类全部查出来是不可能的
2、把完整的数据表还原为层次关系(树状)也是一个难点,还是必须执行多次SQL才能完成。
3、把指定分类下所有子分类全部查询出来
4、设计时,一个分类不能有两个父分类(例如:sql语言既能够放在database分类中,但好象放在programming分类下也行,因此,如果sql语言有两个父分类仿佛才是合理的)
5、层次关系最担心 的是留下循环引用隐患(比如手工删除数据或者添加数据时,很容易导致第4条的情况发生,数据库层次断链或者重复等)
虽然有这些存在的问题,但并非不可解决,而从上面这些难点来说,层次关系往往会导致即使是一个相对简单的问题也需要很多条SQL查询才能得出答案,而且整个过程都相当慢。如果不使用层次关系(或者使用有限的层次关系),上述问题即都可以避免。如果必须使用多级的层次关系,增 加一些数据列或数据表来提供更多关于层次关系的信息,将有助于层次关系的解决方案变得简单一些。
从范式的标准来说,冗余是不对的,它会导致存储空间不必要的浪费,增加数据库内部管理工作的负担,但为了提高应用程序的执行效率,冗余反而是一种相当简明的解决方案,因此,数据库设计其实是一件多方妥协和折中的事。在数据库领域,通往同一个目标的道路往往有好多条,选择其中的任意一条,都意味着作出了这样或那样的妥协。做出什么样的妥协最有利这往往取决于数据库的具体使用情况:什么类型的查询发生的最为频繁?数据需不需要频繁修改?

Tags: mysql, 连载

我,嫉妒了

说实话,我真的嫉妒了。。。
看到这个标题,《熟悉十多种编程语言 9岁娃玩电脑堪比专家》,我真的嫉妒了。

看看:不到一个月建成个人网站 开发自己名字命名的操作系统“我还要在自己的系统中开发文档浏览、听音乐、看视频、浏览器等功能,将软件打造成为完全属于自己的软件。

再看看,他:
利用网上没有版权的操作系统内核,开发了自己的操作系统,而且又渐渐学会了C语言、VF(VisualFoxpro)、VB(Visual Basic)、VC、VC++、BASIC、Pascal、PHP(HypertextPreprocessor)、JAVA、 ASP(ActiveServerPage)等语言编程

还有:他的表现令中国科技大学少年班的老师感到惊奇

我嫉妒了。。。

原文:http://hi.baidu.com/phpscript/blog/item/01e14cd46f3865cc51da4b11.html

Tags: 嫉妒, 电脑专家