码迷,mamicode.com
首页 > 其他好文 > 详细

数据字典与系统表

时间:2015-03-20 16:00:23      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

数据字典与系统表

地址:http://weibo.com/p/1001603822234199319043

数据字典描述了数据库系统的基本信息,如表结构的定义。它描述了数据库的元信息,任何数据库对象都需要相应的数据字典对象来描述。数据字典的表现形式为一组系统表,

在达梦7中以SYS开头的表都是系统表,它的拥有者是系统内建的SYS用户。

使用系统表存放数据字典并不是唯一的数据字典表示形式。有些系统,比如MySQL对每个表有一个对应的FRM文件来描述表结构,这种方式实现容易,但是需要特殊的语法来查询,比如show语句

使用系统表的优势在于可以方便使用标准的SQL语言来查询(例如sqlserver select * from sys.dm_exec_xxxx)。达梦7的系统表,包括系统性能动态视图(V$)都可以使用复杂的SQL标准语法来访问,

这也是关系数据库的关系准则之一。

达梦7的核心系统表大概只有几十个,尽量保持简单。对于一些扩展功能,如:自动工作负载AWR, 定时任务系统等,也用一些系统表来管理,但是这些相应功能模块需要额外的创建工作。

系统表记录的信息主要包括:
?用户、角色
?模式及模式对象, 包括表、视图、索引、约束、序列、存储过程、触发器、包等
?权限, 授权信息
?安全、审计信息
?系统的一些静态信息,如: 错误码、关键字清单
?系统的动态性能信息(V$)

系统表的信息反应了系统的管理对象和当前运行状态,授权用户可以查询,但不能直接修改系统表。系统表由达梦7自动维护,用户只能通过DDL来间接修改系统表

为了使用方便, 系统定义了一些系统视图,如all_tables, user_tables等反应系统的一些特定对象信息。很多视图具有和Oracle对应视图基本一致的字段和信息。

SYSOBJECTS是最重要的系统表之一,它的每一行表示了一个数据库对象,比如每创建一个表、视图,系统都会在SYSOBJECTS插入一条记录。

大部分对象,还需要其他的系统表来存放额外信息,比如:表的列信息存放在SYSCOLUMNS里,获取一个表的完整对象信息需要访问多个系统表,

这就需要做关联操作

达梦7提供了一个工具DMINIT来创建数据库的物理文件。这个工具的主要工作就是创建这些系统表。类似SYSOBJECTS/SYSCOLUMNS这样的系统表,一开始就包含了不少数据,因为它们需要描述自身

这些数据需要DMINIT硬编码来创建(就像install_db脚本 安装数据库的时候自动安装系统数据库),而普通的用户表创建,则可以通过对系统表的insert语句来实现。

 

数据字典与系统表

标签:

原文地址:http://www.cnblogs.com/MYSQLZOUQI/p/4353606.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!