# Datamodel

Met een datamodel, of gegevensmodel, wordt beschreven hoe de gegevens in een informatiesysteem gestructureerd zijn.

## Overzicht

Men onderscheidt het conceptueel datamodel, het logisch datamodel en het fysiek datamodel.
* Het conceptuele datamodel beschrijft de structuur van en de relaties tussen de conceptuele gegevensobjecten, genaamd entiteiten. De grafische vastlegging van het conceptuele datamodel gebeurt veelal in een Entity Relationship Diagram (ERD).
* Het logische datamodel beschrijft de structuur van en de referenties tussen de logische gegevensobjecten, genaamd tabellen. Het conceptuele model is verbonden aan het logische model doordat entiteiten worden omgezet in tabellen (of preciezer: tabeldefinities), en doordat relaties worden omgezet in foreign key constraints. Het logische datamodel kan grafisch vastgelegd worden in een Data Structure Diagram (DSD).
* Het fysieke datamodel beschrijft de manier waarop gegevens in een individuele database zijn opgeslagen. De verbinding tussen het logische en het fysieke datamodel wordt gelegd door het omzetten van de logische gegevensobjecten in database-definitie instructies conform een bepaalde data definition language (DDL). Na uitvoeren van de DDL op een fysieke database, liggen de definities van de database-objecten vast in de data dictionary van die database. De data dictionary vormt zelf veelal een onderdeel van de database, die door de database administrator (DBA) als belangrijkste metadata repository van die database middels SQL bevraagd wordt.

## Databasemodellen

Er zijn verschillende soorten databasemodellen: De hiervolgende opsomming van het platte datamodel tot aan het objectgeoriënteerde datamodel volgt de ontwikkeling in de tijd, zoals die plaatsvond in de nog vrij recente historie van de informatica.

### Het platte model

Gegevens die gemodelleerd zijn volgens het platte datamodel, worden geïmplementeerd in een platte database. Zo'n database is in wezen een eenvoudige tabel, een tweedimensionale reeks gegevenselementen, waarbij alle elementen in dezelfde kolom gelijksoortige waarden bevatten, terwijl alle elementen van een rij aan elkaar gerelateerd zijn. Zo zouden kolommen voor naam en wachtwoord van toepassing kunnen zijn als onderdeel van een beveiligingsdatabase. Elke rij bevat dan het bij een specifieke gebruiker behorende wachtwoord. Vaak zijn kolommen verbonden met een gegevenstype, zoals: tekstuele informatie, datum- of tijdinformatie, gehele getallen of floating pointgetallen (het domein).
Een moderne en zeer veel gebruikte implementatie van het platte datamodel is de spreadsheet. In een spreadsheet is meestal ook sprake van een eenvoudige datastructuur van rijen en kolommen, waarbij de velden 'cellen' heten.

### Hiërarchisch model

Het hiërarchische model staat meerdere tabellen toe, maar beperkt de relaties tussen gegevens tot een boomstructuur. Gegevens gemodelleerd volgens het hiërarchische model, worden geïmplementeerd in een hiërarchische database.
Hoewel het hiërarchische model als structureringswijze van databases achterhaald is door (vooral) het relationele model, is het in feite dé modelleringswijze voor het structuren van elektronisch uitwisselbare bedrijfsinformatie. Een groot aantal elektronisch uit te wisselen bedrijfstransacties en bedrijfsobjecten is namelijk volgens een hiërarchisch model gestructureerd in zogenaamde EDI-berichtdefinities. Denk hierbij aan factuurberichten, leveringsberichten en productberichten.
XML is de veelgebruikte open standaard voor de opmaaktalen die de datastructuur vastleggen van dit soort berichten en overigens ook van veel bestanden. In de modellering van die XML-berichten en -bestanden, met behulp van de XML-Schemadefinitietaal (XSD), zal men meestal een hiërarchisch model hanteren.

### Netwerkmodel

Het netwerkmodel borduurt verder op het hiërarchische model door niet alleen een op veel relaties tussen gegevensobjecten toe te staan (een parent heeft mogelijk meerdere children, maar een child heeft altijd maar een parent), maar ook n op m relaties (nu kan een child ook meerdere parents hebben). Op deze wijze kan een netwerkstructuur ontstaan, die rijker is dan de hiërarchische structuur. Netwerkmodellen worden logischerwijs geïmplementeerd in netwerkdatabases.

### Relationeel model

Gegevens die in een relationeel model zijn gestructureerd, worden in een relationele database geïmplementeerd. Dit is eveneens een verzameling tabellen. Tabellen worden hier "relaties" genoemd, naar analogie van het concept van een wiskundige relatie. De kracht van dit model treedt aan de dag wanneer bevragingen van verschillende tabellen gecombineerd worden. De theorie achter het relationele model werd ontwikkeld door Ted Codd. Voor het bevragen van de gegevens in een relationele database wordt de querytaal SQL gebruikt.
Anders dan bij netwerkdatabases worden de verbanden tussen tabellen niet expliciet gedefinieerd. In plaats daarvan duidt de aanwezigheid van gegevenselementen uit hetzelfde domein impliciet op een potentieel verband tussen twee eigenschappen, eventueel in verschillende tabellen. Bewerkingen worden uitgevoerd op basis van de relationele algebra. Als gevolg daarvan kan een relationele database flexibel gereorganiseerd worden en gebruikt op een manier die door de oorspronkelijke ontwerpers niet was voorzien. Veel van de huidige databases zijn gebaseerd op afleidingen van het relationele model, juist vanwege deze flexibiliteit.
Relationele databases worden meestal gebouwd met een genormaliseerd datamodel. Dit zorgt ervoor dat gegevens niet gedupliceerd worden opgeslagen (opslag optimalisatie). Normalisatie kan echter bijvoorbeeld bij rapportages tot een trage respons leiden. Om deze reden zijn alternatieve gedenormaliseerde datamodellen ontworpen in datawarehouse oplossingen.

### Objectgeoriënteerde model

In objectgeoriënteerde databases worden data opgeslagen in objecten. De kenmerken van objectgeoriënteerde modellen zijn overerving, encapsulatie en abstractie. Zie ook object (informatica). Er bestaan databases die helemaal object georiënteerd zijn, maar er zijn ook databases die een hybride variant van objectgeoriënteerd en relationeel zijn.

### Object-relationeel model

Dit is een mengvorm van verschillende datamodellen. Hierbij worden de verschillende modellen samengevoegd.

## Data-architectuur

De collectie datamodellen van de verschillende systemen in gebruik in een organisatie maakt deel uit van de data-architectuur van de onderneming. Door de modellen van gelijke datadefinities gebruik te laten maken, wordt integratie van systemen vergemakkelijkt.