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

筱泷521

筱泷521

2016-02-19 18:48

下面是个简单易学的Oracle数据库视图管理经验技巧教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

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

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

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

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

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

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

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

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

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

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

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

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

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

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
Oracle数据库视图管理经验技巧

SQL Server数据库安全管理经验谈

SQLServer
SQL Server数据库安全管理经验谈

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Oracle数据库的空间管理技巧

编程语言 网络编程
Oracle数据库的空间管理技巧

Oracle的数据库表与视图

编程语言 网络编程
Oracle的数据库表与视图

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Oracle数据库备份技巧

编程语言 网络编程
Oracle数据库备份技巧

Oracle的空间数据库管理技巧

编程语言 网络编程
Oracle的空间数据库管理技巧

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

面向.NET开发人员的Ajax 技术平台策略(3)

面向.NET开发人员的Ajax 技术平台策略(3)

查询Oracle数据库表空间和数据文件方法

查询Oracle数据库表空间和数据文件方法
下拉加载更多内容 ↓