首页 > 解决方案 > 视图可用于提供向后兼容的接口

问题描述

视图可用于提供向后兼容的接口来模拟曾经存在但其架构已更改的表。

Sql Server - 数据库设计 - 视图

这是什么意思,有人能解释一下吗?

是说,当用于创建视图的表架构发生变化时,不会改变视图吗?

标签: sqlsql-serverview

解决方案


使用数据库的一大问题是随着时间的推移处理变化。问题是下游用户依赖于他们使用的数据模型。

您可以通过让下游用户依赖视图而不是直接访问基表来隔离下游用户。

例如,您可能从一个表开始,该表包含一个带有address列的用户表。下游的人们以如下方式访问该表:

select u.*
from users u;

后来,您意识到地址可以更改,并且您希望为地址实现一个类型 2 表——即,一个单独的表,每条记录都有一个生效日期和结束日期。好吧,现有的代码会中断。

相反,如果下游用户正在使用:

select u.*
from v_users u;

然后视图只需要从:

create view v_users as
    select u.user_id, u.address
    from users u;

至:

create view v_users as
     select u.user_id
     from users u join
          user_addresses ua
          on ua.user_id = u.user_id and
             current_timestamp >= ua.eff_ts and
             (current_timestamp < ua.end_ts or ua.end_ts is null);

瞧!下游没有任何中断。


推荐阅读