首页 理论教育最新分布式数据库技术数据字典指南

最新分布式数据库技术数据字典指南

【摘要】:每个数据库管理系统都具备某种形式的数据目录或数据字典。下面以Oracle数据库管理系统为例,说明数据目录是如何设计与实现的。表4.1User_Tables视图中的列显然,User_Tables视图把关系的创建者和存储空间信息记录了下来。简言之,一旦数据库对象创建或修改,系统目录就自动由DBMS修改。

每个数据库管理系统(DBMS)都具备某种形式的数据目录或数据字典。可以说,数据目录是数据库系统里最重要的数据库成分,管理着关于数据库的元数据,而且方便支持数据库系统的其他大多数成分。

数据字典本身也可以看成是关系表,可以使用SQL命令操纵。

数据库管理系统使用系统目录(数据字典)有如下好处。

●便于其他系统成分有效地工作。

●通过系统目录,DBMS可以记录物理数据和逻辑数据的独立性需求。

●通过系统目录,DBMS可以记录完整性需求。

●系统和数据对象的特权存放在专用的目录表里,便于数据库安全机制的管理。

●系统目录有助于数据库系统的成功实现。

下面以Oracle数据库管理系统为例,说明数据目录是如何设计与实现的。

在Oracle数据库管理系统中,系统目录里最常用的目录表有Tables、Tab_Columns和Indexes等,分别记录关系(表)、属性(列)和索引的基本信息,即元数据。目录表虽然有十多个,但还是不够,因此还使用了视图加以补充。例如,鉴于仅依靠Tables、Tab_Columns和Indexes这三个目录表还不能满足系统的基本需求,因此基于这三个基表,还有三个视图User_Tables、User_Tab_Columns和User_Indexes。这三个视图用于补充记录这三个基表未能容纳的基本信息。这三个视图可以简述如下。

●User_Tables视图。这个目录视图建立在系统表Tables(在DB2中,等价的表是Systables)上,User_Tables视图中的列如表4.1所示。

表4.1 User_Tables视图中的列

显然,User_Tables视图把关系的创建者(所有者,Owner)和存储空间信息记录了下来。●User_Tab_Columns视图。这个目录视图建立在基关系Tab_Columns(在DB2中,等价的表是Syscolumns)上。User_Tab_Columns视图中的列如表4.2所示。

表4.2 User_Tab_Columns视图中的列(www.chuimin.cn)

User_Tab_Columns视图把属性(列)的一些基本信息的扩展记录了下来,包括列的长度、列的数据类型、列的数据精度和列的默认值等。

●User_Indexes视图。这个目录视图建立在基关系Indexes(在DB2中,对应的是Sysindexes)上,扩展记录了索引的信息。User_Indexes视图中的列如表4.3所示。

表4.3 User_Indexes视图中的列

简言之,目录信息勾勒了数据库、表(关系)和列(属性)的概貌,对查询优化事务调度起着重要作用,使得它们无需访问具体的详细数据,仅依赖访问目录数据就可实现目标。

可以使用SQL的Select语句查询系统目录。

【例4.2】 哪些关系所包含的属性数据类别是CHAR(7)?

可以使用如下命令获得结果。

Select Table_Name f rom User_Tab_Columns where Data Type='CHAR'AND Data_Length=7;

【例4.3】 列出所有的有效用户。

Se l ec t*f rom Dba_User s;

对系统目录进行更新(Insert、Update、Delect)也是可以的,但是直接更新系统目录一般是不允许的。系统目录由DBMS自动更新,通过使用SQL命令实现,如Create TABLE、ALTER TABLE、Drop TABLE、Create VIEW、Drop VIEW、Create INDEX、Drop INDEX、Create SYNONYM、Drop SYNONYM等。简言之,一旦数据库对象创建或修改,系统目录就自动由DBMS修改。

分布式数据库系统的数据目录如何分布呢?我们将在下面讨论。