Een relationele database is een type database waarin datapunten worden opgeslagen en dat toegang biedt tot datapunten die met elkaar in relatie staan. Relationele databases zijn gebaseerd op het relationele model, een intuïtieve, directe manier om data in tabellen weer te geven. In een relationele database is elke rij in de tabel een record met een unieke ID, de sleutel genoemd. De kolommen van de tabel bevatten attributen van de data en elke record heeft meestal een waarde voor elk attribuut, waardoor het eenvoudig is om de relaties tussen datapunten vast te stellen.
Dit is een eenvoudig voorbeeld van twee tabellen die een klein bedrijf kan gebruiken om bestellingen voor zijn producten te verwerken. De eerste tabel is een tabel met klantgegevens, dus elke record bevat naam, adres, verzend- en factuurgegevens, telefoonnummer en andere contactinformatie van een klant. Elk stukje informatie (elk attribuut) bevindt zich in een eigen kolom en de database wijst aan elke rij een unieke ID (een sleutel) toe. In de tweede tabel, een tabel met bestellingen van klanten, bevat elke record de ID van de klant die de bestelling heeft geplaatst, het bestelde product, de hoeveelheid, de geselecteerde grootte en kleur, enzovoort, maar niet de naam van de klant of contactinformatie.
Deze twee tabellen hebben maar één ding gemeen: de ID-kolom (de sleutel). Maar vanwege die gemeenschappelijke kolom kan de relationele database een relatie creëren tussen de twee tabellen. Wanneer de orderverwerkingsapplicatie van de klant vervolgens een bestelling naar de database verzendt, kan de database naar de tabel met bestellingen van klanten gaan, de juiste informatie over de productorder ophalen en de klant-ID uit die tabel gebruiken om de factuur- en verzendinformatie op te zoeken in de tabel met klantgegevens. Het magazijn kan vervolgens het juiste product pakken, de klant kan de bestelling tijdig ontvangen en het bedrijf kan worden betaald.
Het relationele model houdt in dat de logische datastructuren (de datatabellen, weergaven en indexen) zijn gescheiden van de fysieke opslagstructuren. Deze scheiding zorgt ervoor dat databasebeheerders fysieke dataopslag kunnen beheren zonder de toegang tot die data als een logische structuur te beïnvloeden. Wanneer een databasebestand bijvoorbeeld een nieuwe naam krijgt, wordt de naam van de erin opgeslagen tabellen niet gewijzigd.
Het onderscheid tussen logisch en fysiek is ook van toepassing op databasebewerkingen, wat duidelijk gedefinieerde acties zijn waarmee applicaties de data en structuren van de database kunnen manipuleren. Logische bewerkingen stellen een applicatie in staat om de inhoud die deze nodig heeft te specificeren, en fysieke bewerkingen bepalen hoe die data moet worden benaderd en voert de taak vervolgens uit.
Om ervoor te zorgen dat data altijd accuraat en toegankelijk is, volgen relationele databases bepaalde integriteitsregels. Een integriteitsregel kan bijvoorbeeld specificeren dat dubbele rijen niet zijn toegestaan in een tabel om het risico van foutieve informatie in de database te elimineren.
In de beginjaren van databases sloeg elke applicatie data op in zijn eigen unieke structuur. Toen ontwikkelaars applicaties wilden bouwen om die data te gebruiken, moesten ze veel weten over de specifieke datastructuur om de data te vinden die ze nodig hadden. Deze datastructuren waren inefficiënt, moeilijk te onderhouden en moeilijk te optimaliseren om applicaties goed te laten presteren. Het relationele databasemodel is ontworpen om het probleem van meerdere arbitraire datastructuren op te lossen.
Het relationele datamodel leverde een standaardmanier voor het weergeven en doorzoeken van data, die door elke applicatie kon worden gebruikt. Vanaf het begin begrepen ontwikkelaars dat de belangrijkste kracht van het relationele databasemodel in het gebruik van tabellen lag. Tabellen waren een intuïtieve, efficiënte en flexibele manier om gestructureerde informatie op te slaan en te openen.
In de loop der tijd werd een ander sterk punt van het relationele model zichtbaar, toen ontwikkelaars gestructureerde querytaal (SQL) gingen gebruiken om data in een database te schrijven en doorzoeken. SQL wordt al vele jaren veel gebruikt als de taal voor databasequery's. SQL biedt op basis van relationele algebra een intern consistente wiskundige taal die het gemakkelijker maakt om de prestaties van alle databasequery's te verbeteren. Ter vergelijking, andere benaderingen moeten individuele query's definiëren.
Het eenvoudige maar krachtige relationele model wordt gebruikt door organisaties van alle soorten en maten voor een breed scala aan informatiebehoeften. Relationele databases worden gebruikt om inventarissen bij te houden, e-commercetransacties te verwerken, enorme hoeveelheden cruciale klantinformatie te beheren en nog veel meer. Een relationele database komt in aanmerking voor elke informatiebehoefte waarbij datapunten met elkaar in verband staan en moeten worden beheerd op een veilige, op regels gebaseerde, consistente manier.
Relationele databases bestaan al sinds de jaren 1970. Tegenwoordig blijft het relationele model dankzij de voordelen die het biedt het meest geaccepteerde model voor databases.
Het relationele model is het best in het handhaven van dataconsistentie tussen applicaties en databasekopieën (exemplaren genaamd). Wanneer een klant bijvoorbeeld geld stort bij een geldautomaat en vervolgens zijn saldo bekijkt op een mobiele telefoon, verwacht de klant dat die storting onmiddellijk wordt weergegeven in een bijgewerkt saldo. Relationele databases blinken uit in dit soort dataconsistentie, waardoor meerdere exemplaren van een database steeds dezelfde data hebben.
Het is voor andere soorten databases lastig om dit niveau van snelle consistentie met grote hoeveelheden data te behouden. Sommige recente databases, zoals NoSQL, kunnen slechts 'uiteindelijke consistentie' bieden. Volgens dit principe heeft data, wanneer de database wordt geschaald of wanneer meerdere gebruikers dezelfde data tegelijkertijd gebruiken, wat tijd nodig om bij te werken. Uiteindelijke consistentie is acceptabel voor sommige toepassingen, zoals het bijhouden van vermeldingen in een productcatalogus, maar voor kritieke bedrijfsactiviteiten, zoals winkelwagentransacties, is de relationele database nog steeds de gouden standaard.
Relationele databases verwerken bedrijfsregels en -beleid op een zeer gedetailleerd niveau, met strikt beleid met betrekking tot vastlegging (dat wil zeggen, een wijziging in de database permanent maken). Denk bijvoorbeeld aan een voorraaddatabase die drie onderdelen volgt die altijd samen worden gebruikt. Wanneer één onderdeel uit de voorraad wordt gehaald, moeten de andere twee er ook uit worden gehaald. Als een van de drie onderdelen niet beschikbaar is, mag geen van de onderdelen eruit worden gehaald. Alle drie de onderdelen moeten beschikbaar zijn voordat een wijziging in de database kan worden vastgelegd. In een relationele database wordt geen wijziging voor een enkel onderdeel vastgelegd tot duidelijk is dat alle drie de onderdelen kunnen worden vastgelegd. Deze veelzijdige vastleggingsfunctie wordt atomiciteit genoemd. Atomiciteit is de sleutel tot het accuraat houden van data in de database en om ervoor te zorgen dat de data voldoet aan de regels, voorschriften en beleidsregels van het bedrijf.
Relationele databasetransacties hebben vier cruciale eigenschappen: atomiciteit, consistentie, isolatie en duurzaamheid, meestal aangeduid als ACID.
Datatoegang omvat veel herhaalde acties. Een eenvoudige query om informatie uit een datatabel te halen, moet bijvoorbeeld honderden of duizenden keren worden herhaald om het gewenste resultaat te produceren. Deze datatoegangsfuncties vereisen een bepaald type code voor toegang tot de database. Applicatieontwikkelaars willen niet in elke nieuwe applicatie nieuwe code voor deze functies moeten schrijven. Gelukkig zijn opgeslagen procedures toegestaan in relationele databases, dit zijn blokken code die toegankelijk zijn via een eenvoudige applicatie-oproep. Een enkele opgeslagen procedure kan bijvoorbeeld zorgen voor consistente record-tagging voor gebruikers van meerdere applicaties. Opgeslagen procedures kunnen ontwikkelaars ook helpen om te zorgen dat bepaalde datafuncties in de applicatie op een specifieke manier worden geïmplementeerd.
Conflicten kunnen ontstaan in een database wanneer meerdere gebruikers of applicaties tegelijkertijd proberen data te wijzigen. Technieken voor vergrendeling en gelijktijdigheid beperken de kans op conflicten terwijl de integriteit van data behouden blijft.
Vergrendelen voorkomt dat andere gebruikers en applicaties toegang krijgen tot data terwijl deze wordt bijgewerkt. In sommige databases geldt vergrendeling voor de hele tabel, wat een negatieve invloed heeft op de prestaties van de applicatie. Andere databases, zoals relationele databases van Oracle, passen vergrendeling toe op recordniveau, waardoor de andere records binnen de tabel beschikbaar blijven, waardoor de applicatie beter presteert.
Gelijktijdigheid regelt de activiteit wanneer meerdere gebruikers of applicaties tegelijkertijd query's in dezelfde database aanroepen. Deze functie biedt de juiste toegang tot gebruikers en applicaties in overeenstemming met het beleid dat is gedefinieerd voor datacontrole.
De software die wordt gebruikt voor het opslaan, beheren, doorzoeken en ophalen van data die in een relationele database is opgeslagen, wordt een relationeel databasebeheersysteem (RDBMS) genoemd. Het RDBMS biedt een interface tussen gebruikers en applicaties en de database, evenals beheerfuncties voor het beheren van dataopslag, toegang en prestaties.
Verschillende factoren kunnen van invloed zijn op uw beslissing wanneer u een keuze moet maken uit databasetypen en relationele databaseproducten. Welk RDBMS u kiest, is afhankelijk van uw zakelijke behoeften. Stel uzelf de volgende vragen:
In de loop der jaren zijn relationele databases beter, sneller, krachtiger en gemakkelijker om mee te werken geworden. Maar ze zijn ook complexer geworden en het beheren van de database was lange tijd een fulltime baan. In plaats van hun expertise te gebruiken om innovatieve applicaties te ontwikkelen die waarde toevoegen aan het bedrijf, moesten ontwikkelaars het grootste deel van hun tijd besteden aan de beheerwerkzaamheden die nodig waren om de databaseprestaties te optimaliseren.
Tegenwoordig bouwt autonome technologie voort op de sterke punten van het relationele model, clouddatabasetechnologie en machine learning om een nieuw type relationele database te leveren. De zelfsturende database (ook wel de autonome database genoemd) behoudt de kracht en voordelen van het relationele model, maar maakt gebruik van kunstmatige intelligentie (AI), machine learning en automatisering om queryprestaties en beheertaken te bewaken en te verbeteren. Om bijvoorbeeld de queryprestaties te verbeteren, kan de zelfsturende database hypothesen en indexen testen om zoekopdrachten sneller te maken en de beste in de productie te zetten, helemaal zelf. De zelfsturende database brengt deze verbeteringen doorlopend aan, zonder dat menselijke betrokkenheid nodig is.
Autonome technologie bevrijdt ontwikkelaars van de routinematige taken van databasebeheer. Ze hoeven bijvoorbeeld niet langer vooraf infrastructuurvereisten te bepalen. In plaats daarvan kunnen ze met een zelfsturende database opslagruimte toevoegen en resources berekenen om de groei van de database te ondersteunen. In slechts een paar stappen kunnen ontwikkelaars eenvoudig een autonome relationele database maken, wat de tijd voor de ontwikkeling van applicaties versnelt.