# ❖ ReferenceTable

{% hint style="info" %}
❖ **SDV Enterprise Bundle**. This feature is available as part of the **CAG Bundle**, an optional add-on to SDV Enterprise. For more information, please visit the [CAG Bundle](https://docs.sdv.dev/sdv/explore/sdv-bundles/cag) page.
{% endhint %}

Use the **ReferenceTable** constraint when you have a table that acts as an unchangeable reference. That is to say, you do not want to synthesize an new information in it; the table's contents should always remain as-is.

When you apply this constraint, the reference table's contents remains as-is. At the same time, synthetic data is generated for all other tables, including ones that link to the reference table.

<figure><img src="https://1967107441-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfNxEeZzl9uFiJ4Zf4BRZ%2Fuploads%2FFa0xI9RamUmT3kelMpEW%2Freference-table_May%208%202025.png?alt=media&#x26;token=8d5ea4f9-c807-481b-b9de-5857b9ae333b" alt=""><figcaption><p>In this example, the <code>City</code> table is a reference table. You do not want to synthesize new cities, but you do want to synthesize other tables that link to the cities such as <code>Supplier</code>, <code>Product</code>, etc.</p></figcaption></figure>

## Constraint API

{% hint style="warning" %}
**This functionality is in Beta.** At this time, select SDV Enterprise users have been invited to use this feature.
{% endhint %}

Create a `ReferenceTable` constraint

**Parameters**:&#x20;

* (required) `reference_table_names`: A list of strings representing all the reference tables that are in your schema.&#x20;

```python
from sdv.cag import ReferenceTable

my_constraint = ReferenceTable(
    reference_table_names=['City'])
```

Make sure that all table names you provide are in your [Metadata](https://docs.sdv.dev/sdv/concepts/metadata). Reference tables are not allowed to have any foreign key references to non-reference tables.

## Usage

Apply the constraint to any SDV synthesizer. Then fit and sample as usual.

```python
synthesizer = HSASynthesizer(metadata)
synthesizer.add_constraints([my_constraint])

synthesizer.fit(data)
synthetic_data = synthesizer.sample()
```

For more information about using predefined constraints, please see the [**Constraint-Augmented Generation tutorial**](https://colab.research.google.com/drive/1WCMQujfVKL5giULZXOPPIBoMfzR9Zj68?usp=sharing).

## Auto-Detection

Auto-detection not available for this constraint. Please create the constraint object and add it to the synthesizer using the API described above.
