SQL en Datanormalisatie

Slides:



Advertisements
Verwante presentaties
SQL deel 2: datamodel ontwerp
Advertisements

Module 7 – Hoofdstuk 5 (1) SQL – een begin.
Meerdere tabellen: Relaties en Joins
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Relationele databases en
Databases Informatica Ga verder met een muisklik. SQL FCO DBMS NE FA
Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.
Databank van een restaurant Download op Twee tabellen: Klanten: Alle klanten die minstens.
MySQL-acties Klassikaal: Wijnen.sql. 1.Toon alle wijnen die er zijn. Toon de naam, kleur en prijs. SELECT `naam`,`kleur`,`prijs` FROM `wijnen`
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Het selecteren van data uit meerdere gekoppelde tabellen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Normaliseren Datamodellering 2006.
Databases.
<Mdl01 hoorcollege 1>
Base: bewerkingen 2 soorten - Oplopend- Aflopend.
LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica
Inleiding Databanken: oefeningen 4 Sven Casteleyn 4 Lokaal: 6G HomePage: te bereiken via
Computervaardigheden en Programmatie Universiteit AntwerpenDatabank - Basis 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Databanken by Steven Stinis.
Download en installeer de gereedschappen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Normalisatie Relationeel databaseontwerp:
Vorige week: Referentiele integriteit
SQL (structured Query Language) DDL (Data Definition Language) DML (Data Manipulation Language) Ontwerp databaseBevraag database.
Databases I Relationeel Model Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002.
Workshop PHP Een productencatalogus Met database.
Databases.
SQL ( SERVER ) Les #02: T-SQL. A GENDA Herhaling les 4 Views SELECT…INTO Beheren van tabellen: CREATE ALTER DROP Opdracht voor de volgende les.
LauwersCollege Buitenpost Informatica
7 Databases. SAMENGESTELDE VOORWAARDEN 1 Wat is het adres van Odile Goossens? SELECT adres, woonplaats FROM leden WHERE naam = ‘Goossens’ AND voornaam.
Computervaardigheden Hoofdstuk 4 — Databank (Basis)
7 Databases. STRUCTURED QUERY LANGUAGE Bij het relationele model hoort een programmeertaal waarmee de database benaderd kan worden. In de praktijk wordt.
Databases Hoofdstuk 25 Hoofdstuk 24.
24/04/2015IT-Assurance1 IT-Assurance deeltijd 4. Inleiding SQL Introductie in de basisfuncties Bijbehorend lesmateriaal: -AIV-boek van Derksen en Crins.
1 Attributen Datamodellering Attribuut legt één feit vast over een entiteit  atomair overloaded attributes splitsen, b.v. NAW-gegevens correspondeert.
Hoofdstuk 11 Databasemanagementsystem. hoofdstuk 112 STROKENDIAGRAMMEN llnrvoornaamtussenvachternaamstraathuisnummerpostcodeplaatstelefoongeslachtgebdatumklas.
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Analyse 3 INFANL01-3 week 3 CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
BIMAIV03 Les A1 BIMAIV03 Les A1 Databases. De gegevens in een database vormen de grondstof voor informatie De informatie wordt opgevraagd in de taal met.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Analyse 3 INFANL01-3 week 2 CMI Informatica.
Week 3 BIMAIV03 Les B3 BIMAIV03 Les B3. Opdracht 1 Van een artikel mogen maximaal 300 stuks verkocht worden. Verschillende klanten bestellen een aantal.
ANALYSE 3 INFANL01-3 WEEK 8 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Herhaling ▸ Normaliseerregels ▸ Omzetten ERD ▸ Group by en SET ▸ Proeftentamen.
Week 6 BIMAIV03 les B1. DML en DDL ata D anipulation M anguage L ata D efinition D anguage L.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Week 1 BIMAIV03 Les B2 BIMAIV03 Les B2. Uit het voorgaande... CREATE TABLE... Opdracht om een nieuwe tabel binnen de database te creëren. Aandachtspunten.
ANALYSE 3 INFANL01-3 WEEK 6 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Subqueries met correlaties ▸ Subqueries zonder correlaties ▸ Views ▸
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.
Databases.
– Software development fundamentals
SQL Cursus deel
LauwersCollege Buitenpost Informatica
Informatie-analyse 1: Er zijn veel manieren om een database te vullen
Databases.
SQL Les February 2019.
SQL Les 3 17 February 2019.
SQL Les 3 23 February 2019.
SQL Les 7 24 February 2019.
SQL Les 1 5 April 2019.
SQL Les 6 14 April 2019.
SQL Les 9 12 May 2019.
SQL Les 4 12 May 2019.
– Software development fundamentals
SQL Les May 2019.
Databases SQL.
Transcript van de presentatie:

SQL en Datanormalisatie Les 2 April 13, 2019

Agenda Herhaling Afwerken oefeningen Data normalisatie Oefeningen op data normalisatie April 13, 2019

SELECT statement (1) April 13, 2019

SELECT statement (2) SELECT: lijst van kolommen (minstens 1) of * DISTINCT: enkel unieke rijen worden weergegeven ALIAS: geef de kolom een andere naam FROM TABEL: geef de tabel(len) die de kolom(men) bevatten WHERE: beperkt het aantal rijen tot een aantal dat aan de voorwaarde voldoet CONDITIE: voorwaarde ORDER BY: bepaald de sorteervolgorde ASC: van klein naar groot DESC: van groot naar klein April 13, 2019

Opmerking Spaties en linefeeds worden genegeerd Commentaar -- Dit is commentaar /* Dit is commentaar En hier staat ook nog commentaar */ April 13, 2019

Vergelijkingsoperatoren Logische vergelijkingsoperatoren: =; >; <; >=; <= SQL operatoren Between…and … In LIKE IS NULL Logische operatoren AND OR NOT April 13, 2019

Oefeningen April 13, 2019

Data Normalisatie April 13, 2019

Voorbeeld informatiesysteem Dessertenboek Interactief receptenboek Recepten veranderen, toevoegen, verwijderen Aantal gegevens zelf in te geven Aantal berekende waarden Energie waarde Opgeslagen ingrediëntenhoeveelheden per persoon en de opgeslagen energiewaarden per eenheid April 13, 2019

Voorbeeld informatiesysteem April 13, 2019

Hoe deze gegevens opslaan in een tabel? April 13, 2019

Per gerecht één tabel April 13, 2019

Per gerecht één tabel Per recept 5 kenmerken: Naam van het gerecht Energie per persoon (in kcal) Bereidingstijd Bereidingswijze Ingrediënteninformatie subtabel Enkelvoudige gegevens Samengestelde gegevens April 13, 2019

Eén tabel met subtabellen April 13, 2019

Geen geschikte tabelstructuur Bepaalde informatie wordt meer dan één keer opgeslaan (redundantie) Een tabel met subtabellen is zeer complex om te beheren (herhalende groepen) Gegevens over producten worden alléén in de context van gerechten bewaard, terwijl producten een zelfstandig belang hebben April 13, 2019

Redundantie Overtollige gegevens Bepaalde gegevens zijn afleidbaar uit andere gegevens in de database April 13, 2019

Nadelen van redundantie Opslagruimte Inconsistentie van gegevens April 13, 2019

Herhalende groepen Een samengestelde kolom, die per rij een subtabel met ingrediëntengegevens bevat wordt een herhalende groep genoemd. Nadeel: Beheer van de database wordt veel ingewikkelder Gebrek aan symmetrie April 13, 2019

Herhalende groepen (2) Beheer van database Invoegen van records op twee niveaus: Verwijderen wordt ook ingewikkelder SQL zou veel ingewikkelder worden April 13, 2019

Herhalende groepen (3) Gebrek aan symmetrie Producten die in gerechten als ingrediënt worden opgeslaan kunnen alleen in die context gebruikt worden Een neutrale contextvrije benadering van de verschillende soorten dingen is één van de belangrijkste eigenschappen van een RDBMS April 13, 2019

