Het entity-relationship-model of entity-relationship diagram (ERD) is een model of diagram voor het inzichtelijk maken van een conceptueel datamodel. Het is een visuele weergave van de entiteiten, relaties en regels die gelden of aanwezig zijn in een logisch ontwerp. Deze diagrammen worden gemaakt bij het ontwerpen van een informatiesysteem om inzicht te krijgen in de benodigde informatie en de verbanden tussen de gegevens.
Zo wordt het vaak gebruikt om een visuele weergave te maken van een relationeel model. Het gemaakte diagram kan vervolgens omgezet worden in een databasemodel. Het entity-relationship-model kan dus ook worden gezien als een methodologie voor het ontwerpen van een datamodel en database.
Vaak worden de namen datamodel en ER-diagram verkeerd gebruikt, een ER-diagram is een abstractie terwijl een datamodel een technische uitvoering is. De structuur van tabellen, indexen en constraint in een RDBMS heet een datamodel, al dan niet gevisualiseerd.
Er worden verschillende tekenwijzen gebruikt. De praktische (gebruikt door ontwerptools) en de theoretische die omdat ze in leerboeken genesteld zijn, zich hardnekkig laten uitroeien. Zo is het maken van een ER-diagram met 8 of meer entiteiten waarbij de attributen buiten de entiteiten getekend worden, bijna onmogelijk en wordt het doel, van iets complex inzichtelijk te maken, voorbijgeschoten.
Een ER-diagram bestaat uit de volgende onderdelen:
Elk van deze zaken wordt weergegeven met een bepaald symbool. Een entiteit wordt met een rechthoek, liefst met ronde hoeken om onderscheid te maken met een datamodel, weergegeven, een relatie wordt weergegeven met een lijn, het identificerend attribuut wordt veelal onderstreept weergegeven, en een identificerende relatie wordt veelal met een dwarsstreepje weergegeven. In de rechthoek wordt ten minste de naam van de entiteit vermeld.
Het is ook mogelijk om een relatie tussen een entiteit en zichzelf te hebben. Dit heet wel een recursieve of zelf-refererende relatie. Zo kan een persoon een relatie "getrouwd met" hebben met een andere persoon. Bij een aansluitpunt van de relatie-lijn bij de entiteit wordt dan aangegeven wie met wie getrouwd is.
De lijnen tussen een relatie en één of meer entiteiten kunnen aangepast worden om de betrokkenheid van de entiteiten bij de relatie weer te geven. Een werknemer kan bijvoorbeeld werken in maximaal 1 fabriek en in een fabriek kunnen 1 of meer werknemers werken. Het kan ook wenselijk zijn om in het ER diagram weer te geven dat een entiteit bij een relatie betrokken moet zijn, bijvoorbeeld "een werknemer werkt in één of meerdere fabrieken". In feite betekent dit ook: er kunnen geen werknemers zijn die niet bij een fabriek werken. Wanneer dit ER diagram vervolgens gebruikt wordt bij het opzetten van een database betekent dit dat er geen werknemers in de database aanwezig kunnen zijn die niet bij een fabriek werken - iets wat tijdens de ontwerpfase al werd weergegeven in het model.
In het model kunnen de volgende type lijnen gebruikt worden om betrokkenheid, in casu de kardinaliteit en de optionaliteit, aan te geven:
Een entiteit kan ook worden onderverdeeld in andere entiteiten. Aan een universiteit kan een persoon worden onderverdeeld in de entiteiten student en docent. Deze onderverdeling wordt een IsA hiërarchie genoemd (is a betekent is een; een persoon is een student; een persoon is een docent). In een ER diagram wordt dit aangegeven met een driehoek. Deze onderverdeling hoeft niet volledig te zijn; er kunnen nog andere personen zijn die geen student of docent zijn (bijvoorbeeld administratief medewerkers, personeel, en dergelijke). Ook kan het zijn dat er overlap is tussen de onderverdeelde entiteiten; een persoon kan student en docent tegelijkertijd zijn. Deze zaken worden naast het symbool in het diagram aangeduid met de volgende (Engelse) termen:
De gebruikte notatie in ER-diagrammen verschilt. Naast kleine verschillen in bijvoorbeeld het gebruik van het aantal lijnen om het geheel overzichtelijk te houden, worden ook verschillende notaties gebruikt bij de betrokkenheid van entiteiten bij relaties.
Een andere manier om de betrokkenheid van entiteiten bij een relatie weer te geven, is door gebruik te maken van de getallen zelf in plaats van een normale of dikke lijn met of zonder pijl (zie ook hierboven). De getallen geven een onder- en bovengrens van de betrokkenheid: