> ## Documentation Index
> Fetch the complete documentation index at: https://docs.snaplabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a conceptual model

> Build a conceptual model with concepts, relationships, the canvas, and the AI copilot.

## What you're building

Conceptual modeling is the process of describing the important things a business cares about — such as customers, orders, products, and accounts — and defining how those things relate to each other, without getting into database structures or technical implementation. It gives data modeling a clear business foundation before tables, columns, and schemas are designed. That helps the resulting data model reflect how the business actually works, use consistent definitions, and stay understandable to both technical and non-technical people.

Concepts and relationships can be enriched with additional meaning to form a business ontology. That might include descriptions, synonyms, attributes, and references to where the physical data is stored.

The conceptual model then provides the foundation for logical, physical, and semantic data modeling.

In Snap Data Studio, open the **Conceptual Model** tab from the project sidebar (**Concepts** or **Conceptual Relationships**). You build the model on the canvas, edit details in drawers and forms, and optionally use **AI Copilot** to propose changes.

## Build on the canvas

Add concepts, connect them with relationships, and arrange the diagram so the model is easy to read.

### Concepts

Concepts are the business things in your domain — not database tables.

#### Create a concept

1. Open **Concepts** in the sidebar, or click **Add Concept** on the toolbar (or on the empty canvas).
2. In the Concepts drawer, open **Create new** → **Add new concept**.
3. Fill in the **Create Concept** form and click **Save Concept**.

#### Edit or delete a concept

* Click a concept on the canvas, or a concept row in the Concepts drawer, to open **Edit Concept**.
* Change fields and click **Save Concept**.
* Click **Delete Concept** in the form, or press Backspace/Delete with one concept selected and confirm. Deleting a concept also removes relationships tied to it. You can delete only one concept at a time.

#### Concept fields