Herhalende groepen (4) Redenering tot nu toe: Een gerecht kan meerdere ingrediënten bevatten Omkeren van herhalende groepen Redenering wordt: Een ingrediënt kan in meerdere gerechten voorkomen April 13, 2019

Herhalende groepen (5) April 13, 2019

Herhalende groepen (6) Omkeren van herhalende groepen Product zonder gerecht kan opgenomen worden April 13, 2019

Verbeterde tabelstructuren Elimineren van herhalende groepen en redundantie April 13, 2019

Elimeneren van de herhalende groep Herhalende groep afknippen April 13, 2019

Elimeneren van de herhalende groep Resultaattabellen bevatten in elke cel één enkelvoudige waarde April 13, 2019

Elimineren van redundantie April 13, 2019

Elimineren van redundantie (2) April 13, 2019

Alternatief Eerst verwijderen van redundantie Vervolgens verwijderen van herhalende groepen Geeft hetzelfde resultaat April 13, 2019

Elke entiteit zijn eigen tabel Entiteit = dingen die vanuit het oogpunt van een informatie behoefte overeenkomstige kenmerken hebben Product Ingrediënt Gerecht Eenheid April 13, 2019

Elke entiteit zijn eigen tabel April 13, 2019

Normaliseren en standaardiseren Het verwijderen van herhalende groepen of redundantie, door tabellen van een grotere tabel af te splitsen. Standaardiseren: Bv eenheid liter April 13, 2019

Oefeningen April 13, 2019

Oefeningen Zie blad April 13, 2019

Oplossing oef 4 (a ii) April 13, 2019

Oplossing oef 4 (a iii) April 13, 2019

Oplossing oef 4 (b i) April 13, 2019

Oplossing oef 4 (b iii) April 13, 2019

Relationele databases - regels Regels die voor goede structuren gelden: Beperkingsregels Regels die dingen verbieden of verplichten Gedragsregels Regels die zorgen dat acties ondernomen worden April 13, 2019

Beperkingsregels Optionele en verplichte kolommen Verplicht Optioneel De kolom moet een waarde hebben Bv gerecht.gerechtnaam Optioneel De kolom mag lege cellen bevatten Bv product.eenheidnaam Bv peper -> geen eenheidnaam en energiePE Aanduiding met op April 13, 2019

Optionele en verplichte kolommen April 13, 2019

Uniciteit Indien de waarden in een bepaalde kolom uniek moeten zijn. Smalle uniciteitsregels: uniciteit over 1 kolom Brede uniciteitsregels: uniciteit over >1 kolom April 13, 2019

Uniciteit (2) April 13, 2019

Uniciteit (3) Enkel de smalste uniciteitsregel wordt aangeduid! April 13, 2019

Illustratieve populatie Een populatie die zo goed mogelijk de werkelijkheid illustreert April 13, 2019

Sleutels De primary key van een tabel is een kolom of kolomcombinatie waarvoor geldt: Verplicht Uniek In het geval van een kolomcombinatie Zo zuinig mogelijk gekozen Zijn waarden zijn aangewezen als logische rij-adressen te gebruiken in verwijzingen April 13, 2019

Sleutels (2) Foreign key Primary key aangeduid met een p Een kolom of kolomcombinatie waarvan de waarden naar rijen in een andere tabel verwijzen, via de primaire sleutel daarvan. Primary key aangeduid met een p Foreign key aangeduid met een verticale pijl naar de primary key April 13, 2019

Oefening Duid de primary keys en foreign keys aan van de tabellen van het dessertenboek. April 13, 2019

Sleutels (3) April 13, 2019

Referentiële integriteit Elke waarde van een foreign key moet voorkomen als de waarde van de bijhorende primaire sleutel Bv: elke waarde in product.eenheidnaam wordt geacht te verwijzen naar precies één rij in de tabel eenheid, via de primaire sleutel van die tabel Verbieden van loze verwijzingen April 13, 2019

Referentiële integriteit (2) Ouder – kind relatie: De tabel met de primary key heet ouder De tabel met de foreign key heet kind April 13, 2019

