College1Debegrijpelijkeversie

5
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

description

Demo

Transcript of College1Debegrijpelijkeversie

Page 1: 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

Page 2: College1Debegrijpelijkeversie

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

Page 3: College1Debegrijpelijkeversie

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

Page 4: College1Debegrijpelijkeversie

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.