数据和商业智能词汇表

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
V
W
X

查看

什么是视图?

视图是一个查询及其结果,它在数据库中像一个虚拟表一样工作。数据库按需计算视图,这意味着它们不是预先计算或物化的,因此不占用数据库中的任何存储空间。你可以将视图视为虚拟表或逻辑表。

数据库视图允许你组合来自多个表的信息,并以最适合需要查询这些信息的人员的方式格式化这些信息。你(或数据库管理员)可以创建一个视图,隐藏杂乱表中的不必要字段,或连接表以将相关数据整合在一起。通过使用视图作为起点,人们无需每次都运行相同的复杂查询,就能直接找到他们关于数据的实际问题。

查询视图的缺点是,这些查询可能需要很长时间才能运行,特别是当视图是多个表或多个 连接 的结果时。

数据库管理员也出于安全目的使用视图,例如创建视图来隐藏基表中存在的某些字段。这样,其他用户仍然可以访问和查询他们需要的数据,而无需访问敏感字段或行。

视图 vs. 物化视图

如果视图是虚拟表(按需计算),那么 物化视图 就像数据库中的常规表。虽然每次引用视图时,视图都需要重新运行查询,但物化视图是一个预先计算并保存在数据库中的视图。因此,物化视图会占用数据库中的空间,但由于数据库不必每次都计算物化视图,因此在查询时,它们的性能比标准数据库视图快得多(就像查询普通表一样)。

何时应该(以及不应该)使用数据库视图

在以下情况下,在数据库中创建视图是个好主意

  • 你需要定期访问复杂查询的结果,并且不想每次都输入该查询。

  • 你希望通过限制对敏感信息的访问来加强数据库安全性。

  • 你想要创建自定义列,而无需更改数据库的底层结构。

  • 你希望通过隐藏不太可能被查询的字段来简化表的显示。

但是,如果数据库的底层结构容易发生变化,你可能不想依赖视图;一旦字段名称更改,你建立为视图的查询可能会中断。

你的 BI 工具可能也具有一些功能,其作用类似于视图,无论是 模型已保存的问题 还是 SQL 代码段。这里的重要区别在于,这些都是 BI 工具世界中存在的功能,而视图(物化与否)是内置于数据库本身的功能。

视图示例

假设我们想使用 Metabase 的 示例数据库,基于 People 表创建一个视图,供我们在宾夕法尼亚州的团队访问信息,例如我们位于宾夕法尼亚州的客户的姓名、地址、生日和电子邮件,但不包括用户密码。

我们将在数据库中运行以下显示的查询来创建该视图,该查询创建视图,将其命名为 pennsylvania_customers,仅包含我们想要的 People 表中的列,并且仅显示 State 字段中的值是宾夕法尼亚州缩写 (PA) 的记录。

CREATE VIEW pennsylvania_customers
AS
SELECT
    id
    address
    email
    name
    city
    state
    birth_date
    zip
    created_at
FROM
    people
WHERE state = 'PA'

然后,对于未来的查询,我们在宾夕法尼亚州的团队可以通过查询 pennsylvania_customers 作为起点来访问他们需要的关于客户群的信息。

虽然视图是任何基于 SQL 的数据库或数据仓库的基本功能,但创建、物化和维护视图的具体细节可能因你使用的 数据库软件或数据仓库 而异。

相关术语

延伸阅读