U 'tekent' geen entiteitsrelaties rechtstreeks in databases; je *modelleert* ze met behulp van een visueel hulpmiddel (zoals een tekenprogramma of speciale databaseontwerpsoftware) en vertaalt dat model vervolgens naar het databaseschema (de feitelijke databasestructuur). De visuele weergave wordt een Entity-Relationship Diagram (ERD) genoemd.
Zo representeert u entiteitsrelaties in ERD's, samen met de bijbehorende database-implementatie:
1. Entiteiten:
* Vertegenwoordiging: Rechthoeken. Elke rechthoek vertegenwoordigt een entiteit (een ding of concept) zoals 'Klant', 'Bestelling', 'Product'.
* Database-implementatie: Dit worden tabellen in uw database. Elke tabel heeft kolommen (attributen) die de eigenschappen van de entiteit vertegenwoordigen.
Voorbeeld:
```
+---------+ +-----------+
| Klant| | Bestel |
+---------+ +-----------+
| KlantID | | BestelID |
| Naam | | KlantID |
| Adres | | Besteldatum |
+---------+ +-----------+
```
2. Kenmerken:
* Vertegenwoordiging: Ovalen verbonden met de rechthoek die de entiteit vertegenwoordigt. Deze beschrijven de eigenschappen van de entiteit (bijvoorbeeld 'Naam', 'Adres', 'OrderID', 'OrderDatum'). U kunt ook gegevenstypen opgeven (bijvoorbeeld `INT`, `VARCHAR`, `DATE`).
* Database-implementatie: Dit worden kolommen in de overeenkomstige databasetabellen. Het gegevenstype in het ovaal komt overeen met het gegevenstype van de kolom in de database.
3. Relaties:
* Vertegenwoordiging: Lijnen die de rechthoeken van de entiteit verbinden. Het type lijn en de bijbehorende symbolen geven het type relatie aan:
* Eén-op-één (1:1): Eén exemplaar van de ene entiteit is gerelateerd aan maximaal één exemplaar van een andere entiteit (bijvoorbeeld een persoon en zijn of haar paspoort). Vaak weergegeven met een lijn met een "1" aan elk uiteinde of soms met een speciale notatie, zoals een lijn die aan de ene kant eindigt in een ruit.
* Eén-op-veel (1:M) of veel-op-één (M:1): Eén exemplaar van een entiteit is gerelateerd aan veel exemplaren van een andere entiteit (een klant kan bijvoorbeeld veel bestellingen hebben). Weergegeven door een lijn met "1" aan het ene uiteinde en "M" (of kraaienpootnotatie - een drieledig symbool) aan het andere uiteinde.
* Veel-op-veel (M:N): Veel exemplaren van de ene entiteit zijn gerelateerd aan veel exemplaren van een andere entiteit (veel studenten kunnen bijvoorbeeld veel cursussen volgen). Weergegeven door een lijn met "M" aan beide uiteinden. Dit vereist meestal een knooppunttabel (of bridge-tabel) in de database-implementatie.
Voorbeeld:één-op-veel (klant naar bestellingen)
```
+---------+-------------+
| Klant| |
+---------+-------------+
| KlantID | 1 |
| Naam | |
| Adres |-------------|M
+---------+ |
|
V
+-----------+
| Bestel |
+-----------+
| BestelID |
| KlantID |
| Besteldatum |
+-----------+
```
Voorbeeld:Many-to-Many (studenten en cursussen)
```
+---------+ +-----------+
| Student | | Cursus |
+---------+ +-----------+
| StudID |--------M | CursusID |
| Naam | | | Naam |
+---------+ | +-----------+
|
| M--------1
V
+-------------------+
| Studentencursus |
+-------------------+
| StudID |
| CursusID |
+-------------------+
```
4. Kardinaliteit en participatie:
* Kardinaliteit: Het aantal exemplaren van de ene entiteit dat aan een andere kan worden gerelateerd (weergegeven door '1' of 'M').
* Deelname: Of deelname aan de relatie verplicht of optioneel is (aangegeven in sommige ERD-notaties met verschillende symbolen op de lijnen, zoals een cirkel voor optioneel).
Database-implementatie (SQL-voorbeeld):
Voor het voorbeeld Klantorder (1:M) maakt u twee tabellen:
```sql
TABEL MAKEN Klant (
CustID INT PRIMAIRE SLEUTEL,
Naam VARCHAR(255),
Adres VARCHAR(255)
);
TABEL MAKEN Bestelling (
OrderID INT PRIMAIRE SLEUTEL,
CustID INT,
Besteldatum DATUM,
BUITENLANDSE SLEUTEL (CustID) REFERENTIES Klant(CustID)
);
```
De beperking 'FOREIGN KEY' in de tabel 'Order' dwingt de relatie af. Elke 'OrderID' heeft één 'CustID', en die 'CustID' moet voorkomen in de tabel 'Klant'.
Voor het Many-to-Many-voorbeeld zou u drie tabellen hebben (Studenten, Cursussen en StudentCourse). De tabel 'StudentCourse' is de knooppunt-/brugtabel die studenten aan cursussen koppelt.
Samenvattend maakt u de ERD visueel om uw database te ontwerpen, waarbij entiteiten, attributen en relaties worden weergegeven. Vervolgens vertaalt u dat visuele model naar het daadwerkelijke databaseschema met behulp van SQL (of een andere databasetaal) om tabellen te maken, kolommen te definiëren en beperkingen in te stellen om de relaties af te dwingen. Veel databaseontwerptools genereren rechtstreeks vanuit de ERD SQL voor u. |