Dataverse: Tables and Columns
Comprehensive guide to the data structure of Microsoft Dataverse, focusing on column types, multi-lookups, and hierarchical tables.
Introduction to Microsoft Dataverse
Microsoft Dataverse is the central data layer of the Power Platform, designed to securely store and manage information used by business applications, automations, and analytics. Every solution built on Dataverse is based on a set of tables that represent logical entities (such as accounts, contacts, or opportunities) and columns that describe the attributes of each entity.
Proper modeling of tables and columns is essential to ensure performance, security, and reusability of the solution. Dataverse offers graphical tools in the Power Apps Maker Portal to create, manage, and link tables, along with a rich set of APIs for developers.
Structure of Tables in Dataverse
Each table in Dataverse represents a collection of homogeneous records. Tables can be standard (provided by Microsoft), extended (derived from Dynamics 365 or third-party applications), or custom (created for specific projects). Standard tables such as Account and Contact cannot be deleted but can be extended through new columns or relationships.
Every table includes metadata that describes its behavior, relationships, and associated security rules. Customizations are stored within Dataverse solutions and can be deployed across environments such as sandbox, development, and production.
Table Types
- Standard tables: provided by Microsoft, included in Dataverse or Dynamics 365 modules.
- Custom tables: created to address specific business requirements.
- System tables: used internally by the platform for management (not editable).
- Virtual tables: connected to external data sources via OData or connectors, without duplicating data.
Columns and Data Types
Columns define the properties of each record. Each column has a logical name, a display label, and a data type. Dataverse supports a wide range of column types, from simple numeric fields to complex types such as images or multi-lookups. Columns can be required, optional, or calculated, and may include business rules for validation.
Main Column Types
| Type | Description | Usage Example | 
|---|---|---|
| Text | Single or multi-line text field | Name, Description | 
| Number | Integer, decimal, or currency | Quantity, Price, Score | 
| Date/Time | Handles local or UTC date/time | Created On, Due Date | 
| Choice | Selectable value from predefined list (local or global) | Status, Category | 
| Lookup | Links to a record in another table | Customer (lookup to Account or Contact) | 
| Image/File | Stores multimedia content associated with records | Profile Photo, Attached Document | 
Choice columns can be defined as global to ensure consistency across multiple tables. Lookup columns allow creating relationships between entities and support multi-lookups, where a single relationship can point to multiple target tables.
Multi-Lookups and Table Relationships
Relationships in Dataverse define how tables are connected. There are three main types of relationships:
- 1:N (one-to-many): one record in a table can be related to multiple records in another.
- N:1 (many-to-one): multiple records reference a single record in another table.
- N:N (many-to-many): symmetric relationship through an intersect table.
Multi-lookups are an evolution of traditional lookups, allowing a single column to reference multiple tables—for example, a “Customer” column that can point to either “Account” or “Contact.” This flexibility reduces redundancy and simplifies the data model.
Each relationship can be configured with a behavior (parental, referential, or custom), defining how delete, assign, or share operations propagate across related tables.
Hierarchical Tables and Visualization
Dataverse supports hierarchical relationships within the same table. By enabling Hierarchy Settings, you can visualize parent-child relationships in a tree structure, ideal for scenarios like organizations, product catalogs, or account hierarchies.
To configure a hierarchy:
- Create a self-referential N:1 relationship within the table.
- Define a “Quick View” form to display key data from the parent record.
- Enable the hierarchy from the table settings.
Once configured, the hierarchy can be visually explored in model-driven apps using a dedicated control.
Data Modeling Best Practices
Sound data modeling in Dataverse ensures performance, maintainability, and data security. Recommended practices include:
- Use global choice columns for shared values across tables.
- Limit the number of lookup columns to avoid complex queries.
- Apply hierarchical relationships only when necessary.
- Document tables, relationships, and business rules within solutions.
- Verify propagation settings for parental relationships to prevent unwanted deletions.
- Test configurations with realistic data before production release.
For further details, see Microsoft Dataverse documentation and model-driven app components.
Frequently Asked Questions about Dataverse Tables and Columns
What is the difference between standard and custom tables?
Standard tables are provided by Microsoft and cannot be deleted; custom tables are created for specific customer needs and are fully editable.
Can I link multiple tables with a single lookup column?
Yes, with multi-lookups in Dataverse, a single column can reference multiple target tables, simplifying data modeling.
How do I enable hierarchy in a table?
Create a self-referential N:1 relationship, define a Quick View form, and enable “Hierarchy Settings” in the table properties.
Learn More about Dataverse and Power Platform
Explore Microsoft Power Platform technologies with our detailed guides and discover how to effectively model data and automations for your organization.
 
          