Relationele databases: Logisch databaseontwerp

Slides:



Advertisements
Verwante presentaties
KWALITEITSZORG november 2012
Advertisements

Stilstaan bij parkeren Dat houdt ons in beweging
SQL deel 2: datamodel ontwerp
De elektronische verzamelaanvraag Ruben Fontaine Markt- en Inkomensbeheer – dienst Aangiftes.
‘SMS’ Studeren met Succes deel 1
NEDERLANDS WOORD BEELD IN & IN Klik met de muis
WAAROM? Onderzoek naar het meest geschikte traject voor de verlenging tot in Sint-Niklaas van het bestaande fietspad naast de Stekense Vaart en de Molenbeek.
November 2013 Opinieonderzoek Vlaanderen – oktober 2013 Opiniepeiling Vlaanderen uitgevoerd op het iVOXpanel.
Uitgaven aan zorg per financieringsbron / /Hoofdstuk 2 Zorg in perspectief /pagina 1.
1 COVER: Selecteer het grijze vlak hiernaast met rechtsklik & kies ‘change picture’ voor een ander beeld of verwijder deze slide & kies in de menubalk.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Percelen.
Het ER model Een powerpoint presentatie, gemaakt door: F. Triep
 Deel 1: Introductie / presentatie  DVD  Presentatie enquête  Ervaringen gemeente  Pauze  Deel 2 Discussie in kleinere groepen  Discussies in lokalen.
STAPPENPLAN GRAMMATICUS.
Ronde (Sport & Spel) Quiz Night !
Entiteit-Relatie Model
Een Concert van het Nederlands Philharmonisch Orkest LES 4 1.
Van Nul naar Drie Normaliseren.
Normaliseren Datamodellering 2006.
<Mdl01 hoorcollege 1>
Opleiding AI cursus Databases
INITIATIE DEFINITIESELECTIECONCIPIËREN INBEDDING IN ORGANISATIE ONDERHOUD Opdrachtgever/ Projectleider Eigenaar Architect en zijn team Stakeholders INITIATIEDEFINITIESELECTIECONCIPIËRENINBEDDINGONDERHOUD.
Een optimale benutting van vierkante meters Breda, 6 juni 2007.
Kb.1 Ik leer op een goede manier optellen en aftrekken
Tevredenheids- enquête 2012 P. Grouwels Inleiding Mogelijke antwoorden: Zeer goed: 4 sterren ****: volledig tevreden; Goed: 3 sterren ***:
Nooit meer onnodig groen? Luuk Misdom, IT&T
Hoofdstuk 6: Controle structuren
FOD VOLKSGEZONDHEID, VEILIGHEID VAN DE VOEDSELKETEN EN LEEFMILIEU 1 Kwaliteit en Patiëntveiligheid in de Belgische ziekenhuizen anno 2008 Rapportage over.
Elke 7 seconden een nieuw getal
Softwarepakket voor het catalogeren en determineren van fruitsoorten
Regelmaat in getallen … … …
Regelmaat in getallen (1).
1 introductie 3'46” …………… normaal hart hond 1'41” ……..
Relationele databases: Fysiek databaseontwerp en SQL
Oefeningen F-toetsen ANOVA.
Normalisatie Relationeel databaseontwerp:
Opleiding Kunstmatige Intelligentie cursus Databases voor AI
Wat levert de tweede pensioenpijler op voor het personeelslid? 1 Enkele simulaties op basis van de weddeschaal B1-B3.
1 WIJZIGINGEN UNIEK VERSLAG. 2 Agenda Verbeteringen Veranderingen formulieren Praktische herinneringen Nieuwe formulieren Sociale en culturele participatie.
In dit vakje zie je hoeveel je moet betalen. Uit de volgende drie vakjes kan je dan kiezen. Er is er telkens maar eentje juist. Ken je het juiste antwoord,
13 maart 2014 Bodegraven 1. 1Korinthe Want gelijk het lichaam één is en vele leden heeft, en al de leden van het lichaam, hoe vele ook, een lichaam.
Seminarie 1: Pythagoreïsche drietallen
User management voor ondernemingen en organisaties
Ben Bruidegom 1 Sequentiële schakelingen Toestand uitgang bepaald door:  ingangen;  vorige toestand uitgang.
ribwis1 Toegepaste wiskunde – Differentieren Lesweek 7
Database, Document and Content Management
Conceptueel databaseontwerp
Datamodellen en databasemodellen
Hoe gaat dit spel te werk?! Klik op het antwoord dat juist is. Klik op de pijl om door te gaan!
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 3.
De financiële functie: Integrale bedrijfsanalyse©
In opdracht van NOC*NSF
Waar gaat het nou toch om?!
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
12 sept 2013 Bodegraven 1. 2  vooraf lezen: 1Kor.7:12 t/m 24  indeling 1Korinthe 7  1 t/m 9: over het huwelijk  10 t/m 16: over echtscheiding  16.
1 Week /03/ is gestart in mineur De voorspellingen van alle groten der aarden dat de beurzen zouden stijgen is omgekeerd uitgedraaid.
Openbaar je talent Service public, talent particulier.
Conceptueel databaseontwerp
23 mei 2013 Bodegraven vanaf hoofdstuk 6: hoofdst.1: de wijsheid van de wereld hoofdst.2: de wijsheid van God hoofdst.3: Gods akker en Gods bouwwerk.
Objecttechnologie in databases
Vakgroep Telecommunicatie en Informatieverwerking 1 Relationele databases: Het relationeel databasemodel Hoofdstuk 4 Database, Document and Content Management.
Overzicht informatie- vergaring conceptueel ontwerp logisch ontwerp
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Analyse 3 INFANL01-3 week 2 CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK 8 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Herhaling ▸ Normaliseerregels ▸ Omzetten ERD ▸ Group by en SET ▸ Proeftentamen.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
EERDER….. Tabellen rij (record, tuple, occurence) kolom (attribuut, veld) tabel (relatie) tabelstructuur : patient(PAT#,PNAAM,LEEFTIJD,GESLACHT,ARTS)
Wat is SQL (1)? SQL (Structured Query Language):  is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’)  is declaratief (‘WAT’ niet.
Transcript van de presentatie:

Relationele databases: Logisch databaseontwerp Database, Document and Content Management Relationele databases: Logisch databaseontwerp Hoofdstuk 5

Omzetting van een EER-diagram Normalisatie Denormalisatie Overzicht Omzetting van een EER-diagram Normalisatie Denormalisatie

Omzetting van een EER-diagram Overzicht Omzetting van een EER-diagram Overzicht Het omzettingsalgoritme voor relationele databases Aanmaken van gedragspecificaties Case studie Normalisatie Denormalisatie

Omzetting van een EER-diagram Overzicht informatie- vergaring domeinanalyse functionele analyse behoefteanalyse conceptueel ontwerp conceptueel model (bijvoorbeeld EER-diagram) functionele beschrijving databasemodel- onafhankelijk logisch ontwerp dbms- onafhankelijk logisch databaseschema (bijvoorbeeld relationeel) gedragspecificaties fysieke ontwerp DDL-scripts implementatie van gedrag

Omzetting van een EER-diagram conceptueel relationeel databaseontwerp EER-diagram logisch relationeel gedragspecificaties relationeel databaseschema reverse engineering functionele beschrijvingen

Omzetting van een EER-diagram Het omzettingsalgoritme voor relationele databases 9 stappen: 1) Omzetting van reguliere entiteittypes 2) Omzetting van zwakke entiteittypes 3) Omzetting van specialisaties en generalisaties 4) Omzetting van categorieën 5) Omzetting van binaire 1:1 relatietypes 6) Omzetting van binaire 1:N relatietypes 7) Omzetting van binaire M:N relatietypes 8) Omzetting van meerwaardige attributen 9) Omzetting van n-aire relatietypes waarbij n>2

