5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 :...

26
Vrij Technisch Instituut - Hasselt 5 I N F O R M A T I C A B E H E E R Relationele Databases Hst 3 : Normaliseren

Transcript of 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 :...

Page 1: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

Vrij Technisch Instituut -

Hasselt

5

I N

F O

R M

A T

I C

A B

E H

E E

R

Relationele Databases

Hst 3 : Normaliseren

Page 2: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

1. Van een ERD naar een relationele DB

PATIËNTnaam

voornaamgewichtlengte

entiteit

attributen

naam voornaam gewicht lengte

Jansen Jos 74 kg 1m72

Timmers Annie 62 kg 1m58

Peeters Filip 85 kg 1m82

1object van de entiteit = 1 record of rij

Kolommen of velden

tblpatiënten tabel

Notatie van een tabel: tblpatiënten (naam, voornaam, gewicht, lengte)

Page 3: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

ERD

•Entiteiten

•Attributen

•Relaties

•Tabellen

•Velden

•Relaties

Een relationele DB (bvb. ACCESS)

1. Van een ERD naar een relationele DB

Page 4: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

naam voornaam gewicht lengte

Jansen Jos 74 kg 1m72

Timmers Annie 62 kg 1m58

Jansen Jos 74 kg 1m72

Peeters Filip 85 kg 1m82

2. Kan om het even welke tabel in een relationele DB worden opgenomen?

Probleem: 2 identieke rijen

•Gevaar van gegevensinconsistentie

•Onnodig “geheugenverbruik” door gegevensredundantie (zelfde informatie komt op meerdere plaatsen in de tabel voor)

Voorwaarde 1: Geen twee identieke rijen in een relationele DB!

Page 5: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

naam voornaam gewicht lengte opmerking

Jansen Jos 74 kg 1m72 12 kg zwaarder dan persoon hieronder

Timmers Annie 62 kg 1m60

Flipkens Jan 78 kg 1m75 15 cm groter dan persoon hierboven

Peeters Filip 85 kg 1m82

Probleem: Gegevensinconsistentie bij bepaalde operaties (bvb. sorteren op naam)

Voorwaarde 2: volgorde van rijen en kolommen is niet belangrijk, d.w.z. dat je zonder gevolgen rijen en kolommen van plaats mag wisselen

2. Kan om het even welke tabel in een relationele DB worden opgenomen?

Page 6: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

Voorwaarde 3: gegevens in een kolom mogen geen “opsomming van gegevens” zijn. Elke cel bevat atomaire gegevens

type kleur levertermijn kostprijs

kast zwartwit

bruin

6 weken 24 000 BEF

salontafel beigewit

4 weken2 weken

15 000 BEF

stoel geel 1 week 4 500 BEF

tafel paarsbruinrood

5 weken 10 700 BEF

2. Kan om het even welke tabel in een relationele DB worden opgenomen?

Probleem: Hoeveel geheugen moeten we reserveren voor de kolom “kleur”?

Page 7: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

2. Besluit: Voorwaarden waaraan een tabel moet voldoen in een relationele database

1. Geen twee identieke rijen in een relationele DB!

2. Volgorde van rijen en kolommen is niet belangrijk

3. Elke cel bevat atomaire gegevens

Gevaren wanneer deze voorwaarden niet voldaan zijn:

• Risico op inconsistentie

• Gegevensredundantie

Om tot een tabel te komen die aan deze voorwaarden voldoet, moeten enkele stappen ondernomen worden. Het achtereenvolgens uitvoeren van deze stappen nomen we het NORMALISEREN van een DB.

Page 8: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

3. HET NORMALISATIEPROCESWAT?herschikking van gegevens waarbij soms nieuwe gegevensgroepen (tabellen) ontstaan door afzondering van gegevens uit bestaande groepen (tabellen)

DOEL?de uiteindelijke databank mag geen redundantie bevatten en de gegevensinconsistentie wordt ingeperkt

