Wat is een databaseschema?
Een databaseschema is een manier om de structuur en relaties van informatie te beschrijven die in een database zal worden gebruikt en bewaard. Sommige schema's zijn geschreven in een taal die kan worden geïnterpreteerd door databasebeheersoftware (DBMS), terwijl andere volledig abstracte diagrammen zijn. De primaire elementen van een databaseschema zijn entiteiten en tabellen. Een entiteit is een gegevensmodel voor een object in een database, terwijl een tabel een opgeslagen reeks waarden of andere entiteiten is. Net als een blauwdruk kan een goed ontworpen schema worden gebruikt om precies te zien hoe de architectuur van een database is opgebouwd.
Databaseschema's zijn soms nodig om expliciet te laten zien hoe datum wordt opgeslagen en hoe dit zich verhoudt tot de rest van de database. Een entiteit is een weergave van een verzameling gegevens. Zoals elke gegevensstructuur kan deze een aantal velden hebben. Entiteiten hebben meestal echter een uniek identificatieveld. Dit wordt de primaire sleutel genoemd.
Een primaire sleutel is een link naar een tabel. De sleutel moet uniek zijn tussen alle andere elementen in de tabel. Een voorbeeld is een klantnummer voor een database die aankopen in de winkel bijhoudt. Elke entiteit kan slechts één primaire sleutel hebben.
Entiteiten kunnen ook een willekeurig aantal buitenlandse sleutels hebben. Een externe sleutel is meestal de primaire sleutel van een andere entiteit in een andere tabel. In het bovenstaande voorbeeld kan een externe sleutel een bestelnummer voor die klant zijn.
In relationele databases worden primaire en buitenlandse sleutels gebruikt om het zeer belangrijke concept van één-op-veel-relaties uit te drukken. In het gegeven voorbeeld kan een klant veel verschillende bestellingen en bestelnummers hebben. Het omgekeerde is niet waar, omdat de bestelling slechts één klant kan hebben. Eén-op-veel relaties zijn onderdeel van de reden dat een databaseschema nodig is.
Een ander type relatie wordt veel-op-veel genoemd. Dit is een geval waarin een entiteit niet alleen veel relaties met een enkel type kan hebben, maar ook in veel typen door een ander type kan worden opgenomen. Een voorbeeld hiervan is hoe een willekeurig aantal klanten hetzelfde product kan bestellen. Tegelijkertijd kan een klant een willekeurig aantal producten bestellen. Deze veel-op-veel-relatie is gebruikelijk, maar vereist speciale gegevensmodellering om binnen het databaseschema te werken.
Hoewel er enkele standaardconventies zijn die worden gevolgd bij het maken van een databaseschema, zijn er ook veel manieren om de gegevensmodellen weer te geven. Hoe elk schema-object in een abstract ontwerp wordt weergegeven, is de discretie van de datamodeler. In sommige situaties kan een DBMS-systeem een databaseschema accepteren dat op een specifieke manier is geschreven en een deel van het ontwerp daadwerkelijk automatisch implementeren.