Tables rarely stand alone. An Account needs to know which Contacts work there; a Contact needs to know which Account it belongs to. A relationship is what connects two tables in Dataverse. Once you recognize the three basic shapes a relationship can take, you can reason about how almost any pair of tables connects.

Quick facts
  • A relationship connects two tables so their records can reference each other
  • One-to-many: one record on this side links to many on the other
  • Many-to-one: the same relationship, viewed from the "many" side
  • Many-to-many: either side can link to several of the other
  • A lookup column is how a one-to-many relationship appears on a form

One-to-many: one folder, many index cards

Picture the filing cabinet again. One folder in the Account drawer — "Contoso Ltd." — can hold many index cards from the Contact drawer: one per person who works there. That's a one-to-many relationship: one Account can link to many Contacts, but each Contact points back to only one Account.

Flip the point of view and it's the same relationship, described the other way. From a single Contact's seat, it belongs to exactly one Account. That reverse view is many-to-one — not a different relationship, just the same connection seen from the other table.

Relationship typeDescriptionExample
One-to-manyOne record on this side can relate to many on the otherOne Account has many Contacts
Many-to-oneThe same relationship, viewed from the "many" sideMany Contacts belong to one Account
Many-to-manyEither side can relate to many of the otherContacts attending Events

Many-to-many: everyone can be in more than one

Some connections have no single "owning" side. Think of a school class schedule: one student can take several classes, and one class holds many students. Neither side is capped at one — that's a many-to-many relationship. In Dynamics 365 CE, Contacts and Events work this way: one Contact can register for several Events, and one Event can hold many Contacts.

Example A "Court Bookings" table connected to Contact by a one-to-many relationship means each booking belongs to exactly one Contact, while a Contact can have many bookings over time. Let one booking involve several Contacts, and one Contact join several bookings? That calls for many-to-many instead.

How relationships actually show up on screen

Users don't interact with "relationships" directly — they interact with a lookup column, the visible result of a one-to-many relationship. On a Contact form, the "Company Name" field that opens a search box to pick an Account is a lookup column: the on-form face of that relationship.

Many-to-many relationships don't get a single lookup column on either form, since neither side has just one related record to point to. Instead they typically show up as a related, sub-grid-style list — a list of Events on a Contact's form, or a list of registered Contacts on an Event's form.

Key takeaway: One-to-many connects one record to several on the other table (many-to-one is the same relationship from the reverse side), while many-to-many lets both sides connect to several of the other. Lookup columns are how one-to-many relationships actually appear to a user on a form.