那区别大了,根本就是两门课,学的东西完全不一样。
应该这么说吧:数据库可以说是一门工具,学来就可以用;而数据结构是计算机专业的基础课程。如果你要搞软件编程,那么就应该学数据结构。
根据我学过的感觉,数据结构应该比较简单点,不过不同的人应该感觉不同吧!
呵呵
基本数据结构
表
表是关系数据库中的一个基本数据结构。表就是行的集合。每行(row)包含一个或多个列。
从Oracle8企业版以后,就提供了分区选件,它允许将表和索引进行分区。利用分区,Oracle可从以下两方面改善性能:
。Oracle不用去访问那些不满足查询条件的分区
。如果分区中所有数据都满足查询条件,那么Oracle将选择全部数据而不需要对每行均进行字句检查。
视图
视图(view)是Oracle中的一种由SQL语句构造的数据结构。SQL语句存储在数据库中,在查询中使用一个视图时,所存储的查询将得以执行,并向用户返回基表(base table)中的数据。
视图不包含数据,而是表示一些方法可以查看查询所指定的基表数据。
视图有以下几种用途:
。简化对多个表数据的访问
。可以保证表中数据的安全(如,创建包含WHERE子句的视图就可以限制访问表中的数据)
。将应用与表中某些特定的结构分离
视图建立在基表集合的基础之上,基表包括Oracle数据库中的事实表或者其他视图。如果视图中的任何一个基表进行修改,那么该视图将无法继续使用它们,因此视图本身也无法再使用。
索引
索引(index)是用来加快访问数据库中记录速度的一种数据结构。一个索引与一个特定的表相关,而且包含该表的一个或多个列的数据。
创建索引的SQL基本语法:
CREAT INDEX emp_idx1 on emp (ename,job);
其中,emp_idx1时索引名,emp是创建索引的表,ename和job时构成索引的列值。
除了索引数据以外,索引项中还为其相关行保存了ROWIDROWID是获取数据库行的最快方式,因此随后数据库行的获取都是以这种最佳方式来完成。
Oracle中使用的4中类型的索引结构:标准B-树索引、反向键索引、位图索引以及Oracle8i引入的基于函数的索引。Oracle使你可以对表中的数据进行聚合,从而改善性能。
其它数据结构
序列(Sequence)
在多用户数据库中经常出现的大问题,就是很难为键或标识符提供唯一的序号。在这种情况下,Oracle允许创建序列对象。
序列号可以用名字,一个递增值或有关序列的其他一些信息。序列独立于任何表,因此多个表可以使用同样的序列号。
同义词(Synonym)
所有的Oracle数据库的数据结构都存储在一个特定的模式(schema)。模式是和一个特定的用户名相关联的,所有对象都通过带有对象名的模式名得到引用。
例如,模式DEMO中有一个表名为EMP如果想引用表EMP,那么应该通过完整名DEMOEMP来引用。如果没有提供特定的模式名,那么Oracle假定该结构处于当前用户名的模式中。
集群(Cluster)
集群是一种能够改善获取性能的数据结构。集群和索引一样,不会影响表的逻辑视图。
散列集群(Hash Cluster)
数据设计
约束
约束(constraint)强制数据库中某些数据的完整性。当给某列增加一个约束,Oracle自动确保不满足此约束的数据是绝不能被接受的。
约束可以在创建或增加包括某列(通过关键字)的表时与列相关联,或者在表创建后通过SQL命令ALTER TABLE来实现与该列的关联。在Oracle8及以后的版本中支持以下5个约束类型:
NOT NULL
对于任何列都可以设为NOT NULL如果在任何SQL *** 作中将一个NULL值赋给某个有NOT NULL约束的列,Oracle会为这个语句返回一个错误。
惟一性
主键
外键
校验
某些约束需要创建所以来支持。
约束可以是立即的或延迟的。立即约束(immediate constraint)只要有写 *** 作就会立即对受约束列产生影响;而延迟约束(deferred constraint)只有在对约束行产生变化的SQL语句执行完时才有强制作用。
对于某个特定表的约束可设置成暂时挂起。当再次启动该约束 *** 作时,再要求Oracle对该约束验证所有数据,或者只是对新数据应用约束。在现有表中增加约束时,可以指定是否对表中所有记录进行约束校验。
触发器是个代码块,当某个表中发生了某种类型的数据库事件时它就会被触发,有以下3种事件会导致触发器的触发:
。数据库UPDATE
。数据库INSERT
。数据库DELETE
例如,可以定义一个触发器,从而在用户改变某一行时,写一个定制的审查记录。
触发器是在行一级被定义的。可以指定触发器是对每一行触发,或者对触发该触发器事件的SQL语句触发。
触发器的触发有3个时机:
。在执行触发事件之前
。在执行触发事件之后
。非触发事件
将前两种时间选项与触发器所触发的行和语句的结合,则有4种可能的触发器实现:在语句之前;在行之前;在语句之后;在行之后。
任何触发器都可以有一个触发器限制(trigger restriction)。触发器限制是一个布尔表达式,如果其值为FALSE,那么就阻止触发器触发。
触发器的定义和存储都独立于使用它们的表。因为触发器包含逻辑,所以必须通过比SQL功能强的某种实现数据访问的语言来写。可以直接用PL/SQL或Java来写触发器,也可以通过调用其中任一种语言编写的现有存储过程来写触发器。
触发器触发是SQL语句执行的结果,该SQL语句修改了某个表中的行。触发触发器的 *** 作可能是修改这个表中的数据,或者产生某些改变来触发其他表的触发器。这么做的最后结果可能是以某种方法修改了数据,但Oracle认为这是不合逻辑的。这些情况都会导致Oracle返回变异表(mutating table,被其他触发器修改的表)的运行时错误,或是返回约束表(constraining table,被其他约束修改的表)的运行时错误。
Oracle8i还引入了一组非常有用的系统事件触发器和用户事件触发器。现在可以在系统事件(如,数据库启动或关闭)中放置触发器,也可以在用户事件(登录和退出)中放置触发器。
数据结构跟数据库没什么关联,别看名字都是数字开头,一般数据结构与算法一起开课,主要讲数组、队列、链表、树、图、堆、散列表等,学的时候要有一定的C或者C++基础,数据库的话是基础课程,不管学什么语言都需要数据库,一般也比较容易入门,但是以后不管你从事哪方面的软件开发工作都必需掌握数据库。大学一般开的都是SQL,一般比较简单,要想精通数据库还是比较困难的,特别是大型的数据库Oracle、DB2。
这是两个不同的科目。数据结构是讲如何将我们要处理的对象存放到计算机里面去,存进去之后又如何 *** 作。是计算机类专业的专业基础课。
而数据库则是实用型的课程一般只要涉及到信息管理系统的话,数据量一大,就要用到数据库。
如果你有时间,建议2门课都学学。
另外,学习的时候一定要上机实践。多动手。
以上就是关于数据库的实现原理和数据结构,是怎样的呢全部的内容,包括:数据库的实现原理和数据结构,是怎样的呢、oracle中的数据结构是那样的!、我们下学期要学数据库,我想问一下为什么不是先学数据结构,给我说一下各有什么价值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)