Omzetting van een EER-diagram Stap 1: Omzetting van reguliere entiteittypes Voor elk regulier entiteittype uit het diagram wordt een relationele basisrelatie aangemaakt. Kies een relatienaam. Alle enkelvoudige, enkelwaardige, niet-afgeleide attributen van het entiteittype worden toegevoegd aan het schema van de basisrelatie. Voor alle samengestelde attributen worden enkel de enkelvoudige, enkelwaardige, niet-afgeleide componentattributen toegevoegd. Kies een primaire sleutel. Opmerking: Indien het entiteittype geen sleutel heeft omdat het betrokken is in een specialisatie, generalisatie of categorie, wordt de primaire sleutel van de basisrelatie gedefinieerd in stap 3 of 4.

Omzetting van een EER-diagram Voorbeeld: Artiest Naam Voornaam Achternaam Geboren Gestorven Leeftijd omzetting Artiest (Voornaam:varchar, Achternaam:varchar, Geboren:integer, Gestorven:integer) Primaire sleutel: {Voornaam, Achternaam, Geboren} Tabel Artiest Voornaam: varchar Achternaam: Geboren: integer Gestorven: visualisatie

Omzetting van een EER-diagram Stap 2: Omzetting van zwakke entiteittypes Voor elk zwak entiteittype uit het diagram wordt een relationele basisrelatie aangemaakt. Kies een relatienaam. Alle enkelvoudige, enkelwaardige, niet-afgeleide attributen van het zwak entiteittype worden toegevoegd aan het schema van de basisrelatie. Voor alle samengestelde attributen worden enkel de enkelvoudige, enkelwaardige, niet-afgeleide componentattributen toegevoegd. Voeg vreemde sleutel(s) toe. Beschouw daartoe de primaire sleutels van de basisrelaties die corresponderen met de identificerende entiteittypes. Voeg de enkelvoudige, enkelwaardige, niet-afgeleide (componenten van de) attributen van de identificerende relatietypes toe. Kies een primaire sleutel.

Omzetting van een EER-diagram Voorbeeld: Artiest Naam Voornaam Achternaam Geboren Gestorven Leeftijd omzetting Schilderij (SNaam:varchar, Voornaam:varchar, Achternaam:varchar, Geboren:integer, Waarde:real, Periode:integer) Primaire sleutel: {SNaam, Achternaam, Voornaam, Geboren} Vreemde sleutel: {Achternaam, Voornaam, Geboren} verwijst naar Artiest Schilderij maakt SNaam 1 N Periode Waarde

Omzetting van een EER-diagram visualisatie Tabel Artiest Voornaam: varchar Achternaam: varchar Geboren: integer Gestorven: integer Tabel Schilderij Snaam: varchar Voornaam: varchar Achternaam: varchar Geboren: integer Waarde: real Periode: integer

