• De afgelopen dagen zijn er meerdere fora waarop bestaande accounts worden overgenomen door spammers. De gebruikersnamen en wachtwoorden zijn via een hack of een lek via andere sites buitgemaakt. Via have i been pwned? kan je controleren of jouw gegeven ook zijn buitgemaakt. Wijzig bij twijfel jouw wachtwoord of schakel de twee-staps-verificatie in.

Relationele databases

  • Onderwerp starter pderaaij
  • Startdatum
Status
Niet open voor verdere reacties.
P

pderaaij

Gast
Aangezien ik dit nu volop behandel in mijn cursus, zal ik het belangrijkste even in een artikel hier plaatsen...

Komt er aan dus.
 
[hand]
Relationele databases

In deze handleiding vertel ik het n en ander over relationele databases. Wat het zijn, hoe het werkt en waarom dit het meestgebruikte database methode is.

Databases

In het dagelijks leven werken wij dagelijks met databases. Een database is immers de eenvoudigste wijze om gegevens te representeren. Een database is te vergelijken met een kaartenbak. In een kaartenbak kan je op eenvoudige wijze een kaart toevoegen, een kaart verwijderen of een een kaart bewerken. Ook is een kaartenbak op n wijze gesorteerd. Bijvoorbeeld op auteur in de bibliotheek.

Een database is te definieren als een hoeveelheid met elkaar verbandhoudende gegevens met veelal een onderlinge relatie.

Architectuur

De structuur van een database is gebaseerd op een zogenoemd drieschema-architectuur. Dit houdt in dat een database op drie niveau's werkt, te weten de volgende niveau's

  • Intern niveau
  • Conceptueel niveau
  • Extern niveau

Intern niveau

Het interne niveau is de fysieke beschrijving van de database. In dit niveau is vastgelegd op welk media de gegevens worden gerealiseerd, maar ook hoe de samenhang tussen gegevens in elkaar steekt.

Ook beschrijft dit niveau hoe de toegangspaden zijn beschreven. Dit kan sequentiel, geindexeerd sequentieel of anders zijn. Hier kom ik later nog op terug.

Dit niveau is eigenlijk de administratie van de database. Het DBMS , DataBase Managment System, gebruikt dit niveau om de database te bewerken en weer te geven.

Als er iets veranderd wordt in de fysieke structuur van een database en dat heeft geen gevolg voor de werking van de programma's noemen we dat fysieke gegevensonafhankelijkheid. Kortom laat je de database in een andere map op de server opslaan en heeft dat geen gevolg voor het programma... dan spreken we over fysieke gegevensonafhankelijkheid.

Conceptueel niveau

Het conceptuele niveau is een wat eenvoudiger te begrijpen niveau omdat dit het werkelijke database ontwerp is. Dit is een weergave van de logische structuur van de website en er staat in beschreven welke attributen er bij elkaar horen, het maximumaantal tekens, maar ook welke verbanden er bestaan tussen de gegevens.

Daarnaast vind je in dit schema ook nog wat integriteitsregels.

Het belangrijkste aan een database is dat hij betrouwbaar en consistent is. Als je in het ne programma het adres van meneer Jansen opvraagt moet dat wel hetzelfde zijn als in het andere programma. Een datasbase mag geen tegenstrijdige gegevens verstrekken.

Als dit wel het geval is noemen we de database corrupt.

Wanneer het conceptuele schema verandert, bijvoorbeeld er komt een extra kolom bij en dat heeft geen gevolgen voor het programma. Het programma kan zonder aanpassingen doorwerken, dan noemen we dat logische gegevensonafhankelijkheid.

Extern niveau

Het externe niveau is een subschema van het conceptuele schema. Het is dus een deelbeschrijving die kolommen van het conceptuele niveau bevat. Een ander word voor extern niveau is ook wel view.

Dit is bijvoorbeeld handig om te programmeren in het gebruik van een ledensysteem. Door een aparte view te maken van alleen naam & adresgegevens is deze eenvoudig op te vragen.

Het relationele model

Nu we weten hoe de architectuur van een database er uit ziet, kunnen we eens naar een relationele database kijken.

Er is een simpele reden waarom relationele databases zo populair zijn . De grondslag van het relationele model ligt namelijk in de wiskunde en vooral de theoretici putten hier veel vertrouwen uit.

Kortom we gaan even de wiskunde induiken.

Verzamelingen

In de wiskunde wordt een verzameling gedefinieerd als een verzamelijk gelijksoortige elementen. Ook een namen van voetbalspeleres of kentekens kunnen verzameling vormen in de wiskunde, niet alleen maar getallen.

Een element in een verzameling komt maar n keer voor en heeft geen volgorde. Zo geldt dus het volgende:

{a,b} = {b,a}

Op een verzameling kun je dus ook wiskundige operatoren uitvoeren. We nemen de belangrijkste even door.

