Relationships connect tables to each other, and are what turn a pile of separate tables into an actual data model. Every relationship in Dataverse is one of three shapes.

1:N and N:1 (one-to-many)

A one-to-many relationship — for example, one Account has many Contacts. From the Contact’s side, this is “many-to-one”: many Contacts point back to one Account. This is implemented as a lookup column on the “many” side (Contact gets an Account lookup). This is by far the most common relationship type.

N:N (many-to-many)

Used when records on both sides can relate to multiple records on the other side — for example, Contacts attending multiple Events, and Events having multiple Contacts. Dataverse implements this with a hidden intersect table you don’t manage directly; it just shows up as a subgrid on both tables’ forms.

Relationship behavior (cascading)

For 1:N relationships, you configure what happens to related (“child”) records when something happens to the parent — this is relationship behavior, and getting it wrong is a common source of data-integrity surprises:

  • Assign — reassigning the parent also reassigns related records (or not).
  • Share — sharing the parent also shares related records (or not).
  • Reparent — changing the parent lookup on a child record follows certain rules.
  • Delete — deleting the parent can Cascade All (delete children too), Remove Link (clear the lookup, orphaning the child), or Restrict (block the delete entirely while children exist).

Dataverse offers preset behavior templates (Parental, Referential, Referential, Restrict Delete) that set sensible combinations of the above, plus a Configurable Cascading option for full manual control.

A real scenario. If deleting a Project record should also delete all its Tasks, use Parental or Cascade All on delete. If deleting an Account should be blocked while open Opportunities still reference it (forcing someone to resolve them first), use Restrict Delete. Picking the wrong one either silently orphans data or blocks legitimate deletes with a confusing error.

Relationship mapping

Mapping lets a new child record automatically inherit column values from its parent when created from that parent’s form (e.g. a new Contact created from an Account automatically gets the Account’s address). It only fires at creation time, not on later edits.