Omzetting van een EER-diagram Stap 3: Omzetting van specialisaties en generalisaties Enkelvoudige overerving Stel dat de specialisatie of generalisatie m subtypes en 1 supertype heeft. Optie 3A: Meerdere basisrelaties, voor het supertype en de subtypes. Bij deze optie blijven alle bestaande basisrelaties behouden. Voeg de attributen van de primaire sleutel van het supertype als primaire sleutel toe aan de basisrelaties van alle subtypes. Deze attributen vormen in elk van deze basisrelaties tevens een vreemde sleutel. Deze optie werkt voor elke specialisatie of generalisatie.

Omzetting van een EER-diagram Voorbeeld: Optie 3A Waarde ID Kunstwerk (ID:char(3), Waarde:real) Primaire sleutel: {ID} Schilderij (ID:char(3), Verftype:varchar) Vreemde sleutel: {ID} verwijst naar Kunstwerk Beeldhouw (ID:char(3), Gewicht:real) Kunstwerk omzetting Verftype d Gewicht   Schilderij Beeldhouw visualisatie Tabel Kunstwerk Tabel Schilderij Tabel Beeldhouw ID: char(3) Waarde: real ID: char(3) Verftype: varchar ID: char(3) Gewicht: real

Omzetting van een EER-diagram Optie 3B: Meerdere basisrelaties, enkel voor de subtypes. Bij deze optie worden alle attributen van het supertype toegevoegd aan de basisrelaties van alle subtypes. De primaire sleutel van de basisrelatie van het supertype wordt de primaire sleutel in elk van de basisrelaties van de subtypes. Na de toevoeging wordt de basisrelatie van het supertype verwijderd. Deze optie werkt alleen voor totale specialisaties en generalisaties met disjuncte subtypes.

Omzetting van een EER-diagram Waarde ID Voorbeeld: Kunstwerk Verftype d Gewicht   Schilderij Beeldhouw omzetting Optie 3B Schilderij (ID:char(3), Waarde:real, Verftype:varchar) Primaire sleutel: {ID} Beeldhouw (ID:char(3), Waarde:real, Gewicht:real) visualisatie Tabel Schilderij Tabel Beeldhouw ID: char(3) Waarde: real Verftype: varchar ID: char(3) Waarde: real Gewicht: real

Omzetting van een EER-diagram Optie 3C: Eén enkele basisrelatie met één typeattribuut. Bij deze optie worden alle attributen van de basisrelaties van alle subtypes toegevoegd aan de basisrelatie van het supertype. Daarenboven wordt er nog één extra typeattribuut toegevoegd, waarvan de waarde aangeeft of en tot welk subtype een bepaald tuple behoort. Na de toevoeging worden de basisrelaties van de subtypes verwijderd. De primaire sleutel van de basisrelatie van het supertype blijft ongewijzigd. Deze optie werkt alleen voor generalisatie of specialisaties met disjuncte subtypes, ongeacht of de specialisatie of generalisatie totaal of partieel is.

Omzetting van een EER-diagram Voorbeeld: Waarde ID Kunstwerk Verftype d Gewicht   Schilderij Beeldhouw omzetting Optie 3C Kunstwerk (ID:char(3), Waarde:real, Gewicht:real, Verftype:varchar, Typekunstwerk:char(1)) Primaire sleutel: {ID} visualisatie Tabel Kunstwerk ID: char(3) Waarde: real Gewicht: real Verftype: varchar Typekunstwerk: char(1)

Omzetting van een EER-diagram Optie 3D: Eén enkele basisrelatie met meerdere typeattributen. Bij deze optie worden opnieuw alle attributen van de basisrelaties van alle subtypes toegevoegd aan de basisrelatie van het supertype. Nu worden er m typeattributen toegevoegd waarbij elk typeattribuut correspondeert met een subtype en aangeeft of een bepaald tuple al dan niet tot dat subtype behoort. Na de toevoeging worden de basisrelaties van de subtypes verwijderd. De primaire sleutel van de basisrelatie van het supertype blijft ongewijzigd. Deze optie werkt voor elke specialisatie of generalisatie.

Omzetting van een EER-diagram Waarde ID Voorbeeld: Kunstwerk Verftype d Gewicht   Schilderij Beeldhouw omzetting Optie 3D Kunstwerk (ID:char(3), Waarde:real, Gewicht:real, Verftype:varchar, Schilderij:boolean, Beelhouw: boolean) Primaire sleutel: {ID} visualisatie Tabel Kunstwerk ID: char(3) Waarde: real Gewicht: real Verftype: varchar Schilderij: boolean Beeldhouw: boolean

Omzetting van een EER-diagram Meervoudige overerving Optie 3A’: Meerdere basisrelaties, voor de supertypes en het subtype. Alle attributen van de primaire sleutels van de basisrelaties van alle supertypes worden als vreemde sleutel toegevoegd aan de basisrelatie van het subtype. Kies een geschikte primaire sleutel. Optie 3B’: Eén enkele basisrelatie. Alle attributen van de basisrelaties van alle supertypes worden toegevoegd aan de basisrelatie van het subtype. Kies een geschikte primaire sleutel. Verwijder de basisrelaties van de supertypes.

