資料庫對應 database-mapping

此頁面🔗中描述的範例結構描述的SQL對應會產生下列XML檔案:

<schema mappingType="sql" name="recipient" namespace="cus" xtkschema="xtk:schema">
  <enumeration basetype="byte" name="gender">
    <value label="Not specified" name="unknown" value="0"/>
    <value label="Male" name="male" value="1"/>
    <value label="Female" name="female" value="2"/>
  </enumeration>

  <element name="recipient" sqltable="CusRecipient">
    <attribute desc="Recipient email address" label="Email" length="80" name="email" sqlname="sEmail" type="string"/>
    <attribute default="GetDate()" label="Date of creation" name="created" sqlname="tsCreated" type="datetime"/>
    <attribute enum="gender" label="Gender" name="gender" sqlname="iGender" type="byte"/>
    <element label="Location" name="location">
      <attribute label="City" length="50" name="city" sqlname="sCity" type="string" userEnum="city"/>
    </element>
  </element>
</schema>

結構描述的根專案變更為​ <srcschema> ​為​ <schema>

這種其他型別的檔案會自動從來源結構描述產生,並僅被簡稱為結構描述。

SQL名稱是根據元素名稱和型別自動決定的。

SQL命名規則如下:

  • table:結構描述名稱空間和名稱的串連

    在我們的範例中,資料表的名稱是透過​ sqltable ​屬性中結構描述的主要元素輸入的:

    code language-sql
    <element name="recipient" sqltable="CusRecipient">
    
  • 欄位:前面有根據型別定義之前置詞的元素名稱:'i'代表整數,'d'代表雙精度,'s'代表字串,'ts'代表日期等。

    欄位名稱是透過每個型別​ <attribute> ​和​ <element> ​的​ sqlname ​屬性輸入的:

    code language-sql
    <attribute desc="Email address of recipient" label="Email" length="80" name="email" sqlname="sEmail" type="string"/>
    
NOTE
可以從來源結構描述多載SQL名稱。 若要這麼做,請在相關元素上填入「sqltable」或「sqlname」屬性。

用來建立從擴充綱要產生之表格的SQL命令檔如下:

CREATE TABLE CusRecipient(
  iGender NUMERIC(3) NOT NULL Default 0,
  sCity VARCHAR(50),
  sEmail VARCHAR(80),
  tsCreated TIMESTAMP Default NULL);

SQL欄位限制如下:

  • 數值和日期欄位中沒有null值
  • 數值欄位已初始化為0

XML欄位 xml-fields

依預設,任何​ <attribute> ​和​ <element> -typed專案都會對應到資料結構描述表格的SQL欄位。 不過,您可以用XML來參照此欄位,而非SQL,這表示資料會儲存在包含所有XML欄位值的表格之備忘錄欄位(「mData」)中。 這些資料的儲存是觀察結構描述結構的XML檔案。

若要在XML中填入欄位,您必須將值為「true」的​ xml ​屬性新增到相關專案。

範例:以下是兩個XML欄位使用範例。

  • 多行註解欄位:

    code language-sql
    <element name="comment" xml="true" type="memo" label="Comment"/>
    
  • HTML格式的資料說明:

    code language-sql
    <element name="description" xml="true" type="html" label="Description"/>
    

    「html」型別可讓您將HTML內容儲存在CDATA標籤中,並在Adobe Campaign使用者端介面中顯示特殊的HTML編輯檢查。

使用XML欄位來新增欄位,而不需修改資料庫的實體結構。 另一個優點是,您使用的資源較少(配置給SQL欄位的大小、限制每個表格的欄位數等)。 不過,請注意,您無法索引或篩選XML欄位。

索引欄位 indexed-fields

索引可讓您最佳化應用程式中使用的SQL查詢效能。

從資料結構描述的主要元素宣告索引。

<dbindex name="name_of_index" unique="true/false">
  <keyfield xpath="xpath_of_field1"/>
  <keyfield xpath="xpath_of_field2"/>
  ...
</key>

索引遵循下列規則:

  • 索引可以參考表格中的一或多個欄位
  • 如果​ unique ​屬性包含「true」值,則所有欄位中的索引都可以是唯一的(以避免重複)
  • 索引的SQL名稱是由表格的SQL名稱和索引的名稱所決定
NOTE
  • 作為標準,索引是從結構描述的主要元素宣告的第一個元素。

  • 索引是在表格對應期間自動建立(標準或FDA)。

範例

  • 新增索引至電子郵件地址和城市:

    code language-sql
    <srcSchema name="recipient" namespace="cus">
      <element name="recipient">
        <dbindex name="email">
          <keyfield xpath="@email"/>
          <keyfield xpath="location/@city"/>
        </dbindex>
    
        <attribute name="email" type="string" length="80" label="Email" desc="Email address of recipient"/>
        <element name="location" label="Location">
          <attribute name="city" type="string" length="50" label="City" userEnum="city"/>
        </element>
      </element>
    </srcSchema>
    
  • 新增唯一索引至「id」名稱欄位:

    code language-sql
    <srcSchema name="recipient" namespace="cus">
      <element name="recipient">
        <dbindex name="id" unique="true">
          <keyfield xpath="@id"/>
        </dbindex>
    
        <dbindex name="email">
          <keyfield xpath="@email"/>
        </dbindex>
    
        <attribute name="id" type="long" label="Identifier"/>
        <attribute name="email" type="string" length="80" label="Email" desc="Email address of recipient"/>
      </element>
    </srcSchema>
    

了解更多

瀏覽以下連結以瞭解更多資訊:

recommendation-more-help
601d79c3-e613-4db3-889a-ae959cd9e3e1