0

在使用 HANA SQL 时,我需要习惯一些事情。
就像使用全部大写一样,但我真的不明白为什么“/”是必要的。
由于“/”,我必须将表名括在“...”(双引号)中。

"_SYS_BIC"."NGDW.SM.PVT/MY_TABLE_NAME"

“/”的意义是什么?
为什么不能是“.”(点)?

"_SYS_BIC"."NGDW.SM.PVT.MY_TABLE_NAME"

是因为HANA只允许使用“。”的级别这么多吗?
我试图寻找解释,但没有成功。
如果我能理解原因,它将帮助我记住必要的语法。

4

1 回答 1

3

好问题,一个仅通过查看 HANA(数据库)无法回答的问题。

SAP 的数据仓库应用程序 SAP Business Warehouse (SAP BW) 多年来一直使用这种命名数据库对象的方式,甚至比 HANA 还早。

如果您看到类似的表和视图名称,/BIC/<this_is_a_name>则这些是 SAP BW 对象(或来自使用 BW 技术的应用程序)。对于所有实际问题,这是为 DB 对象
创建名称空间的一种方式。

现在,SQL DB 带有一种用于 DB 对象的命名空间机制——您提到的.在不同名称组件之间使用句点的机制。

<DB name>. <schema name>. <object name>是一个常见的方案。

但是,并非所有 DBMS 都支持/支持很多年前,当 SAP BW 首次开发时(如果我没记错的话,大约是 1996/7 年)。例如,Oracle 仅支持每个 DB 用户一个模式。因此,要在这个默认模式中创建“命名空间”,必须在对象名称“内”进行。

正如您所指出的, SAP 选择了正斜杠/来分割对象名称,并且由于为 SQL 指定的对象命名规则,这要求必须引用该名称。

如果分隔符是句号,那会有什么不同.吗?
一点也不。由于句点字符对 SQL 具有特殊含义,因此 DBMS 会尝试将其解释为

<DB name>. <schema name>.<object name>

上文提到的。

如果提供的时间多于这两个时间段,则 DBMS 不知道这意味着什么。

当谈到 SAP HANA 中的“图形视图”(信息模型)时,还有另一个方面发挥作用。
经典的 XS 建模/开发面向开发工件的中央存储库。DB 对象和 XSJS (JavaScript) 程序的所有源代码都存储在此存储库中,并从那里“激活”(考虑编译和部署)。
此存储库中的组织结构是“包”,其行为类似于文件夹和子文件夹,与您在例如 JAVA 项目中找到的非常相似)。在这个包结构中,每个单独的对象都可以通过其完整的“路径”来唯一地寻址,例如<main package>. <sub-package>. <sub-sub-package>/ <objectname>

这就是视图名称中混合句点.和正斜杠/的来源。

请注意,所有这些仍处于传统水平,即在技术上绝对可以在没有所有名称空间 zip-zap 的情况下创建计算视图。那时您就不能使用图形建模工具。

于 2020-03-11T08:40:16.857 回答