元数据

目录和模式

所有在连接层级处理元数据以及可用内容信息的方法,均使用 SQL 标准中定义的术语提供信息,包括目录(catalog)和模式(schema)。

在大多数关系型数据库中,目录相当于服务器或集群上的特定数据库,而模式指的是该目录下的表、视图和存储过程的集合。

摘自 SQL 1992 标准(在此处查找存档副本)

(4.12) 目录是 SQL 环境中具名的模式集合。一个 SQL 环境可以包含零个或多个目录。一个目录包含一个或多个模式,但始终包含名为 INFORMATION_SCHEMA 的模式,其中存放信息模式的视图和域。

此驱动仅支持单一目录,该目录等同于驱动所连接的 Neo4j 数据库。元数据查询中不支持对目录模式进行过滤,除文字 null、空字符串(或全空格字符串)或当前数据库名称之外的任何值都会导致异常。

相同的标准对模式的定义如下

(4.11) SQL‑模式是一个持久的描述符,其中包括

[…] SQL‑模式每个组件的描述符。

在本国际标准中,“模式”一词仅用于 SQL‑模式的含义。每个组件描述符可以是域描述符、基表描述符、视图描述符、断言描述符、权限描述符、字符集描述符、排序规则描述符或转换描述符。由这些描述符所描述的持久对象被认为是属于或由模式的 <authorization identifier> 创建的。

我们在任何元数据结果集的结果组件中都报告文字名称 public 作为模式。我们支持对任意模式的对象进行查询,但只有文字 nullpublic 才可能返回结果,其他情况则不会。

标签将被报告为表对象,其 TABLE_TYPE 为文字 TABLE

总结

  • 目录:始终等于当前数据库;除空字符串外对其他任何内容进行过滤都会报错。

  • 模式:始终为 public;对 public 或文字 null 进行过滤会产生结果,其他情况则不会。

  • 表描述符:在 TABLE_TYPE 列中报告为 TABLE

标签映射为表

驱动程序按如下方式从节点类型计算表名

  • 单标签节点自然映射为表名,单一标签即成为表名

    • 标签名称保持原样并区分大小写。标签 MoviemovieMOVIE 会在元数据中产生三个不同的表。

    • 这与默认的 SQL‑to‑Cypher 转换保持一致

  • 节点类型组合映射为各自的表名,因此带有标签 Action&Movie 的节点会出现在两个表中,这符合当前默认的 SQL‑to‑Cypher® 翻译。

主键

驱动使用可用的约束信息,并会判断某个标签上是否存在单一唯一约束。如果存在,则受约束的属性将被视为主键。这同样适用于跨多个属性的唯一约束(即在 SQL 中的复合主键)。如果不存在唯一约束或存在多个唯一约束,我们则假定 v$id 虚拟列(对应 elementId 值)为主键。