In de onderstaande voorbeelden gelden de volgende verzamelingen.

Verzameling A = {a,b,c}
Verzameling B = {b,y,z}

Unie

De samenvoeging van beide relaties noemen we de unie. De unie van A en B is dan ook:

A B = {a,b,c,y,z}

Intersectie

De intersectie zijn de elementen die in alle verzamelingen voorkomen.

A B = {b}

Verschil

Het verschil tussen de verzamelingen

A\B = {a,c}

Cartetisch product

Om het product van twee verzamelingen te krijgen is het niet noodzakelijk dat de verzamelingen van het zelfde type zijn.

Verzameling A = {a,b}
Verzameling 1 = {1,2}
We krijgen dan het volgende cartetisch product

A * 1 = {(a,1),(a2),(b,1),(b,2)}

Een deelverzameling van het product kan zijn: {(a,2),(b,1)}

Het cartetisch product kan je weergeven in een tabel en hier stappen we dan ook weer terug naar het principe van de relationele database.

<table>
<tr>
<td>Verzameling A</td>
<td>Verzameling 1</td>
</tr>
<tr>
<td>A</td>
<td>2</td>
</tr>
<tr>
<td>B</td>
<td>1</td>
</tr>
</table>

Een tabel en daarmee ook de database is een een groot cartetisch product van allerlei verzamelingen.

Een deelverzameling van een cartetisch product zoals hierboven in de tabel is te zien noemen we een RELATIE. Een RELATIE is dus een deelverzameling van het product van een aantal verzamelingen.

Met deze kennis is het ook een mooie kans om wat begrippen onder de aandacht te brengen.

Begrippen

Attribuut

Een relatie is dus samengesteld uit een aantal begrippen. Zo'n soort begrip noemen we een ATTRIBUUT. Als je dus een relatie auto hebt is de kleur een mogelijk ATTRIBUUT van de relatie auto.

Een attribuut mag niet zomaar allerlei waardes aannemen. Dit wordt beperkt door het DOMEIN

Domein
Het domein is een verzameling die aangeeft welke waarden een attribuut mag aannemen. In de voorbeeld van een auto mag het bijvoorbeeld alleen maar {rood,blauw} zijn. Maar ook een minimumwaarde en maximumwaarde is mogelijk. Zo is een auto die 500km/h rijdt vrij ongeloofwaardig.

Tupel

Een tupel is een element uit de verzameling. In het voorbeeld van de verzameling auto's in een enkele auto dus een tupel.

Dit alles kunnen we terugvinden in een voorbeeld van een tabel definitie.

DOMEIN kleur bestaande uit {rood,blauw}
DOMEIN kenteken bestaande uit 8 posities

RELATIE auto
(autoKleur: Domein kleur
kenteken: Domein kenteken)

Sleutels

Zoals eerder gezegd moet ieder voorkomen in een RELATIE uniek zijn. Als je drie Jan Jansen's in je ledenbestand heeft is dat dus een probleem.

Dit kun je oplossen door iedereen een uniek lidmaatschapsnummer te geven. Zo'n lidmaatschapsnummer noemen we een sleutel omdat het een unieke identificatie is.

Deze sleutels zijn ook belangrijk om de relaties tussen de tabellen te kunnen definiren. Want ook in een deelschema moet ieder voorkomen uniek zijn.

Er zijn drie vormen van sleutels:
  • Kandidaatsleutels
  • Primaire sleutel
  • Foreign key

Kandidaatsleutels

In een relatie zal het altijd zo zijn dat er meerdere attributen een sleutel kunnen zijn. Al deze mogelijkheden noemen we kandidaatsleutels.

Daarnaast kan ook een combinatie van attributen een kandidaatsleutel zijn. Bijvoorbeeld naam + geboorte datum.

De regel van een kandidaatsleutel is dus dat het een uniek voorkomen is in de relatie en dat het niet veel aan verandering onderhevig is.

Primaire sleutel

En van de kandidaatsleutels wordt gekozen als primaire sleutel. Deze sleutel wordt vaak voor het indexeren gebruikt. Vaak wordt deze sleutel als eerste genomed en onderstreept om aan te geven dat dit de Primaire sleutel is.

De overige kandidaatsleutels worden alternatieve sleutels genoemd.

Foreign Key

De foreign key in de ne relatie, is de primary key in de andere. De foreign key is dus de verbinding tussen de verschillende relaties. Zo kan het lidnummer als primary key optreden in de tabel LEDEN, maar als foreign key in de tabel CONTRIBUTIE.

Slotwoord

Dit was een korte en compacte inleiding op relationele databases. Ik ben hier puur ingegaan op de theorie en achterliggende gedachten van relationele databases en de bijbehorende terminologie.

Ik hoop dat je er wat wijzer van bent geworden en als je meer over databases wilt weten is er heel veel op internet over te vinden of kijks eens naar de I-Tracks module Databases & SQL Foundation.
[/hand]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan