98-361 – Software development fundamentals databases 98-361 – Software development fundamentals
inhoudsopgave In het MTA examen gaat ook een deel over databases (zie ook de PDF van lesson 5, ‘Understanding Databases’) Daarom hebben we het deze les over: ERD’s Normaalvormen SQL queries op genormaliseerde databases (joins) Daarna breiden we de northwind applicatie nog een keer uit
check Wat hebben we geleerd bij het vak Databases over: ERD’s Normaalvormen (1e t/m 3e) SQL (select incl. where & joins, insert, update, delete)
Entiteit relatiediagram ERD: Schematische weergave van een databaseontwerp Bestaat uit: entiteiten, attributen en relaties. ERD’s kunnen op verschillende manieren worden getekend: Welke manier heeft jouw voorkeur en waarom?
Entiteit relatiediagram Scenario 6-1: Creating an Entity-Relationship Diagram A company has a number of employees, and each employee may be assigned to one or more projects. In addition, each project can have one or more employees working on it. Draw an entity-relationship diagram for this situation. Wat zijn de entiteiten? Wat zijn de relaties? Teken het ERD Welke manier heeft jouw voorkeur en waarom?
ERD van de Northwind database Waarom zoveel tabellen? Stel, we zetten de klantgegevens in de Ordertabel Wat zijn de gevolgen? Voor de database zelf Voor de databasebeheerder Voor de softwareontwikkelaar
ERD van de Northwind database Waarom zoveel tabellen? Stel, we zetten de klantgegevens in de Ordertabel Wat zijn de gevolgen? Voor de database zelf – wordt groter Voor de databasebeheerder – meer kans op fouten Voor de softwareontwikkelaar – queries veranderen
Normaliseren Wikipedia: Normalization involves decomposing a table into less redundant (and smaller) tables without losing information, and then linking the data back together by defining foreign keys in the old table referencing the primary keys of the new ones. The objective is to isolate data so that additions, deletions, and modifications of an attribute can be made in just one table and then propagated through the rest of the database using the defined foreign keys. Geen dubbele gegevens (redundantie) Minder kans op fouten Anders bekeken: Alle gegevens in één tabel, goed idee of niet? Normal/normaal kan je hier lezen als standaard, niet als gewoon
De normaalvormen 1NF: Elke rij moet een unieke primary key hebben (mag uit meerdere kolommen bestaan) Elke kolom mag maar 1 waarde bevatten, herhalende groepen gegevens zijn niet toegestaan 2NF: Bij een samengestelde primary key mogen kolommen niet afhankelijk zijn van maar een deel van de sleutel 3NF Kolommen mogen niet afhankelijk zijn van andere niet-keykolommen, ze moeten afhankelijk zijn van de primary key
Wat je moet kunnen Op het MTA examen: Kunnen herkennen aan welke normaalvormen een tabel voldoet (1NF, 2NF, 3NF) Waarom zijn normaalvormen belangrijk? Verminderen van redundantie: vermindert de hoeveelheid data en de kans op fouten. Databases voldoen bijna altijd aan 3NF, tenzij er een specifieke reden is om dat niet te doen. Na voldoende ervaring met databases gaat dit min of meer vanzelf. Hoe werkt het? Bekijk de voorbeeldvideo op https://www.youtube.com/watch?v=mFU_s_9kY1U Meer over normaliseren in de lessen van het vak databases
Herken de normaalvorm 101 1 10/1/2010 Jane Doe 102 2 10/5/2010 John In welke normaalvorm bevindt deze tabel zich? OrderId CustomerId OrderDate FirstName LastName 101 1 10/1/2010 Jane Doe 102 2 10/5/2010 John 103 10/4/2010
Herken de normaalvorm 101 1 10/1/2010 Jane Doe 102 2 10/5/2010 John In welke normaalvorm bevindt deze tabel zich? Antwoord: 1NF, voor 2NF zouden CustomerId, FirstName en LastName in een aparte tabel moeten staan. FirstName en LastName zijn namelijk niet afhankelijk van OrderId OrderId CustomerId OrderDate FirstName LastName 101 1 10/1/2010 Jane Doe 102 2 10/5/2010 John 103 10/4/2010
Herken de normaalvorm Id FirstName LastName PhoneNumber 1 Jane Doe In welke normaalvorm bevindt deze tabel zich? Id FirstName LastName PhoneNumber 1 Jane Doe (503) 555-6874 2 John (509) 555-7969, (509) 555-7970 3 Howard Steel (604) 555-3392, (604) 555-3393
Herken de normaalvorm Id FirstName LastName PhoneNumber 1 Jane Doe In welke normaalvorm bevindt deze tabel zich? Antwoord: Geen, deze tabel is niet genormaliseerd. Voor 1NF mag er maar 1 telefoonnummer in de kolom staan. Id FirstName LastName PhoneNumber 1 Jane Doe (503) 555-6874 2 John (509) 555-7969, (509) 555-7970 3 Howard Steel (604) 555-3392, (604) 555-3393
Wat gaan we doen In een genormaliseerde database is de data verdeeld over meerdere tabellen. Dit maakt queries ingewikkelder Voorbeeld, denk aan het orderoverzicht: De bedrijfsnaam van de klant tonen De naam van het verzendbedrijf tonen Met SELECT * FROM Orders gaat dit niet lukken, Wat heb je nodig? Los beide problemen op.
De opdrachten De laatste uitbreiding van de Northwind applicatie: Toon de naam van het verzendbedrijf in het orderoverzicht.
Afsluiting Zijn er vragen?