Omzetting van een EER-diagram Stap 4: Omzetting van categorieën Voor elke categorie uit het diagram wordt de verwantschap tussen de categorie en haar supertypes gemodelleerd: De supertypes van de categorie zullen meestal verschillende sleutels hebben. Als dit het geval is, kan een nieuw sleutelattribuut –dat fungeert als surrogaatsleutel– worden toegevoegd aan de basisrelatie van de categorie. In het andere geval wordt het sleutelattribuut van de supertypes toegevoegd aan de basisrelatie van de categorie. De primaire sleutel van de categorie wordt als vreemde sleutel toegevoegd aan de basisrelaties van alle supertypes van de categorie. Merk op dat de controle of een entiteit van de categorie slechts voorkomt als entiteit van juist één van de supertypes niet automatisch wordt afgedwongen door deze omzetting.

Omzetting van een EER-diagram Naam Plaats Belastingnr Voorbeeld: Naam Naam Bedrijf Voornaam Persoon Museum Plaats ‘bedrijf’ Geboren Thema ‘particulier’ ‘museum’ U omzetting  Soort Eigenaar (EigenaarID:char(3), Soort:varchar) Primaire sleutel: {EigenaarID} Persoon (Naam:varchar, Voornaam:varchar, Geboren:date, EigenaarID:char(3)) Primaire sleutel: {Naam, Voornaam, Geboren} Vreemde sleutel: {EigenaarID} verwijst naar Eigenaar Bedrijf (Naam:varchar, Plaats:varchar, Belastingnr:integer, EigenaarID:char(3)) Primaire sleutel: {Naam, Plaats} Museum (Naam:varchar, Plaats:varchar, Thema:varchar, EigenaarID:char(3)) Eigenaar Soort

Omzetting van een EER-diagram Tabel Eigenaar EigenaarID: char(3) Soort: varchar visualisatie Tabel Persoon Voornaam: Geboren: integer Naam: EigenaarID: char(3) Tabel Bedrijf Plaats: Belastingnr: Tabel Museum Thema:

Omzetting van een EER-diagram Stap 5: Omzetting van binaire 1:1 relatietypes Optie 5A: Samenvoegen van beide basisrelaties. Bij deze optie worden beide basisrelaties samengevoegd: Kies een basisrelatie waarvan het entiteittype totaal participeert in het binair relatietype. Voeg alle attributen van de andere basisrelatie toe aan de gekozen basisrelatie. Verwijder de andere basisrelatie. Voeg de enkelvoudige, enkelwaardige, niet-afgeleide (componenten van de) attributen van het relatietype toe aan de basisrelatie. De primaire sleutel van de basisrelatie blijft ongewijzigd. Deze optie is enkel geschikt wanneer minstens één van de entiteittypes totaal participeert in het relatietype.

Omzetting van een EER-diagram Voorbeeld: Rector (Naam:varchar, Faculteit:varchar, Univ_naam:varchar, Plaats:varchar, Ambtstermijn:integer) Primaire sleutel: {Naam} Optie 5A Rector Universiteit bestuurt 1 Naam Faculteit Ambts- termijn Plaats omzetting visualisatie Tabel Rector Faculteit: varchar Univ_naam: Plaats: Ambtstermijn: integer Naam:

Omzetting van een EER-diagram Optie 5B: Behoud van beide basisrelaties, geen extra basisrelatie. Bij deze optie blijven beide basisrelaties behouden: Kies een basisrelatie. Indien mogelijk moet worden gekozen voor de basisrelatie van een entiteittype dat totaal participeert in het relatietype. Voeg de primaire sleutel van de andere basisrelatie als vreemde sleutel toe aan de gekozen basisrelatie. Voeg de enkelvoudige, enkelwaardige, niet-afgeleide (componenten van de) attributen van het relatietype toe aan de basisrelatie. Deze optie is altijd bruikbaar.

Omzetting van een EER-diagram Voorbeeld: Naam Faculteit Rector 1 Ambts- termijn Optie 5B omzetting Universiteit (Univ_naam:varchar, Plaats:varchar) Primaire sleutel: {Univ_naam} Rector (Naam:varchar, Faculteit:varchar, Ambtstermijn:integer, Univ_naam:varchar) Primaire sleutel: {Naam} Vreemde sleutel: {Univ_naam} verwijst naar Universiteit bestuurt 1 Universiteit Naam Plaats visualisatie Tabel Universiteit Tabel Rector Univ_naam: varchar Plaats: varchar Naam: varchar Faculteit: varchar Ambtstermijn: integer Univ_naam: varchar

Omzetting van een EER-diagram Optie 5C: Behoud van beide basisrelaties, met extra basisrelatie. Bij deze optie wordt een extra basisrelatie ingevoerd om het relatietype te modelleren. Kies een gepaste relatienaam. Voeg de primaire sleutels van beide basisrelaties als vreemde sleutels toe. Voeg de enkelvoudige, enkelwaardige, niet-afgeleide (componenten van de) attributen van het relatietype toe. Als primaire sleutel kan één van de vreemde sleutels worden gekozen. Ook deze optie is altijd bruikbaar. Er wordt echter een extra basisrelatie aangemaakt.

