2

Account_Nameinfo_T の行を一意に識別する一連のフィールドを特定しようとしています。Oracle BRM は制約を使用しないため、そのように判断することはできません。これらの分野を知っている人はいますか?さらに良いことに、BRM の他のテーブルについてこれを特定する方法を知っている人はいますか?

(明らかに、SO には Oracle-Brm タグはありません)。

4

2 に答える 2

2

@Pavel Chernikovが提供する(良い)回答にもう少し情報を追加するだけです。

一般に、BRM はクラスの定義を 3 つのデータ ディクショナリ テーブル (つまりDD_OBJECTS_T、 、DD_FIELDS_TおよびDD_OBJECTS_FIELDS_T) に格納しますが、便利なグラフィカル ビューを表示するには、Developer Center のクラス ブラウザを使用する必要があります。

さらに、BRM ドキュメント (BRM ドキュメント - リファレンス - データベース リファレンス - 格納可能なクラス定義の下) には、クラス定義に関する広範な情報が含まれています。

/accountたとえば、クラスを見てみましょう。

  • SQL マッピング セクションで、テーブルにマッピングされていることがわかりますACCOUNT_T
  • PIN_FLD_NAMEINFOテーブルにマップされた配列がありますACCOUNT_NAMEINFO_T
  • したがって、レコードACCOUNT_NAMEINFO_Tはカップルによって一意に識別されます
    1. OBJ_ID0POID_ID0の対応するレコードの (*)への外部キーと考えることができます。ACCOUNT_T
    2. REC_IDこれは要素 ID と呼ばれACCOUNT_NAMEINFO_T、 の同じレコードに対して可能な複数のレコードを区別するために使用されます。ACCOUNT_T
  • ドキュメントは、要素 ID の機能的な意味のヒントも提供します。

    array PIN_FLD_NAMEINFO: アカウントの連絡先情報。この配列には、連絡先のタイプの説明を含む任意の数の連絡先が含まれます。element-id は、請求連絡先 (1) とメール連絡先 (2) を除いて重要ではありません。element-id の 3 ~ 100 は予約されています。

  • さらにネストする場合、次のような追加の要素IDが使用されREC_ID2ます。PIN_FLD_PHONESPIN_FLD_NAMEINFOACCOUNT_PHONES_TOBJ_ID0REC_IDREC_ID2

(*) 一般に、POID は 4 つの要素で構成されることに注意してください。

  1. ID ( POID_ID0)
  2. タイプ ( POID_TYPE)
  3. データベース番号 ( POID_DB)
  4. リビジョン番号 ( POID_REV)

ただし、単一 DB インストールの場合、およびこの説明のために、ID は特定のテーブル内のレコードを一意に識別するのに十分であると想定できます。

于 2020-02-18T11:44:01.237 に答える