---
title: Relational Based XDM
slug: us-bank-ajo-oc-lab-april26/relational-based-xdm
docTags: 
createdAt: 2025-10-15T21:01:49.087Z
---

![](https://experienceleague.adobe.com/en/docs/journey-optimizer/using/campaigns/orchestrated-campaigns/data-configuration/schemas-datasets/media_1ac0bceb690e93404e27f371fe3ea1060cc2e662f.png?width=2000\&format=webply\&optimize=medium)

:::ExpandableHeading{isOpen="true"}
## Lab Material

### Sample DDL

You can either download the file or copy the contents and save it in a note pad (notepad++, notes, textEdit, etc) with the extension .ddl.

::File{src="https://api.archbee.com/api/presign/1Jp0iolWv35Z_mkI7oUiT/HAX6y-9H-baSGh_gYCvk0-20260407-141526.ddl" label="campaign_file.ddl"}

```sql
-- =====================================================================
-- CAMPAIGN_MEMBERSHIP_FILE
-- Ad-hoc campaign history / suppression file for OC
-- (external offers history, non-Adobe)
-- =====================================================================

CREATE TABLE CAMPAIGN_MEMBERSHIP (
    CustomerID   VARCHAR(64)   NOT NULL,  -- logical FK -> CUSTOMER_FILE.CustomerID
    CampaignID   VARCHAR(64)   NOT NULL,  -- e.g. 'BUSINESS_CHECKING_OFFER'
    Channel      VARCHAR(64)            , -- 'EMAIL', 'DIRECT_MAIL', etc.
    SendDate     DATE          NOT NULL,  -- date of the send

    -- Version column (required) for OC version descriptor
    LastModified TIMESTAMP      NOT NULL,

    -- Composite PK: same customer can be in multiple campaigns and dates
    CONSTRAINT PK_CAMPAIGN_MEMBERSHIP_FILE
        PRIMARY KEY (CustomerID, CampaignID, SendDate)
);
```
:::

:::ExpandableHeading{isOpen="true"}
## Exercise

### Upload Your DDL

- Under **Data Management**, click **Schemas**.
- Click **Create Schema**
- Select the option **Relational Schema**
- Select the option **Upload DDL File**
- Drag and Drop your DDL File, Click **Next**

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/bsoY-lONjbbjvKUlukHkQ-20260116-150008.png)

### Entities and Fields to Import

We are creating a flat table with a Primary Key without relatable entities or identity namespaces (we will connect this data to a profile during our campaign workflow). However, we must do a few things here:

- Add your initials to the dataset name so every participant has a different table of their own. "CAMPAIGN\_MEMBERSHIP\_INITIALS"
- Select the **LastModified** as the version column.&#x20;
- Click Done.

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/faM3FDHqqK92ndkGbxf_9-20251015-224856.png)
:::