Omzetting van een EER-diagram Voorbeeld: Naam Faculteit Rector 1 Ambts- termijn Optie 5C omzetting Universiteit (Univ_naam:varchar, Plaats:varchar) Primaire sleutel: {Univ_naam} Rector (Naam:varchar, Faculteit:varchar) Primaire sleutel: {Naam} Bestuurders (Naam:varchar, Univ_naam:varchar, Ambtstermijn:integer) Vreemde sleutel: {Naam} verwijst naar Rector Vreemde sleutel: {Univ_Naam} verwijst naar Universiteit bestuurt 1 Universiteit Naam Plaats

Omzetting van een EER-diagram visualisatie Tabel Universiteit Tabel Rector Tabel Bestuurders Univ_naam: varchar Plaats: varchar Naam: varchar Faculteit: varchar Naam: varchar Univ_naam: varchar Ambtstermijn: integer

Omzetting van een EER-diagram Stap 6: Omzetting van binaire 1:N relatietypes In deze stap worden alle binaire ‘één-op-meerdere’-relatietypes omgezet. Kies de basisrelatie van het entiteittype met kardinaliteit ‘meerdere’ (de N-zijde). Voeg de primaire sleutel van de andere basisrelatie als vreemde sleutel toe aan de gekozen basisrelatie. Voeg de enkelvoudige, enkelwaardige, niet-afgeleide (componenten van de) attributen van het relatietype toe aan de gekozen basisrelatie.

Omzetting van een EER-diagram Voorbeeld: omzetting Boek Lezer ontleent N 1 Titel Auteur Naam Adres Boek (Nummer:integer, Titel:varchar, Auteur:varchar, Naam:varchar) Primaire sleutel: {Nummer} Vreemde sleutel: {Naam} verwijst naar Lezer Nummer Tabel Lezer Naam: varchar Adres: visualisatie Tabel Boek Titel: Auteur: Nummer: Integer

Omzetting van een EER-diagram Stap 7: Omzetting van binaire M:N relatietypes In deze stap worden alle binaire ‘meerdere-op-meerdere’-relatietypes omgezet. Maak een nieuwe basisrelatie aan. Kies een gepaste relatienaam. Voeg de primaire sleutels van de basisrelaties van de betrokken entiteittypes als vreemde sleutels toe aan de nieuwe basisrelatie. Voeg de enkelvoudige, enkelwaardige, niet-afgeleide (componenten van de) attributen van het relatietype toe aan de nieuwe basisrelatie. De primaire sleutel van de nieuwe basisrelatie bestaat uit de samenvoeging van de attributen van beide vreemde sleutels.

Omzetting van een EER-diagram Voorbeeld: omzetting Student Cursus volgt N M Naam Richting Code Cursusbezetting(Nummer:integer, Code:char(4)) Primaire sleutel: {Nummer, Code} Vreemde sleutel: {Nummer} verwijst naar Student Vreemde sleutel: {Code} verwijst naar Cursus Nummer Jaar Omschr. Tabel Cursus Naam: varchar Omschr: visualisatie Tabel Student Richting: Jaar: integer Nummer: Integer Tabel Cursusbezetting Code: char(4)

Omzetting van een EER-diagram Stap 8: Omzetting van meerwaardige attributen Voor elk niet afgeleid, meerwaardig attribuut wordt een nieuwe basisrelatie aangemaakt. Kies een gepaste relatienaam. Beschouw de basisrelatie van het entiteittype of relatietype waarbij het meerwaardig attribuut voorkomt. Voeg de primaire sleutel van deze basisrelatie als vreemde sleutel toe aan de nieuwe basisrelatie. Voeg de nodige attributen toe om één waarde voor het meerwaardig attribuut te kunnen opslaan. De primaire sleutel wordt verkregen door alle attributen samen te voegen en in het geval van de modellering van een samengesteld meerwaardig attribuut te controleren of geen van de attributen overbodig is.

Omzetting van een EER-diagram Voorbeeld: omzetting Student Naam Richting Talen Talenkennis_Student (Nummer: integer, Taal:varchar) Primaire sleutel: {Nummer,Taal} Vreemde sleutel: {Nummer} verwijst naar Student Nummer Jaar visualisatie Tabel Talenkennis_Student Nummer: integer Taal: varchar Tabel Student Naam: Richting: Jaar: Integer

Omzetting van een EER-diagram Voorbeeld: omzetting Student Naam Richting Taal Talen Talenkennis_Student (Nummer: integer, Taal:varchar, Spreekvaard.:char(1), Schrijfvaard.:char(1)) Primaire sleutel: {Nummer,Taal} Vreemde sleutel: {Nummer} verwijst naar Student Nummer Jaar Spreek- vaard. Schrijf- visualisatie Tabel Talenkennis_Student Nummer: integer Taal: varchar Tabel Student Naam: Richting: Jaar: Integer Spreekvaard.: char(1) Schrijfvaard.:

Omzetting van een EER-diagram Stap 9: Omzetting van n-aire relatietypes (n>2) Voor elk n-air relatietype waarbij n>2, wordt een nieuwe basisrelatie aangemaakt. Kies een gepaste relatienaam. Voeg de primaire sleutels van de basisrelaties van de betrokken entiteittypes als vreemde sleutels toe. Voeg de enkelvoudige, enkelwaardige, niet-afgeleide (componenten van de) attributen van het relatietype toe. De primaire sleutel van de nieuwe basisrelatie bestaat uit de samenvoeging van de attributen van alle vreemde sleutels, tenzij er entiteittypes voorkomen waarvoor de kardinaliteitrestrictie 1 is. In dat geval moet bijkomend worden gecontroleerd of voldaan is aan de irreducibiliteitvoorwaarde en kan het voorkomen dat vreemde sleutels die afkomstig zijn van deze basisrelaties uit de primaire sleutel moeten worden verwijderd. !