De stappen:

0NF

1NF

2NF

3NF

Een “rauwe” gegevensgroep

Gegevensgroep die voldoet aan de eisen van een relationele omgeving: geen redundantie!

Page 9: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

• Bepaal een PRIMAIRE SLEUTEL = een kolom of veld dat verschillend is voor elk van de rijen of records

• Dit kan ook combinatie zijn van twee of meer velden = samengestelde sleutel

3. Het normalisatieproces – STAP 0 – 0NF

Bankrekening Naam Voornaam Adres Geboortedatum

063-1112345-45 Pieters Alex Pietelbeek 12/02/1980

063-1234567-89 Buvens Hiron Burchtstraat 18/02/1975

063-5689784-65 Germain Kris Schouwburgstraat

26/03/1966

Page 10: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

• Als je geen geschikte sleutel vindt, dan maak je zelf een veld bij, dat dienst doet als primaire sleutel = surrogaatsleutel

KlantIDKlantID NaamNaam VoornaamVoornaam SaldoSaldo

0001 Jan Peters 5 000 BEF

0002 Caroline Peters 4 000 BEF

0003 Jan Kippers 2 500 BEF

0004 Pieter Maes 5 000 BEF

3. Het normalisatieproces – STAP 0 – 0NF

Page 11: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

Geef voorbeeld van een unieke sleutel die door volgende organisaties of instellingen wordt gebruikt om de klant, het lid, … te identificeren

Financiële instelling Nummer bankkaart

Jeugdbeweging Lidnummer

Mutualiteit Nummer SIS-kaart

3. Het normalisatieproces – STAP 0 – 0NF – een oefening

Page 12: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

3. Het normalisatieproces – STAP1 – 1NF

• Verwijder REPETERENDE GROEPEN (niet atomaire gegevens)

Page 13: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

3. Het normalisatieproces – STAP1 – 1NF

tblpersoneel

Tblgesproken_talen

Page 14: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

tblpersoneel

Tblgesproken_talen

3. Het normalisatieproces – STAP1 – 1NF

• Relaties worden aangegeven door de primaire sleutel in de ene tabel te herhalen in de andere tabel

• Notatie: Lijn tussen de twee tabellen

Een tussendoortje: Hoe worden relaties aangegeven in een relationele omgeving?

Page 15: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

personeelsnummeradresgegevensuurloonprojecten (projectnr, projectnaam)

3. Het normalisatieproces – STAP 1 – een oefening

Breng volgende gegevensgroep in 0NF, daarna in 1NF

LeerlingIDnaamvoornaamadresAfgelegde toetsen (toetsnr, vak, datum)

Breng volgende gegevensgroep in 0NF, daarna in 1NF

Page 16: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

1. Maak een aparte tabel van de gegevens uit de repeterende groep

2. Verwijder repeterende groep uit oude groep3. Voeg hieraan de sleutel van de oude groep toe4. Herhaal deze stappen tot er geen repeterende

groep meer is

3. Het normalisatieproces – STAP1 – 1NF

Page 17: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

3. Het normalisatieproces – STAP2 – 2NF

LeerlingID ToetsID Naam Voornaam Punten

1 SO1 Ayaz Gürol 8

2 SO1 Bos Joachim 9

1 SO2 Ayaz Gürol 7

2 SO2 Bos Joachim 6

1 SO3 Ayaz Gürol 5

2 SO3 Bos Joachim 5

Leerling ID Naam Voornaam

1 Ayaz Gurol

2 Bos Joachim

Als je de LeerlingID kent, dan ken je meteen ook de naam en voornaam van de lln -> redundantie

LeerlingID ToetsID Punten

1 SO1 8

2 SO1 9

1 SO2 7

2 SO2 6

1 SO3 5

2 SO3 5

Page 18: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

• Elk veld moet FUNCTIONEEL AFHANKELIJK zijn van de VOLLEDIGE primaire sleutel

