De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Relationele databases: Logisch databaseontwerp

Verwante presentaties


Presentatie over: "Relationele databases: Logisch databaseontwerp"— Transcript van de presentatie:

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

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

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

4 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

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

6 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

7 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.

8 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

9 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.

10 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

11 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

12 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.

13 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

14 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.

15 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

16 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.

17 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)

18 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.

19 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

20 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.

21 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.

22 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

23 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:

24 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.

25 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:

26 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.

27 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

28 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.

29 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

30 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

31 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.

32 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

33 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.

34 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)

35 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.

36 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

37 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.:

38 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. !

39 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

40 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

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

42 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 ) ) );

43 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;

44 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

45 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.

46 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

47 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

48 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

49 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.

50 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}

51 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

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

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

54 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

55 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.

56 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’.

57 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}

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

59 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

60 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.

61 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

62 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.

63 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

64 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.

65 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.

66 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

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

68 Denormalisatie Voordelen Nadelen


Download ppt "Relationele databases: Logisch databaseontwerp"

Verwante presentaties


Ads door Google