スキーマエディションについて about-schema-edition
Adobe Campaign では、次の目的でデータスキーマを使用しています。
- アプリケーション内のデータオブジェクトが基盤となるデータベーステーブルにどのように関連付けられるかの定義
- Campaign アプリケーション内での異なるデータオブジェクト間リンクの定義
- 各オブジェクトに含まれている個々のフィールドの定義と記述
Adobe Campaign キャンペーンのビルトインテーブルとそのやり取りについて詳しくは、この節を参照してください。
スキーマの拡張または作成 extending-or-creating-schemas
Campaign の中核となるデータスキーマ(受信者テーブル nms:recipient など)にフィールド、インデックスなどの要素を追加する場合は、スキーマを拡張する必要があります。 詳しくは、 スキーマの拡張の節を参照してください。
Adobe Campaign にあらかじめ用意されていないまったく新しい型のデータ(例:契約表)を追加するには、カスタムスキーマを直接作成します。 詳しくは、 データスキーマの節を参照してください。
作業するスキーマを拡張または作成したら、その XML コンテンツ要素を以下に示すのと同じ順序で定義することをお勧めします。
列挙 enumerations
定義済みリストは、スキーマのメイン要素より先に定義します。これにより、特定のフィールドに使用できる値のリストを表示して、ユーザーによる選択肢を制限することができます。
例:
<enumeration basetype="byte" name="exTransactionTypeEnum" default="store">
<value label="Website" name="web" value="0"/>
<value label="Call Center" name="phone" value="1"/>
<value label="In Store" name="store" value="2"/>
</enumeration>
フィールドを定義する際は、次のような定義済みリストを使用できます。
<attribute desc="Type of Transaction" label="Transaction Type" name="transactionType"
type="string" enum="exTransactionTypeEnum"/>
インデックス index
インデックスは、スキーマのメイン要素で宣言される最初の要素です。
一意のフィールドとそうでないフィールドがあり、1 つ以上のフィールドを参照しています。
例:
<dbindex name="email" unique="true">
<keyfield xpath="@email"/>
</dbindex>
<dbindex name="lastNameAndZip">
<keyfield xpath="@lastName"/>
<keyfield xpath="location/@zipCode"/>
</dbindex>
xpath 属性は、インデックスを作成するスキーマ内のフィールドを指します。
インデックスについて詳しくは、「 インデックス付きフィールドを参照してください。
キー keys
各テーブルには少なくとも 1 つのキーが必要です。通常、@autopk=true 属性を「true」に設定すると、スキーマのメイン要素にキーが自動的に設定されます。
プライマリキーは、internal 属性を使用して定義することもできます。
例:
<key name="householdId" internal="true">
<keyfield xpath="@householdId"/>
</key>
この例では、@autopk 属性で「id」という名前のデフォルトのプライマリキーを作成する代わりに、独自の「householdId」というプライマリキーを指定します。
キーの詳細については、 キーの管理の節を参照してください。
属性(フィールド) attributes--fields-
属性を使用すると、データオブジェクトを構成するフィールドを定義できます。スキーマエディションのツールバーの「挿入」ボタンを使用すると、カーソルのある XML に空の属性テンプレートをドロップできます。詳しくは、 データスキーマの節を参照してください。
すべての属性のリストは、「<attribute>
要素」セクションで入手きます。 よく使用される属性の一部を次に示します。
-
@advanced
-
@dataPolicy
-
@default
-
@desc
-
@enum
-
@expr
-
@label
-
@length
-
@name
-
@notNull
-
@required
-
@ref
-
@xml
-
@type
様々なデータベース管理システム用にAdobe Campaignで生成されるデータタイプのマッピングをリストしたテーブルを表示するには、Adobe Campaign/DBMS データのタイプのマッピングの節を参照してください。
各属性の詳細については、「 属性の説明」を参照してください。
例 examples
デフォルト値の定義例:
<attribute name="transactionDate" label="Transaction Date" type="datetime" default="GetDate()"/>
必須のマークも付けるフィールドのテンプレートとして共通属性を使用する例:
<attribute name="mobile" label="Mobile" template="nms:common:phone" required="true" />
“”@advanced 属性を使用して非表示にする計算フィールドの例。
<attribute name="domain" label="Email domain" desc="Domain of recipient email address" expr="GetEmailDomain([@email])" advanced="true" />
@dataPolicy 属性を持ち、SQL フィールドにも格納される XML フィールドの例。
<attribute name="secondaryEmail" label="Secondary email address" length="100" xml="true" sql="true" dataPolicy="email" />
XML フィールドは、テーブルのメモ型フィールド(mData)に格納されます。
ただし、計算フィールドはクエリを起動するたびに動的に作成されるので、作用するレイヤーにのみ存在します。
リンク links
スキーマのメイン要素の中で最後の要素のいくつかはリンクです。リンクは、インスタンス内の様々なスキーマを相互にどのように関連付けるかを定義します。
リンクは、リンク先のテーブルの 外部キー を含んだスキーマで宣言します。
カーディナリティには、1-1、1-N、N-N の 3 つのタイプがあります。デフォルトで使用するのは 1-N タイプです。
例 examples-1
受信者テーブル(標準提供のスキーマ)とカスタムトランザクションテーブルの間の 1 - N リンクの例:
<element label="Recipient" name="lnkRecipient" revLink="lnkTransactions" target="nms:recipient" type="link"/>
カスタムスキーマ「Car」(「cus」名前空間内)と受信者テーブルの間の 1 - 1 リンクの例:
<element label="Car" name="lnkCar" revCardinality="single" revLink="recipient" target="cus:car" type="link"/>
受信者テーブルと、プライマリキーでないメールアドレスで構成されるアドレステーブルとの外部結合の例:
<element name="emailInfo" label="Email Info" revLink="recipient" target="nms:address" type="link" externalJoin="true">
<join xpath-dst="@address" xpath-src="@email"/>
</element>
「xpath-dst」はターゲットスキーマのプライマリキーに対応し、「xpath-src」はソーススキーマの外部キーに対応します。
監査記録 audit-trail
スキーマの最後に含めると便利な要素の 1 つは、トラッキング要素(監査記録)です。
次の例を使用すると、テーブル内のすべてのデータの作成日、作成者、最終更新日、最終更新者に関するフィールドを含めることができます。
<element aggregate="xtk:common:auditTrail" name="auditTrail"/>
データベース構造の更新 updating-the-database-structure
変更を完了して保存したらデータベースに適用する必要がありますが、この変更は SQL 構造に影響を与える可能性があります。データベースに適用するには、データベース更新ウィザードを使用します。
詳しくは、データベース構造の更新の節を参照してください。