分布式数据库介绍
自学、整理、备忘
它和集中式操作系统的区别在于资源管理、进程通信和系统结构等方面。 分布式程序设计语言用于编写运行于分布式计算机系统上的分布式程序。一个分布式程序由若干个可以独立执行的程序模块组成,它们分布于一个分布式处理系统的多台计算机上被同时执行。它与集中式的程序设计语言相比有三个特点:分布性、通信性和稳健性。 分布式文件系统具有执行远程文件存取的能力,并以透明方式对分布在网络上的文件进行管理和存取。 分布式数据库系统由分布于多个计算机结点上的若干个数据库系统组成,它提供有效的存取手段来操纵这些结点上的子数据库。分布式数据库在使用上可视为一个完整的数据库,而实际上它是分布在地理分散的各个结点上。当然,分布在各个结点上的子数据库在逻辑上是相关的。
主要特点:
?
?
?
? 多数处理就地完成 各地的计算机由数据通信网络相联系 克服了中心数据库的弱点:降低了数据传输代价 提高了系统的可靠性,局部系统发生故障,其他部分还可继续工
作
? 各个数据库的位置是透明的,方便系统的扩充
? 为了协调整个系统的事务活动,事务管理的性能花费高
体系结构:
分布式数据库系统抽象为4层的结构模式,4层模式划分为全局外层、全局概念层、局部概念层和局部内层,在各层间还有相应的层间映射。这种4层模式适用于同构型分布式数据库系统,也适用于异构型分布式数据库系统
数据分片类型:
1)水平分片:按一定的条件把全局关系的所有元组划分成若干不相交的子集,每个子集为关系的一个片段。
(2)垂直分片:把一个全局关系的属性集分成若干子集,并在这些子集上作投影运算,每个投影称为垂直分片。
(3)导出分片:又称为导出水平分片,即水平分片的条件不是本关系属性的条件,而是其他关系属性的条件。
(4)混合分片:以上三种方法的混合。可以先水平分片再垂直分片,或先垂直分片再水平分片,或其他形式,但他们的结果是不相同的。 条件:
(1)完备性条件:必须把全局关系的所有数据映射到片段中,决不允许有属于全局关系的数据却不属于它的任何一个片段。
(2)可重构条件:必须保证能够由同一个全局关系的各个片段来重建该全局关系。对于水平分片可用并操作重构全局关系;对于垂直分片可用联接操作重构全局关系。
(3)不相交条件:要求一个全局关系被分割后所得的各个数据片段互不重叠(对垂直分片的主键除外)。
数据分配方式:
(1)集中式:所有数据片段都安排在同一个场地上。
(2)分割式:所有数据只有一份,它被分割成若干逻辑片段,每个逻辑片段被指派在一个特定的场地上。
(3)全复制式:数据在每个场地重复存储。也就是每个场地上都有一个完整的数据副本。
(4)混合式:这是一种介乎于分割式和全复制式之间的分配方式。
目前分布式数据库分配的设计,越来越多的采用寻找最优解的算法,比如遗传算法、退火机制等
查询优化:
指在执行分布式查询时选择查询执行计划的方法和关系运算符的实现算法。根据系统环境的不同,查询优化所使用的算法也有所不同,通常分为远程广域网环境和高速局域网环境,其区别主要在网络的带宽。对于一元运算符可以采用集中式数据库中的查询优化方法。而对于二元运算符,由于涉及场地间的数据传输,因此必须考虑通信代价。分布式查询中常见的连接运算执行策略包括:
(1)半连接方法:利用半连接运算的转换方法R∞S=(RµS)∞S。假设场地1和场地2上分别有关系R和关系S,首先在S上执行连接属性上的投影并将结果传输至场地1,在场地1上执行关系R与投影的连接操作,再将结果传输至场地2与关系S执行连接操作。这种方法能够降低执行连接运算时的网络通信代价,主要适用于带宽较低的远程广域网络。
(2)枚举法方法:指枚举关系运算符的物理执行计划,通过对比执行计划的代价选择执行算法的方法。其中,连接运算符的物理执行计划包括嵌套循环方法、哈希连接法和归并连接法。枚举法主要适用于以磁盘IO代价为主的高速局域网环境。
------------------ 完 --------------------------
第二篇:分布式数据库总结
分布式数据库系统及其应用复习大纲
第一章 分布式数据库系统概述
1、理解分布式数据库系统的特点
分布式数据库系统的定义:
分布式数据库系统,通俗地说,是物理上分散而逻辑上集中的数据库系统。分布式数据库
系统使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位(通
常是集中是数据库系统)连接起来,共同组成一个统一的数据库系统。
分布式数据库系统的特点:1物理分布性:数据不是存放在一个站点上2逻辑整体性:是
与分散式数据库系统的区别3站点自治性:是与多处理机系统的区别4数据分布透明性5集
中与自治相结合的控制机制6存在适当的数据冗余度7事务管理的分布性
2、能够按照不同标准描述分布式数据库系统的分类
按局部数据库管理系统的数据模型分类:同构性(homogeneous)(分为同构同质型和
同构异质型)DDBS和异构性(heterogeneous)DDBS
按分布式数据库系统的全局控制系统类型分类:全局控制集中型DDBS,全局控制分散型
DDBS,全局控制可变型DDBS。
3、理解分布式数据库中数据的独立性和分布透明性
所谓数据独立性是指用户或用户程序使用分布式数据库如同使用集中式数据库那样,不必
关心全局数据的分布情况,包括全局数据的逻辑分片情况、逻辑片段站点位置的分配情况,
以及各站点上数据库的数据模型等。也就是说,全局数据的逻辑分片、片段的物理位置分配,
各站点数据库的数据模型等情况对用户和用户程序透明。所以,在分布式数据库中分布独立
性也称为分布透明性。
分布透明性包括三个层次:分片透明性(完全分布透明性):映像2
位置透明性(中级分布透明性):映像3
局部数据模型透明性(低级分布透明性):映像4
无分布透明性:异构数据
第二章 分布式数据库系统设计
1、理解分布式数据库的设计目标
分布式数据库设计的目标1分布式数据库的本地性或近地性2控制数据的适当冗余3工作负
荷分布4存储的能力和费用
2、理解水平分片的定义、分类和应用
水平分片是对全局关系执行“选择操作”,把具有相同性质的元组进行分组,构成若干个不
相交的子集。水平分片的方法可归为初级分片和导出分片两类。
初级分片:以关系自身的属性性质为基础,执行“选择”操作,将关系分为若干个不相交的
片段。例子2.1
S(S#,SNAME, AGE, SEX)
Define fragment S1 as select * from where sex=’M’
Define fragment S2 as select * from where sex=’F’
导出分片:全局关系的导出分片不是以其自身的属性性质为基础,而是从另一个关系的属性
性质或水平片段推导出来的。采用导出分片可片可使片段与片段之间的“连接”变得更容易。
例2.3 设全局关系SC(S#,C#,GRADE),S(S#,SNAME, AGE, SEX)若要将SC划分
为男生的各门课成绩和女生的各门课成绩,这就不可能从SC本身的属性性质来执行选择,必须从关系S的属性性质或水平片段来导出。
Define fragment SC1 as select SC.S#,C#,GRADE from SC,S where SC.S#=S.S# and SEX=’M’ Define fragment SC2 as select SC.S#,C#,GRADE from SC,S where SC.S#=S.S# and SEX=’F’
如果S已经进行水平分片,分为SF和SM,分别为男生全体和女生全体,则上述的片段定义可以基于片段SF和SM导出:
Define fragment SC1 as select * from SC where S# in(select SF.S# from SF)
Define fragment SC2 as select * from SC where S# in(select SM.S# from SM)
3、理解垂直分片的定义和应用
一个全局关系的垂直分片是通过“投影”操作把它的属性分为若干组。确定一个全局关系R的垂直分片需要根据应用以“同样方式”(例如具有相同的使用频率)访问的属性来进行分组。
例2.4全局关系EMP(E#,NAME,SAL,TEL,MAGNUM,DEPT),主码为E#。主要应用有:集中在站点3上的管理性应用要求查询雇员的:NAME,SAL,TEL;和从其他站点发出的应用要求查询雇员的:NAME,DEPT,MAGNUM。
解:如果使用垂直分片:EMP1(E#,NAME,SAL,TEL)和EMP2(E#,MAGNUM,DEPT) 则NAME属性只属于一个片段,对于上述的应用,必须进行连接操作和非本地访问。
如果使用垂直群集:EMP1(E#,NAME,SAL,TEL)和EMP2(E#,NAME,MAGNUM,DEPT)
则对于上述应用,不需要执行连接操作,且可实现较好的本地性。
4、能够描述分片的基本原则
完备性原则:要把所有的数据映射到各个片断中
可重构原则:关系分片后的各个片断可重构整个关系
不相交原则:关系分片后的各个片断不能重叠
5、掌握数据片断分配的分类和常用方法
分配的简化模型有:读代价、写代价、存储代价和目标函数。
常用方法:非冗余分配设计方法(包含最佳适应法和其他方法)和冗余分配的设计方法(包含所有得益站点法和附加复制法)
6、掌握最佳适应法和所有得益站点法的基本特点
最佳适应法是对每一种分配方式进行估算,然后选择最佳的站点。这种方法不考虑把一个片段与一个相关片段放在同一站点的“相互”影响。
特点:将片断Ri分配到访问Ri次数最多的那个站点上
Bij= ∑kFkj*Nki
所有得益站点法:首先确定非复制为题的解,然后在全部站点中确定一组站点,给这组站点中的每一个站点分配片断的一个副本,这样做所得到的好处要比为此而付出的费用合算。 特点:将片断Ri的副本分配到所有得益站点j上
Bij= ∑kFkj*Rki -c*∑k ∑j’≠j Fkj*Uki
如果Bij>0,则站点j是得益站点,放置Ri的一个副本
7、能够描述DATAID-D方法设计分布式数据库的各个阶段
需求分析,概念设计,分布要求分析,全局逻辑设计,分布设计,局部逻辑设计,局部物理设计。逻辑设计分为全局逻辑设计和局部逻辑设计
8、能够根据给出的条件对关系进行具体分片,给出正确的限定关系
上边的例子。
第三章 分布式数据库系统中的查询处理和优化
1、掌握分布式数据库查询的分类
局部查询、远程查询和全局查询
2、理解关系代数运算的交换率
?∪1 (∪2 (R)) =∪2 (∪1 (R))
条件:∪1 ∪2 是 选择操作 时总成立,∪1 ∪2 是 投影操作 时要求其属性集合相等 ∪1 与∪2 是投影和选择操作时:πA1,?An(σF(R)) =σF (πA1,?An (R)) 的条件是 F中的属性是 A1, ?. An 的子集。R ∞ S = S ∞ R R × S = S × R
R ∪S = S∪ R R ∩S = S ∩ R R ∝ S ≠? S ∝ R R - S ≠? S - R
3、掌握直接连接优化算法的分类
利用站点依赖信息的算法,分片与复制算法,站点依赖和数据复制结合算法,Hash划分算法
4、掌握半连接运算
见P83-84例子
5、掌握半连接和直接连接查询优化算法的区别
取决于数据传输和局部处理的相对费用;如果传输费用是主要的,采用半连接;如果本地费用是主要的,采用直接连接,
6、理解Hash划分算法的特点
1数据传送量是R;2索引方面, 比片段复制算法更低,3每个站点的连接数据量同站点依赖
7、能够描述基于半连接算法查询优化的基本原理和步骤
基本原理是在传到另一个站点做连接前,消除与连接无关的数据,减少做连接操作的数据量,从而减小传输代价
步骤:1计算每种半连接方案的代价,并从中选择一种最佳方案
2选择传输代价最小的站点,计算采用全连接的方案的代价
3比较两种方案,确定最优方案
8、能够描述基于关系代数等价变换的查询优化算法原理、算法实现步骤
原理:1查询问题——〉关系代数表达式2分析得到查询树3进行全局到片段的变换得到基于片段的查询树4利用关系代数等价变换规则的优化算法,尽可能先执行选择和投影操作 算法:1连接和合并尽可能上提(树根方向)2选择和投影操作尽可能下移(叶子方向) 实现步骤:转换一:1查询问题——〉关系代数表达式。2转换二:关系代数表达式——〉查询树。3转换三:全局查询树分拆成片段查询树。4优化:利用关系代数等价变换规则的优化算法,优化查询树,进而优化查询
9、能够根据提供的条件完成分片和复制算法应用,通过计算判断哪个关系保持分片最优 P88例3-6 考试
第四章 分布式数据库中的事务管理和恢复
1、掌握事务的四大特性
原子性(Atomicity),一致性(Consistency),持久性(Durability).隔离性( Isolation)
2、能够描述两阶段提交协议的工作流程
两阶段提交协议的基本思想是:将本地原子性提交行为的效果扩展到分布式事务, 保证了分布式事务提交的原子性, 并在不损坏Log的情况下, 实现快速故障恢复, 提高DDB系统的可靠性.
2PC把事务的提交过程分为两个阶段:第一阶段:表决阶段,目的是形成一个共同的决定 首先,协调者给所有参与者发送“准备”消息,进入等待状态
其次,参与者收到“准备”消息后,检查是否能够提交本地事务
如能,给协调者发送“建议提交”消息,进入就绪状态
如不能,给协调者发送“建议撤销”消息,可以单方面撤销
第三,协调者收到所有参与者的消息后,他就做出是否提交事务的决定,
只要有一个参与者投了反对票,就决定撤销整个事务,发送“全局撤销”消息给所有参与者,进入撤销状态
否则,就决定提交整个事务,发送“全局提交”消息给所有参与者,进入提交状态 第二个阶段:执行阶段,实现表决阶段的决定,提交或者撤销
3、掌握事务故障的分类
分布是数据库的故障
分布是数据库的故障分为站点故障和通信故障。站点故障包括事务故障、系统故障和介质故障。
事务故障包括计算溢出。完整性被破坏、操作员干预、输入或输出出错等。
通信故障分为报文故障和网络分割故障。
4、掌握分布式数据库事务执行的控制模型的分类
分为三类:主从模型,三角模型,层次控制模型
5、理解日志文件的特点
日志文件保存到磁盘上。日志
Log:记录所有对DB的操作
事务标识:每个事务给定一个具有惟一性的标识符
Log记录项 :
[start_transaction, T]
[write_item, T, x, 旧值, 新值]
[read_item, T, x]
[commit, T]
[abort, T]
写动作:写Log比写数据优先
Log存储:一般存在盘上, 还会定期备份到磁带上
6、理解分布式数据库数据更新常见方法
多站点数据更新、主文本更新法、快照方法
7、理解故障恢复时检查点知识
检查点(Checkpoint):设置一个周期性(时间/容量)操作点
a) Log Buffer内容写入Log数据集
b) 写检查点Log信息:当前活动事务表, 每个事务最近一次Log记录在Log文件中的位置 c) DB Buffer内容写入DB
d) 将本次检查点Log项在Log文件中的地址记入“重启动文件”
8、能够描述两阶段提交协议的特点:2PC协议的重要特点:1允许参与者单方面撤销事务 2一旦参与者确定了提交或撤销协议,它就不能再更改它的提议3当参与者处于就绪状态时,根据协调者发出的消息种类,它可以转换为提交状态或者撤销状态4协调者根据全局提交规则做出全局终止决定5协调者和参与者可能进入互相等待对方消息的状态,使用定时器,保证退出消息等待状态
第五章 分布式数据库中的并发控制
1、理解封锁的基本准则
1事务T在执行任何read_item(x)操作之前,必须先执行read_lock(x)或者write_lock(x)操作
2事务T在执行任何write_item(x)操作之前,必须先执行write_lock(x)操作
3如果事务T执行read_lock(x)操作,数据项x必须没有加锁或者已经加了读锁,否则事务T的这个操作不能进行
4如果事务T执行write_lock(x)操作,数据项x必须没有加锁,否则事务T的这个操作不能进行
5事务T在完成所有read_item(x)和write_item(x)操作之后,必须执行unlock(x)操作 6如果事务T已经持有数据项x上的一个读锁或者一个写锁,那么它不能再执行read_lock(x)操作
7如果事务T已经持有数据项x上的一个读锁或者一个写锁,那么它不能再执行write_lock(x)操作
8如果事务T没有持有数据项x上的一个读锁或者一个写锁,那么它不能执行unlock(x)操作
2、理解基于时标的并发控制方法
并发控制方法包含全局时标和局部时标
3、掌握死锁检测的方法分类
局部死锁:仅在一个站点上发生的死锁
全局死锁:涉及多个站点的死锁(即等待圈由多个站点组成)
4、理解一致性调度和可串行化调度的特点
一致性调度:调度可以使得数据库从一个一致性状态转变为另一个一致性状态,则称调度为一致性调度
可串行化调度:如果一个调度等价于某个串行调度,则该调度称为可串行化调度。 也就是说,该调度可以通过一系列非冲突动作的交换操作使其成为串行调度
5、能够描述死锁发生的四个必要条件:会考试
互斥条件:事务请求对资源的独占控制
等待条件:事务已持有分配给它的资源, 又去申请并等待别的资源
非抢占条件:直到资源被持有它的事务释放前, 不可能将资源强制从持有它的事务夺去 循环等待条件:存在事务互相等待的等待圈
6、能够列举并发控制算法
悲观并发控制法和乐观并发控制法
悲观并发控制法有基于封锁的算法、基于时标排序的算法和混合算法。乐观的方法也可分为基于封锁或基于时标排序的算法。
第六章 分布式数据库中的可靠性
1、理解可靠性和可用性的含义与关系
可靠性:指数据库在一给定时间间隔内不产生任何失败的概率。它强调数据库的正确性,要求数据库正确运行。通常用来描述不可修复的系统。
可用性:强调的是当需要访问数据库时,它是可用的。指在给定的时间点系统可以正常运行的概率。通常用于描述那些可以修复的系统。
两者关系:通常认为构建可用性的系统比可靠性的系统容易。两者是统一的,可靠性高的系统可用性自然是好的。
两者又是矛盾的,增加错误风险的情况下,可提高可用性;采用太谨慎的策略会降低可用性
2、理解两阶段提交协议如何转为三阶段提交协议
2PC中的状态: C(提交)状态是可提交状态, 其它为不可提交状态。Ready 状态是不可提交状态。Wait状态是不可提交状态。它们都侵犯了非阻断协议的充要条件, 从而考虑改变2PC, 使其满足非阻断协议条件。在Wait 和 Commit 之间, 或者在Ready和Commit之间加入另一种状态作为缓冲状态, 从而有了3PC协议
3、掌握分布式可靠性协议的组成。简答
可靠性协议组成 :包括提交、终结、恢复协议。提交和恢复协议详细说明提交命令和恢复命令是如何执行的。终结协议是分布式系统特有的协议。在执行一个分布式事务时,若一个Site故障,希望其它Site也停止该事务。处理这种情况的技术就称为终止协议。
4、理解发生网络分割时冗余分布式数据库和非冗余数据库采用的处理协议
非冗余数据库:任何需要访问存储在另一网络区域里的数据项的新事务都被阻断, 等待网络修复。位于同一区域里的数据项的并发访问由并发控制算法处理。网络分割时由提交协议处理
冗余数据库:分割时, 副本可能位于不同的区域。由复制协议处理
5、能够描述三阶段提交协议中事务协调者和参与者的状态转换
P188页图6.4 考试
6、能够采用版本号法进行不一致性检测,并且应用于实际。大题
需要首先发现哪些数据部分已经不一致(不一致性检测)
然后根据发生的情况,给这些部分赋予一个最合理的值(不一致性的解法)
检测方法:采用版本号
P200页例子
第七章 分布式数据库的安全性与目录管理
1、理解分布式数据库的动态授权语句的形式
1用户对自己生成的关系拥有全权, 通过授权和收权语句完成对数据开放, 保密的存取权授予(Grant, Revoke)。授权语句授权语句:Grant <权> To <用户> With Grant Option 2访问表(AT)法
2、理解数据库的安全性含义
数据库安全性包括两个方面的内容:数据库数据的保密性和安全性。
第三篇:04-张全羚-数据库总结
Sql Server
数
据
库
原
理
期
末
总
结
姓名:张全羚
学号:1304091004
班级:13软件工程(1)班
一、知识点分析(举例)
1、存储过程简介
Sql Server的存储过程是一个被命名的存储在服务器上的Transacation-Sql语句集合,是封装重复性工作的一种方法,它支持用户声明的变量、条件执行和其他强大的编程功能。
存储过程相对于其他的数据库访问方法有以下的优点:
(1)重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
(2)提高性能。存储过程在创建的时候就进行了编译,将来使用的时候不用再重新编译。一般的SQL语句每执行一次就需要编译一次,所以使用存储过程提高了效率。
(3)减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
(4)安全性。参数化的存储过程可以防止SQL注入式的攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
存储过程一共分为了三类:用户定义的存储过程、扩展存储过程以及系统存储过程。
其中,用户定义的存储过程又分为Transaction-SQL和CLR两种类型。 Transaction-SQL 存储过程是指保存的Transaction-SQL语句集合,可以接受和返回用户提供的参数。
CLR存储过程是指对.Net Framework公共语言运行时(CLR)方法的引用,可以接受和返回用户提供的参数。他们在.Net Framework程序集中是作为类的公共静态方法实现的。(本文就不作介绍了)
2、 存储过程的创建
例如:
-- 如果存储过程存在,就删除
IF Object_ID('proc_GetWellProduct') IS NOT NULL
DROP PROCEDURE proc_GetWellProduct
GO
-- 创建储存过程
CREATE PROCEDURE proc_GetWellProduct
AS
......
3、 注释
(1)、-- 单行注释,从这到本行结束为注释,类似C++,c#中//
(2)、/* ? */ 多行注释,类似C++,C#中/* ? */
4、 变量
(1)变量类型:
(int, smallint, tinyint, decimal,float,real, money ,smallmoney, text ,image, char, varchar......)
(2)、语法:
DECLARE +“变量名”+“类型”
例如:
declare @ID int --申明一个名为@ID的变量,类型为int型
5、 变量赋值
例如:
--从数据表中取出第一行数据的ID,赋值给变量@id,然后打印出来
Declare @ID int
Set @ID = (select top(1) categoryID from categories)
Print @ID
注意:赋值时如果是SQl查询语句,整个查询语句都要用括号括起来。
6、 打印
在SQL Server窗口中打印出变量的值
语法:
PRINT 'any ASCII text' | @local_variable | @@FUNCTION | string_expr
7、 比较操作符
? > (greater than).
? < (less than).
? = (equals).
? <= (less than or equal to).
? >= (greater than or equal to).
? != (not equal to).
? <> (not equal to).
? !< (not less than).
? !> (not greater than).
8、 语句块
形式:Begin ... end
将多条语句作为一个块,类似与C++,C#中的{ }
例如:
IF (......)
begin
......
End
9、 While(@@fetch_status = 0)循环
DECLARE @strLoginID VARCHAR(16)
BEGIN
declare db cursor for
SELECT LoginID FROM dbo.s_Users WHERE len(UnitCoding) in(9,12)
END
open db
fetch next from db into @strLoginID
while @@fetch_status = 0
BEGIN
insert into s_P_User
select @strLoginID,LevelID from s_P_User where LoginID = 'aa'
fetch next from db into @strLoginID
END
close db
deallocate db
@@fetch_status = 0?
0: FETCH 语句成功。
-1: FETCH 语句失败或行不在结果集中。
-2: 提取的行不存在。
10、 执行其他存储过程 EXEC
EXEC 存储过程名 参数1,参数2...
例如
EXEC proc_GetWellProduct 1,'20xx-07-01
二、心得体会
在大二的上学期刚学了数据库这门课,对这门课的第一印象是书本蛮厚的,感觉学起来应该会很难很累。在学习这门课的过程中,在对数据库的了解过程中,慢慢对数据库有了感观。数据库这一词并不是很难想象,并不是像外人看来很神奇。作为计算机专业的学生,这样的专业术语或者专业知识是最基本的。 学习的时候没有想象中的那么难,只要上课能听懂就基本还可以。但是问题还是出在书本有点厚,有的时候上课的内容都要找很久才能找到,甚至有的时候老师讲的知识书本上是找不到的,是另外补充而且是相当重要的内容。有的时候开小差,没有听到老师讲的知识点,这就导致了以后的学习无法顺利进行,使得学习起来十分困难。所以在数据库这门课的学习中,上课一定要听牢,就像老师说的那样,这样的专业课如果想凭考试前几天突击是行不通的,必须是日积月累的知识才能取得好成绩。
通过对数据库的学习,我也明白了各行各业都离不开数据库,就算是一个小型的超市也离不开它。可见数据库这门课的广泛性,如果能够认真学好它将来必有成就。我就是抱着这种信念去学习数据库的。第一次接触数据库,第一次接触SQL语言,虽然陌生,但是可以让我从头开始学,就算没有基础的人也可以学得很好。刚开始练习SQL语言的时候,并不是很难,基本上都是按照老师的步骤来做,还很有成就感。后来学了单表查询和连接查询后,就慢慢发现越学越困难了,每个题目都要思考很久,并且每个题目基本上不止一个答案,所以必须找出最优的答案。后面的删除、插入、修改这些题目都变化蛮大的,书本上的例题根本无法满足我们,好在老师给我们提供了大量的课件,通过这些PPT,我们可以
巩固课内的知识,还可以学习内容相关的知识,更好地完成老师布置的作业。
除了老师布置的一些基本作业外,还有一份大作业。在做大作业的时候经常是前面改改,后面改改,因为一些数据不能很好地对应起来,经常会遗忘一些,所以出现了这样的情况。一个完整的数据库系统也就是在这样修修改改的状态下完成的,也给了我很大的反思。第一、一个数据库的完成一定要考虑各方面的因素,包括现实因素。第二、在完成这类作业时,修修改改是很正常的,不要因此而厌倦。第三、一个完整的数据库一定不能出现错误,否则会在现实生活中带来不必要的麻烦。 通过本学期数据库的学习及大作业的完成,很有去作项目的冲动,但深知自己的能力水平有限,还需要更多的学习。