Omzetting van een EER-diagram Voorbeeld: Naam Bewaking Planning(Naam:varchar, Nummer:char(3), Code:char(8), Bewaking:boolean) Primaire sleutel: {Nummer, Code} Vreemde sleutel: {Naam} verwijst naar Schilderij Vreemde sleutel: {Nummer} verwijst naar Plaats Vreemde sleutel: {Code} verwijst naar Tentoonstelling omzetting Code Schilderij Tentoonstelling Plaats plan- ning 1 N Periode Nummer Thema

Omzetting van een EER-diagram Tabel Planning Naam: varchar Nummer: char(3) visualisatie Tabel Schilderij Periode: integer Naam: varchar Tabel Plaats Tabel Tentoonstelling Thema: Code: char(8) Bewaking: boolean

Omzetting van een EER-diagram Aanmaken van gedragspecificaties Omzetten van functionele beschrijvingen. Alternatieve sleutels Afdwingen van uniciteit. Integriteitrestricties Afdwingen van beperkingen. Stored procedures Triggers

Omzetting van een EER-diagram Voorbeelden: Controle_periode (IN Periode IN Artiest.Geboren IN Artiest.Gestorven OUT Status) EXCEPTIE (OnmogelijkePeriode) –operatie om te controleren of de periode van het schilderij wel valt binnen de leefperiode van de schilder van het schilderij. Deze functionele beschrijving kan worden omgezet naar een integriteitrestrictie met de volgende specificatie: CREATE ASSERTION Controle_periode CHECK ( NOT EXISTS ( SELECT * FROM Schilderij, Artiest WHERE Schilderij.Artiest = Artiest.A_ID AND ( Schilderij.Periode < Artiest.Geboren OR Schilderij.Periode > Artiest.Gestorven ) ) );

Omzetting van een EER-diagram Ouderdom (IN Periode OUT Ouderdom) EXCEPTIE (PeriodeOnbekend) –operatie om de ouderdom van een schilderij te bepalen. Daartoe wordt de periode van het schilderij vergeleken met de huidige datum. Deze kan worden omgezet naar de stored procedure: CREATE PROCEDURE Bepaal_Ouderdom (Periode IN integer, Leeftijd OUT integer) AS BEGIN IF Periode IS NULL THEN raise PeriodeOnbekend ELSE Leeftijd = CurrentYear() – Periode; ENDIF; END;

Omzetting van een EER-diagram Case studie: Database voor een jeugdvereniging lid van N Lid Groep Activiteit leeftijd minimum maximum naam lidnummer geb.datum voornaam adres straat postcode nummer omschrijving kost tijdstip leider voor schrijft in 1 M betaald geslacht

Omzetting van een EER-diagram Stap 1: Omzetting van reguliere entiteittypes. Deze stap resulteert in de aanmaak van de basisrelaties ‘Lid’, ‘Groep’ en ‘Activiteit’: (1.0) Lid (lidnummer:integer, voornaam:varchar, naam:varchar, geslacht:char(1), geb_datum:date, straat:varchar, huisnr:smallint, postcode:varchar) Primaire sleutel: {lidnummer} (2.0) Groep (naam:varchar, min_leeftijd:smallint, max_leeftijd:smallint) Primaire sleutel: {naam} (3.0) Activiteit(nummer:integer, omschrijving:varchar, kost:real, tijdstip:timestamp) Primaire sleutel: {nummer} Stap 2: Omzetting van zwakke entiteittypes. Er komen geen zwakke entiteittypes voor in het diagram.

Omzetting van een EER-diagram Stap 3: Omzetting van specialisaties en generalisaties. Er komen geen specialisaties of generalisaties voor in het diagram. Stap 4: Omzetting van categorieën. Er komen geen categorieën voor in het diagram. Stap 5: Omzetting van binaire 1:1 relatietypes. Er is één binair 1:1 relatietype ‘leider van’. Er wordt gekozen voor optie 5B. De stap resulteert in de volgende aanpassing van de basisrelatie ‘Groep’: (2.1) Groep (naam:varchar, min_leeftijd:smallint, max_leeftijd:smallint, leider:integer) Primaire sleutel: {naam} Vreemde sleutel: {leider} verwijst naar Lid

Omzetting van een EER-diagram Stap 6: Omzetting van binaire 1:N relatietypes. Er is één binair 1:N relatietype ‘lid van’. De gebruikelijke omzetting resulteert in de volgende aanpassing van de basisrelatie ‘Lid’ van het entiteittype aan de N-zijde: (1.1) Lid (lidnummer:integer, voornaam:varchar, voornaam:varchar,geslacht:char(1), geb_datum:date, straat:varchar, huisnr:smallint, postcode:varchar, groep:varchar) Primaire sleutel: {lidnummer} Vreemde sleutel: {groep} verwijst naar Groep

