Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 为什么使用数据库视图?_Database Design_View_Database Schema_Advantage Database Server - Fatal编程技术网

Database design 为什么使用数据库视图?

Database design 为什么使用数据库视图?,database-design,view,database-schema,advantage-database-server,Database Design,View,Database Schema,Advantage Database Server,在db设计中使用“视图”是正确的方法还是我们应该在代码端处理它?优点和缺点是什么?视情况而定。我用过一些,但不是经常用。不过,它们对于最终用户(工具,如报表应用程序)在数据上显示解码视图非常有用。通过这种方式,您可以为最终用户提供一个简化版本的经常请求的信息,隐藏一些技术细节。在我们的案例中,视图的两个典型场景是: 表中的某些列包含只有少数人才能看到的机密数据。您可以创建一个排除这些列的视图,并对大多数用户使用该视图 您将两个或多个表连接到一个非规范化视图中,该视图对于报告目的很实用,但作为数

在db设计中使用“视图”是正确的方法还是我们应该在代码端处理它?优点和缺点是什么?

视情况而定。我用过一些,但不是经常用。不过,它们对于最终用户(工具,如报表应用程序)在数据上显示解码视图非常有用。通过这种方式,您可以为最终用户提供一个简化版本的经常请求的信息,隐藏一些技术细节。

在我们的案例中,视图的两个典型场景是:

  • 表中的某些列包含只有少数人才能看到的机密数据。您可以创建一个排除这些列的视图,并对大多数用户使用该视图
  • 您将两个或多个表连接到一个非规范化视图中,该视图对于报告目的很实用,但作为数据库中的存储表则没有意义

希望这能有所帮助。

我认为使用视图有几个原因:

  • 提供一个更简单的界面:只需查询视图,而不是十几个表,执行连接和所有操作
  • 提供一个不改变(或不经常改变)的接口:
    • 即使更改了表的结构,也可以修改视图,使其仍然返回相同的内容
    • 这意味着不需要对应用程序的代码进行任何更改:它仍然可以工作,因为它使用的是视图,而不是直接访问表
  • 仅提供表的某些字段的接口
    • 用户不需要看到一些他们不会使用的数据
    • 或者访问一些他们不应该使用的数据
  • 对于某些数据库引擎(我认为MSSQLServer支持),某些类型的视图可以有索引
    • 这对性能是一件好事:如果您有一些复杂的查询,请将其存储为视图,并在该视图上定义所需的索引

某些数据库系统不支持在FROM子句中嵌入SELECT语句。如果使用的系统不支持此功能,通常可以将内部SELECT语句保存为视图,并使用视图名称代替SELECT语句


因此,它提供了一些db实现中可能缺少的行为。

大量重复,包括可能会创建一个关于查询性能的argumentsHow列表?查看是否可以提高我的查询的性能?