• Vermijd PARTIËLE functionele afhankelijkheid, m.a.w. vermijd dat een veld functioneel afhankelijk is van een deel van de sleutel

3. Het normalisatieproces – STAP2 – 2NF

LeerlingID

ToetsID

Naam leerling

Voornaam leerling

Punten

Gegeven de leerlingID -> je kan in de databank de naam en voornaam opzoeken

LeerlingID

ToetsID

Punten

LeerlingID

Naam leerling

Voornaam leerling

Naam en voornaam zijn functioneel afhankelijk van een deel van de sleutel of partieel functioneel afhankelijk van de sleutel

Page 19: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

Lidnummer

Naamkind

SportclubID

Naam Sportclub

Gemeente

3. Het normalisatieproces – STAP 2 – een oefening

Breng volgende gegevensgroep in 2NF

Page 20: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

1. Duid de attributen aan die functioneel afhangen van een deel van de primaire sleutel (min. 2 sleutelvelden nodig) (partiële fucntionele afhankelijkheid)

2. Maak nieuwe groep met: deel primaire sleutel waarvan partieel functioneel afhankelijke attributen afhangen

3. Verwijder attributen uit oude groep

3. Het normalisatieproces – STAP2 – 2NF

Page 21: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

Boekcode Categoriecode CategorieOms Titel Auteur Verkprijs

BK1276 K36 Kinderen 3-6 jaar Samson op reis 595

VW0058 K03 Kinderen 0-3 jaar Dieren kijken 99

HJ1000 K36 Kinderen 3-6 jaar Samson is ziek 595

… … … … … …

Boekcode Categoriecode Titel Auteur Verkprijs

BK1276 K36 Samson op reis 595

VW0058 K03 Dieren kijken 99

HJ1000 K36 Samson is ziek 595

… … … … …

Categoriecode CategorieOms

K36 Kinderen 3-6 jaar

K03 Kinderen 0-3 jaar

K36 Kinderen 3-6 jaar

… …

3. Het normalisatieproces – STAP3 – 3NF

• Verwijder de TRANSITIEVE FUNCTIONELE AFHANKELIJKHEID: veld is functioneel afhankelijk van een ander veld dat NIET hoort bij de primaire sleutel

Page 22: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

1. Duid de attributen aan die functioneel afhangen van een ander attribuut (niet horend tot primaire sleutel)

2. Maak een nieuwe groep met het attribuut waarvan overige attributen afhangen (dit wordt primaire sleutel in nieuwe tabel en de aangeduide attributen)

3. Verwijder attributen uit oude groep

3. Het normalisatieproces – STAP3 – 3NF

Page 23: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

Naam

Voornaam

Adresgegevens (Straat, Postcode, Woonplaats)

Datum indiensttreding

Afdeling

Brutoloon

Kinderinfo (naam kind, geboortedatum)

3. Het normalisatieproces – STAP 3 – een oefening

Breng volgende gegevensgroep in 3NF

Page 24: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

Je hebt een stal met succesvolle paarden en je wil volgende gegevens plaatsen in een databank.

Naam

Geboortedatum

Jongen (Naam, Geboortedatum)

Wedstrijden (Naam, Plaats, Berijder, Prestatie)

3. Het normalisatieproces – STAP 3 – een extra oefening

Breng volgende gegevensgroep in 3NF

Page 25: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

personeelsnummeradresgegevensuurloonprojecten (projectnr, projectnaam, klantnaam, werkduur)

Oefening 1: Breng onderstaande tabel in 2NF

Page 26: 5 I N F O R M A T I C A B E H E E R Vrij Technisch Instituut - Hasselt Relationele Databases Hst 3 : Normaliseren.

paardnummernaamgeboortedatumjongen (naam, geboortedatum)wedstrijden (naam, plaats, berijder, prestatie)

Oefening 2: Breng onderstaande tabel in 2NF