Omzetting van een EER-diagram Stap 7: Omzetting van binaire M:N relatietypes. Er komen twee binaire M:N relatietypes voor, namelijk ‘voor’ en ‘schrijft in’. Omzetting resulteert in twee nieuwe basisrelaties ‘Planning’ en ‘Inschrijving’: (4.0) Planning (groepnaam:varchar, activiteitnummer:integer) Primaire sleutel: {groepnaam,activiteitnummer} Vreemde sleutel: {groepnaam} verwijst naar Groep Vreemde sleutel: {activiteitnummer} verwijst naar Activiteit (5.0) Inschrijving (activiteitnummer:integer, lidnummer:integer, betaald:boolean) Primaire sleutel: {activiteitnummer, lidnummer} Vreemde sleutel: {lidnummer} verwijst naar Lid

Omzetting van een EER-diagram Stap 8: Omzetting van meerwaardige attributen. Er komen geen meerwaardige attributen voor in het diagram. Stap 9: Omzetting van n-aire relatietypes waarbij n>2. Er komen geen n-aire relatietypes met n>2 voor in het diagram.

Omzetting van een EER-diagram Resulterend relationeel databaseschema: Lid (lidnummer:integer, naam:varchar, voornaam:varchar, geslacht:char(1), geb_datum:date, straat:varchar, huisnr:smallint, postcode:varchar, groep:varchar) Primaire sleutel: {lidnummer} Vreemde sleutel: {groep} verwijst naar Groep Groep (naam:varchar, min_leeftijd:smallint, max_leeftijd:smallint, leider:integer) Primaire sleutel: {naam} Vreemde sleutel: {leider} verwijst naar Lid Activiteit(nummer:integer, omschrijving:varchar, kost:real, tijdstip:timestamp) Primaire sleutel: {nummer}

Omzetting van een EER-diagram Planning (groepnaam:varchar, activiteitnummer:integer) Primaire sleutel: {groepnaam,activiteitnummer} Vreemde sleutel: {groepnaam} verwijst naar Groep Vreemde sleutel: {activiteitnummer} verwijst naar Activiteit Inschrijving (activiteitnummer:integer, lidnummer:integer, betaald: boolean) Primaire sleutel: {activiteitnummer, lidnummer} Vreemde sleutel: {lidnummer} verwijst naar Lid

Omzetting van een EER-diagram Normalisatie Denormalisatie Overzicht Omzetting van een EER-diagram Normalisatie Denormalisatie

Overtollige dataopslag Update-anomalieën Dataverlies Normalisatie Probleemstelling Overtollige dataopslag Update-anomalieën Dataverlies

Normalisatie Tabel Schilderij primaire sleutel = {S_ID} S_ID: char(3) Titel: varchar Naam: S01 Vissershuis S02 De balletles S03 Mona Lisa S05 Na het bad Geboren: integer Da Vinci 1452 Degas 1834 Monet 1840 Gestorven: 1519 1917 1926 1832 Periode: 1882 1872 1499 1883

Het normalisatieproces Functionele afhankelijkheid 1NF  2NF  3NF  BCNF  4NF  5NF Een verzameling van attributen Y is functioneel afhankelijk van een verzameling van attributen X als de waarden van de attributen van Y op elk moment uniek worden vastgelegd door de waarden van de attributen van X. Als de attribuutwaarden van X gekend zijn, zijn daardoor ook de attribuutwaarden van Y gekend. X wordt de determinant van de functionele afhankelijkheid genoemd.

Irreducibele functionele afhankelijkheid Normalisatie Irreducibele functionele afhankelijkheid Functioneel afhankelijkheidsdiagram Een verzameling van attributen Y is irreducibel functioneel afhankelijk van een verzameling van attributen X (genoteerd als X→Y) als Y functioneel afhankelijk is van X en er bovendien geldt dat: 1. X en Y disjunct zijn en dus geen gemeenschappelijke attributen hebben. 2. Er geen echte deelverzameling X’  X van X bestaat, zodat Y functioneel afhankelijk is van X’.

Voorbeeld Normalisatie Tabel Schilderij kandidaatsleutels = {S_ID} en {Titel, Naam} S_ID: char(3) Titel: varchar Periode: integer Naam: varchar Geboren: integer Gestorven: integer Voor de attributen van bovenstaand relatie bestaan de volgende irreducibele functionele afhankelijkheden: {S_ID} → {Titel} {S_ID} → {Periode} {S_ID} → {Naam} {S_ID} → {Geboren} {S_ID} → {Gestorven} {Titel, Naam} → {S_ID} {Titel, Naam} → {Periode} {Naam} → {Geboren} {Naam} → {Gestorven}

De eerste normaalvorm (1NF) Normalisatie De eerste normaalvorm (1NF) Een relatie staat in eerste normaalvorm indien de datatypes van al zijn attributen atomair zijn.

Normalisatie Voorbeeld (in SQL3): Artiest (A_ID:char(3), Naam:varchar, Voornaam:varchar, Verblijfplaats:varchar array [5]) Primaire sleutel: {A_ID} Door het meerwaardig karakter van het datatype ‘varchar array [5]’ staat de relatie ‘Artiest’ niet in eerste normaalvorm. Bij de eerste normalisatiestap moet het worden opgesplitst. Dit kan als volgt: Artiest (A_ID:char(3), Naam:varchar, Voornaam:varchar) VerblijfplaatsArtiest (A_ID:char(3), Verblijfplaats:varchar) Primaire sleutel: {A_ID, Verblijfplaats} Vreemde sleutel: {A_ID} verwijst naar Artiest

