mysql难吗_数据库这门课为什么这么难学,该怎么学?

数据库这个东西,(曾经)就是一个数据管理的系统级软件,事实上,Oracle数据库是可以不要操作系统支持的。自NoSQL兴起后,数据库就是一个专门用于数据管理的计算机系统,NoSQL多半是分布式的。

从数据库软件及其应用的设计需求来看,应该满足数据管理、系统软件、资源管理、数据访问方法、计算处理、编程接口等。作为一个计算机系统,数据库同样采用分层设计,同样是一个四层结构的计算机系统。所以:既然是数据管理,那么就必然服从数据结构的一般原理。

既然是系统级软件,那么必然服从软件设计的一般原理。

既然数据是一种计算机资源,那么必定服从资源管理的一般原理。

既然有数据访问,那么必然有数据访问的空间邻近性和时间邻近性。

既然是一种计算,那么必然服从一种计算模式(不同的数据结构,计算模式不同)。

既然提供了一种语言,那么必然服从语言设计的一般规律(哲学理念)。

既然数据元素之间有关系,那么必然要提供描述这种关系的方式。

既然是一个计算机系统,那么同样是一个底层为硬件,顶层为应用的层次结构。

既然是一个计算机系统,那么同样讲究透明性、虚拟性。

既然是有并发处理,那么就需要考虑数据隔离,也就是共享资源中的互斥或同步问题。

好象就这么多吧,如果数据结构、操作系统、离散数学、软件工程、计算机组成等几门基础课程功底好点,稍微点拨一下,然后就可以通过项目自学了。

好吧,数据库之所以难学,是因为写书的人、讲课的人、培训的人,都是稀里糊涂的。

---------------------------------------------------------------------------------------------

1、一般数据库分为三~四门课程:数据库概论,数据库应用和数据库原理,外加一门数据库课程设计。不过,其它课程也很重要。

2、从整体上看,数据库是一种针对数据管理需求的特定的计算机系统。先要了解一下背景。有几个方面,一个数据管理的需要,一个是底层硬件的特性,一个是数据结构,一个是系统级软件的设计。事实上,数据库和数据结构,有另外一个相同的说法,数据的管理和处理。然后,数据库几乎总是在块设备(磁盘)上(即使是最近几年SSD比较便宜了,但是还是有大量的商用系统使用机械硬盘)。

3、数据库有两条路径,一个是从应用开始学,一个是从理论开始学。当然,最后应该能够把理论、应用结合起来,并且穿插学术研究和项目实践的历史发展及其背景。由于计算机系统的设计必然是透明的、虚拟的,所以从应用层开始学起,也没有问题。

4、从应用来看,数据库是为了满足是数据的统一管理的需求。为了满足这个要求,数据库必须向用户提供数据类型的定义方法、数据的操作方法、数据的一致性的保障。

5、从使用的角度来说,首先就是要掌握如何运用数据类型的定义方法、数据的操作方法来管理数据,并且在使用过程中,遵守一些必要的数据管理的规范。因此,根据项目,建立数据库、数据表、选择恰当的数据类型、遵守相关的规范。在这个过程中,掌握E-R图这个工具,对项目中的数据进行分析,即提取实体、实体的属性、实体的关系。

6、建库建表之后,就要掌握相关的数据操作方法和数据库内建的编程语言(存储过程),解决具体的问题。

7、由于数据是存储于外存中的(不考虑内存数据库),根据计算机组成原理,我们知道,外存I/O性能是系统瓶颈。在一个给定的外存设备的条件下,如何提高数据库的性能?所以,我们就要根据应用的特性,合理地进行设计。这个时候,就涉及到数据结构了。

8、我们知道,数据结构的存储结构,影响到数据操作的性能。对于外存中的数据,为了提高系统的性能,多采用索引结构,以加快数据项的定位。有的索引结构,写性能优于读性能,或者读性能优于写性能。因此,我们应该进行分析,哪一张表的哪一列应该建立什么样的索引。

9、在数据存在多张表的情况下,为了进一步提高系统的性能,我们还要推算数据表的多表操作时的I/O情况,依此优化数据表的索引设置。通常,我们分析多表操作中的关系演算过程,对多表操作的关系演算过程进行优化。

10、某些实际应用(事务处理)要求数据操作是原子性的(类似于操作系统的PV操作),所以,数据库必须支持事务处理的要求,要不所有的数据操作全部成功,要不所有的数据全部保持原始状态。

11、数据库应用基本上是多用户应用,所以,数据库必须支持并发性。按照操作系统,我们知道,数据也是一种资源。所以,必须对资源的访问进行控制,也就是资源锁和互斥锁。

12、当事务处理和并发控制结合在一起时,事情就变得复杂起来。再加上系统性能的考虑,也就有了悲观锁和乐观锁。

13、系统级软件,往往采用分层设计。同样地,数据库也采用分层设计理念,类似于计算机网络等其它信息系统。

(修改中)

14、再次强调一下,数据库,实际上就是一种特殊的数据结构。回忆一下,抽象数据类型,我们利用抽象数据类型描述现实世界中的数据,数据元素之间的关系,数据的操作。我们要给出抽象数据类型的逻辑结构和存储结构。

15、当然,由于数据库是分层设计,所以存储结构和逻辑结构是位于不同的层次。数据结构的逻辑结构对应了数据库的信息世界,数据结构的存储结构对应了数据库的机器世界。

16、对于CRUD,可谓是非常眼熟,数据结构的最常见的操作。

17、既然是一种数据结构,那么,数据库的操作也具有时间开销和空间开销。时间开销和空间开销,是数据库操作的时间复杂度和空间复杂度。

18、因此,即使作为一个普通的应用层开发人员,也应该对数据库的底层有所了解,以降低数据库操作的时间开销和空间开销。

19、SQL的设计理念,我记得知乎还是哪里有一个高手回答过。作为一门语言,有其哲学理念。理解其设计理念,有助于我们掌握这门语言。对于语言理解不深,就不抛砖引玉了。

20、在逻辑上,库-表-行-列-项,构成一种层次结构。数据库的数据,固然是一种数据结构,但是,为了进行管理,也设计了一种逻辑上的层次管理方法。有点象文件系统的层次结构——目录和文件结构,当然是在逻辑上的层面。比如库—表—行—列—项。每一种具体的数据库,它们的具体设计方案不同。

21、在分层设计中,有一种独有的概念,视图。视图是一种逻辑上的概念,是一种对表进行操作的结果。这个结果是一个虚拟的表,并不存在于物理存储空间。

22、在分层设计中,为了提高系统的性能,因此也设计了特定的cache方案。

23、数据库中的数据是一种资源,根据操作系统中的进程互斥和同步的原理,在并发访问时,就会因为同时访问资源而导致各种问题。

24、此外,从系统的角度来说,还应该提供安全。

25、对于优化,主要是指关系代数的优化,也就是尽可能减少时间开销和空间开销。

嗯。好象如果其它课程学得好,数据库也就这点东西了。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值