SAP HANA中一些重要的系统表或视图(2)——查询依赖关系

本文介绍了OBJECT_DEPENDENCIES系统视图在数据库建模中的重要性,用于检测视图、表等对象之间的依赖关系,以及如何编写SQL查询来查找依赖和被依赖的对象。同义词的概念也在此得到解释,作为数据库对象的别名管理工具。
摘要由CSDN通过智能技术生成

OBJECT_DEPENDENCIES 系统视图

此视图提供了有关对象之间依赖关系的信息,哪些视图引用了特定的表。

建模的时候,理解对象之间的依赖关系是非常重要的。例如,如果你正在考虑修改一个表,你需要知道哪些视图、存储过程或其他对象可能会被影响。

OBJECT_DEPENDENCIES 系统视图可以帮助识别这些依赖关系,从而更好地管理模型。这个视图包含了诸如对象名称、对象类型(如表或视图),依赖对象的名称和类型等信息。

列名称描述
BASE_SCHEMA_NAME基础对象的模式名称
BASE_OBJECT_NAME基础对象的对象名称
BASE_OBJECT_TYPE基础对象的类型
DEPENDENT_SCHEMA_NAME依赖对象的模式名称
DEPENDENT_OBJECT_NAME依赖对象的对象名称
DEPENDENT_OBJECT_TYPE依赖对象的类型
DEPENDENCY_TYPE基础对象和依赖对象之间的依赖类型

如何使用这个视图,我们来看具体的例子。

需求一:我想要知道我的视图用了哪些模型和底表

那么代码可以这么写。

其中BASE_SCHEMA_NAME和BASE_OBJECT_NAME是引用的底表或模型,BASE_OBJECT_TYPE是类型。

根据官网的说法,可以更详细地理解 DEPENDENCY_TYPE 列

显示的对象包括持久对象和临时对象。

可以使用 DEPENDENCY_TYPE 列来区分这些对象依赖类型,如下:

EXTERNAL_DIRECT:基础对象直接用在依赖的过程中。

EXTERNAL_INDIRECT:基础对象并未直接用在依赖的过程中。

所以如果 DEPENDENCY_TYPE=1则表示直接引用了查询对象,其余则是跨层级引用了。

SELECT * FROM "SYS"."OBJECT_DEPENDENCIES"
WHERE 
DEPENDENT_OBJECT_NAME = '视图名称'

 需求二:我想要知道我的底表被哪些模型用了

 其实跟上边的代码差不多,只是上边是根据DEPENDENT_SCHEMA_NAME取BASE相关信息,这里是根据BASE_OBJECT_NAME取相关的DEPENDENT信息。

SELECT * 
FROM "SYS"."OBJECT_DEPENDENCIES"
WHERE 
BASE_OBJECT_NAME = '模型'
AND LOCATE(DEPENDENT_OBJECT_NAME,'hier')=0  --层次结构,包括字段,我们这里取模型故过滤
AND DEPENDENT_SCHEMA_NAME!='PUBLIC' --PUBLIC存放的是Synonym类型,不是我们的view
ORDER BY DEPENDENCY_TYPE ASC

上边有过滤Synonym类型,什么是Synonym呢?其实之前也没有特别关注过,根据官网的定义:

A synonym is an alternative name for a database table. You can use synonyms, for example, in order to shorten long or complicated table names.

Within a database schema, each synonym needs to have a unique name that is different from all other table names.

synonym同义词 使用 同义词是数据库表的另一个名称。例如,你可以使用同义词来缩短长的或复杂的表名。

在数据库模式中,每个同义词都需要有一个独特的名称,与所有其他表名都不同。

同义词是数据库中的一种对象,可以为表、视图、序列、存储过程、函数等数据库对象提供别名。这样,用户就可以使用这个别名来引用原始对象,而无需知道对象的实际名称或位置。这在处理复杂的数据库结构或跨模式访问时非常有用。

 

  • 31
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值