数据介体服务的元数据
数据介体服务 (DMS) 是连接到后端数据库的服务数据对象 (SDO) 组件。它是通过特定于后端的元数据创建的。元数据定义 DMS 生成的 Datagraph 的结构以及用于后端的查询。
元数据由以下组件组成:
- 表
- 这表示目标数据库中的表并且由以下项组成:
- 名称
- 这是数据库表名。表可能还具有属性名,属性名可用于指定与此表相对应的 DataObject 的名称。缺省情况下,属性名与表名相同。
- 列
- 要从数据库返回的数据库表列的子集。列具有类型,其类型相当于 JDBC 类型,并且它可以禁止空条目。列有名称和可选属性名,其名称与数据库中的名称相对应,可选属性名用于标识 DataObject 中的列名。缺省情况下,属性名与数据库中的列名相同。
- 主键
- 用于唯一地标识表中的行的列(或多列)。注: 键可能是由多列组成的。以下示例描述了复合主键的创建:
如果一张表与该表相关并且是子表,那么使用相同的方法来创建外键以指向此同级表。Key pk = MetadataFactory.eINSTANCE.createKey(); pk.getColumns().add(xColumn); pk.getColumns().add(yColumn); coordinateTable.setPrimaryKey(pk);
- 外键
- 用于使表与元数据中的其他表相关的列(或多列)。复合主键和外键之间存在假设的位置映射。例如,如果父表有如 (x,y) 的主键,其类型分别是(整型,字符串),那么期望任何指向的外键也是 (x',y'),其类型分别是(整型,字符串)。注: 键可能是由多列组成的。以下示例描述了复合外键的创建:
如果一张表与该表相关并且是子表,那么使用相同的方法来创建外键以指向此同级表。Key fk = MetadataFactory.eINSTANCE.createKey(); fk.getColumns().add(xColumn); fk.getColumns().add(yColumn); coordinateTable.getForeignKeys().add(fk);
- 过滤器
- 之后可以给定 with 或 without 参数来填充的结构化查询语言 (SQL)WHERE 子句谓词。将它添加到 DataGraph SELECT 语句 WHERE 子句。不会以任何方式解析或解释过滤器;按原样使用。如果之后给定 with 参数来填充,那么这些参数会成为获取 Datagraph 时传递到 JDBC DMS 的自变量。过滤器只与生成的查询协同使用。如果给定提供的查询,那么忽略元数据过滤器。
- 关系
- 通过父表的主键和子表的外键来关联两张表。关系由以下各项组成:
- 名称
- 这是给定关系的名称,通常与这两张表如何相关关联。如果 Customers 是父表且 Orders 是子表,那么关系的缺省名称是 Customers_Orders。
- 相对名称
- 这是用于从子 DataObject 浏览到父 DataObject 的名称。
- 父键
- 父表的主键。
- 子键
- 子表的指向父键的外键。
- 互斥
- 缺省情况下,关系使生成的查询对该关系中涉及的两张表使用内连接操作。这意味着只返回有子代(即,指向父条目的子条目)的父条目。如果互斥属性的值设置为 false,那么查询改为使用左外连接操作并返回所有父条目(甚至是没有子代的那些父条目)。
- 排序
- 用于对表进行排序的列。可以按升序或降序排序。当指定排序方式时,这使得生成的查询包含 ORDER BY 子句。