毕业设计(论文)-数据字典的研究及应用.doc_第1页
毕业设计(论文)-数据字典的研究及应用.doc_第2页
毕业设计(论文)-数据字典的研究及应用.doc_第3页
毕业设计(论文)-数据字典的研究及应用.doc_第4页
毕业设计(论文)-数据字典的研究及应用.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 数据字典的研究及应用 目录目录 一、引言一、引言 .6 二、二、ORACLE 数据库中的数据字典数据库中的数据字典.6 (一)静态数据字典(一)静态数据字典.7 (二)动态数据字典(二)动态数据字典.8 三、数据库字典的应用三、数据库字典的应用 .9 (一)创建数据表(一)创建数据表.10 (二)给列添加备注(二)给列添加备注.10 四、学生学籍管理子系统的数据字典定义四、学生学籍管理子系统的数据字典定义 .14 五、数据字典中的五个过程五、数据字典中的五个过程 .17 (一)数据项(一)数据项.17 (二)数据结构(二)数据结构.17 (三)数据流(三)数据流.17 (四)数据存储(四)数据存储.17 (五)处理过程(五)处理过程.18 六、数据字典信息的获取六、数据字典信息的获取 .18 (一)(一)MSSQLSERVER.18 (二)(二)ORACLE.22 (三)(三)ACCESS.22 七、结束语七、结束语 .23 (一)工作总结(一)工作总结.23 (二)论文总结(二)论文总结.24 致谢致谢 .24 参考文献参考文献 .24 2 数据字典的研究及数据字典的研究及应应用用 摘摘 要:数据字典保存了有关数据库结构的重要信息,对于数据库系统的开发、要:数据字典保存了有关数据库结构的重要信息,对于数据库系统的开发、数据字典保存了 有关数据库结构的重要信息,对于数据库系统的开发、维护有重要的意义。本文介绍了数据字典 的基本含义以及 Oracle 数据库中数据字典的两种形式。并在实际应用中运用数据字典。 关键词:数据字典关键词:数据字典 静态数据字典静态数据字典 动态数据字典动态数据字典 一、引言一、引言 数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完整的定义与说明,是数 据流程图的补充工具。数据流图和数据字典共同构成系统的逻辑模型。同时数据字典是对系统用 到的所有数据项和结构的定义,以确保开发人员使用统一的数据定义。在需求阶段,数据字典至 少应定义客户数据项以确保客户与开发小组是使用一致的定义和术语。分析和设计工具通常包括 数据字典组件。 数据字典是存放有关数据库信息的地方,其用途是用来描述数据的。比如一个表的创建者信 息,创建时间信息,所属表空间信息,用户访问权限信息等。当用户在对数据库中的数据进行操 作时遇到困难就可以访问数据字典来查看详细的信息。 数据字典是有表和视图组成的,存储有关数据库结构信息的一些数据库对象。数据库字典描 述了实际数据是如何组织的。对它们可以象处理其他数据库表或视图一样进行查询,但不能进行 任何修改。 数据库字典通常是在创建和安装数据库时被创建的,数据字典是数据库系统工作的基础,没 有数据字典的支持,数据库系统就不能进行任何工作。 二、二、Oracle 数据库中的数据字典数据库中的数据字典 在 Oracle 数据库字典中,许多视图都有三个不同的实例,它们的前缀分别为 USER_、ALL_及DBA_。USER_为前缀的数据库字典视图通常记录执行查询的帐户所拥有 的对象的信息,ALL_为前缀的数据库字典视图通常记录包括执行查询的帐户所拥有的对象的信 息及授权至 PUBLIC 的帐户用户所拥有的对象的信息,DBA_为前缀的数据库字典视图则包含所 有数据库对象的信息,而不管其所有者。其他的字典视图中主要的是 V$视图,之所以这样叫是因 为他们都是以 V$或 GV$开头的。V$视图是基于 X$虚拟视图的。V$视图是 SYS 用户所拥有的, 在缺省状况下,只有 SYS 用户和拥有 DBA 系统权限的用户可以看到所有的视图,没有 DBA 权限 的用户可以看到 USER_和 ALL_视图,但不能看到 DBA_视图。与 DBA_,ALL,和 USER_视图中面 向数据库信息相反,这些视图可视的给出了面向实例的信息。 Oracle 中的数据字典有静态和动态之分。静态数据字典主要是在用户访问数据字典时不会发 生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以 在访问这类数据字典时往往不是一成不变的。以下分别就这两类数据字典来论述。 (一)(一) 静态数据字典静态数据字典 这类数据字典主要是由表和视图组成.应该注意的是,数据字典中的表是不能直接被访问的, 但是可以访问数据字典中的视图。静态数据字典中的视图分为三类,它们分别由三个前缀够成: user_*、 all_*、 dba_*。 user_* 该视图存储了关于当前用户所拥有的对象的信息。 (即所有在该用户模式下的对象) all_* 3 该试图存储了当前用户能够访问的对象的信息。 (与 user_*相比,all_* 并不需要拥有该对象, 只需要具有访问该对象的权限即可) dba_* 该视图存储了数据库中所有对象的信息。 (前提是当前用户具有访问这些数据库的权限,一般 来说必须具有管理员权限) 从上面的描述可以看出,三者之间存储的数据肯定会有重叠,其实它们除了访问范围的不同 以外(因为权限不一样,所以访问对象的范围不一样) ,其他均具有一致性。具体来说,由于数据 字典视图是由 SYS(系统用户)所拥有的,所以在却省情况下,只有 SYS 和拥有 DBA 系统权限 的用户可以看到所有的视图。没有 DBA 权限的用户只能看到 user_*和 all_*视。如果没有被授予相 关的 SELECT 权限的话,他们是不能看到 dba_*视图的。 由于三者具有相似性,下面以 user_为例介绍几个常用的静态视图: 1.user_users 视图视图 主要描述当前用户的信息,主要包括当前用户名、帐户 id、帐户状态、表空间名、创建时间 等。例如执行下列命令即可返回这些信息。 select * from user_users 2.user_tables 视图视图 主要描述当前用户拥有的所有表的信息,主要包括表名、表空间名、簇名等。通过此视图可 以清楚了解当前用户可以操作的表有哪些。执行命令为:select * from user_tables 3.user_objects 视图视图 主要描述当前用户拥有的所有对象的信息,对象包括表、视图、存储过程、触发器、包、索 引、序列等。该视图比 user_tables 视图更加全面。例如, 需要获取一个名为“package1”的对象 类型和其状态的信息,可以执行下面命令: select object_type,status from user_objects where object_name=upper(package1); 这里需注意 upper 的使用,数据字典里的所有对象均为大写形式,而 PL/SQL 里不是大小写敏 感的,所以在实际操作中一定要注意大小写匹配。 4.user_tab_privs 视图视图 该视图主要是存储当前用户下对所有表的权限信息。比如,为了了解当前用户对 table1 的权 限信息,可以执行如下命令: select * from user_tab_privs where table_name=upper(table1) 了解了当前用户对该表的权限之后就可以清楚的知道,哪些操作可以执行,哪些操作不能执 行。前面的视图均为 user_开头的,其实 all_开头的也完全是一样的,只是列出来的信息是当前 用户可以访问的对象而不是当前用户拥有的对象。对于 dba_开头的需要管理员权限,其他用法也 完全一样,这里就不再赘述了。 (二)(二) 动态数据字典动态数据字典 Oracle 包含了一些潜在的由系统管理员如 SYS 维护的表和视图,由于当数据库运行的时候它 们会不断进行更新,所以称它们为动态数据字典(或者是动态性能视图)。这些视图提供了关于 内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。 4 Oracle 中这些动态性能视图都是以 v$开头的视图,比如 v$access。下面就几个主要的动态性 能视图进行介绍。 1.1. v$accessv$access 该视图显示数据库中锁定的数据库对象以及访问这些对象的会话对象(session 对象)。 运行如下命令: select * from v$access 结果如下:(因记录较多,故这里只是节选了部分记录) SID OWNEROBJECTTYPE 27DKH V$ACCESSCURSOR 27 PUBLICV$ACCESSSYNONYM 27 SYS DBMS_APPLICATION_INFO PACKAGE 27 SYS GV$ACCESSVIEW 表 1.运行结果 2.v$session2.v$session 该视图列出当前会话的详细信息。由于该视图字段较多,这里就不列详细字段,为了解详细 信息,可以直接在 sql*plus 命令行下键入:desc v$session 即可。 3.v$active_instance3.v$active_instance 该视图主要描述当前数据库下的活动的实例的信息。依然可以使用 select 语句来观察该信息 4.4. v$contextv$context 该视图列出当前会话的属性信息。比如命名空间、属性值等。 三、数据库字典的应用三、数据库字典的应用 借助 Oracle 数据字典,利用 Oracle 的 DDL 语句,我们可以做很多事情,几乎所有的 Oracle 开 发辅助工具都是利用这一点进行设计的。作者将通过如何取得数据库表字段信息来说明。首先我 们定义一个数据库表,数据库表结构如下: 5 数据库表名Student 字段名字段名 数据类型数据类型 长度长度 缺省值缺省值 允许空允许空 主键主键 注释注释 ID Int 8 N Y 编号 NAMEvarchar2 40 “” N 姓名 SEXvarchar240 Y 性别 HOMEvarchar240 “” N 籍贯 YXvarchar240 “” N 院系 GRADEvarchar240 N 年级 DOMNOvarchar240N宿舍号 PHONEInt8N电话 表 2.数据库表名 创建表的 SQL 语句如下 (一)(一) 创建数据表创建数据表 create table TABLE_TEST ID int(4) not null, NAME varchar2(40) default not null, SEX varchar2(40) , HOME varchar2(40) default not null, YX varchar2(40) default not null, GRADE varchar2(40) not null, DOMNO varchar2(40) not null, PHONE int(4) not null ); (二)给列添加备注(二)给列添加备注 comment on column TABLE_TEST.ID is 编号; comment on column TABLE_TEST.NAME is 姓名; comment on column TABLE_TEST.SEX is 性别; comment on column TABLE_TEST.HOME is 籍贯; comment on column TABLE_TEST.YX is 院系; 6 comment on column TABLE_TEST.GRADE is 年级; comment on column TABLE_TEST.DOMNO is 宿舍号; comment on column TABLE_TEST.PHONE is 电话; 创建约束关系 主键 外键 其他 alter table TABLE_TEST add constraint TB_TEST_P_NAME primary key (ID); 数据表创建完毕,执行下列 SQL 语句: Select column_name 字段名,A.data_type 数据类型,A.data_length 长度, A.nullable 允许 空值,A.Data_default 缺省值,B.comments 备注 from user_tab_columns A,user_col_comments B where Table_Name = B.Table_Name and A.Column_Name = B.Column_Name and A.Table_Name = TABLE_TEST 我们可以得出一下结果: 字段名字段名数据类型数据类型长度长度允许空值允许空值缺省值缺省值备注备注 IDInt8N 编号 NAMEVARCHAR240N“” 姓名 SEXVARCHAR240Y 性别 HOMEVARCHAR240N 籍贯 YXVARCHAR240N 院系 GRADEVARCHAR240N 年级 DOMNOVARCHAR240N 宿舍号 PHONEint8N 电话 表 3.运行结果 这样,我们在进行程序设计时,通过一条简单的 SQL 语句,然后通过 Ole 调用 Word,便可为最终 用户导出完整的数据库表字典文档。 7 再执行下列 SQL 语句: Select INDEX_NAME 索引名,INDEX_TYPE 索引类型,UNIQUENESS 索引类别 From user_indexes where TABLE_NAME = TABLE_TEST 得到结果如下(注:SYS_IL0000031226C00006$索引为系统在创建数据库表时自动创建的,用于数 据库表内容的维护): 索引名索引名索引类型索引类型索引类别索引类别 1SYS_IL0000031226C00006$LOBUNIQUE 2TB_TEST_P_NAMENORMALUNIQUE 表 4.运行结果 执行下列 SQL 语句,我们将得到更多的关于数据库表结构的信息: Select A.column_name 字段名,A.data_type 数据类型,A.data_length 长度, A.data_precision 整数位, A.Data_Scale 小数位,A.nullable 允许空值,A.Data_default 缺省值,B.comments 备 注, C.IndexCount 索引次数 from user_tab_columns A, user_col_comments B, (select count(*) IndexCount,Column_Name from User_Ind_Columns where Table_Name = TABLE_TEST group by Column_Name) C Where A. Table_Name = B.Table_Name 8 and A.Column_Name = B.Column_Name and A.Column_Name = C.Column_Name(+) and A.Table_Name = TABLE_TEST 得到结果如下: 字段字段 名名 数据类型数据类型长度长度允许空值允许空值缺省值缺省值 备注备注 索引次数索引次数 IDInt8N 编号 1 NAMEVARCHAR240N“” 姓名 SEXVARCHAR240Y 性别 HOMEVARCHAR240N 籍贯 YXVARCHAR240N 院系 GRADE VARCHAR240N 年级 DOMNO VARCHAR240N 宿舍号 PHONE int8N 电话 表 5.运行结果 当然数据字典的应用远不止这些,通过数据库字典的支持,我们可以得到 Oracle 数据库结构的所 有信息,著名的数据库开发工具 PL/SQL Developer 完全就是基于 Oracle 的数据库字典实现的。 四、学生学籍管理子系统的数据字典定义四、学生学籍管理子系统的数据字典定义 该子系统涉及很多数据项,其中“学号”数据项可以如下描述: (一)(一) 数据项:数据项: 学号学号 含义说明:唯一标识每个学生 别名: 学生编号 类型: 字符型 长度: 8 取值范围:00000000 至 99999999 取值含义:前两位标识该学生所在年级,后六位按顺序编号 “学生”是该系统中的一个核心数据结构,它可以如下描述: 9 数据结构: 学生 含义说明: 是学籍管理子系统的主体数据结构,定义了一个学生的有关信息 组成: 学号,姓名,性别,年龄,所在系,年级 (二)(二) 数据流数据流“体检结果体检结果”可如下描述:可如下描述: 数据流: 体检结果 说明: 学生参加体格检查的最终结果 数据流来源:体检 数据流去向:批准 组成: 心率、血压、身高、体重 (三)(三) 数据存储数据存储“学生登记表学生登记表”可如下描述:可如下描述: 数据存储: 学生登记表 说明: 记录学生的基本情况 数据量: 每年 3000 张 存取方式: 随机存取 (四)(四) 处理过程处理过程“分配宿舍分配宿舍”可如下描述:可如下描述: 处理过程:分配宿舍 说明: 为所有新生分配学生宿舍 输入: 学生,宿舍, 输出: 宿舍安排 处理: 在新生报到后,为所有新生分配学生宿舍。要求同一间宿舍只能安排同一性别的学生, 同一个学生只能安排在一个宿舍中。每个学生的居住面积不小于 3 平方米。安排新生宿舍其处理 时间应不超过 15 分钟。 整个过程的图解: 10 图 1.学校管理高层数据流图 逐层分解后: 图 2.逐层分解后的数据流图 11 图 3.学籍管理的数据流图 五、数据字典中的五个过程五、数据字典中的五个过程 数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。 (一)数据项(一)数据项 数据项是不可再分的数据单位。对数据项的描述通常包括以下内容: 数据项描述数据项名,数据项含义说明,别名,数据类型,长度, 取值范围,取值含义,与其他数据项的逻辑关系 其中取值范围、与其他数据项的逻辑关系定义了数据的完整性约束条件,是设计数据检验功 能的依据。 (二)数据结构(二)数据结构 据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干 个数据结构组成,或由若干个数据项和数据结构混合组成。对数据结构的描述通常包括以下内容: 数据结构描述数据结构名,含义说明,组成:数据项或数据结构 12 (三)数据流(三)数据流 数据流是数据结构在系统内传输的路径。对数据流的描述通常包括以下内容: 数据流描述数据流名,说明,数据流来源,数据流去向, 组成:数据结构,平均流量,高峰期流量 其中数据流来源是说明该数据流来自哪个过程。数据流去向是说明该数据流将到哪个过程去。平 均流量是指在单位时间(每天、每周、每月等)里的传输次数。高峰期流量则是指在高峰时期的 数据流量。 (四)数据存储(四)数据存储 数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。对数据存储的描述通常 包括以下内容: 数据存储描述数据存储名,说明,编号,流入的数据流,流出的数据流, 组成:数据结构,数据量,存取方式 其中数据量是指每次存取多少数据,每天(或每小时、每周等)存取几次等信息。存取方法包括 是批处理,还是联机处理;是检索还是更新;是顺序检索还是随机检索等。另外,流入的数据流 要指出其来源,流出的数据流要指出其去向。 (五)处理过程(五)处理过程 数据字典中只需要描述处理过程的说明性信息,通常包括以下内容: 处理过程描述处理过程名,说明,输入:数据流,输出:数据流, 处理:简要说明 其中简要说明中主要说明该处理过程的功能及处理要求。功能是指该处理过程用来做什 么(而不是怎么做),处理要求包括处理频度要求,如单位时间里处理多少事务,多少数据量; 响应时间要求等。这些处理要求是后面物理设计的输入及性能评价的标准。 六、六、数据字典信息的获取数据字典信息的获取 (一)(一)MSSQLServer 1.表说明 SELECT AS TableName, dbo.sysproperties.value AS TableDesc 13 FROM dbo.sysproperties INNER JOIN dbo.sysobjects ON dbo.sysproperties.id = dbo.sysobjects.id WHERE (dbo.sysproperties.smallid = 0) ORDER BY 2.2. 字段说明 SELECT AS TableName, dbo.syscolumns.colid, AS ColName, dbo.sysproperties.value AS ColDesc FROM dbo.sysproperties INNER JOIN dbo.sysobjects ON dbo.sysproperties.id = dbo.sysobjects.id INNER JOIN dbo.syscolumns ON dbo.sysobjects.id = dbo.syscolumns.id AND dbo.sysproperties.smallid = dbo.syscolumns.colid ORDER BY , dbo.syscolumns.colid 3.3. 主键、外键信息(简化) Select c_ as CONSTRAINT_NAME, t_ as TABLE_NAME, as COLUMN_NAME, case col.colid when ref.fkey1 then 1 when ref.fkey2 then 2 when ref.fkey3 then 3 when ref.fkey4 then 4 when ref.fkey5 then 5 14 when ref.fkey6 then 6 when ref.fkey7 then 7 when ref.fkey8 then 8 when ref.fkey9 then 9 when ref.fkey10 then 10 when ref.fkey11 then 11 when ref.fkey12 then 12 when ref.fkey13 then 13 when ref.fkey14 then 14 when ref.fkey15 then 15 when ref.fkey16 then 16 end as ORDINAL_POSITION from sysobjects c_obj, sysobjects t_obj, syscolumns col, sysreferences ref where permissions(t_obj.id) != 0 and c_obj.xtype in (F ) and t_obj.id = c_obj.parent_obj and t_obj.id = col.id and col.colid in (ref.fkey1,ref.fkey2,ref.fkey3,ref.fkey4,ref.fkey5,ref.fkey6, 15 ref.fkey7,ref.fkey8,ref.fkey9,ref.fkey10,ref.fkey11,ref.fkey12, ref.fkey13,ref.fkey14,ref.fkey15,ref.fkey16) and c_obj.id = ref.constid union select as CONSTRAINT_NAME, t_ as TABLE_NAME, as COLUMN_NAME, v.number as ORDINAL_POSITION from sysobjects c_obj, sysobjects t_obj, syscolumns col, master.dbo.spt_values v, sysindexes i where permissions(t_obj.id) != 0 and c_obj.xtype in (UQ ,PK) and t_obj.id = c_obj.parent_obj and t_obj.xtype = U and t_obj.id = col.id and = index_col(t_,i.indid,v.number) and t_obj.id = i.id and c_ = and v.number 0 16 and v.number = i.keycnt and v.type = P order by CONSTRAINT_NAME, ORDINAL_POSITION 4.4. 主键、外键对照(简化) Select fc_ as CONSTRAINT_NAME, as UNIQUE_CONSTRAINT_NAME from sysobjects fc_obj, sysreferences r, sysindexes i, sysobjects pc_obj where permissions(fc_obj.parent_obj) != 0 and fc_obj.xtype = F and r.constid = fc_obj.id and r.rkeyid = i.id and r.rkeyindid = i.indid and r.rkeyid = pc_obj.id (二)(二)ORACLE 1.表信息 select * from all_tab_comments t where owner=DBO 2.列信息 17 select * from all_col_comments t where owner=DBO 3.主键、外键对照 select OWNER, CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME, R_OWNER, R_CONSTRAINT_NAME from all_constraints where owner=DBO and (Constraint_Type=P or Constraint_Type=R) 4.主键、外键信息 select * from all_cons_columns where owner=DBO order by Constraint_Name, Position (三)Access Access 中的系统表 MSysobjects 存储属性的字段是二进制格式,不能直接分析,可以采用 ADO 自 带的 OpenSchema 方法获得相关信息 use ADOInt.pas po: TableName DBCon:TADOConnection ds:TADODataSet 1.表信息 DBCon.OpenSchema(siTables, VarArrayOf(Null, Null, Table), EmptyParam, ds); 2.列信息 DBCon.OpenSchema(siColumns, VarArrayOf(Null, Null, po), EmptyParam, ds); 3.主键 DBCon.OpenSchema(siPrimaryKeys, EmptyParam, EmptyParam, ds); 18 4.主键、外键对照 DBCon.OpenSchema(siForeignKeys, EmptyParam, EmptyParam, ds); 七、结束语七、结束语 (一)工作总结(一)工作总结 通过本文的工作,我充分地理解和掌握了数据字典概念和基本知识,以及结合实际模型,根 据软件工程理念在丰富的集成环境下利用多种先进技术开发较大规模网络应用的相关知识和技巧。 整个过程有效锻炼了自己软件实际开发的能力,解决工作中遇到的困难的能力,提高和完善开发 产品的能力。 回顾整个论文工作,对其概括如下: 1. 搜集和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论