Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdTimo Verstraeten Laatst gewijzigd meer dan 10 jaar geleden
1
Datamodellering en –verwerking 8C020 college 5
2
Terugblik college 4 • Zeikenhuis (RM) • Querytalen • SQL – Inleiding – Data definitie – Data manipulatie – Apsecten van SQL – Oefeningen
3
Onderwerpen college 5 • Aspecten van SQL – Join – Subqueries • Oefeningen SQL • Normalisatie – 1 ste, 2 de, 3 de normaal form • Oefeningen ER, RM, SQL
4
Join - voorbeeld Patnrpnaampadrespwoonplhuisartsgeb 12345AppelsBrink 12Son1303-05-68 23456PerenMarkt 1Son1323-06-70 34567StormsLaan 88Oss1413-06-36 12346AppelsLaan 86Oss1423-12-45 24564JanssenWeg 4aAlmere1501-07-39 76543BrandsmaWeg 67Almere1501-11-71 hanrhanaamhaadreshaplaats 13B. BrandsmaBrink 89Son 14S. StormsLaan 84Oss 15G. de GrootWeg 17Lelystad 16G. GrotenWeg 19Almere
5
Join het leggen van een verbinding tussen tabellen kan met behulp van een join-operatie SELECT pnaam, hanaam FROM patienten, huisartsen WHERE patienten.pwoonpl = huisartsen.haplaats; 1. beschouw stuk voor stuk de rijen uit de eerste FROM tabel 2. beschouw stuk voor stuk de rijen uit de tweede FROM tabel 3. verifieer of de combinatie voldoet aan de WHERE regel 4. geef voor de goede combinaties de SELECT attributen
6
Join pnaamhanaam AppelsB. Brandsma PerenB. Brandsma StormsS. Storms AppelsS. Storms JanssenG. Groten BrandsmaG. Groten geef de namen van patiënten en de namen van huisartsen waarvoor geldt dat de patiënt woont in de plaats waar de huisarts praktijk houdt
7
Join • in principe krijgen we bij een join combinaties van willekeurige tupels • meestal hebben we behoefte aan combinaties van gerelateerde tupels SELECT pnaam, hanaam FROM patienten, huisartsen WHERE patienten.huisarts = huisartsen.hanr; 1. beschouw stuk voor stuk de rijen uit de eerste FROM tabel 2. beschouw stuk voor stuk de rijen uit de tweede FROM tabel 3. verifieer of de combinatie voldoet aan de WHERE regel 4. geef voor de goede combinaties de SELECT attributen
8
Join pnaamhanaam AppelsB. Brandsma PerenB. Brandsma StormsS. Storms AppelsS. Storms JanssenG. de Groot BrandsmaG. de Groot geef de namen van patiënten en de namen van hun huisartsen
9
Join pnaamhanaam AppelsB. Brandsma PerenB. Brandsma StormsS. Storms AppelsS. Storms SELECT pnaam, hanaam FROM patienten, huisartsen WHERE patienten.huisarts = huisartsen.hanr AND patienten.woonpl = huisartsen.haplaats; geef de namen van patiënten en de namen van hun huisartsen voor die patiënten waarvoor geldt dat zij wonen in de plaats waar hun huisarts praktijk houdt
10
Join voorbeeld SELECT * FROM patienten, huisartsen; voorbeeld SELECT * FROM patienten, huisartsen WHERE patienten.huisarts = huisartsen.hanr;
11
Subqueries binnen queries kunnen weer queries gebruikt worden SELECT pnaam FROM patienten WHERE huisarts = SELECT hanr FROM huisartsen WHERE hanaam = 'Brandsma'; subqueries in een tabel SELECT pnaam FROM patienten WHERE huisarts = SELECT huisarts FROM patienten WHERE patnr = '9912';
12
Subqeries behalve de operator = kunnen we ook andere operatoren gebruiken om queries met elkaar te relateren SELECT * FROM patienten WHERE huisarts IN SELECT hanr FROM huisartsen WHERE haplaats = 'Eindhoven'; SELECT pnaam FROM patienten WHERE EXISTS (SELECT hanr FROM huisartsen WHERE patienten.padres = huisartsen.haadres);
13
Opgave 5.4 wat drukt de volgende query uit? SELECT pnaam FROM patienten WHERE NOT huisarts IN SELECT hanr FROM huisartsen WHERE haplaats = 'Eindhoven';
14
Voorbeeld we hebben een relatie (tabel) ouders met attributen ouder en kind en een relatie personen met attributen naam en leeftijd ouders(ouder,kind) personen(naam,leeftijd) opgave 5.5 wat drukt de volgende query uit? SELECT ouder FROM ouders WHERE NOT kind IN SELECT naam FROM personen WHERE leeftijd = '6'; en wat als er NOT in de laatste regel staat?
15
Opgave5.6 wat drukt de volgende query uit? SELECT pnaam FROM patienten WHERE huisarts IN SELECT hanr FROM huisartsen WHERE NOT hanaam IN SELECT hanaam FROM huisartsen WHERE haplaats = 'Eindhoven';
16
Notatie • als we in een query meerdere keren dezelfde relatie gebruiken moeten we aangeven welke attributen bij welke relaties horen SELECT x.pnaam, y.pnaam FROM patienten x, patienten y WHERE x.huisarts = y.huisarts;
17
Voorbeeld we hebben een relatie (tabel) ouders met attributen ouder en kind ouders(ouder,kind) opgave 5.7.a wat drukt de volgende query uit? SELECT x.ouder, y.kind FROM ouders x, ouders y WHERE x.kind = y.ouder; opgave 5.7.b wat drukt de volgende query uit? SELECT x.ouder, y.kind FROM ouders x, ouders y;
18
Opgave 5.8 wat drukt de volgende query uit? SELECT ouder FROM ouders WHERE kind IN SELECT ouder FROM ouders; en wat met WHERE NOT kind IN ?
19
Opgave 5.9 wat drukt de volgende query uit? SELECT ouder FROM ouders WHERE NOT ouder IN SELECT ouder FROM ouders WHERE kind IN SELECT naam FROM personen WHERE leeftijd = '3';
20
Opgave 5.10 druk in SQL uit: geef van alle ouders de leeftijden druk in SQL uit: geef van alle ouders en grootouders de leeftijden druk in SQL uit: geef alle personen die ouder zijn dan Bas en Anna
21
Functies het is mogelijk met functies acties uit te voeren op groepen van gegevens AVG(..) SUM(..) MAX(..) MIN(..) COUNT(*) SELECT MAX(leeftijd) FROM personen WHERE naam = 'Anna'; SELECT MIN(leeftijd) FROM personen, ouders WHERE personen.naam = ouders.kind
22
Queryoptimalisatie de formulering van queries kan (bijvoorbeeld met joins en subqueries) tot lastige uitdrukkingen leiden query-optimalisatie betekent dat de DBMS-implementatie zorgt voor de vertaling naar een equivalente uitdrukking die sneller en efficiënter verwerkt kan worden waarschuwing • in de theorie is sprake van verzamelingen dus geen dubbele rijen en waarden • in een SQL implementatie is sprake van tabellen met dubbele rijen
23
SQL en andere programmeertalen •Embedded SQL •Dynamic SQL –ODBC (Open Data Base Connectivity) –JDBC (Java Data Base Connectivity) •Web technologien, “Data driven sites” –MySQL & php, Java scripts
24
Normalisatie WN2 WNIDNAAMAFDSALARISCURSUSDATUM 100Anna BruinsmaVerkoop50.000PR6-6-94 100Anna BruinsmaVerkoop50.000Word1-12-94 140Carla DikAdministratie41.000Belastingen25-8-94 110Eef GroenInformatiesystemen49.000C++13-11-94 110Eef GroenInformatiesystemen49.000Word1-12-94 190Henk IsraëlInkoop39.500Logistiek8-3-94 150Janny KramerVerkoop45.000PR6-6-94 150Janny KramerVerkoop45.000Workflow11-12-94
25
Normalisatie •Probleem – WN2 bevat gegevens over twee entiteiten •Oplossing –Verdeel zo’n relatie in twee relaties: WN1 en WN-CURSUS
26
Normalisatie WN1 WNIDNAAMAFDSALARIS 100Anna BruinsmaVerkoop50.000 140Carla DikAdministratie41.000 110Eef GroenInformatiesystemen49.000 190Henk IsraëlInkoop39.500 150Janny KramerVerkoop45.000 WN-CURSUS WNIDCURSUSDATUM 100PR6-6-94 100Word1-12-94 140Belastingen25-8-94 110C++13-11-94 110Word1-12-94 190Logistiek8-3-94 150PR6-6-94 150Workflow11-12-94
27
Normaalvormen 1 ste normaalvorm: Alle rijen hebben dezelfde lengte 2 de normaalvorm: Elk niet sleutel attribuut is een feit over de hele primaire sleutel (niet alleen over een deel van de sleutel) 3 de normaalvorm: Elk niet sleutel attribuut is geen feit over een ander attribuut dat geen primaire sleutel is Elk niet sleutel attribuut is een feit over “the key, the whole key, and nothing but the key, (so help me Codd)”
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.