这段时间非常的忙,但是我终于决定写一些东西来记录这个火热的时期。。。
做开发也有好几年了,数据库相关的系统也设计了几个,经验值不断上升,但是总觉得有一些东西似乎掌握不到其中精髓,入不到更高的层次,于是决定重看《数据库系统概论》和《数据结构》,想从中吸取理论的力量,让我的数据库理解更进一层,学习的过程中,我会将一些心得记录下来,与时空的朋友们共勉!
我的学习环境是:windowsXP,SQL Server2000开发版 with SP3A,VisualStudio2003(C#和ASP.NET With C#)。
基于我现在的水平,学习数据库系统从三个方面入手:
1、学习表的设计规范和表间关系的设计
2、SQL语言的深入学习,包括视图、存储过程的学习
3、数据库系统本身的操作
下面正式开始:
众所周知,数据库系统当前的主流模型是关系型和面向对象模型,层次型和网状模型都处于逐步淘汰的地位,关系型数据库的基本构成是一个个的二维表(Table),二维表中包含“型(Type)”和“值(value)”,“型”也就是我们通常意义上说的列属性,也叫字段,而“值”,就是我们的行(也叫记录)的内容了。表和表之间的相关性,就是我们通常所说的“关系”。
数据库系统在体系结构上采用三级模式结构(外模式Schema、模式External Schema和内模式Internal Schema)
外模式是数据库用户的数据视图,它是用户看到的数据形式,可以理解为SQL语言执行的结果,也就是从各数据表中提取出我们想要的数据。
模式是数据库中全体数据的逻辑结构和特征的描述,可以理解为各个表的设计以及表之间关系设计,它与应用程序设计需求直接关联,它是数据存储的架构,设计的好坏直接影响到应用程序的执行效率。
内模式是数据在数据库系统内部的存储方式,比如我们的数据到底是用顺序存储,还是链表存储,按B树结构存储还是按Hash方法存储,存储是否加密等等,这个模式我们不用理会,它是数据库系统设计师要关心的内容。
所以,我们要关心的是模式和外模式,对应于我上面所说的第1点和第2点。
关系数据库系统是支持关系数据模型的数据库系统,关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。关系数据结构就是一张张的二维表,关系操作通常包括:
选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)
增加(Insert)、删除(Delete)、修改(Update)
关系的三个完整性约束包括:实体完整性、参照完整性和用户定义的完整性。
接下来是SQL查询语言了,SQL语言把复杂的数据操作过程全部都隐藏起来了,我们只需要关心做什么,设计相应的SQL语句,怎么做就由系统给我们做得好好的。
SQL语言分为四类:数据查询、数据操纵、数据定义、数据控制,其中数据查询就是我们最熟悉的select了,它的Group by语句我最喜欢,一下子就将要的数据统计出来了。下面是一个select中嵌套select的例子:
select sname,sage from student where sage<(select min(sage) from student where sdep='计算机系') and sdept<>'计算机系'
本SQL的功能是查询:其它系中比计算机系中所有学生年龄都小的学生姓名和年龄
SQL语言的学习和精通是我们学好数据库的重点之一,它和数据表架构的设计互相作用,有什么样的数据表,才会有什么样的SQL语句,这两者的学习是互相促进的,最需要经验积累。基于它的复杂性,这里不深入探索。
有了SQL语言,不得不说的是视图,视图其实和select语句是紧密关联的,它其实相当于一个虚表,执行视图以后看到的是对应的后台表的SQL结果。
这里顺便提一下,SQL Server2000中提供了完整的SQL支持和视图支持,执行SQL语句和视图可以在企业管理器中操作,也可以在查询分析器中操作,更可以在自己的程序中通过对应的接口操作。
(2004年10月14日首发,10月22日更新,持续更新中...)