日期:2014-05-16  浏览次数:20450 次

蛇打七寸(纯技术)
   又是一片没有代码的技术文章,为了解释这个现象先扯一点和技术相关的道理吧。
    一个人勤练武功,练了几十年了,却一直是基本功,但是他却从不气馁地坚持着。终于,隔壁的隐士高人要死了,准备把自己的毕生神功传给一个靠谱的人。于是,这个练了一辈子基本功的人尽得真传。为什么?第一,一辈子的基本功让他的身体素质好得不行(底子好),可以受得住这突入起来的真气。第二,一个这么有毅力的人,一辈子不骄不躁,拯救武林的任务不交给这么好人品的人,交给谁?如果“路遥知马力,日久见人心”这句话在这个哥们身上出现了反例,我国著名的道德高人都肯定不会放过他的,更何况这个看走眼了的隐士高人。
    其实,没有什么绝世武功,不过是无敌基本功的灵活运用罢了。谁的内功不是练出来的?就算那些机缘巧合一朝变身的主角们,他们的内功也是前辈帮他积累的。根据能量守恒定律,这个推论肯定是成立的!
    于是,我的技术文章可以没有代码,因为一个刻苦练功的人,需要的不过是个招式,换作写程序,不过就是个店子罢了。
    蛇打七寸,说的是做事要抓住要点,遇事要抓住要害!今天要说的是一个词“关系数据库”。关系数据库和之前的数据库有哪些优势?关系型数据库又有哪些比不上内存数据库的?不好意思,我不是讲历史,也不是预言家,我只是希望这主流的一类数据库能不那么朦胧,就来花一点时间点破神功之前的那层面纱。
    所谓“关系数据库”重点就在“关系”二字,之所以会想说这个,是因为看到太多程序员学会了“增删查改”之后,就不知道怎么走下一步(设计数据库)了。练了一辈子基本功也没能自创一套的人,想必也不是天才,所以什么提高效率等等的技巧就先放放。等有一天你看到的时候就自然能明白了。我们要抓重点,关系型数据库和现代程序中的面向对象思想有着千丝万缕的联系,核心就一个——抽象。从现实事物→类是一次抽象,从类→接口是第二次抽象,我想,面向对象的根本我是抓出来了。关系数据库和这个不是一样的么?从现实数据→数据模型是第一次抽象,从数据模型→ER图是第二次抽象。如是,数据库按照ER图来不就出来了么?这谁不知道啊?我也不是为了说废话来的。于是,就该说画ER图的关键了。凭什么判断一个人是小三而不是原配?他们的关系怎么说清楚?拿结婚证说话!但是前提条件是结婚证是真的。同理,画ER图里面的关联,一对多、多对一、多对多关系,必须证明其必要性,必要性由什么决定?由他们之间的业务逻辑。如果一个人就一个老婆,难道还需要画一个情人时间表来管理?人多了,管不过来肯定得画表咯。于是,课程表是大家接触到的最早的关系型数据了。为的就是让老师能不冲突地上好每一节课,让学生最大限度的利用好时间,让一周40节课不能空一节。我们不能光知道,索引这一类的东西能给咱们带来多少便利。我们还得知道我们为什么要图人家的便利,如果建不建索引都一样,建索引干嘛?还占数据空间呢!如果外键关联不能方便查询来丰富数据展现的方式,还要外键关联做什么。
    我想,一个要用到关系数据库的人再怎么不济也做过什么学籍管理系统之类的例题吧?好好用我的思路去思考思考学籍管理的例题吧,如是,在看到其他的关系模型,相信就能很快看明白了。
    如果想应对学校的考试,会用数据库会见表是肯定不够的,你还得会背书。但是,要会干活,能做到这些已经不错了。不过,如果想把活儿干好,这些是完全不够的,还需要不断地去学习实践。