🧱 Entity Guidelines

← Terug naar Develop

Entity Guidelines beschrijven de richtlijnen voor het ontwerpen van tabellen, relaties en kolommen binnen Dataverse.

Een goed datamodel vormt de basis van iedere succesvolle Power Platform-oplossing.

A bad data model becomes a problem everywhere. A good data model becomes invisible.


🎯 Doel

Deze richtlijnen ondersteunen teams bij:

Het doel is om een datamodel te realiseren dat:


πŸ›οΈ Algemene Ontwerpprincipes

Binnen Dataverse gelden de volgende uitgangspunten.

βœ” Proces eerst, techniek daarna

Ontwerp het datamodel vanuit het bedrijfsproces.

βœ” Standaard boven maatwerk

Gebruik standaard Dataverse-tabellen wanneer deze voldoen aan de behoefte.

βœ” Eenvoud boven complexiteit

Houd het datamodel zo eenvoudig mogelijk.

βœ” Hergebruik boven duplicatie

Sla dezelfde informatie slechts één keer op.

βœ” Datakwaliteit vanaf de start

Voorkom datakwaliteitsproblemen door een goed ontwerp.


🧱 Tabellen (Tables)

Tabellen vormen de kern van het datamodel.

Iedere tabel moet een duidelijk functioneel doel hebben.

Voorbeelden

Richtlijnen

βœ… Iedere tabel ondersteunt een businessconcept

βœ… Gebruik standaardtabellen waar mogelijk

βœ… Definieer eigenaarschap

βœ… Vermijd overlap met bestaande tabellen

Vermijd

🚫 Tabellen zonder duidelijke businesswaarde

🚫 Technische tabellen voor functionele gegevens

🚫 Meerdere tabellen voor hetzelfde concept


🏷️ Naamgeving van Tabellen

Display Name

Gebruik een begrijpelijke naam voor eindgebruikers.

Voorbeelden

Account
Subscription
Project
Service Request

Richtlijnen

βœ… Enkelvoud

βœ… Begrijpelijk

βœ… Functioneel


Schema Name

Formaat

<publisher>_<name>

Voorbeelden


brenke_project
brenke_subscription
brenke_registration

Richtlijnen

βœ… Publisher prefix verplicht

βœ… Beschrijvend

βœ… Geen afkortingen zonder duidelijke betekenis


πŸ”€ Kolommen (Columns)

Kolommen beschrijven welke informatie wordt opgeslagen.

Iedere kolom moet een duidelijk doel hebben.


Ontwerpprincipes

βœ… Gebruik beschrijvende namen

βœ… Maak verplichte velden alleen indien noodzakelijk

βœ… Gebruik het juiste datatype

βœ… Ondersteun rapportages en integraties

Vermijd

🚫 Overmatige gegevensregistratie

🚫 Ongebruikte velden

🚫 Onduidelijke betekenis


Datatypes

Gebruik het datatype dat het beste aansluit bij de gegevens.

Type Toepassing
Text Namen, omschrijvingen
Choice Statussen, categorieΓ«n
Number Hoeveelheden
Currency Bedragen
Date Datums
Lookup Relaties
Yes/No Booleans

πŸ”— Relaties

Relaties bepalen hoe gegevens met elkaar verbonden zijn.

Een goede relatie ondersteunt:


Relatietypen

1:N

EΓ©n record is gekoppeld aan meerdere gerelateerde records.

Voorbeeld

Account
    ↓
Contact

N:1

Een record verwijst naar een hoofdrecord via een lookup.

Voorbeeld

Contact
    ↓
Account

N:N

Meerdere records kunnen aan meerdere andere records gekoppeld worden.

Voorbeeld

Contact
    ↔
Competentie

Wanneer gebruiken?

βœ… Eenvoudige many-to-many relaties

βœ… Geen aanvullende gegevens nodig op de relatie

Voorbeelden

Contact ↔ Marketinglijst
Gebruiker ↔ Competentie
Project ↔ Documentcategorie

Intersect Tabel

Wanneer de relatie zelf aanvullende gegevens bevat, verdient een expliciete tabel meestal de voorkeur boven een standaard N:N relatie.

Voorbeeld

Werknemer
    ↓
Dienstverband
    ↓
Werkgever

De tabel Dienstverband legt de relatie vast en bevat aanvullende informatie zoals:

Wanneer gebruiken?

βœ… De relatie bevat eigen attributen

βœ… Historie moet worden bijgehouden

βœ… De relatie heeft een eigen lifecycle

