元数据

目录和模式

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

在大多数关系型数据库中,目录(catalog)等同于服务器或集群上的特定数据库,而模式(schema)则指该目录中表、视图和存储过程的集合。

引自 SQL 1992 标准(此处可找到存档副本)

(4.12) 目录(Catalog)是 SQL 环境中模式(Schema)的命名集合。一个 SQL 环境包含零个或多个目录。一个目录包含一个或多个模式,但总是包含一个名为 INFORMATION_SCHEMA 的模式,该模式包含信息模式的视图和域。

此驱动程序仅支持单个目录(catalog),该目录与驱动程序连接到的 Neo4j 数据库相同。元数据查询不支持对目录模式进行过滤,除了字面值 null、空字符串、空白字符串或当前数据库名称之外的所有值都将导致异常。

同一标准对模式(schema)的定义如下

(4.11) SQL 模式(SQL-schema)是一种持久性描述符,包括

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

在本国际标准中,“模式(schema)”一词仅用于 SQL 模式的含义。每个组件描述符要么是域描述符、基本表描述符、视图描述符、断言描述符、特权描述符、字符集描述符、排序规则描述符,要么是转换描述符。由这些描述符描述的持久性对象被认为是归模式的 <授权标识符> 所有或由其创建的。

我们将字面值 public 报告为元数据结果集中任何结果组件的模式(schema)。我们支持查询任何模式中的对象,但只有字面值 nullpublic 才可能产生结果。

标签将作为表对象报告,其中 TABLE_TYPE 为字面值 TABLE

总结

  • 目录(Catalog):始终等于当前数据库;除空字符串之外的任何过滤都将出错。

  • 模式(Schema):始终为 public;对 public 和字面值 null 进行过滤将产生结果,否则不会。

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

标签到表

CLG 和 Langstar 小组讨论了“节点类型组合”,并倾向于 GQL 标准中的“开放节点类型语义”

节点类型组合是开放节点类型语义的一种限制性较低的形式。节点类型组合的思想是,如果节点不属于图类型节点类型集中的任一节点类型,而是属于图类型节点类型集中(子集)的节点类型的交集,那么这些节点也符合图类型。

他们提案的一个示例可在此处找到。

因此,此驱动程序以类似的方式计算节点类型

  • 单标签节点将自然映射到表名,该单标签将成为表名

    • 标签名将原样保留,并且区分大小写。标签 MoviemovieMOVIE 将在元数据中生成三张表

    • 这与默认的 SQL 到 Cypher 转换一致

  • 节点类型组合将映射到由 label1_label2 组成的表名,标签将按字母顺序排序,使其独立于 Neo4j 返回的顺序

  • 然后将计算这些节点类型组合的属性集

主键

驱动程序使用可用的约束信息,并会判断标签上是否存在单个唯一约束。如果是这种情况,受约束的属性将被视为主键。这对于多个属性上的唯一约束(在 SQL 术语中称为复合主键)也适用。如果没有唯一约束或存在多个,我们则假定 elementId 值的 v$id 虚拟列为主键。

© . All rights reserved.