College1Debegrijpelijkeversie
-
Upload
muhammad-ali -
Category
Documents
-
view
2 -
download
0
description
Transcript of College1Debegrijpelijkeversie
College 1: De begrijpelijke versie
Naam Woonplaats Baan Sofinummer
Bert Utrecht Brandweerman 1337
Henk Amsterdam Brandweerman 4242
Els Amsterdam Politieagente 0906
Henk Utrecht Ober 1234
Maria Vdaal City null 0318
Hierboven staat een voorbeeld van een database schema. .
Dit schema kan ook zo geschreven worden: R(Naam, Woonplaats, Baan, Sofinummer). Als ik “R” verander naar “personen”, dan is dat de naam van de relatie..
Een relationele database is een verzameling van relaties. Het gehele bovenstaande diagram is één relatie. Een relationele database bestaat uit één of meer van deze relaties (die allemaal in een eigen schema uitgedrukt kunnen worden).
Attribuut
Een kolom in een relatie is een attribuut. Een attribuut is een eigenschap waarvan elke tupel in de relatie een waarde heeft. Als er geen waarde is voor een attribuut, dan is de waarde null.
In het bovenstaande voorbeeld diagram is Naam een attribuut. Iedere persoon in de database heeft een naam.
In het diagram is de waarde van de baan van Maria null. Maria is dus werkloos.
Tupel
Elke rij is een tupel. Een tupel bevat één waarde voor ieder attribuut in de relatie. De rij “Henk, Amsterdam, Brandweerman, 4242” is een tupel.
Een tupel is een rij van gegevens die allemaal betrekking hebben op één persoon/organisatie/groep/ding/etc. In dit geval gaat het om personen die allemaal een baan, woonplaats en sofinummer hebben. Elke tupel gaat in ons geval om één persoon (de tabel gaat ervan uit dat elke persoon maar één baan en één woonplaats heeft).
Key
Een key is een attribuut dat voor iedere tupel uniek is, oftwel een uniek eigenschap voor iedere persoon uit ons diagram.
Naam Woonplaats Baan Sofinummer
Bert Utrecht Brandweerman 1337
Henk Amsterdam Brandweerman 4242
Els Amsterdam Politieagente 0906
Henk Utrecht Ober 1234
Maria Vdaal City null 0318
Iedere persoon in ons diagram heeft een sofinummer. Dit nummer is een key, omdat het uniek is voor iedere tupel in het diagram.
Naam, Baan en Woonplaats kunnen geen keys zijn, omdat deze attributen niet uniek zijn voor iedere tupel.
Nu in normale taalStel, de personen uit het diagram staan op een plein en je wilt ze naar je toe kunnen roepen. Wanneer je Henk roept, komen er twee personen naar je toe. De naam van de personen is dus niet uniek en kan meerdere resultaten opleveren. Als je echter Henk uit Amsterdam roept, dan krijg je maar 1 resultaat. De attributen Naam en Woonplaats vormen samen dus wel een goede key. Wanneer er nog een Henk uit Amsterdam in de database komt is de key niet geschikt meer.
In ons voorbeeld zijn de volgende attributen en combinaties van attributen geschikt als keys:
SofinummerSofinummer + NaamSofinummer + WoonplaatsSofinummer + BaanSofinummer + Naam + BaanSofinummer + Naam + WoonplaatsSofinummer + Baan + WoonplaatsSofinummer + Baan + Naam+ WoonplaatsNaam + Woonplaats Naam + BaanWoonplaats + BaanNaam + Baan + WoonplaatsCandidate Keys
Alle bovenstaande combinaties zijn keys. Veel ervan bevatten echter overbodige informatie. Als je alle overbodige informatie uit een key verwijdert zonder de identificerende functie te verliezen, dan heb je een candidate key. De volgende combinaties zijn candidate keys:
SofinummerNaam + WoonplaatsNaam + BaanWoonplaats + Baan
Primary Key
Een primary key is een candidate key die je aan de database geeft zodat deze de verschillende tupels kan identificeren. Dit is de key die de database dus als het ware gebruikt om de verschillende tupels te “nummeren”.
In ons geval is het slim om sofinummer als primary key te gebruiken. Elke persoon heeft maar één sofinummer, dus heb je geen kans op dubbele resultaten.
Alles samengevat in een nieuw voorbeeld
ID naam kleur merk telefoon
1 Bert Geel Sony
2 Ernie oranje HTC
3 Pino blauw Samsung
4 Bert paars LG
5 Meneer Aart oranje Sony
Het schema is een relatie.(1, Bert, Geel, Nokia) is een tupel.Naam, kleur, ID en merk telefoon zijn de attributen.
De keys zijn (candidate keys zijn dikgedrukt):
IDID + naamID + kleurID + merk telefoonID + naam + kleurID + naam + merk telefoon
ID + kleur + merk telefoonID + naam + kleur + merk telefoonNaam + kleurNaam + merk telefoonkleur + merk telefoonNaam + kleur + merk telefoon
De candidate keys kunnen de verschillende tupels identificeren en bevatten geen overbodige informatie.
ID is de meest praktische primary key, aangezien deze een uniek nummer vormt voor iedere tupel in het schema.