我为人人,人人为我!帮助    偶元赚取方式
发新话题
打印

【版主原创】关于数据库学习的一些观点

本主题由 inchling 于 2008-2-20 17:52 置顶

【版主原创】关于数据库学习的一些观点

关于数据库学习的一些观点

    本人自毕业起就开始做数据库应用相关的工作,至今已有十几年,现在投身
教育业,仍与数据库相关。回首十几年的学习工作过程,有得有失并且还走了不
少弯路。在生活中每每碰到一些年轻、热情的“软件人”还在重复以前自己曾走过
的路,忍不住就拿自己做例子说说吧。
    大学时代教我数据库理论的是位女老师,人很好(虽然有很多同学认为她不
漂亮还有点神经质),所以她的课我一直都听得很认真,最后的考试我考得还不
错(那次考试我没作弊,想都没想,真的)。但那学的只是理论,三流大学的教
学跟现在没什么两样,几乎没有什么实践。毕业设计我是用FOXPRO做的一个非常
简单的MIS系统,很烂,记得直到答辩的时候那程序都还有很多功能不能运行。
但那毕竟是我用数据库做的第一个“东西”。
    毕业后我靠着家人的关系分配到一家大型国企,但不到一个月我就跑了,自
己找了一家很小的软件公司(那公司加上我才6个员工)。公司做的是电信计费、
账务等系统,语言主要用C,数据库有FOXPRO、PARADOX甚至还有DBASE。除了FOX
我还会用其他的全都傻了眼:C语言毕业的时候也就是个“HELLO WORLD”水平了,
哪里能读得懂成百上千行一个的源代码啊?当时已经没有退路了,只好硬撑:白
天读人家写好的代码学习,中午做采购和厨师,晚上兼职做保安(老板说这是包
吃住)。整整2个月后我才拿到了1000块工资(因为我可以出差现场修改程序了,
头一个月老板没给钱我也没敢问)。6个月后,我的月薪涨到了1500.原因很简单:
老板在他办公室门口贴了一涨A4的纸,上面写着“XX程序模块  300,XX程序模块
  200。。。”意思是新人只要学会修改维护某程序模块并完成一个任务就可以加
多少工资。那段时间,我经常盯着那张纸计算下个月可以拿多少钱。现在回想起
来,那段时间应该是我这辈子学习最刻苦、效果最好的一段时间了。所以我的第
一个观点就是
    优先学能给你带来直接利益的东西!
    这虽然看起来好像比较“目光短浅”,但对大多数象我一样毅力不够的人来说,
只有这样才能保持动力而不松懈,不断的“成果”不论大小都可以刺激我们继续向
前。“远大”的学习目标虽然宏伟,但距离收获的时间太长而难于坚持。
    软件开发的工具、技术层出不穷,学什么真的是很难选择,特别是对新入行
的人来说。在我工作的第二年,新来了一位同事,那时候JAVA才刚刚在国内热起
来,他整天跟我们说JAVA是如何如何好、多么多么有前途并且抱着本JAVA入门
书看,弄得我也忍不住买了本书自己学,可是那时候公司跟本就不用JAVA开发程
序。很快我就放弃了,工作太忙了,光工作中用的东西都有点学不过来。后来那
老兄因为干活不够好而被老板开了,听说后来去卖网卡了,我想销售可能更适合
他。刚入行的新人,无论哪方面的技术都还不过硬,所以还是优先把工作中用到
的那部分技术学好学精了吧,何况在软件开发这一行你有多少时间可以学习与工
作无关的技术呢?有人说要在掌握新技术上领先才能占得先机,没错,但那要在
你已经充分掌握了现有主流技术的基础之上。
    再说一下数据库知识在应用开发中的重要性。哪怕你90%的时间都是在与C、
JAVA等“语言”打交道,只要你做的程序后台有数据库存在,你就绝不能把数据库
当成一个“黑盒”。我经常听到醉心于语言的人说“数据库不就是增删改查嘛!”对
这样的人能否做好与数据库有关的应用我深表怀疑。我在做某省电信计费系统的
时候,碰到一个新来的同事写的“完美”程序:对一张历史记录表用游标取出一部
分数据,然后逐条处理。他的程序在模拟开发环境下运行没有任何问题,但一到
生产环境就会挂掉。我看了他的代码,逻辑、算法包括格式、注释都很好,只是
他没考虑到在生产环境中要处理的表有几千万条记录,而符合条件的数据在数据
库回滚段中是放不下的。这样的事情相信还会在很多地方发生,TOM在他的书里也
反复讲过类似的案例。所以,我的第二个观点就是
    不要把精力全集中在语言上,好好学下数据库吧,哪怕你是CODING.
关于选教材
    很多人学习数据库,都是喜欢找这么几类书:
    1:《XX数据库快速入门》、《XX天掌握XX》
    2:《XX数据库从入门到精通》、《XX数据库大全》、《XX数据库宝典》
    3:《XX数据库开发实战》、《XX数据库应用案例》
一般情况下,选第一类书的人往往都不是很重视数据库,想通过尽量少的付出来掌
握数据库知识,够用就行是他们的目标。选择第二类书的人往往以比较年轻的技术
人员为主,他们从各种渠道知道了数据库“很好,很重要”,于是就下决心好好学一
下,买一本够全够厚的书是他们经常的选择。选择第三类书的人大多是实用派,“能
干活才是硬道理”是他们的信条。
    不可否认,上面三类书都有可取之处也都有经典的作品,但我可以肯定的是垃
