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.
Deze richtlijnen ondersteunen teams bij:
Het doel is om een datamodel te realiseren dat:
Binnen Dataverse gelden de volgende uitgangspunten.
Ontwerp het datamodel vanuit het bedrijfsproces.
Gebruik standaard Dataverse-tabellen wanneer deze voldoen aan de behoefte.
Houd het datamodel zo eenvoudig mogelijk.
Sla dezelfde informatie slechts één keer op.
Voorkom datakwaliteitsproblemen door een goed ontwerp.
Tabellen vormen de kern van het datamodel.
Iedere tabel moet een duidelijk functioneel doel hebben.
β Iedere tabel ondersteunt een businessconcept
β Gebruik standaardtabellen waar mogelijk
β Definieer eigenaarschap
β Vermijd overlap met bestaande tabellen
π« Tabellen zonder duidelijke businesswaarde
π« Technische tabellen voor functionele gegevens
π« Meerdere tabellen voor hetzelfde concept
Gebruik een begrijpelijke naam voor eindgebruikers.
Account
Subscription
Project
Service Request
β Enkelvoud
β Begrijpelijk
β Functioneel
<publisher>_<name>
brenke_project
brenke_subscription
brenke_registration
β Publisher prefix verplicht
β Beschrijvend
β Geen afkortingen zonder duidelijke betekenis
Kolommen beschrijven welke informatie wordt opgeslagen.
Iedere kolom moet een duidelijk doel hebben.
β Gebruik beschrijvende namen
β Maak verplichte velden alleen indien noodzakelijk
β Gebruik het juiste datatype
β Ondersteun rapportages en integraties
π« Overmatige gegevensregistratie
π« Ongebruikte velden
π« Onduidelijke betekenis
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 bepalen hoe gegevens met elkaar verbonden zijn.
Een goede relatie ondersteunt:
EΓ©n record is gekoppeld aan meerdere gerelateerde records.
Voorbeeld
Account
β
Contact
Een record verwijst naar een hoofdrecord via een lookup.
Voorbeeld
Contact
β
Account
Meerdere records kunnen aan meerdere andere records gekoppeld worden.
Voorbeeld
Contact
β
Competentie
β Eenvoudige many-to-many relaties
β Geen aanvullende gegevens nodig op de relatie
Contact β Marketinglijst
Gebruiker β Competentie
Project β Documentcategorie
Wanneer de relatie zelf aanvullende gegevens bevat, verdient een expliciete tabel meestal de voorkeur boven een standaard N:N relatie.
Werknemer
β
Dienstverband
β
Werkgever
De tabel Dienstverband legt de relatie vast en bevat aanvullende informatie zoals:
β De relatie bevat eigen attributen
β Historie moet worden bijgehouden
β De relatie heeft een eigen lifecycle
β Rapportages zijn gebaseerd op de relatie zelf
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.
β Gebruik relaties om samenhang te modelleren
β Gebruik lookupvelden voor eigenaarschap en afhankelijkheden
β Definieer duidelijke parent-child structuren
π« Overmatig gebruik van N:N relaties
π« Relaties zonder businessdoel
π« Complexe afhankelijkheidsstructuren
Met Field Mapping kunnen waarden automatisch worden overgenomen wanneer een nieuw child record wordt aangemaakt.
Account
β
Nieuw Contact
Account Naam
β
Contact > Account Naam
β Standaardwaarden overnemen
β Klantinformatie vooraf invullen
β Administratieve gegevens overnemen
π« Businesslogica implementeren
π« Synchronisatie tussen records
π« Automatische updates na wijzigingen
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 bepaalt welk gedrag automatisch wordt uitgevoerd op gerelateerde records.
Voor iedere relatie kan gedrag worden ingesteld voor:
Actie wordt uitgevoerd op alle gerelateerde records.
Actie wordt uitsluitend uitgevoerd op actieve records.
Actie wordt alleen uitgevoerd op records van dezelfde eigenaar.
Actie wordt geblokkeerd zolang gerelateerde records bestaan.
Er gebeurt niets met gerelateerde records.
Bij voorkeur:
Restrict
Voorkomt onbedoeld dataverlies.
Vaak geschikt:
Cascade User-Owned
of
Cascade All
Afhankelijk van het proces.
Alleen toepassen wanneer de securitybehoefte hierom vraagt.
Onjuiste configuratie kan leiden tot:
Een verkeerd ingestelde:
Delete = Cascade All
kan honderden of duizenden records verwijderen.
Iedere tabel moet een eigenaar hebben.
Denk hierbij aan:
π« Geen eigenaar
π« Onduidelijke verantwoordelijkheden
Datakwaliteit wordt grotendeels bepaald door het datamodel.
β Gebruik verplichte velden waar nodig
β Gebruik Duplicate Detection
β Gebruik consistente Choices
β Leg eigenaarschap vast
β Definieer een Source of Truth
π« Dubbele gegevens
π« Meerdere bronnen voor dezelfde informatie
π« Onduidelijke definities
β 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
β Dataduplicatie
β Overmatig maatwerk
β Onduidelijke relaties
β Tabellen zonder businesswaarde
β Cascade All zonder impactanalyse
β Te complexe datamodellen
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.