`

Oracle数据库视图管理经验技巧

阅读更多

  视图,对于数据库来说,是一个最基本的、也是最重要的功能之一。数据库视图设计的好坏,直接跟数据库的性能相关。而且,在大型数据库设计中,大家分 工合作,基础表的设计与报表视图的设计往往由不同的人负责。所以,视图的设计管理跟基础表的设计管理一样,都有很大的学问。在这篇文章中,笔者将结合自己 在视图设计管理方面的工作经验,谈谈在这方面的一些鲜为人知的技巧。

 

  技巧一:把基础表与视图脱离开来。

 

  一般来说,视图都是在基础表的上面建立起来的。也就是说,要先有基础表,而后有视图。但是,在大型数据库的设计过程中,出于项目时间的考虑,往往基 础表与视图的设计是同时进行的。如一些人负责基础表的建立,另一些人则负责视图的设计与建立等等。在这个过程中,往往基础表不存在的时候,就需要建立一些 视图,以加快项目的进度。

为了使得基础表的创建和修改与视图的创建于修改没有必然的联系,以便于员工之间工作的同步,提高工作效率,所以,在Oracle数据库中提出了一个 “强制创建视图”的概念。也就是说,正常情况下,如果基本表不存在,则创建视图就会失败。但是,我们可以在创建视图的过程中,加入一个参数,只要创建视图 的语法没有错误的话,即使基础表不存在,仍然可以建立这张表格。这个有用的参数就是force选项。如我们建立视图时,CREATE FORCE VIEW TEXT,只需要在关键字VIEW之前加入FORCE参数即可。如此的话,系统在编译视图的时候,就不会去考虑基础表是否存在。

不过这里要注意一点,若基础表不存在的话,则编译后该视图的状态为“无效”,不能再这个视图的基础上执行一些操作,如查询操作等等。当下次访问这个 视图的时候,则数据库会对这个视图进行重新编译,若此时基础表存在了,则该基础表就会变为有效;若基础表不存在,则这视图就会失效。

  Oracle数据库之所以如此设置,主要是出于在数据库设计过程中协同办公的需要。有了这个功能之后,则在数据库建立的过程中,只要把数据库基础表 与视图设计好之后,大家就可以分工合作,在数据库中建立相关的对象。不然的话,要等基础表建立好之后再建立视图,如此就会明显的影响数据库建立的进度。所 以,在数据库建立的过程中,特别是中大型的数据库系统,这是一个很实用的功能。

 

  技巧二:创建视图的理想步骤。

 

  无论是简单视图,还是比较复杂的视图,笔者觉得数据库管理员在创建视图的时候,最好能够遵循一定的步骤。这一方面是因为视图的更改相对来说,是一件 比较麻烦的工作,所以,我们在建立视图的时候,要确保视图的准确性。另一方面,视图是基础表的一个体现形式,若不按步骤来做的话,有可能就不能够达到我们 预计的需求。

当然这个步骤没有官方的版本,完全是数据库管理员根据实际的经验总结出来的。这个步骤不仅对Oracle数据库有效,对于其他数据库来说,也是类似的道理。

 

  一般来说,视图创建可以分为五步走,

 

  第一步:先考虑Select语句的编写。我们知道,视图其实就是一个Select语句的集合。所以,我们建立视图的第一步,就是考虑这个 Select语句该如何编写。这个Select语句编写的是否合理、执行效率的高低直接影响着这个视图的性能。另外,在Select语句中,可能还会有格 式的控制、内容的编排等等。如在Select语句中,可以把一些字段合并成一个字段;也可以把相关的内容进行倒置等等。这些功能都是Select语句完成 的。所以可以这么说,Select语句的编写是视图建立的基础。

 

  第二步:对这个Select语句进行测试。当我们编写好Select语句之后,就需要在数据库中执行这条语句,看其能否查询到我们想要的值。在对 Select语句进行测试的时候,需要注意一个问题,有时候Select查询语句可以查到准确的数据,但是在以这条语句建立视图的时候,可能就会通不过。 如在一些表之间的连接查询的时候,如果两个表中有个字段名相同,是可以的。因为他们除了字段名字之外,还有表名一起来定义这个字段。如A.name与 B.name。这是不算重名的。但是,若在建立视图的时候,这就会被认为是重复的列明,需要对其中的一个列名进行重定义。这一点在数据库视图建立的时候, 要特别的注意。

 

  第三步:考虑查询结果的准确性。通过查询语句把我们想要的结果查询出来后,我们就需要看看这个结果是否满足我们的需要。在这个过程中,我们主要注意 两点。一是形式字段是否齐全。在一些应用系统中,若数据库的视图要能够被前台的应用程序调用的话,则必须包含一些形式字段。如笔者以前在设计一个 ERP系统的时候,若前台系统要调用数据库中的视图的时候,必须包含记录更新时间、更新者、记录创建时间、创建者等相关信息。若缺乏这些信息的话,则前台 调用这张视图的时候,就会出现错误。故在考虑查询结果准确性的问题的时候,就要考虑到前台应用程序的需要,看看这些形式字段是否齐全。二是实体内容的完整 性。我们到底需要显示表中的哪些字段呢,这个我们在这里要确认清楚。若显示内容太多的话,则会影响视图的执行效率,而且也会降低视图的安全性作用;但是, 若字段内容显示不足的话,则以后要添加字段的话,会比较麻烦,有一定的工作量。所以在这个检验的时候,需要根据视图的实际功用,确定视图需要显示的内容。

 

  第四步:视图的修饰。有时候,为了阅读的方便,我们需要对查询结果进行一些修饰。如现在有两张表,一张是员工基本信息表,这表中有员工姓名、员工职 位编号等等;另一张表是职位基本信息表,在这表中有职位编号、职位名称。我们希望在视图中能够如下显示:“职位:员工名字”,如数据库工程 师:Victor。也就是说,把两个字段合并起来,并且在中间加入一个冒号。这些格式性的内容都是在查询的时候实现的。所以,我们确认查询的结果没有错误 之后,接下来就要确认格式问题。若能够在视图中规范这些格式问题,则前台的程序设计就会相对来说比较简单。

 

  第五步:建立视图。等到上面四步都确认无误后,我们就要根据上面的查询语句来建立视图了。不过在这一步过程中,也有一些问题需要注意。一是视图名字 的命名规格。我们除了遵循数据库的强制命名格式之外,如不能以数字开头等等,还需要遵循一些软规则。如视图最好能够以V开头,跟基础表进行隔开;另外在视 图命名中,能够根据应用模块的不同,来进行分类,并体现在视图的名字中。这对于我们后续视图的查找都具有非常现实的意义。二是虽然可以在视图中直接更新基 础表,不过,为了安全与数据统一的考虑,我们这些过来人一般都不建议通过视图来直接更新基础表中的数据。虽然数据库提供了类似的功能。若要更改相关数据的 话,则直接去更改基础表的内容为好。在建立视图的时候,默认情况下是不能够通过视图直接更新基础表。

分享到:
评论

相关推荐

    Oracle数据库管理员技术指南

    1.6.1 利用 Oracle 安装程序创建数据库 1.6.2 使用安装程序创建数据库的注意 事项 1.6.3 怎样建立自己的定制数据库创建 脚本 1.6.4 如何从已有数据库克隆数据库 1.6.5 怎样利用 Database Configuration ...

    oracle数据库dba管理手册

    第11章 管理Oracle Financials和其他软件包 及实用程序 317 11.1 软件包的通用管理准则 317 11.1.1 定制数据库结构 317 11.1.2 安全与数据访问控制 321 11.1.3 事务管理 322 11.1.4 文件定位 322 11.1.5 监控 322 ...

    Oracle数据库的空间管理技巧

    正在看的ORACLE教程是:Oracle数据库的空间管理技巧。 在Oracle数据库中,DBA可以通过观测一定的表或视图来了解当前空间的使用状况,进而作出可能的调整决定。  一.表空间的自由空间 —- 通过对表空间的自由空间的...

    oracle 9i课件

    Oracle数据库的启动与权限管理;Oracle数据库管理系统;Oracle数据库例程和进程;Oracle数据库权限管理;Oracle物理结构和逻辑结构;PL_SQL;PL_SQL函数过程程序包触发子;PL_SQL函数过程程序包触发子(蓝色);SQL结构查询...

    Oracle 基础知识 -大全- 原创整理.pdf

    3.学会创建新的oracle数据库 4.掌握oracle表对数据操作技巧 5.掌握在java程序中操作oracle 6.理解oracle事物概念 7.掌握oracle各种sql函数 8.了解oracle管理员的基本职责 9.掌握备份和恢复数据库/表的方法 10.理解表...

    Oracle的V$性能视图学习大全

    比较详细的介绍了Oracle的V$性能视图的使用方法及技巧。 摘要:高级DBA经常告诉刚刚入行的DBA,在Oracle 6年代,他们曾经将每一张V$视图烂熟于心。在Oracle 6中,仅仅只有23个V$视图,那时侯的DBA可以很轻松地使用...

    Oracle经验技巧集锦

    查看对象的依赖关系(比如视图与表的引用) 在Oracle中建一个编号会自动增加的字段,以利于查询 在数据库触发器中使用列的新值与旧值

    Oracle8i_9i数据库基础

    第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24 §1.2.2 数据字典概念 25 §1.3 ...

    Oracle 10g 学习笔记

    这个笔记是学习oracle数据库过程中整理出来的,比较详细,适合于初学者。 │ oracle与tomcat端口冲突.txt │ Oracle学习笔记.pdf │ Oracle学习笔记.wps │ 安装Oracle后myEclipse不能正常使用.txt │ 手工配置...

    ORACLE9i_优化设计与系统调整

    §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1 数据文件 26 §1.2.2 控制文件 26 §1.2.3 重做日志文件 26 §...

    oracle .

    Oracle数据库基础 查询基础 表及索引的定义操作 视图、同义词和序列 簇与分区 复杂查询语句的使用 一些高级的用法 安全管理 其它一些常见问题及技巧 常用技巧 Oracle PL/SQL基础 PL/SQL 块结构和组成元素 PL/SQL ...

    Oracle Database 11g & MySQL 5.6开发手册

    利用《Oracle Database 11g & MySQL 5.6开发手册》,您将能够在混合环境中创建出强大的数据库应用程序。本书规划了这两种平台之间无缝操作的程序设计策略和最佳实践方式。您可以学会如何迁移数据库、移植SQL代码、...

    Oracle Database 11g & MySQL 5.6开发手册 中文版.

    利用《Oracle Database 11g & MySQL 5.6开发手册》,您将能够在混合环境中创建出强大的数据库应用程序。《Oracle Database 11g & MySQL 5.6开发手册》规划了这两种平台之间无缝操作的程序设计策略和最佳实践方式。您...

    数据库操作处理笔记

    一、表空间的操作 二、用户、角色、权限 三、表操作 四、视图操作 五、索引、约束操作 六存储过程、函数、触发器 ...十、数据库必须掌握的技巧 十一、oracle锁管理 十二数据库备份和迁移 十三oracle性能调优问题

    C#开发经验技巧宝典

    0968 建立Oracle数据库连接 566 0969 如何在数据表中设置主键 566 0970 DataSet读取XML文件中数据作为数据源 567 0971 如何读取Fox的DBF文件 567 0972 通用方法实现数据增、删、改功能 567 0973 通用方法...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。  JARED STILL 从1994年就开始使用...

Global site tag (gtag.js) - Google Analytics