天天鼓捣数据,你晓得数据库长啥样吗?
来各位都是产物司理【出发点学院】,BAT实战派产物总监手把手体系带你学产物、学运营。
是的,你没有看错,不是发重了,本文就是大前天的文章《天天捣鼓数据,你晓得数据库长啥样?》的续篇。这几天有些同砚在背景留言表现想进一步了解数据库的干系武艺,的确之前的文章限于篇幅,只先容了一些基本的看法,今天我们来把剩下的东西补一补。
如今,我假定你以前被我告捷贯注了 「数据库就是一个大文件,内里有很多表,每个表就像Excel一样,存储了多少条纪录」如此的看法。但是,过年回家尊长问你什么是数据库,光如此回复是拿不到红包的,以是我们持续来深化探究一下底下几个成绩。
什么样的数据适实用数据库来存?
布局化的数据。有的数据,天生就有很好的布局,好比要纪录一一局部,我们会如此形貌:罗玉凤,女,1985年9月生,重庆市綦江区人。要纪录一部影戏,如此形貌:《星球大战》,导演乔治卢卡斯,科幻片。如此纪录数据最大的利益是便利查询,你要查凤姐的身高,输入「凤姐,身高」两个紧张字就可以了。非布局化的数据,好比苍教师.avi、小苹果.mp3这些,就不适实用数据库来存。你拍了一张凤姐的照片准备存起来,先不说能不克不及放到数据库里,你要让盘算机依据一张图片来得出凤姐身高如此的查询后果,现在的科技水平照旧很难做到。那非布局化的数据怎样存呢?我上传了一张一局部头像到微信上,微信的办事器就会把这个头像的图片文件存到办事器的硬盘上,然后把文件途径存在数据库里。这时分你再去哀求这张头像,输入微信id,头像如此的紧张词,微信就会先去数据库查你的头像文件对应的途径,然后依据途径在硬盘上找到文件回给你。
怎样来计划一个数据库?
什么?数据库还必要计划?别慌,先来看个例子。你公司的步骤员终于忍受不了产物司理无控制的加需求,愤而去职,留下一个伙伴圈消息背景必要你切身上阵。用户编纂完要发的消息之后,会发送到你这里,你必要把这些消息完备的存到数据库。每一条消息是如此的:
拿到如此的数据之后,你应该怎样计划一张数据表的布局呢?前方讲过,表是由行和列构成的,每一列表现一个属性,每一行表现一条信息。这个跟Excel比力起来很容易了解,每一列的属性确定了之后就安定了,今后每来一条数据,就添加一行。
如此就可以满意我们的需求了。但是,等数据量大了之后,我们就会发觉这个表是有缺陷的。起首是数据冗余,每次李小花同砚公布一条消息,就会把他的昵称、性别、姓名反复插进到我们的表中。其次,假如在将来的某一天,李小花改了她的昵称,那么我们要遍历整张表去更新她的昵称(约莫如今以前有上亿条消息了),这也是不实际的。以是这里必要把表拆成user表和message表。拆表之后,经过姓名李小花既可以查到她的一局部信息,又可以查到她发的一切消息。
如此就可以完善处理外表的两个成绩了。这个历程叫标准化,就是说数据库的计划是有一些标准的,这些标准颠末了严厉的数学证实,你一定要恪守。
就差一个码代码的了。
之前的文章先容了SQL言语,它是专门用来利用数据库的。编程言语你可以了解为是一些下令串起来,每一条下令都可以让体系完成一种功效。外表的两张表,我们如此来创建:
create_table user(姓名 varchar(20),昵称 varchar(20),性别 varchar(10));
create_table message(姓名 varchar(20),时间 datetime,message text);
对表本身的利用除了创建,另有drop(删除)、alter(变动属性)等等。
当有效户新公布了一条消息,我们可以如此插进到表中:
insert into message values('李小花',now,'I am very OK!');
当客户端来了哀求,要查询王小龙同砚的一切消息的时分,可以如此:
select * from message where 姓名='王小龙';
对表内数据的利用另有delete(删除)、update(变动)等,固然最精华的照旧查询select了。我们欣赏贴吧看帖子,上绵薄看抢手都是实行的select下令,这个下令的实行速率直接影响到用户的体验,以是步骤员必需优化好。
数据库这块儿的东西先讲到这里,一些代码各位看不懂没干系,假云云后用的上,晓得是怎样回事儿再去查就能学的很快。但是,即使知识get到了也万万不要去步骤员那儿秀武艺,步骤员都以为本人武艺最牛b,你就让他持续牛b下去,对产物司理也没啥坏处,哈哈。
