数据库论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库系统及应用论文
10计本3 陈孝婕1004012033
一、学习DB的收获
在学习数据库的过程中,慢慢对数据库有了解。
数据库并不是想象中的难,也并不是像外人看来很神奇。
作为计算机专业的学生,这样的专业术语或者专业知识是最基本的。
学习的时候没有想象中的那么难,只要上课能听懂就基本还可以。
没有听懂的在下课后可以问问同学,自己看看书也可以很快的了解。
但是难的主要是数据库实验这一部分,每一次做实验都是急匆匆的,没有深入了解其中的精髓,很多时候都是草草了事,平时也没注意到,可是真到最终考试的时候就开始后悔了。
反思回来,实验课其实是我们最应该用心学习的课,他不仅让我们更加熟练的掌握了理论性的知识,还让我们切身体会到数据库的实用性和他给我们带来的好处。
通过对数据库的学习,我也明白了各行各业都离不开数据库。
可见数据库这门课的广泛性,如果能够认真学好它会使将来在工作生活中的知识面更加宽广,有利于将来的工作。
第一次接触数据库,第一次接触SQL语言,虽然陌生,但是可以让我从头开始学,就算没有基础的人也可以学好。
刚开始练习SQL语言的时候,并不是很难,基本上都是按照老师的步骤来做,还很有成就感。
后来学了单表查询和连接查询后,就慢慢发现越学越困难了,每个题目都要思考很久,并且每个题目基本上不止一个答案,所以必须找出最优的答案。
后面的删除、插入、修改这些题目都变化蛮大的,书本上的例题根本无法满足我们,老师会在上课的时候仔细地举一些例题让我们更加了解这方面的知识。
不仅如此,老师还给我们提供了大量的课件,通过这些PPT,我们可以巩固课内的知识,还可以学习内容相关的知识,更好地完成老师布置的作业。
通过本学期数据库的学习及大作业的完成,很有去作项目的冲动,但深知自己的能力水平有限,还需要更多的学习。
二、数据库主要知识点
我们首先从第一章绪论了解了数据库的概念,其中有几个较为重要的知识点,即数据库系统DBS、数据库管理系统DBMS的概念以及数据库管理员DBA的职责。
此外本章还介绍了数据库发展的三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。
第二章介绍了数据模型和三层模式数据库。
本章要求我们理解实体联系方法,并学会绘制ER图。
此外还应掌握概念数据模型的意义和传统的三大数据模型,以及数据独立性和数据库三层模式结构。
接着开始着重讲述现在普遍使用的关系数据库。
包括关系数据模型的数据结构和基本术语,关系模型的完整性约束和关系代数运算。
重点是关系模式完整性的分类和功能,以及关系代数中集合运算和关系运算。
最后介绍了关系数据库系统的三层模式结构。
第五章系统讲述关系数据库的标准语言SQL的定义功能、查询功能、操作和控制功能。
重点在于数据查询功能。
另外还介绍了视图的用法和动态SQL中定义、操作和查询功能。
第六章知识点有:存储过程的创建和执行过程、修改和删除;触发器的基本概念,
建立,插入和删除视图,插入、删除和更新类触发器。
最后介绍了数据完整性。
第七章介绍安全性,包括安全性措施的层次、数据库管理系统的安全功能等,用户管理和角色管理,权限管理。
其他的安全问题包括:数据加密、审计、统计数据库和用户定义的安全性措施。
事务管理这一章首先介绍了事务的概念、性质以及SQL对事务的支持。
并发控制干扰问题、可串行性、封锁、死锁、隔离级别、封锁与隔离级别;恢复故障类型、备份类型、日志的概念、恢复模型、备份转储、还原。
第九章为关系数据理论:函数依赖术语和符号;函数依赖的公理系统公理的内容及其正确性、逻辑蕴含和闭包、公理的完备性、闭包的计算、函数依赖集的等价和最小化:规范化1NF、2NF、3NF、BCNF;模式分解。
第十章:数据库设计。
完善ER模型中的概念弱实体,依赖关系,强制联系;数据库设计的过程主要掌握其建立的步骤。
第十一章介绍面向对象数据库:新的数据库应用和新的数据库类型;面向对象的数据模型对象与类;对象的属性、方法和状态、对象的交互和消息、类的确定和分化、封装、继承、多态;对象关系数据库与对象数据库;面向对象数据库的研究。
十二章“数据库应用的结构和开发环境”并非重点,而第十三章的内容在软件工程课程中就已经掌握,所以这两章的知识点就略过了。
第十四章分布式数据库与分布式数据管理:概念;分布式数据库的分布方式;分布式数据库特点和目标更新传播、分布式查询处理、目录表管理、分布式事务管理;SQLserver的复制及其术语、复制模型。
十五章数据仓库:概念;结构;数据仓库系统;建立数据仓库系统;实现数据仓库的数据库模型;数据仓库与决策支持。
最后,数据库研究和应用的新领域这一章中掌握知识库的知识即可。
三、SQL server 与oracle 的比较
1.oracle支持多种操作系统,sql server只支持windows。
2.oracle有更多的灵活性,可以根据实际情况调整参数,应用的性能最佳,缺点是很难上手;sql server则相反,很容易上手。
3.体系结构
oracle的文件体系结构为:
数据文件.dbf(真实数据),日志文件.rdo,控制文件.ctl,参数文件.ora
sql server的文件体系结构为:
.mdf (数据字典),.ndf (数据文件),.ldf (日志文件)
4.存储结构
oracle存储结构:
在oracle里有两个块参数pctfree(填充因子)和pctused(复用因子),可控制块确定块本身何时有,何时没有足够的空间接受新信息(对块的存储情况的分析机制)
这样可降低数据行连接与行迁移的可能性。
块的大小可设置(oltp块和dss块)
在oracle中,将连续的块组成区,可动态分配区(区的分配可以是等额的也可以是自增长的)可减少空间分配次数
在oraclel里表可以分为多个段,段由多个区组成,每个段可指定分配在哪个表空间里(段的类型分为:数据段、索引段、回滚段、临时段、cash段。
oracle里还可对表进行分区,可按照用户定义的业务规则、条件或规范,物理的分开磁盘上的数据。
这样大大降低了磁盘争用的可能性。
sql server 存储结构
以页为最小分配单位,每个页为8k(不可控制,缺乏对页的存储情况的分析机制),可将8个连续的页的组成一个‘扩展’,以进一步减少分配时所耗用的资源。
(分配缺乏灵活性),在sql server里数据以表的方式存放,而表是存放在数据库里。
sql不是一种语言,而是对oracle数据库传输指令的一种方式。
sql中null既不是字符也不是数字,它是缺省数据。
oracle提供了nvl函数来解决。
oracle中的字符串连接为string1‖string2 ,sql中为string1+string2.
5.集合操作:
在sql中只有union(并操作),oracle中包含minus(差操作)、interect(交操作)、union(并操作)。
6.索引:
sql的索引分为聚集索引和非聚集索引,还包括全文索引;
oracle的索引包括:b+树索引,bitmap位图索引,函数索引,反序索引,
主键索引,散列索引,本地索引。
oracle的数据类型比较复杂,有基本数据类型,衍生型,列对象型,表对象型,结构体型;
sql中的数据比较简单,只有一些简单的基本数据类型无法提供事务操作。
在sql中如果一个事务从开始执行到结束时了错了,它就会回滚到开始之前;
在oracle中它采用的是定点回滚,就是该事务函数化和精确错误定位,用savepoint标记保存点,用rollback标记回滚错误的保存点。
在sql中循环只有while一种这用起来不灵活,在oracle中有多种循环(loop循环、while循环、for循环)。
在sql中游标的使用比较复杂,不能同时打开一个以上的游标,因为它只有一个全局变量@@fast_statues而且声明游标也麻烦,关闭游标时也不清除内存的;oracle中游标是以提高速度全部统一的单项游标,可以允许多用户异步读取,而且声明比较简单,就一句declare cursor游标名is select 语句就可以了。
7容错机制:
sql中的错误机制比较复杂,没有提供错误描述;oracle中容错类型有三种,一个是预定义错误,一个是非预定义错误,一个是用户自定义,其中在自定义错误中它有两个是在sql中不有的,那就是sqlcode 错误号、sqlerrm错误描述。
sql server对每个数据库只能分配一个日志文件。
且当日志填满后,日志将停止工作,等待人工干预,而无法自动重用。
oracle的控制文件记录了数据库文件的物理位置和有效性,在每次打开oracle系统都将自动对数据进行验证,查看其有效性,防止数据的丢失,这体现了oracle 对数据管理的严密性。
sql server无此安全机制,只用在使用到了数据库的信息后,系统才去查找数据是否存在。
oracle的参数文件init.ora是可调的,既我们可以根据数据库的规模调整oracle 对系统资源的使用情况,以达到最合理的资源分配,让oracle达到最佳的性能。
sql server的配置参数是内定的不可调整,它对系统资源的分配是固定的,不受拥护控制,因此无法同时处理大量用户的需求,这限制了它只能作为中,小型数据库。
oracle以块为最小存储单位,以区为单位分配空间,用户可以根据需要自己定义
块的大小,且区可以按等额或递增进行分配,这可以大大减少系统的i/o操作提高数据库的性能。
sql server中以页为单位或使用扩展类型以8页为一单位进行空间分配而无法人工干预,当遇到频繁存储或大数据量存储时,系统将频繁进行i/o操作使工作效率低下。
oracle中的sql语句书写规范且提供了完整的函数和数据类型。
oracle提供了健全的错误机制,用户可以轻松的获得错误位置和错误原因而加以修改。
用户还可以自己定义所须的错误类型,用以检查逻辑错误。
oracle中对数据类型的转换和游标的定义也十分方便。
因此,我们对代码的书写和维护也比sql server方便许多。
sql server使用类c语言,不易维护和查看代码。
sql server包含的数据类型太少,无法定义结构体,数组,对象。
sql server无法定义流程机制,类型转换也极不方便,sql server中对游标定义十分复杂,且当用户定义的多个游标同时打开时系统却只有一个游标变量,这是sql server中一个严重的缺陷。
oracle在创建表时用户可以精确定义数据存放的表空间,甚至可以把一张表分开存放在多个表空间中,这样可以将数据量庞大的表按某些字段分开存放,这将给查询带来极高的效率。
从资料上可以看到,oracle的安全认证获得最高认证级别的iso标准认证,而sql server并没有获得什么安全认证。
这方面证明了oracle的安全性是高于sql server 的。
四、如何成为“卓越工程师”和“软件特色人才”
合肥学院10计本3班是计科系第一届培养“卓越工程师”国家特色专业的班级,也就是所谓的试验班。
身处这个班级可以深深体会到我们与其他班级课程安排的不同之处。
一般大学三年半的理论课程我们被安排两年半学完,剩下的一年半时间主要培养我们实际应用性的能力。
因此,想成为真正的计算机方面的卓越工程师不仅需要学校与老师单方面的教育,也需要我们自身的努力学习。
毕竟,大学的学习不再向以前一样靠老师或者是父母的强制,需要大学生自己的自觉性,自己主动拿起书本去学习知识,主动拿起工具去实践理论。
积极主动的去学习知识,但更要重视我们的专业课,像C语言,数据库,数据结构等等。
虽然有些知识看似现在好像没什么实质性的作用,但是对我们的将来却极其深远的影响。
学无止境,我们不可能在原地踏步,进入社会后还需要深造,需要向上发展,而这些知识就在不知不觉中给我们打下了坚实的基础。
五、不要总是抱怨为什么学这么多好似没有太大作用的课程,而不给我们上些实质性的课程,像Flash,网页的制作,系统的安装等等,说我们学的东西还不如专科生。
但是,我想在这说明我们不是专科生。
专科生所学的只是计算机方面的技术性知识,而本科生学习的重点是学习如何学习,不能仅仅满足于一些技术。
其实这些东西在我们课余时间可以自己上网自学,并不需要学校特地开设这门课程。
总之一句话,想要成为“卓越工程师”和“软件特色人才”自觉地主动的学习,培养自身各方面的能力。
让自己将来更全面的发展。