Loading AI tools
database Van Wikipedia, de vrije encyclopedie
Een tabel is een entiteit binnen een relationele database. Een tabel heeft een naam en bestaat verder uit:
Een record bestaat weer uit velden. Elk veld komt overeen met een kolom die zijn metagegevens bevat. De gegevens in een tabel wordt vaak gepresenteerd als een matrix van velden waarvan de eerste regel de kolomnamen vormen.
In een goed genormaliseerde database komt een gegeven maar 1 keer voor. Om gegevens te koppelen kunnen relaties worden gebruikt tussen de tabellen.
Hieronder een voorbeeld van de tabellen Klanten en Facturen. In de tabel Klanten is de kolom KlantID de primaire sleutel. In de tabel Facturen is FactuurID de primaire sleutel. Dit zijn gebruikelijke namen voor sleutels. De getallen zelf betekenen niets, ze moeten echter wel uniek binnen de tabel zijn.
Een andere zoeksleutel voor Klanten zou kunnen zijn de combinatie van kolommen Naam en Achternaam. Deze hoeft dan niet uniek te zijn. De primaire sleutel is altijd uniek.
Klanten: KlantID Naam Achternaam ------- ---- ---------- 1 David Copperfield 2 Hans Kazan ↑ |__________ | | Facturen: ↓ FactuurID CustNr bedrag --------- ------- ------ 1 2 10 2 1 20 3 2 20 4 2 30 5 1 40
De nummers in de kolom Klanten.KlantID komen overeen met die in Facturen.CustNr (de namen van de kolommen mogen verschillen). Dit vormt een 1-op-n-relatie waarbij 1 klant n facturen kan hebben.
De relationele database (RDB) heeft zijn naam te danken aan het feit dat een tabel relaties legt tussen velden: hetzij velden van één rij van één tabel, hetzij velden van verschillende tabellen, wanneer deze met elkaar verbonden zijn via een sleutelkolom. Binnen de tabel Facturen heeft het veld CustNr een foreign key. Dit omdat deze kolom in feite de sleutel is van een andere tabel.
Een tabel beschrijft in het algemeen meerdere n-op-m-relaties, omdat een kolom k1 meerdere keren dezelfde waarde kan bevatten, telkens horend bij een verschillende waarde van kolom k2, terwijl tezelfdertijd verschillende waarden van k1 met dezelfde waarde van k2 kunnen overeenkomen. Behoren kolommen k1 en k2 tot twee verschillende tabellen, dan heeft men dus een n-op-m-relatie tussen die twee tabellen. Meestal echter zal men in dat geval een extra tabel aanmaken die de koppeling implementeert. Zo'n tabel bevat dan twee foreign keys, één naar elk van de twee basistabellen. In die basistabellen komt elke waarde in kolom k1 resp. k2 slechts één keer voor, terwijl in de koppeltabel de oorspronkelijke n-op-m-relatie terug te vinden is. Meer hierover in het artikel Datamodel.
Een index (of zoeksleutel) biedt de mogelijkheid om zeer snel de juiste rij in een tabel te vinden, ook als er miljoenen rijen zijn. De technieken die hiervoor gebruikt worden lijken op technieken die voor associatieve arrays gebruikt worden. Deze technieken zijn hashtabels en binaire bomen. Als een rij aan de tabel toegevoegd of verwijderd wordt, of er worden velden gewijzigd, dan moeten de indices bijgewerkt worden. Omdat indices soms in een aparte file bijgehouden worden spreekt men ook wel over het bijwerken van de index file.
Het bovenstaande impliceert dat hoe meer indices er over een tabel heen liggen, hoe langer het wijzigen van een rij duurt. Het opzoeken gaat echter sneller. Het opzoeken van een rij via kolommen waarvoor geen index bestaat duurt enorm lang vergeleken bij geïndexeerd zoeken. De ontwerper van de database moet het maken van indices dus goed kiezen naar aanleiding van het te verwachten gebruik. Bij een tabel die niet vaak wijzigt zal men geneigd zijn meer indices aan te leggen.
Verwar een index of sleutel niet met het begrip "primaire sleutel" of "foreign key" zoals hierboven bij "relaties" besproken!
Het is bij de meeste relationele databases mogelijk om triggers aan te brengen. Zo'n trigger zorgt ervoor dat op het moment dat er in een tabel een wijziging optreedt (record wijzigen, record verwijderen, record toevoegen) er een script (bijvoorbeeld SQL) of computerprogramma (bijvoorbeeld RPG) aangeroepen wordt dat controles uitvoert of meer wijzigingen in de database aanbrengt. Als zo'n controle faalt kan de wijziging niet uitgevoerd worden.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.