2009年2月8日星期日

方案对象schema object

方案是一个逻辑数据(logical structures of data)(或称为方案对象(schema object))的集合。每个数据库用户拥有一个与数据库用户同名的方案,且只有这一个方案。方案对象可以通过SQL语句创建和操作。方案对象包含以下对象类型:
簇(cluster)
数据库链接(database link)
数据库触发器(database trigger)
维度(dimension)
外部过程库(external procedure library)
索引(index)和索引类型(index type)
Java类(Java class),Java资源(Java resource),及Java源程序(Java source)
物化视图(materialized view)及物化视图日志(materialized view log)
对象表(object table),对象类型(object type),及对象视图(object view)
操作符(operator)
序列(sequence)
存储(在服务器端)的(stored)函数(function),过程(procedure)及包(package)
同义词(synonym)
表及index-organized table
视图(view)
还有一些类型的对象也存储于数据库中,且可由SQL语句创建或操作,但是他们不属于任何方案(schema):contexts、目录(directory)、用户配置(profile)、角色(roles)、表空间、用户(user)
方案对象(schema object)是一种逻辑数据存储结构(logical data storage structure)。oracle在逻辑上将方案对象存储于数据库的表空间,而方案对象的数据在物理上存储于此表空间的一个或多个数据文件中。因此方案对象不一定与磁盘上存储这些方案对象的数据的物理文件(physical file)一一对应(即可能两个对象的数据存储在一个物理文件中)。用户可以对表、索引、及簇等对象的磁盘空间分配进行设定。
方案(schema)与表空间之间没有必然联系。同一个表空间可以包含不同方案的对象,而同一方案的对象也可以存储在不同表空间中。
一、表概述
表(table)是oracle数据库中最基本的数据存储结构。数据在表中以行(row)和列(column)的形式存储。用户在定义表时,需要设定表名,还需要设定表内各列的列名(column name)、数据类型(datatype)、及宽度(width)。有些数据类型的宽度是固定的,例如DATE类型,而对于NUMBER类型的列来说,则需要定义精度(precision)及数值范围(scale)。数据行是一条记录(single record)各列信息的集合。
用户可以为一个表的各列数据的值设定规则。这些规则被称为完整性约束(integrity constraint)。例如NOT NULL完整性约束,它要求各行的此列必须包含值。
用户可以设定表内某些列的数据在存储到数据文件之前首先进行加密(encryption)。加密可以防止未经授权的用户绕过数据库访问控制机制,使用操作系统工具直接查看数据文件的内容。
在用户创建(create)表后,就可以使用SQL语句向其中插入(insert)数据,或使用SQL语句查询(query),删除(delete),或更新(update)表内的数据。
二、视图概述
视图(view)用于展现整理后(tailored)的一个或多个表或其他视图中的数据。视图将一个查询的结果作为一个表来使用。因此视图可以被看到是存储查询(stored query)或一个虚拟表(virtual table)。大多数情况下,只要能够使用表就能使用视图来实现。
例如:如果管理员希望用户只能查询其中的5列及特定的数据行,就可以创建此表的视图供用户访问。
由于视图来源于表,因此两者有许多相似之处。例如,用户定义的视图和表一样,最多包含1000列。用户可以查询(query)视图,遵从某些限制(restriction)时还可以对视图进行更新(update)、插入(insert)、删除(delete)等操作。所有对视图数据的修改最终都会被反映到视图的基表(base table)中,这些修改必须服从基表的完整性约束(integrity constraint),并同样会触发定义在基表上的触发器(trigger)。
用户即可以在视图上显式地定义触发器(trigger),也可以在视图所引用的基表上定义触发器。oracle还支持在视图上定义逻辑约束(logical constraint)。
三、索引概述
索引是数据库中一种可选的数据结构,它通常与表或簇相关。用户可以在表的一列或数列上建立索引,以提高在此表上执行SQL语句的性能。oracle的索引提供了更为迅速地访问表数据的方式。正确地使用索引能够显著的减少磁盘的I/O。
用户可以为一个表创建多个索引,只要不同索引使用的列或列的组合(combination of columns)不同即可。

没有评论:

发表评论