为什么 HANA Table 名称有一个“/”?

Why Does HANA Table Name Have A "/"?

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

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

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

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

是不是因为HANA只允许这么多层使用“.”?
我试图搜索解释,但没有成功。
如果我能理解为什么,它会帮助我记住必要的语法。

好问题,但仅看 HANA(数据库)是无法回答的。

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

如果您看到 table 并查看 /BIC/<this_is_a_name> 这样的名称,那么这些是 SAP BW 对象(或来自使用 BW 技术的应用程序)。
对于所有实际问题,这是一种为数据库对象创建 命名空间 的方法。

现在,SQL 数据库为数据库对象提供了命名空间机制 - 您提到的在不同名称组件之间使用句点 . 的机制。

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

然而,并不是所有的 DBMS support/supported 都是在很多年前,当时 SAP BW 首次开发时(如果我没记错的话,大约在 1996/7 年)。例如,Oracle 只支持每个数据库用户一个模式。因此,要在此默认模式中创建 "namespaces",必须将 "within" 作为对象名称。

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

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

的一部分

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

上面提到过。

如果多于这两个句点,DBMS 就不知道是什么意思了。

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

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

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