如何自学数据库管理系统?

时间:2010-01-19 10:03:47

标签: database

我想自己学习数据库管理系统,你想给我一些提示吗

7 个答案:

答案 0 :(得分:4)

如果没有应用它的实际应用,我不是学习的忠实粉丝。

关于建模和设计的书籍都很好,但所有这些建议都需要放在应用程序的上下文中。

我已经看到了我的“可怕”数据模型的份额,这些模型适用于该应用程序。虽然有一个“好设计”的纯度,但简单的事实是,并非所有东西都需要“好的设计”。或者,更好地说,一个应用程序的“好设计”可能完全不同于另一个应用程序。

许多简单的应用程序在“愚蠢”,“愚蠢”,“糟糕”的设计中表现良好。

许多学习都是因为做错了事。

用托马斯爱迪生的话来说,“进步,我取得了很多进步。我知道有一千件事情都行不通。”

当很多东西在“现实世界”中应用时更容易学习,然后根据它是否正常工作的指标进行判断,而不是简单地将其保持在书中读取的内容,但没有应用。

“优秀设计”的好处在于它与“Code has Momentum”模因很好地配合使用,特别是一个糟糕的设计,一旦根深蒂固,难以重构或删除并替换为一个好的设计,所以你想要从一个好的设计开始。

尽管如此,作为必然结果,特别是如果你盲目地阅读许多关于建模和架构的书籍,你最终会得到一些过于简单的应用程序。对于在应用程序中根本不存在和不存在的情况,需要使用大量不必要的代码。

游戏正在寻找“完美”解决方案与“可行解决方案”之间的平衡。

所以,阅读你喜欢的所有书籍,同时将它应用到有价值的东西上,然后随着你的成长修复你的错误。不是每个人都应该从零开始,你想要“站在巨人的肩膀上”,但重要的是要了解巨人们首先采取的路径,以更好地理解为什么,以及在什么情况下,他们提倡他们的选择。

答案 1 :(得分:3)

不要尝试别人的建议“从实践中学习”。

那是猴子式的学习。

人类的智慧/知识远远超出了大多数物种标本的范围,“通过犯错来学习”仍然是可行/富有成效的。

相信我,如果你只是沿着“独自学习”的道路走下去,你唯一能做的就是重复数百万人已经犯过的错误。

我在其他答案中建议的唯一可以说是“买一本好书”。但“做一本好书”确实意味着它应该彻底报道理论。否则你很可能最终建立数据库应用程序,如罗马人建造他们的水道:过度使用某些东西“只是为了安全起见”。

(这正是那些罗马工程师在建造那些通常仍然存在的纪念碑时所做的事情,在没有任何知识/理解重力和混凝土跨度等强度的事情的情况下:他们投入了几十块额外的砖块,并没有真正准确地知道它们是否真的需要它们。但是它们的世界并不像我们那样具有经济竞争力。)

答案 2 :(得分:2)

1) choose a target database, Oracle, MySQL, MS SQL...
2) buy a good book,
3) participate discussion in community. 
0) of course, setup an env to play around...

答案 3 :(得分:2)

我也建议你在其中一个主要数据库(无论你选择哪个首先学习的数据库)上找到一本好书(或更多,性能调整是一个非常复杂的主题,通常在一本单独的书中讨论)。

您需要学习的科目(至少):

查询包括连接的使用(如果你没有完全理解连接,除了最简单的查询之外你不能做任何事情,或者你可能得到一个不正确的结果集。你不能学习太多关于连接。

如果数据具有意义,您必须了解如何判断您所产生的结果是否正确。

规范化 - 如果您不了解规范化,则无法设计有效的关系数据库。还要了解主键和外键。如果没有唯一标识记录的方法,就不要设计数据库表。

集合理论 - 你必须学会​​思考操纵记录组而不是一次循环记录。

性能 - 如果您无法及时获得结果,则没有人会使用您的软件。数据库中的设计应该仔细考虑性能作为数据库,因为当它们表现不佳时并不容易重构,并且有许多技术已知比产生相同结果的其他技术更快。您应该了解这些是什么,而不是使用效果不佳的,因为您发现它们更容易理解。

数据完整性 - 如果您不能依赖数据是正确的,那么您就没有有用的数据库。您应该知道如何确保数据具有正确的值以及与其他数据的关系。这还包括使用正确的数据类型(例如,将日期存储为日期时间或日期数据类型)。

安全性 - 包括防止SQL注入攻击和可能的内部欺诈。

约束和触发器以及存储过程和用户​​定义的函数。

最后,不要在数据库设计中使用面向对象的思维。关系数据库通常使用您不会在面向对象编程中使用的工具和技术。它是一个不同的主题,因此受到不同的规则和约束。

答案 4 :(得分:2)

在做其他任何事情之前,请先阅读一本好的Modeling and Design书。

答案 5 :(得分:1)

尝试使用您喜欢的编程语言中的数据库来完成一些简单的应用程序。通过实践学习。当您遇到问题时,请阅读DBMS文档并学习。

答案 6 :(得分:1)