βœ… Rapportages zijn gebaseerd op de relatie zelf

Richtlijn

Een relatie die eigen gegevens bevat is vaak geen relatie meer, maar een zelfstandig businessobject.

In dat geval heeft een expliciete tabel vrijwel altijd de voorkeur boven een standaard N:N relatie.


Richtlijnen

βœ… Gebruik relaties om samenhang te modelleren

βœ… Gebruik lookupvelden voor eigenaarschap en afhankelijkheden

βœ… Definieer duidelijke parent-child structuren

Vermijd

🚫 Overmatig gebruik van N:N relaties

🚫 Relaties zonder businessdoel

🚫 Complexe afhankelijkheidsstructuren


πŸ”„ Field Mapping

Met Field Mapping kunnen waarden automatisch worden overgenomen wanneer een nieuw child record wordt aangemaakt.

Voorbeeld

Account
    ↓
Nieuw Contact

Account Naam
    ↓
Contact > Account Naam

Wanneer gebruiken?

βœ… Standaardwaarden overnemen

βœ… Klantinformatie vooraf invullen

βœ… Administratieve gegevens overnemen

Vermijd

🚫 Businesslogica implementeren

🚫 Synchronisatie tussen records

🚫 Automatische updates na wijzigingen

Belangrijk gedrag

Mapping werkt uitsluitend:

βœ… tijdens het aanmaken van een record

βœ… wanneer het record via de relatie wordt aangemaakt

Mapping werkt niet:

❌ bij latere wijzigingen

❌ als synchronisatiemechanisme

❌ voor bestaande records


🧹 Cascading

Cascading bepaalt welk gedrag automatisch wordt uitgevoerd op gerelateerde records.

Voorbeelden


Cascading Acties

Voor iedere relatie kan gedrag worden ingesteld voor:


Beschikbare Opties

Cascade All

Actie wordt uitgevoerd op alle gerelateerde records.

Cascade Active

Actie wordt uitsluitend uitgevoerd op actieve records.

Cascade User-Owned

Actie wordt alleen uitgevoerd op records van dezelfde eigenaar.

Restrict

Actie wordt geblokkeerd zolang gerelateerde records bestaan.

No Cascade

Er gebeurt niets met gerelateerde records.


Aanbevolen Cascading Strategie

Delete

Bij voorkeur:

Restrict

Voorkomt onbedoeld dataverlies.

Assign

Vaak geschikt:

Cascade User-Owned

of

Cascade All

Afhankelijk van het proces.

Share / Unshare

Alleen toepassen wanneer de securitybehoefte hierom vraagt.


Risico's van Cascading

Onjuiste configuratie kan leiden tot:

Let op

Een verkeerd ingestelde:

Delete = Cascade All

kan honderden of duizenden records verwijderen.


πŸ‘€ Eigenaarschap

Iedere tabel moet een eigenaar hebben.

Denk hierbij aan:

Belangrijke vragen

Vermijd

🚫 Geen eigenaar

🚫 Onduidelijke verantwoordelijkheden


πŸ“Š Datakwaliteit

Datakwaliteit wordt grotendeels bepaald door het datamodel.

Richtlijnen

βœ… Gebruik verplichte velden waar nodig

βœ… Gebruik Duplicate Detection

βœ… Gebruik consistente Choices

βœ… Leg eigenaarschap vast

βœ… Definieer een Source of Truth

Vermijd

🚫 Dubbele gegevens

🚫 Meerdere bronnen voor dezelfde informatie

🚫 Onduidelijke definities


πŸ” Checklist

Tabellen

Relaties

Kolommen


βœ… Best Practices

Doe

βœ” Ontwerp vanuit processen

βœ” Gebruik standaardtabellen waar mogelijk

βœ” Definieer eigenaarschap

βœ” Houd relaties eenvoudig

βœ” Pas Naming Conventions toe

βœ” Analyseer cascading vooraf

βœ” Overweeg een intersect tabel wanneer een relatie eigen gegevens bevat


Vermijd

✘ Dataduplicatie

✘ Overmatig maatwerk

✘ Onduidelijke relaties

✘ Tabellen zonder businesswaarde

✘ Cascade All zonder impactanalyse

✘ Te complexe datamodellen


πŸ“Œ Samenvatting

Een goed ontworpen datamodel:

πŸ‘‰ Tabellen, kolommen en relaties vormen de fundering van iedere Power Platform-oplossing. Tijd investeren in een goed ontwerp voorkomt veel problemen tijdens ontwikkeling, beheer en toekomstige uitbreidingen.