De tweede normaalvorm (2NF) Normalisatie De tweede normaalvorm (2NF) Er mogen geen attributen voorkomen die irreducibel functioneel afhankelijk zijn van een deel van de kandidaatsleutel Tweede normaalvorm kan worden bekomen door afsplitsing van de probleemattributen Een relatie staat in tweede normaalvorm indien ze in eerste normaalvorm staat en elk attribuut van de relatie, dat geen deel uitmaakt van een kandidaatsleutel, irreducibel functioneel afhankelijk is van elke kandidaatsleutel van de relatie.

Normalisatie Voorbeeld: Schilderij (S_ID:char(3), Titel:varchar, Periode:integer, Naam:varchar, Geboren:integer, Gestorven:integer) primaire sleutel {S_ID} en alternatieve sleutel {Titel, Naam}. Omdat zowel {Geboren} als {Gestorven} irreducibel functioneel afhankelijk zijn van {Naam} (dus niet van de kandidaatsleutel {Titel, Naam}), staat de relatie niet in tweede normaalvorm. Afsplitsing van de probleemattributen levert de volgende relaties op: Artiest (Naam:varchar,Geboren:integer, Gestorven:integer) primaire sleutel: {Naam} Schilderij (S_ID:char(3), Titel:varchar, Periode:integer, Naam:varchar) primaire sleutel: {S_ID} vreemde sleutel: {Naam} verwijst naar Artiest

De derde normaalvorm (3NF) Normalisatie De derde normaalvorm (3NF) Een irreducibele functionele afhankelijkheid X→Z is transitief, als er een verzameling van attributen Y bestaat, die geen kandidaatsleutel of deelverzameling van een kandidaatsleutel is, waarvoor er geldt dat X→Y en Y→Z. Een relatie staat in derde normaalvorm indien ze in tweede normaalvorm staat en elk attribuut van de relatie, dat geen deel uitmaakt van een kandidaatsleutel, niet transitief irreducibel functioneel afhankelijk is van een kandidaatsleutel van de relatie.

Normalisatie Voorbeeld: Beschouw de volgende variant van de relatie ‘Schilderij’: Schilderij (S_ID:char(3), Titel:varchar, Periode:integer, Naam:varchar, Eigenaar:varchar, Land:varchar) Kandidaatsleutels: {S_ID} en {Titel, Naam}. De afhankelijkheid {S_ID} → {Land} is transitief vanwege de verzameling {Eigenaar}, die geen (deel van een) kandidaatsleutel is, waarvoor {S_ID} → {Eigenaar} en {Eigenaar} → {Land} Deze relatie staat in tweede, maar niet in derde normaalvorm. Afsplitsing van het attribuut ‘Land’ levert de volgende relaties op: Eigenaar (Eigenaar:varchar, Land:varchar) Primaire sleutel: {Eigenaar} Eigenaar:varchar) Primaire sleutel: {S_ID} Vreemde sleutel: {Eigenaar} verwijst naar Eigenaar

De “Boyce-Codd”-normaalvorm (BCNF) Normalisatie De “Boyce-Codd”-normaalvorm (BCNF) Een relatie staat in “Boyce-Codd”-normaalvorm indien ze in eerste normaalvorm staat en elke determinant een kandidaatsleutel is van de relatie.

Normalisatie Voorbeeld: Beschouw de relatie: Kunstbezit (A_ID:char(3), Artiestnaam:varchar, Eigenaar:varchar, Aantal:integer) Kandidaatsleutels: {Artiestnaam, Eigenaar} en {A_ID, Eigenaar} De relatie staat niet in “Boyce-Codd”-normaalvorm omwille van de irreducibele functionele afhankelijkheden {A_ID} → {Artiestnaam} en {Artiestnaam} → {A_ID} waarbij {A_ID} en {Artiestnaam} geen kandidaatsleutel zijn. Dit heeft voor gevolg dat indien een eigenaar meerdere werken van dezelfde artiest bezit, de verwantschap tussen ‘A_ID’ en ‘Artiestnaam’ meerdere keren en dus redundant wordt opgeslagen.

Normalisatie Voorbeeld (vervolg): Afsplitsing van de probleemattributen kan op de twee onderstaande manieren: Kunstenaar (A_ID:char(3), Artiestnaam:varchar) Primaire sleutel: {A_ID}, alternatieve sleutel: {Artiestnaam} Kunstbezit (A_ID:char(3), Eigenaar:varchar, Aantal:integer) Primaire sleutel: {A_ID, Eigenaar} Vreemde sleutel: {A_ID} verwijst naar Kunstenaar of Primaire sleutel: {Artiestnaam}, alternatieve sleutel: {A_ID} Kunstbezit (Artiestnaam:varchar, Eigenaar:varchar, Aantal:integer) Primaire sleutel: {Artiestnaam Eigenaar} Vreemde sleutel: {Artiestnaam} verwijst naar Kunstenaar

Omzetting van een EER-diagram Normalisatie Denormalisatie Overzicht Omzetting van een EER-diagram Normalisatie Denormalisatie

Denormalisatie Voordelen Nadelen