| Field                 | Required | Notes                                                                                                                                                                                                                        |
| --------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**              | Yes      | Up to 200 characters.                                                                                                                                                                                                        |
| **Domain**            | No       | Optional grouping. Choose an existing domain, or create one from the Concepts drawer (**Create new** → **Add new domain**).                                                                                                  |
| **Description**       | No       | Up to 1000 characters. Shows as a tooltip on the canvas when present.                                                                                                                                                        |
| **Is this an event?** | —        | Yes marks the concept as an event (something that happens at a point in time). No keeps the default concept classification. Used when you [generate a data model](#how-enrichment-feeds-data-model-generation).              |
| **Synonyms**          | No       | Alternate names. Type a synonym and press Enter or click **Add**.                                                                                                                                                            |
| **Linked Entities**   | No       | Optional warehouse tables that ground the concept. Assign a role when you link a table. Roles steer [data model generation](#how-enrichment-feeds-data-model-generation).                                                    |
| **Attributes**        | No       | Business attributes on the concept. Click **Add Attribute** to stage attributes; they save with the concept form. Mapped and unmapped attributes are both used in [generation](#how-enrichment-feeds-data-model-generation). |

#### Attributes and value types

For each attribute you can set:

* **Name** (required)
* **Type** (required) — pick a Value Type from the catalog, or **Create custom Value Type** based on a built-in type
* **Description**
* **Unique across instances of this Concept**
* **Identifies this Concept**

Built-in Value Types include Boolean, Date, DateTime, Decimal, Float, Integer, String, Time, DateTimeTz, Object, Array, and Opaque.

If the concept has linked entities, you can **Map attribute to a column** on a linked table. The form may show **Suggestions** you can **Accept**. Accepted mappings fix columns during generation; unmapped attributes are treated as names to find in source.

#### Domains

Use domains to group related concepts (for example Finance or Customer). Create domains from the Concepts drawer. Assign a concept to a domain in the concept form. You cannot delete a domain that still has concepts.

### Relationships

Relationships are directed connections between concepts: a **source**, a **verb**, and a **target**.

#### Create a relationship

1. Drag from one concept node to another on the canvas, **or** click **Add Relationship** on the toolbar / **Create new relationship** in the Conceptual Relationships drawer.
2. Complete the form and click **Save**.

You need at least one concept before you can create a relationship (including a self-referencing hierarchy).

#### Edit or delete a relationship

* Click a relationship edge on the canvas, or expand a row in the Conceptual Relationships drawer and choose **Edit**.
* Update the verb, type, cardinalities, or linked entities, then **Save**. Source and target concepts are fixed after create.
* Delete from the form, the drawer row, or Backspace/Delete with one edge selected (confirm in **Delete Relationship**).

#### Relationship fields

| Field                                   | Notes                                                                                                                                                                                              |
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Source concept** / **Target concept** | Searchable pickers when creating. Concepts are grouped as **On Current View** and **All Others**.                                                                                                  |
| **Verb**                                | Required active verb (for example `places` or `contains`). Up to 100 characters. Use **Suggest** / **Suggest more** for AI verb ideas (separate from Copilot).                                     |
| **Relationship type**                   | **Hierarchy**, **Association**, or **Event**. Hierarchy and Event types especially influence [data model generation](#how-enrichment-feeds-data-model-generation).                                 |
| Cardinality                             | Answer Yes/No to questions such as “Can Customer have more than one Order?” for each direction. Yes means **one or more**; No means **one**.                                                       |
| **Linked Entities**                     | Optional warehouse tables for the relationship, with a role. Used as sources, already-modeled tables, or many-to-many (bridge) links in [generation](#how-enrichment-feeds-data-model-generation). |

#### Relationship types

| Type            | Use when                                                                                                                                            |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Hierarchy**   | Containment or classification (for example Customer contains Address). Required for self-referencing relationships. Hierarchies cannot form cycles. |
| **Association** | Peer affiliation (for example Employee works in Department).                                                                                        |
| **Event**       | A business event or transaction at a point in time (for example Customer places Order).                                                             |

#### Uniqueness

A relationship is unique by directed source → target plus verb (case-insensitive). You can have more than one relationship between the same pair if the verbs differ.

### Canvas basics

The Conceptual Model canvas is where you arrange concepts and relationships.

#### Navigate and select

| Action                | Behavior                                                                        |
| --------------------- | ------------------------------------------------------------------------------- |
| Drag a concept        | Move it. Positions are saved with the active view.                              |
| Drag between concepts | Start a new relationship.                                                       |
| Click a concept       | Select it and open **Edit Concept**. Click again to deselect.                   |
| Click a relationship  | Select it and open the relationship editor.                                     |
| Click empty canvas    | Clear selection and close forms.                                                |
| Scroll                | Zoom (about 0.3× to 2×). Use the canvas controls to zoom or fit the view.       |
| Backspace / Delete    | Delete the selected concept or relationship (one at a time, with confirmation). |

#### Toolbar

| Control                             | What it does                                                                                                                                                                                                                                                                  |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Undo** / **Redo**                 | Step backward or forward through canvas edits.                                                                                                                                                                                                                                |
| **Add Concept**                     | Opens the create-concept form.                                                                                                                                                                                                                                                |
| **Add Relationship**                | Opens the Conceptual Relationships drawer with a blank add form.                                                                                                                                                                                                              |
| **Views**                           | Switch named layouts. **Default** is always available. **Save Current** updates the active view. **Save As New\...** stores positions and visibility as a new view. **Delete Active View** removes a non-default view. Unsaved view or filter changes show a dirty indicator. |
| **Filter**                          | Open **Filter Concepts** to show or hide concepts (and whole domains) without deleting them. Search by concept or domain name. Use **Show All** / **Hide All**. A badge shows how many concepts are hidden.                                                                   |
| **Auto layout**                     | Automatically rearrange the graph.                                                                                                                                                                                                                                            |
| **Line**                            | Edge style: **Curved** or **Smoothstep**.                                                                                                                                                                                                                                     |
| **Labels** / **1 / N** / **Hidden** | Cycle how cardinality appears on edges: full labels (**one** / **one or more**), short **1** / **N**, or hidden.                                                                                                                                                              |
| **Theme**                           | Open **Node Colors** to adjust domain accent colors, or **Reset**.                                                                                                                                                                                                            |

Event concepts use a distinct card style on the canvas. Domain accents appear on nodes when a concept belongs to a domain.

## Use the copilot

Open **AI Copilot** from the header while you are on the Conceptual Model tab.

### Modes

| Mode      | Use for                                                                               |
| --------- | ------------------------------------------------------------------------------------- |
| **Ask**   | Chat, explore, and analyze the model without staging edits.                           |
| **Agent** | Propose and stage changes to concepts, relationships, domains, attributes, and links. |

You can also choose a model tier (**Fast**, **Automatic**, or **Intelligent**).

On an empty conceptual model in Agent mode, Copilot prompts you to describe your domain so it can propose starter concepts and relationships.

### Attachments and database context

Give Copilot extra context from the composer:

* **Attach file** (paperclip) — attach a PDF or supported text file (size limits apply).
* Database control — open **Add tables to Copilot** to include warehouse table definitions in the message context.

You can also mention saved diagrams, documents, and code files from the composer when they are available.

### Review staged changes

When Agent mode edits the conceptual model:

1. Copilot applies a preview on the canvas (nodes and edges highlight as added, modified, or removed).
2. When ready, you see **Staged changes ready** with a short summary.
3. Review the highlights, then click **Keep** to commit or **Revert** to discard.

Staged changes are not saved until you **Keep**. If you try to continue with unresolved changes, Copilot asks you to **Keep** or **Revert** first.

### What works well to ask

* Describe the business domain and ask for a starter set of concepts and relationships.
* Ask to add, rename, or remove specific concepts or domains.
* Ask to connect concepts with a clear verb and relationship type.
* Attach a domain brief (PDF/text) or relevant warehouse tables, then ask Copilot to propose a model grounded in that material.

Prefer business language (singular concept names). Copilot is guided not to invent attributes unless you ask for them.

### Limits

* **Keep** may require a plan that includes Agent Copilot.
* Verb **Suggest** on the relationship form is a separate helper from Copilot threads.
* Large conversations may need to be compacted when the thread is nearly full.
* Resolve staged changes before starting another Agent edit.

## How enrichment feeds data model generation

When you [generate a data model](/guides/create-logical-physical-model), Snap Data Studio uses extra detail on your conceptual model to propose facts, dimensions, hubs, links, and related structures.

### Event vs concept

| Classification               | Effect on generation                                                                |
| ---------------------------- | ----------------------------------------------------------------------------------- |
| **Event** concept            | Treated as a fact candidate (something that happens at a point in time).            |
| Ordinary concept             | Treated as a dimension (or similar) candidate.                                      |
| **Event** relationship       | Treated as a transactional / fact-style relationship between concepts.              |
| **Hierarchy** relationship   | Treated as containment used for hierarchy guidance.                                 |
| **Association** relationship | Kept as descriptive context; it does not drive the same fact or hierarchy behavior. |

### Linked entities and roles

Link warehouse tables on concepts or relationships, then assign a role. Generation uses those links as follows:

| Role                                                                                                            | Effect                                                                                                                                                                                                    |
| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Source** / **Intermediate**                                                                                   | Include the table as a source for generation. If both are set on the same concept or relationship, **Intermediate** is used instead of **Source**.                                                        |
| Already-modeled roles (for example **Fact**, **Dimension**, or **Hub**, **Link**, **Satellite**, **Reference**) | Treat the linked table as already modeled for that methodology. Generation keeps it instead of redesigning it. Only roles that match the methodology you generate (Kimball vs Data Vault) apply this way. |
| **Bridge** roles on relationships                                                                               | Help model many-to-many style relationships (including cardinality).                                                                                                                                      |

Links on concepts and on relationships both count. Relationship links are used when both connected concepts are included in generation.

### Mapped vs unmapped attributes

| Attribute state                   | Effect on generation                                                                         |
| --------------------------------- | -------------------------------------------------------------------------------------------- |
| **Mapped** to a column (accepted) | Uses that column on the matching dimension or satellite output when the link role allows it. |
| **Unmapped**                      | Passed as an attribute **name** for generation to try to find in source tables.              |
| Value type / uniqueness           | Help you model and check compatibility; they do not force generated column types.            |

### Descriptions and synonyms

**Synonyms**, **domains**, and descriptions give Copilot and generation more context so the model is easier to understand. They are not strict matching rules during generation.

For how generation fits into the wider workflow, continue in [Create a logical & physical model](/guides/create-logical-physical-model).

## What's next

* [Create a logical & physical model](/guides/create-logical-physical-model)
* [Create an artifact](/guides/create-artifact)
