为什么一个好的做法"提供一个抽象层,阻止直接访问表格" (查看)

时间:2017-08-21 10:52:57

标签: sql database view rdbms

我目前在DWH工作。我的工作很大一部分是将数据从某个OLTP数据库移动到DWH。

我们做的一个做法是:

  1. - 创建我们需要的新表。

    create table Mytable
     (Column1   date, 
      Column2   varchar(8));
    
  2. - 创建新表的视图(完全相同)

    create view Myview as select * from dummy
    alter view Myview  (
      Column1
     ,Column2
      ) as
       select
         Column1
         column2
        from Mytable
    
  3. - 从该视图中读取

    这里有一个使用Myview而不是Mytable的程序。    为什么呢?

  4. 我当然理解视图的功能,以减少保存查询中的复杂性,或者它们可以保护表的某些部分给最终用户。

    但是我不明白为什么从视图中读取而不是直接从表中读取是一种好的做法。

    我的意思当然是View与Table完全相同的情况。

    感谢你的回答,恩里克

2 个答案:

答案 0 :(得分:2)

这个问题非常接近于要求提出意见。

但是,通常建议对此类系统使用视图,因为它们将用户与基础数据结构隔离开来。换句话说,您可以维护数据,而不必在用户应用程序中更改查询。

此外,视图是添加计算列的便捷方式。计算列通常包含业务规则。将逻辑放在一个位置可以防止业务逻辑的激增 - 以及随着时间的推移可能出现的错误和不一致。

答案 1 :(得分:0)

视图是预编译查询...因此,性能优于每次编写选择查询并运行它... Bcoz每次当你点击相同的选择查询时,它将被编译并提供结果。但是当你把相同的查询写入View并点击它时,它只编译一次,从下次编译时,它会立即提供结果......

这是根据我...