INFORMATICABEHEER 5 Relationele Databases Hst 3 Normaliseren Vrij
INFORMATICABEHEER 5 Relationele Databases Hst 3 : Normaliseren Vrij Technisch Instituut - Hasselt
1. Van een ERD naar een relationele DB PATIËNT naam voornaam gewicht lengte entiteit attributen tabel tblpatiënten naam voornaam gewicht lengte Jansen Jos 74 kg 1 m 72 Timmers Annie 62 kg 1 m 58 Peeters Filip 85 kg 1 m 82 Kolommen of velden 1 object van de entiteit = 1 record of rij Notatie van een tabel: tblpatiënten (naam, voornaam, gewicht, lengte)
1. Van een ERD naar een relationele DB ERD Een relationele DB (bvb. ACCESS) • Entiteiten • Tabellen • Attributen • Velden • Relaties
2. Kan om het even welke tabel in een relationele DB worden opgenomen? naam voornaam gewicht lengte Jansen Jos 74 kg 1 m 72 Timmers Annie 62 kg 1 m 58 Jansen Jos 74 kg 1 m 72 Peeters Filip 85 kg 1 m 82 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!
2. Kan om het even welke tabel in een relationele DB worden opgenomen? naam voornaam gewicht lengte opmerking Jansen Jos 74 kg 1 m 72 12 kg zwaarder dan persoon hieronder Timmers Annie 62 kg 1 m 60 Flipkens Jan 78 kg 1 m 75 Peeters Filip 85 kg 1 m 82 15 cm groter dan persoon hierboven 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? type kleur levertermijn kostprijs kast zwart wit bruin 6 weken 24 000 BEF salontafel beige wit 4 weken 2 weken 15 000 BEF stoel geel 1 week 4 500 BEF tafel paars bruin rood 5 weken 10 700 BEF Probleem: Hoeveel geheugen moeten we reserveren voor de kolom “kleur”? Voorwaarde 3: gegevens in een kolom mogen geen “opsomming van gegevens” zijn. Elke cel bevat atomaire gegevens
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.
3. HET NORMALISATIEPROCES WAT? 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: 0 NF Een “rauwe” gegevensgroep 1 NF 2 NF 3 NF Gegevensgroep die voldoet aan de eisen van een relationele omgeving: geen redundantie!
3. Het normalisatieproces – STAP 0 – 0 NF • 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 Bankrekening Naam Voornaam Adres Geboortedatu m 063 -1112345 -45 Pieters Alex Pietelbeek 12/02/1980 063 -1234567 -89 Buvens Hiron Burchtstraat 18/02/1975 063 -5689784 -65 Germain Kris Schouwburgst raat 26/03/1966
3. Het normalisatieproces – STAP 0 – 0 NF • Als je geen geschikte sleutel vindt, dan maak je zelf een veld bij, dat dienst doet als primaire sleutel = surrogaatsleutel Klant. ID Naam Voornaam Saldo 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 – 0 NF – een oefening 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 Mutualiteit Nummer SIS-kaart Jeugdbeweging Lidnummer
3. Het normalisatieproces – STAP 1 – 1 NF • Verwijder REPETERENDE GROEPEN (niet atomaire gegevens)
3. Het normalisatieproces – STAP 1 – 1 NF tblpersoneel Tblgesproken_talen
3. Het normalisatieproces – STAP 1 – 1 NF Een tussendoortje: Hoe worden relaties aangegeven in een relationele omgeving? • Relaties worden aangegeven door de primaire sleutel in de ene tabel te herhalen in de andere tabel • Notatie: Lijn tussen de twee tabellen tblpersoneel Tblgesproken_talen
3. Het normalisatieproces – STAP 1 – een oefening Breng volgende gegevensgroep in 0 NF, daarna in 1 NF personeelsnummer adresgegevens uurloon projecten (projectnr, projectnaam) Breng volgende gegevensgroep in 0 NF, daarna in 1 NF Leerling. ID naam voornaam adres Afgelegde toetsen (toetsnr, vak, datum)
3. Het normalisatieproces – STAP 1 – 1 NF 1. Maak een aparte tabel van de gegevens uit de repeterende groep 2. Verwijder repeterende groep uit oude groep 3. Voeg hieraan de sleutel van de oude groep toe 4. Herhaal deze stappen tot er geen repeterende groep meer is
3. Het normalisatieproces – STAP 2 – 2 NF Leerling. ID Toets. ID Naam Voornaam Punten 1 SO 1 Ayaz Gürol 8 2 SO 1 Bos Joachim 9 1 SO 2 Ayaz Gürol 7 2 SO 2 Bos Joachim 6 1 SO 3 Ayaz Gürol 5 2 SO 3 Bos Joachim 5 Als je de Leerling. ID kent, dan ken je meteen ook de naam en voornaam van de lln -> redundantie Leerling. ID Toets. ID Punten Leerling ID Naam Voornaam 1 SO 1 8 1 Ayaz Gurol 2 SO 1 9 2 Bos Joachim 1 SO 2 7 2 SO 2 6 1 SO 3 5 2 SO 3 5
3. Het normalisatieproces – STAP 2 – 2 NF • 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 Leerling. ID Toets. ID Naam leerling Voornaam leerling Punten Gegeven de leerling. ID -> je kan in de databank de naam en voornaam opzoeken Naam en voornaam zijn functioneel afhankelijk van een deel van de sleutel of partieel functioneel afhankelijk van de sleutel Leerling. ID Toets. ID Naam leerling Punten Voornaam leerling
3. Het normalisatieproces – STAP 2 – een oefening Breng volgende gegevensgroep in 2 NF Lidnummer Naamkind Sportclub. ID Naam Sportclub Gemeente
3. Het normalisatieproces – STAP 2 – 2 NF 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 – STAP 3 – 3 NF • Verwijder de TRANSITIEVE FUNCTIONELE AFHANKELIJKHEID: veld is functioneel afhankelijk van een ander veld dat NIET hoort bij de primaire sleutel Boekcode Categorie. Oms Titel BK 1276 K 36 Kinderen 3 -6 jaar Samson op reis 595 VW 0058 K 03 Kinderen 0 -3 jaar Dieren kijken 99 HJ 1000 K 36 Kinderen 3 -6 jaar Samson is ziek 595 … … Boekcode Categoriecode Titel BK 1276 K 36 VW 0058 Auteur … Verkprijs Categoriecode Categorie. Oms Samson op reis 595 K 36 Kinderen 3 -6 jaar K 03 Dieren kijken 99 HJ 1000 K 36 Samson is ziek 595 K 03 Kinderen 0 -3 jaar … … … K 36 Kinderen 3 -6 jaar … …
3. Het normalisatieproces – STAP 3 – 3 NF 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 – STAP 3 – een oefening Breng volgende gegevensgroep in 3 NF Naam Voornaam Adresgegevens (Straat, Postcode, Woonplaats) Datum indiensttreding Afdeling Brutoloon Kinderinfo (naam kind, geboortedatum)
3. Het normalisatieproces – STAP 3 – een extra oefening Breng volgende gegevensgroep in 3 NF 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)
Oefening 1: Breng onderstaande tabel in 2 NF personeelsnummer adresgegevens uurloon projecten (projectnr, projectnaam, klantnaam, werkduur)
Oefening 2: Breng onderstaande tabel in 2 NF paardnummer naam geboortedatum jongen (naam, geboortedatum) wedstrijden (naam, plaats, berijder, prestatie)
- Slides: 26