Oracle Endeca Serverのデータ・モデルでは、主キー属性(レコード指定子とも呼ばれる)を使用して、Endecaデータ・ドメインのデータ・レコードを一意に識別します。
Endecaデータ・ドメインの各データ・レコードは、一意の標準属性とそのレコードにのみ出現する値を組み合せた一意の値ペアによって一意に識別されます(つまり、そのレコードと同じキー/値ペアを持つ他のレコードはデータセット内に存在しません)。この一意の標準属性は、主キー属性と呼ばれます。主キー属性と、データ・レコードに割り当てられた値が、そのレコードの主キー(レコード指定子)になります。
Endecaデータ・ドメインに追加される各データ・レコードには、Oracle Endeca Serverが一意に識別できるよう、厳密に1つの主キーが一意に割り当てられている必要があります。この要件は、スキーマ(システム・レコード)がまだ定義されていない空のデータ・ドメインにレコードを追加する場合に適用されます。
属性の一意性が保証されるかぎり、任意の属性を主キーとして使用できます。1つのEndecaデータ・ドメインで同じ属性値を持っているレコードが複数存在しない場合、属性は一意です。(デフォルトで、標準属性は一意ではありません。標準属性を一意にするには、レコードをロードする前に、標準属性の構成をそのPDRで更新する必要があります。)
主キー属性のタイプには、サポートされる任意のDgraphプロパティ・タイプを指定できます。主キー属性の名前は、NCName書式を使用する必要があります。通常、主キー属性には、mdex:stringまたはmdex:intタイプを使用します。
主キー属性のPDR (Property Description Record)では、mdex-property_IsUnique属性がtrueに設定されている必要があります。つまり、値を複数のレコードに割り当てることはできません。
たとえば、主キー属性の名前がpartIDであるとします。値partID=P123は、データセット内の1つのレコードにのみ割り当てることができ、そのレコードの主キーになります。他のレコードがこのキー/値ペアを保持することはできません。結果として、この主キーによって、Endecaデータ・ドメイン内でこのデータ・レコードが一意に識別されます。
各データ・ドメインには、主キーの標準属性が1つ以上必要ですが、この主キー属性にはデータ・レコードのタイプごとに様々な属性を使用できます。これにより、Oracle Endeca Serverでは複数の異なるレコード・タイプを処理でき、それぞれが意味のある識別用の標準属性を持つことができます。たとえば、様々な種類の商品を取り扱っている店舗では、本のレコードをbookID主キー属性で識別し、衣料品のレコードをapparelID属性で識別します。
<ingest:ingestFault xmlns:ingest="http://www.endeca.com/MDEX/ingest/3/0"> <ingest:errorDetail>Error applying updates: Assignment bookID: "5544" is second unique assignment on record Record: apparelID: "4455" bookID: "5544"</ingest:errorDetail> </ingest:ingestFault>
この例で示したように、2番目の一意の割当て(bookID)によってエラーが発生します。
コレクションを使用する場合、各コレクションは独自のコレクションspec(一意のプロパティ・キーとも呼ばれる)で作成されます。このコレクションspecは、そのコレクションの主キーであるため、主キーのルールに従います。収集の際、このコレクションspecはコレクション内のレコードの主キーとしても機能します。
コレクションの作成の詳細は、『Oracle Endeca Server開発者ガイド』を参照してください。
管理属性を使用する場合、管理属性値specごとに独自の主キーがあります。これらのspecは、Endecaデータ・ドメインの索引で管理属性値を一意に識別するために使用されます。管理属性値の操作方法の詳細は、『Oracle Endeca Server開発者ガイド』を参照してください(データ・インジェストWebサービスを使用して管理属性値を追加することもできます)。