Hvad er en ER model?
En ER model (eller ER diagram) står for Entity-Relationship model og er en model som benyttes til at opstille en grafisk præsentation af hvordan separate elementer i en database er opbygget og relaterer til hinanden. Modellen blev udviklet af Peter Chen i 1976.
Nedenstående er et eksempel på en ER model, som visualiserer elementernes relationer i databasen for et MMORPG spil:
Komponenterne i en ER model repræsenteres af forskellige geometriske former (cirkler, firkanter, trekanter mm.) som er forbundet til hinanden med linjer, hvilket kan ses på ovenstående eksempel. Disse komponenter og linjer definerer relationen mellem hvert element i modellen. Komponenternes og linjernes betydning vil hver især blive gennemgået i denne artikel.
Der findes mange effektive software-værktøjer på nettet, som kan benyttes til at tegne ER modeller, bl.a. smartdraw og LucidChart.
Du kan lære om NoSQL-databaser ved at klikke her.
Entitet og entitetstype
En entitetstype er en bestemt kategori eller gruppe som databasen holder oplysninger om. Entitetstypen kan bestå af hvad som helst. Det kan bl.a. være en gruppe som indeholder oplysninger om personer, steder eller produkter. En database kan have et ubestemt antal entitetstyper.
En entitetstype repræsenteres med en firkant, med entitetstypens navn indeni:
Entitetstypen indeholder objekter som kaldes entiteter. Disse entiter skal kunne skelnes og have en begrebsmæssig eksistens. Hvis entitetstypen er en gruppe som indeholder oplysninger om personer, så ville en entitet være en bestemt person i denne entitetstype. En entitetstype kan holde et ubestemt antal entiteter.
Attribut
En attribut er en egenskab, som er forbundet til en entitetstype og giver oplysninger om hver entitet i entitetstypen. Hvis entitetstypen er en gruppe med personer, så kunne attributterne bl.a. være “Fornavn”, “Efternavn”, “Alder” og “Køn”. Hver enkel entitet i denne entitetstype vil derfor være tildelt oplysninger om disse fire attributter. For én entitet kunne det f.eks. være at fornavnet er “Jonas”, efternavnet er “Nielsen”, alderen er “36 år” og kønnet er “Mand”.
En entitetstype kan have et ubestemt antal attributter.
En attribut repræsenteres med en cirkel:
Attributterne kan forbindes til en entitetstype ved hjælp af en linje som går fra attributten til entitetstypen:
Udover en normal attribut, som blot repræsenteres med en normal cirkel, er der fire andre forskellige slags typer af attributter: nøgleattributter, sammensatte attributter, attributter med flere værdier og afledte attributter.
Nøgleattribut
En nøgleattribut er en attribut som unikt identificerer hver enkel entitet i entitetstypen. Attributtens værdi kunne f.eks. være et unikt nummer for hver entitet, så hvis man gerne vil finde en bestemt entitet i databasen, så kan man søge efter dets nummer. En entitetstype kan ikke have mere end én nøgleattribut. For at en attribut kan være entitetstypens nøgleattribut, så er det et krav, at alle attributtens værdier er unikke.
En nøgleattribut repræsenteres med en understregning:
Sammensat attribut
En sammensat attribut er en attribut som består af flere underattributter. En sammensat attribut kan f.eks. hedde “Adresse” og indeholde underattributterne “Gadenavn”, “Gadenummer” og “By”. Underattributternes værdier vil derfor sammenlagt definere værdien for attributtens adresse.
Underattributter som hører til en sammensat attribut er forbundet til den med en linje:
Attribut med flere værdier
En attribut kan indeholde flere værdier på samme tid. Det kunne bl.a. være at en attribut der indeholder værdier for telefonnumre skal kunne indeholde flere værdier, da man sagtens kan have flere telefonnumre på én gang.
En attribut med flere værdier repræsenteres med en dobbeltcirkel:
Afledt attribut
En afledt attribut er en attribut med en værdi som kan hentes (eller afledes) fra en anden attribut. F.eks. kan en attribut hedde “Fødselsdato”. En anden attribut kan hedde “Alder”. “Alder” kan være en afledt attribut, eftersom alderens værdi også kan hentes i “Fødselsdato”.
En afledt attribut repræsenteres med en stiplet cirkel:
Relation og relationstype
En relationstype beskriver relationen mellem entitetstyper og repræsenteres med en diamant, som er forbundet til en entitetstype med en linje. En relationstype kan også have attributter.
Der er tre forskellige relationstyper: Unær relation, binær relation og ubegrænset relation. Disse relationstyper vil blive gennemgået her.
Unær relation
Hvis entiteter fra den samme entitetstype relaterer til hinanden, så kaldes det en unær relation. Det kunne f.eks. være at en ER model indeholder entitetstypen “Person” og én person relaterer til én anden person ved, at de er gift med hinanden.
Denne relationstype repræsenteres ligesom nedenstående, hvor der går to streger fra entitetstypen ud til relationen:
Binær relation
Hvis entiteter fra to forskellige entitetstyper relaterer til hinanden, så kaldes det en binær relation. Det kunne f.eks. være at en ER model indeholder entitetstyperne “Person” og “Virksomhed”, og relationen mellem entiteterne i hver af disse entitetstyper er, at personen arbejder i virksomheden.
Denne relationstype repræsenteres ligesom nedenstående med én streg fra entitetstypen til relationen og én streg fra relationen til den anden entitetstype:
Ubestemt relation
Indtil videre har der kun været eksempler på, at én enhed har en relation til én anden enhed.
Antallet af enheder som en anden enhed kan have en relation til kan defineres med en kardinalitet. Kardinaliteten kan have følgende typer:
- En til en – repræsenteres med tegnene 1 og 1
- En til mange – repræsenteres med tegnene 1 og n
- Mange til mange – repræsenteres med tegnene m og n
Lad os sige at en virksomhed godt kan have flere personer ansat samtidig, men en person kan kun være ansat i én virksomhed. I det her tilfælde vil kardinaliteten være n til 1.
Dette kan repræsenteres i en ER model på følgende måde, hvor tegnene er tastet ind ved siden af linjerne som forbinder relationen til entiteterne:
Bemærk at der er flere forskellige måder hvorpå man kan repræsentere kardinalitet i en ER model. Metoden som er vist ovenstående kaldes Chen metoden.
Begrænsning på deltagelse i relation
Man kan bestemme hvorvidt alle eller kun nogle entiteter skal deltage i relationen med en anden entitet.
- Total deltagelse: hvis hver entitet i en entitetstype skal deltage i relationen med en anden entitetstype, så kan det repræsenteres med to streger fra entiteten til relationen
- Delvis deltagelse: hvis hver entitet kan, men ikke behøver, at deltage i relationen med en anden entitetstype, så kan det repræsenteres med én streg fra entiteten til relationen
Lad os sige at alle virksomheder skal have ansat en eller flere personer, men ikke alle personer behøver at arbejde i en virksomhed. Det kan repræsenteres med nedenstående model: