Relationeel model
Het meest gangbare model, het relationele model, sorteert gegevens in tabellen, ook wel relaties genoemd. Iedere tabel bestaat uit kolommen en rijen. Iedere kolom bevat een attribuut van de betreffende entiteit, zoals prijs, postcode of geboortedatum. De attributen in een relatie worden samen een domein genoemd. Een bepaald attribuut of een combinatie van attributen wordt gekozen als primaire sleutel waarnaar verwezen kan worden in andere tabellen; in dat geval wordt het een refererende sleutel genoemd.
Iedere rij, ook wel een tupel genoemd, bevat gegevens over een specifieke instantie van de betreffende entiteit, zoals een bepaalde werknemer.
Het model houdt ook rekening met de soorten relaties tussen die tabellen, waaronder één-op-één-, één-op-veel- en veel-op-veel-relaties. Hier is een voorbeeld:
Binnen de database kunnen tabellen worden genormaliseerd, oftewel aangepast aan normalisatieregels die de database flexibel, aanpasbaar en schaalbaar maken. Als een tabel genormaliseerd is, is elk gegeven atomair, oftewel opgesplitst in de kleinst mogelijke bruikbare onderdelen.
Relationele databases worden meestal geschreven in Structured Query Language (SQL). Dit model werd in 1970 geïntroduceerd door E.F. Codd.
Hiërarchisch model
Het hiërarchische model organiseert gegevens in een boomstructuur, waarbij elk record één bovenliggend record of 'root' heeft. Nevengeschikte records worden in een bepaalde volgorde gesorteerd. Die volgorde wordt gebruikt als de fysieke volgorde voor het opslaan van de database. Dit model is geschikt voor het beschrijven van veel relaties uit de praktijk.
Dit model werd in de jaren 60 en 70 vooral gebruikt door de informatiemanagementsystemen van IBM, maar je ziet ze tegenwoordig bijna niet meer als gevolg van bepaalde operationele tekortkomingen.
Netwerkmodel
Het netwerkmodel bouwt voort op het hiërarchische model door veel-op-veel-relaties tussen gekoppelde records toe te staan, wat betekent dat er meerdere bovenliggende records kunnen zijn. Het model is gebaseerd op een wiskundige verzamelingenleer en bestaat uit verzamelingen van gerelateerde records. Iedere verzameling bestaat uit een eigenaar of bovenliggend record en een of meer leden of onderliggende records. Een record kan een lid of onderliggend record zijn in meerdere verzamelingen, waardoor dit model complexe relaties kan weergeven.
Het was vooral populair in de jaren 70 nadat het officieel gedefinieerd werd door de Conference on Data Systems Languages (CODASYL).
Objectgeoriënteerd database model
Dit model definieert een database als een verzameling objecten of herbruikbare software-elementen, met bijbehorende functies en methoden. Er zijn verschillende soorten objectgeoriënteerde databases:
Een multimediadatabase bevat media, zoals afbeeldingen, die niet in een relationele database kunnen worden opgeslagen.
In een hypertextdatabase kun je elk object linken aan elk ander object. Dit is handig om veel ongelijksoortige gegevens te ordenen, maar het is niet ideaal voor numerieke analyses.
Het objectgeoriënteerde database model is het bekendste post-relationele database model, omdat het tabellen bevat, maar niet beperkt is tot tabellen. Dergelijke modellen worden ook wel hybride database modellen genoemd.
Object-relationeel model
Dit hybride databasemodel combineert de eenvoud van het relationele model met een aantal van de geavanceerde functies van het objectgeoriënteerde database model. In feite stelt het ontwerpers in staat om objecten op te nemen in de vertrouwde tabelstructuur.
Talen en oproepinterfaces omvatten SQL3, vendor languages, ODBC, JDBC en eigen oproepinterfaces die extensies zijn van de talen en interfaces die gebruikt worden door het relationele model.
Entiteit-relatiemodel
Dit model geeft de relaties tussen entiteiten uit de echte wereld weer, zoals het netwerkmodel, maar is niet zo direct verbonden met de fysieke structuur van de database. In plaats daarvan wordt dit model vaak gebruikt voor het conceptueel ontwerpen van een database.
Hierin worden mensen, plaatsen en dingen waarover gegevenspunten worden opgeslagen, entiteiten genoemd. Elke entiteit heeft bepaalde attributen die samen hun domein vormen. De kardinaliteit, of relaties tussen entiteiten, wordt ook in kaart gebracht.
Een veelgebruikte vorm van het ER-diagram is het sterschema, waarin een centrale feitentabel verbonden is met verschillende dimensionale tabellen.
Andere database modellen
Er zijn in het verleden verschillende andere database modellen gebruikt en sommige worden nog steeds toegepast.
Inverted file-model
Een database die is opgebouwd met een inverted file-structuur is ontworpen om snel zoeken in tekst gemakkelijker te maken. In dit model worden gegevens geïndexeerd als series sleutels in een opzoektabel, waarbij de waardes verwijzen naar de locatie van de bijbehorende bestanden. Deze structuur maakt vrijwel onmiddellijk rapportage mogelijk, bijv. in grote hoeveelheden gegevens en analytics.
Dit model wordt sinds 1970 gebruikt door het ADABAS-database management systeem van Software AG en wordt nog steeds ondersteund.
Plat model
Het platte model is het oudste en eenvoudigste datamodel. Het bevat alle gegevens in één tabel, bestaande uit kolommen en rijen. Voor toegang tot de gegevens of om deze te wijzigen, moet de computer het volledige platte bestand in het geheugen lezen. Daarom is dit model alleen voor de allerkleinste datasets efficiënt.
Multidimensionaal model
Dit is een variant van het relationele model, ontworpen om analytische processen te verbeteren en vergemakkelijken. Waar het relationele model geoptimaliseerd is voor online transaction processing (OLTP) is dit model ontworpen voor online analytical processing (OLAP).
Iedere cel in een dimensionale database bevat gegevens over de dimensies, die worden bijgehouden door de database. Visueel lijkt het meer op een verzameling kubussen dan tweedimensionale tabellen.
Semigestructureerd model
In dit model zijn de structurele gegevens die gewoonlijk in het databaseschema zijn opgenomen, ingebed in de gegevens zelf. Hier is het onderscheid tussen gegevens en schema op zijn best vaag. Dit model is nuttig voor het beschrijven van systemen, zoals bepaalde webgebaseerde gegevensbronnen, die we als databases behandelen, maar die we niet met een schema kunnen vastleggen. Het is ook nuttig voor het beschrijven van interacties tussen databases die niet aan hetzelfde schema voldoen.
Contextmodel
Dit model kan naar behoefte elementen van andere database modellen bevatten. Het voegt elementen samen uit objectgeoriënteerde, semigestructureerde en netwerkmodellen.
Associatief model
Dit model verdeelt alle gegevenspunten op basis van de vraag of ze een entiteit of een associatie beschrijven. In dit model is een entiteit iets dat op zichzelf staat, terwijl een associatie iets is wat alleen in relatie tot iets anders bestaat.
Het associatieve model structureert de gegevens in twee sets:
- Een verzameling items, elk met een unieke ID, een naam en een type.
- Een set koppelingen, elk met een unieke ID en de unieke ID's van een bron, een werkwoord en een doel. Het opgeslagen feit heeft betrekking op de bron, en elk van de drie ID's kan verwijzen naar een koppeling of naar een item.
Andere, minder gebruikelijke database modellen omvatten:
- Het semantische model, dat informatie bevat over hoe de opgeslagen gegevens zich verhouden tot de echte wereld
- De XML-database, waarmee gegevens in XML-formaat kunnen worden gedefinieerd en zelfs opgeslagen
- De named graph
- De triplestore
NoSQL-database modellen
Naast het object database model zijn er andere noSQL-modellen ontstaan in contrast staan met het relationele model:
Het graph-database model, dat nog flexibeler is dan een netwerkmodel, waardoor elk knooppunt met elk ander knooppunt kan worden verbonden.
Het multivalue-model, dat anders is dan het relationele model omdat attributen een lijst met gegevens kunnen bevatten in plaats van één enkel gegevenspunt.
Het documentmodel, dat is ontworpen voor het opslaan en beheren van documenten of semigestructureerde gegevens, in plaats van atomische gegevens.
Databases op het web
De meeste websites maken gebruik van een of andere database om gegevens te ordenen en aan gebruikers te tonen. Als iemand de zoekfuncties op deze sites gebruikt, worden hun zoektermen omgezet in zoekopdrachten die door een databaseserver worden verwerkt. Meestal wordt de webserver via middleware met de database verbonden.
Door hun wijdverbreide aanwezigheid kunnen databases op vrijwel elk gebied worden ingezet, van online winkelen tot het gericht benaderen van een bepaalde groep kiezers in het kader van een politieke campagne. Verschillende sectoren hebben eigen normen ontwikkeld voor het ontwerpen van databases, van luchtvaart tot automobielindustrie.