Referentiële integriteit (3) Bij één rij van de kindtabel hoort ofwel geen enkele rij ofwel precies één rij van de oudertabel Bij één rij van de oudertabel kunnen nul, één of meerdere rijen van kindtabel horen April 13, 2019

Referentiële integriteit (3) Het RDBMS moet zorg dragen voor het bewaren van de ref. Integriteit Bij een poging een rij in de kindtabel toe te voegen Bij een poging een foreign key waarde in de kindtabel te wijzigen Bij een poging een primaire sleutel in de oudertabel te wijzigen Bij een poging tot verwijderen van een ouderrij April 13, 2019

Cardinaliteitsregels Hoeveel rijen van de oudertabel kunnen bij één rij van de kindtabel horen? En andersom? April 13, 2019

Cardinaliteitsregels (2) Bv: Product – eenheid Bij één product-rij horen 0 of één eenheid-rijen Bij één eenheid-rij horen 0 of meer productrijen Ingrediënt – product Bij één ingrediënt-rij hoort precies 1 product-rij Bij één product-rij horen 0 of meer ingrediënt-rijen Ingrediënt – gerecht Bij één ingredient-rij hoort precies 1 gerecht-rij Bij één gerecht-rij horen één of meer ingrediënt-rijen April 13, 2019

Cardinaliteitsregels (3) Cardinaliteiten aflezen ‘aan de andere kant’ van het lijntje April 13, 2019

Oefeningen 1 2 3 4 April 13, 2019

Kunstmatige sleutels De twee foreign keys van gerechtnaam en productnaam in Ingrediënt bevatten vrij lange tekstvelden Numerieke codes als primary keys en foreign keys April 13, 2019

Kunstmatige sleutels (2) April 13, 2019

Gedragsregels RDBMS onderneemt actie in antwoord op een aantal acties Gedragsregels of actieregels April 13, 2019

Reference actieregels Bewaren van de referentiële integriteitsregel In 2 gevallen problemen Verwijderen van een ouderrij Wijzigen van de primary key in een ouderrij Deleteregels Updateregels April 13, 2019

Deleteregels Restricted delete Cascading delete Nullifying delete Nullifying komt in de praktijk weinig voor April 13, 2019

Updateregels Restricted update Cascading update Nullifying update April 13, 2019

Reference actieregels (2) April 13, 2019

Oefening 5 (zie slide 33) April 13, 2019

Meer over uniciteitsregels Uniciteitsregels zijn het meest prominent Hoe bepalen we de juistheid van een voorgestelde uniciteitsregel? Bv: Avondschool Inschrijving (cursistnr, vaknaam, docentnaam) April 13, 2019

Meer over uniciteitsregels (2) 7 mogelijkheden voor een tabel met 3 kolommen April 13, 2019

Meer over uniciteitsregels (3) April 13, 2019

Meer over uniciteitsregels (4) Regels zijn niet onafhankelijk van elkaar Regels hangen af van de business rules van het bedrijf April 13, 2019

Combinaties van uniciteitsregels Uniciteitsregels kunnen gecombineerd worden April 13, 2019

Uniciteitsregels 99 % van de gevallen over 1, 2 of 3 kolommen April 13, 2019

Samengestelde sleutels Een primary key kan samengesteld zijn: Bestaande uit meer dan één kolom April 13, 2019

Recursieve verwijzingen = Verwijzing van een tabel naar zichzelf Bv: Hemellichamen in ons zonnestelsel, die satelliet kunnen zijn van een ander hemellichaam April 13, 2019

Recursieve verwijzingen (2) Structuurdiagram? Cardinaliteitendiagram? April 13, 2019

Recursieve verwijzingen (2) Voorstelling ook mogelijk met een virtuele tabel: April 13, 2019

Oefeningen 8 April 13, 2019

Oplossing 8 April 13, 2019

Oplossing 8 April 13, 2019

Oefening 9 April 13, 2019

Oefening 10 April 13, 2019

Oefening 11 April 13, 2019

Oefening 12 April 13, 2019

Oefening 13 April 13, 2019