圾的比例与各自种类的数量成正比。第一和第三类的书因为大多篇幅不大,所以垃
圾更多,比较典型的就是一些大学老师的作品,那往往都是为了评职称而出的,就
是找一堆现成的书抄来抄去,连目录结构都几乎一样。这样的书我也“写”过,汉啊!
第一类书的精品不多,中文翻译粗糙是重要原因,如果你真的非要买,我建议你看
一下O'Reilly出版的书。第二类书有一些翻译过来的,但翻译水平一般,处处可以
看到典型的英语文法,怀疑他们是不是用了翻译软件辅助。这类书因为厚所以贵,
我告诉大家一个挑的办法:如果你时间充裕的话,可以先看一下目录结构内容,然
后随意翻到某个你感觉应该不太难的地方,看上3页,再换个地方看上3页,感觉读
起来比较流畅、能看明白就没大问题;如果你没时间,看一下书前面的作者介绍部
分,如果一本书总共才十几章却有好几个作者分别完成的话,基本上你可以看下一
本了。还有一些书,里面的图片比内容都多,第一章的数据库安装部分就可以凑足
20、30页,甚至大量出现系统下拉菜单的截图,这样的书就象拉面馆桌子上的醋,
水远比料多,不买也罢。图文并茂本是好事,但用来充篇幅骗人就不该了。在这方
面台湾的一些书做得不错。

关于电子书
    曾经有一段时间,我跟很多人一样喜欢到各大网站上收集关于数据库的电子书,
不管怎样先全都拿回来再说,好像下在硬盘上就记在了脑子里似的,不幸的是大多数
连看都没看过。记得在97年的时候,电信的很多数据库换用SYBASE,书店里很少有
并且网上资源也不多,老板派我专门到北京当时的晓通买了一套资料,2000多,大家
都当成宝贝抢啊!现在,不是没有而是太多了。但无论如何,官方文档你要有一套。
虽然官方文档基本上都是英文并且结构也不是非常适合学习,但那毕竟是最全、最
权威的东西,别担心英语,连我这样四级都过得胆战心惊的人都能看懂,何况还有
词霸呢!我曾经遇见不少在论坛上求官方文档的人,实在是对他是否真正需要心存
怀疑:陈冠希的照片都能找到、下到,文档就找不到?

今天写累了,下回继续吧。

TOP

不错!
受教了

TOP

写这个就是不希望看到大家把学习的热情、时间过多地放在收集资料上面。
资料再多,不能消化为自己“会”的东西是没有什么价值的,除非你想做
个“大全”之类的卖钱。----不做“书橱”!

TOP

TOP

写的不错的 文章,不过建议少了点啊

TOP

写得不错,我还以为是老文章呢,看了最后一句才知道刚写的,先了~~

TOP


楼主辛苦了。总的来说,不管是什么IT知识,架构理论实际上是最重要的。搞清楚这个,具体的语法只要查官方文档就好了。年轻人不要好高骛远是对的。

TOP

引用:
原帖由 averel 于 2008-2-22 22:11 发表
写的不错的 文章,不过建议少了点啊
本来是些接着写个第二篇的,无奈这几天上班事情比较多,下班还要
陪儿子玩。没写成整篇。关于建议,就先零散地说几点吧:
一、  初学时手上的书不要太多。如果你已经有了很多,那就先挑一本
         你认为最好的看。看书学习跟谈女朋友类似,多了眼睛会花,时间
         都用在教材比较上了。
二、  一定要把操作环境先准备好。如果是学ORACLE,建议装个LINUX或
         unix。很多书上的例子都是在非WINDOWS环境下,初学者很容易迷惑。
三、 学习是个螺旋上升的过程。很多ORACLE书籍都把体系结构放在最前面,
         这确实很重要,但初学不要奢望一次就全看明白、记住。那样你很容易
         受挫失去信心和兴趣。一本好书看过一遍后,过几个月再看一下收获可能
        比第一次还多。

四、在掌握了最基本的概念和操作后,一定要带着问题去学。比如:
       1、学SQL查询时,先找些查询的题目(网上多的是)看一下,感觉不会
            的地方就去仔细看,看了回头马上做题目。
       2、学表结构设计时,先给自己定个题目(什么“图书管理系统”“网上书店系统”都可以)。
             看之前先试着设计一下表结构,看了书再重新设计一下,比较体会一下前后两次的区别。
       3、学备份与恢复,先设计好几个场景,边看边做。下面是我当时曾经做过的一些练习:
             :停掉数据库,做个操作系统级冷备份,删除所有数据文件,然后尝试恢复。
             :删掉所有ORACLE控制文件,尝试恢复。
             :把数据库更改到归档日志模式,强行断电,重启机器后用编辑器改掉数据文件的几个
                     字节(破坏文件),然后尝试恢复。
        4、学PL/SQL编程时,也要带着题目学。比如
             :用SQL写一个人民币小写转大写的函数或存储过程。
             :写一个存储过程,对EMP表做复杂处理(这个可以自己调整难度,但做的最好实用,我当时
                 是自己定了5条规则放在规则表里,然后根据规则给所有人调工资。这里也可以要求调用上面
                 一题的过程或函数,生成工资调整报告文本。)
不知道这样说大家能不能理解我的意思,反正我一直反对学语言的时候去打印三角形的,语言和工具都是
用来干活的,不是用来做题的,做也要做有实际用处的东西。我曾经到武汉某著名高校听电子商务专业课,
老师很牛课也讲得好,可惜学生就是没实践,我觉得让学生做一个个人网站甚至博客、自己想办法推广上
一个月,回头再听课效果绝对好!

TOP

受教了

TOP

受益匪浅,感谢

受益匪浅,感谢

TOP

发新话题