2

我正在尝试确定一组唯一标识 Account_Nameinfo_T 中的行的字段。Oracle BRM 不使用任何约束,因此我无法以这种方式确定它。有人知道这些领域吗?更好的是,有谁知道我如何为 BRM 中的其他表确定这一点?

(显然SO中没有Oracle-Brm标签)。

4

2 回答 2

2

OBJ_ID0 和 REC_ID 的组合是唯一标识 ACCOUNT_NAMEINFO_T 表中的行。

此表的 REC_ID 通常为 1 或 2(我相信 1 是 BILLING,2 是 SERVICE)。

Oracle BRM 中的主要表(如 ACCOUNT_T、EVENT_T、CONFIG_T)由 POID_ID0 唯一标识。

所有子表都由 OBJ_ID0(当表映射到 PIN_FLD_SUBSTRUCT)或 OBJ_ID0 和 REC_ID 的组合(当表映射到 PIN_FLD_ARRAY)唯一标识。

于 2014-11-26T16:04:35.707 回答
2

只是为@Pavel Chernikov 提供的(好的)答案添加更多信息。

通常,BRM 将类的定义存储在 3 个数据字典表(即DD_OBJECTS_TDD_FIELDS_T)中,DD_OBJECTS_FIELDS_T但您应该使用开发人员中心的类浏览器来获得方便的图形视图。

此外,BRM 文档(在 BRM 文档 - 参考 - 数据库参考 - 可存储类定义下)包含有关类定义的大量信息。

例如我们可以看一下这个/account类:

  • 在 SQL Mapping 部分,我们可以看到它映射到表ACCOUNT_T
  • PIN_FLD_NAMEINFO它有一个映射到表的数组ACCOUNT_NAMEINFO_T
  • 因此,记录ACCOUNT_NAMEINFO_T将由这对夫妇唯一标识
    1. OBJ_ID0, 可以认为是POID_ID0对应记录的 (*) 的外键ACCOUNT_T
    2. REC_ID,称为元素ID,用于区分ACCOUNT_NAMEINFO_T同一记录中可能的多条记录ACCOUNT_T
  • 该文档还为我们提供了元素 ID 功能含义的提示

    array PIN_FLD_NAMEINFO:帐户的联系信息。该数组包含任意数量的联系人以及联系人类型的描述。除了帐单联系人 (1) 和邮寄联系人 (2) 之外,元素 ID 并不重要。element-id 的 3-100 是保留的。

  • 在进一步嵌套的情况下,将使用其他元素 ID,例如REC_ID2:例如,数组PIN_FLD_PHONES,在同一个数组PIN_FLD_NAMEINFO中,映射到表ACCOUNT_PHONES_T,其中一条记录将由三元组 ( OBJ_ID0, REC_ID, REC_ID2)唯一标识

(*) 请注意,一般来说,一个 POID 由 4 个元素组成:

  1. 一个 ID ( POID_ID0)
  2. 一个类型 ( POID_TYPE)
  3. 数据库编号 ( POID_DB)
  4. 修订号 ( POID_REV)

但是,对于单数据库安装并且为了讨论,我们可以假设 ID 足以唯一标识给定表中的记录。

于 2020-02-18T11:44:01.237 回答