如何学习数据库知识?
神谕
现在已经拥有企业大型软件的绝对份额。
DB2存在于为IBM(中国银行)服务的公司和单位中。
MySql不是很正规的开发,用MySql。
当然也有一些:Access(桌面数据库),FoxPro(中国教育),Informix数据库系统。
刚开始可以找一些视频教程来学习。视频教程一般比较好,但是不要试图通过它们达到更高的境界。然后学着去实践你所知道的,多练习。当你觉得实践到了一定程度,没有动力的时候,就去学习理论,当你觉得理论知识需要发挥作用的时候,就去实践。时间段不一定,也没有定论,但是你自己的时间安排需要敲定。
我一直认为,在计算机行业学一门技术太容易了,但是把技术发挥到一定程度就会很难。一定程度是什么意思?我会思考如何把技术应用到具体的业务中,把技术当成相对次要的东西。
数据库的DBA人员应同时具备系统分析师和运筹学的专业素质。从技术上来说,我个人认为数据库的延续学科是“数据结构”。
我现在刚学了一段时间SQL Server,就说说我自己的感受吧:
1.数据库是一个速度非常快的数据处理程序,其内在本质仍然是“文件”。因为
Windows操作系统的管理机制有:磁盘、文件、目录。Linux的方式只有文件。所以数据库是一种平台软件,把文件翻译成逻辑语言,成为我们软件程序的数据交换中心。这是为什么呢?一个很重要的原因是“快”,还有“安全”和“一体化”。因为以前的语言程序都要处理数据,写大量的算法很麻烦,容易出错。大家都想到了融合。。。。。
2.其实说到操作数据库,太简单了,但是数据库最难的不是操作,而是数据库的设计。大型程序员一定是数据库的高手,因为大型程序刚性完成是非常困难和不理智的,也是不安全和不稳定的。我们要充分利用我们所有的能力去探索它的数据之间的奥秘,然后把数据库结构系统化,相当于如何在数据库中建立数据结构的层次化。把需求中矛盾的东西变成可以互相融合的东西。
我说的简单数据库操作,指的是一般操作。如果说高难度操作还是有点技术含量的话,还是很难做到的。给你看一个数据库小程序:(下面这个程序建立了一个数据库库,然后和dbo用户建立了一个表relatBook,把表的第一个字段设置为“PK”)
程序想说的第一点是,程序是按照标准的用户编写规则编写的。
另外,在执行多个操作时,一定要为每一步设置错误的回滚操作。所以程序的前两段是一样的,插入的时候故意出现一个异常,看1和第三句能不能成功执行。
你从上面看到什么了吗?你和我已经做了三次手术。第一次手术肯定成功,第二次手术肯定失败,接下来就是第三次手术。那么你认为第一个和第三个操作可以插入数据库吗?我的程序毫无意义,但就是不能说明问题。
答案是:不会。
为什么不呢?这是在SQL支持的“事务”之外完成的。这是一个技术问题。这没什么,大家都会知道的。你为什么这么做?那是学习的前提。想想吧。如果你在一个地区设置账户管理系统,当一家公司向另一家公司转账时,你需要进行两个操作,即刷掉一边的信息,再加上另一边的信息。但是当你执行到一半的时候,出现了一些非正常的中断,比如高优先级抢占,服务器重启,掉电等。这时候你就知道有多少人在访问你的服务器,会造成多少数据库信息丢失,甚至导致数据库查询严重失败。然后我知道我需要以上知识的支撑。
3.为什么说上面的一切都很简单?因为只要你懂就可以了,而设计中的事情从来都不是那么简单的,永远都是有创新和追求的,没有最高的境界。
至于一个很常见的问题,如何协调数据库中人、角色、权限、类别、级别、可操作性之间的关系,如果没有经验的人直接上手(就像我们一开始做的那样),可能会很混乱。有经验的人也会设计一段时间,随着软件复杂度的增加,其数据库的复杂度会越来越复杂。所以大型软件很难。举一个很简单的例子,在很多网站中,有上百个栏目的信息,每个栏目都保持独立。图片的位置和图片的信息被动态更新。有些网站的可操作性是以树形结构提供的,树形结构的子树类别和叶子不重复无错。它的层次都是动态的。有人跟我说可以通过前台的判断语句生成树结构,但我问了一个问题:如果一个邮政编码系统有几十万个邮政编码,你要在前台写多少个case语句,你要一次遍历生成的树,前台用case语句写的树结构的所有二级子树都是“死的”,树结构的层树也是死的。这不是一个完全动态的网站。会给以后网站的维护带来麻烦。
总之,数据库是一门入门容易精通难的学科。通过不断地从失败中学习,我们可以获得书本上学不到的东西,那才是真正的高手。换句话说,学技术是很快的。只有将技术应用到实际的业务分析中,你才能成为一个以自我为导向的DBA,而不是一个简单的程序员。