Analyse 3 INFANL01-3 week 3 CMI Informatica.

Slides:



Advertisements
Verwante presentaties
SQL deel 2: datamodel ontwerp
Advertisements

Module 7 – Hoofdstuk 5 (1) SQL – een begin.
Het ER model Een powerpoint presentatie, gemaakt door: F. Triep
Meerdere tabellen: Relaties en Joins
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 14: Eerste echte e-commerce applicatie: Implementatie (vervolg)
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Databases Informatica Ga verder met een muisklik. SQL FCO DBMS NE FA
Databank van een restaurant Download op Twee tabellen: Klanten: Alle klanten die minstens.
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 - -
Databases.
<Mdl01 hoorcollege 1>
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.
Download en installeer de gereedschappen
Download en installeer de gereedschappen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Normalisatie Relationeel databaseontwerp:
Opleiding Kunstmatige Intelligentie cursus Databases voor AI
Vorige week: Referentiele integriteit
SQL (structured Query Language) DDL (Data Definition Language) DML (Data Manipulation Language) Ontwerp databaseBevraag database.
Workshop PHP Een productencatalogus Met database.
Databases.
Relationele Databases Hoofdstuk 10 Deel 2 Blz.: 90 t/m 95.
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
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.
Join Indices … as a tool for Spatial Datamining. Inhoud Inleiding Spatial Relations (Spatial) Join Index Implementatie Conclusie.
24/04/2015IT-Assurance1 IT-Assurance deeltijd 4. Inleiding SQL Introductie in de basisfuncties Bijbehorend lesmateriaal: -AIV-boek van Derksen en Crins.
Databases I Het Entity-Relationship Model
Hoofdstuk 11 Databasemanagementsystem. hoofdstuk 112 STROKENDIAGRAMMEN llnrvoornaamtussenvachternaamstraathuisnummerpostcodeplaatstelefoongeslachtgebdatumklas.
2 August SQL Les August Agenda Herhaling Herhaling Cursors Cursors MS SQL Server and MS Excel MS SQL Server and MS Excel Oefeningen.
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 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.
ANALYSE 3 INFANL01-3 WEEK 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
Informatica-Actief Thema: Databases en informatiemodellering
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 en Datanormalisatie
SQL Les 9 12 May 2019.
SQL Les 4 12 May 2019.
– Software development fundamentals
SQL Les May 2019.
Software Development fundamentals
Transcript van de presentatie:

Analyse 3 INFANL01-3 week 3 CMI Informatica

Analyse 3- INFANL01-3 Vorige les Kardinaliteit vs optionaliteit Speciale Relatietypen (meer op meer, transitie, xor) Subtypen van entiteiten Informatie uit een tabel: Projectie, Selectie, datatypen, operatoren, ordening Inleiding in SQL (DDL, DML, DCL, DTL) CRUD CREATE, INSERT en SELECT statements

Vorige les

Normaliseren Waarvoor is het toepassen van normaliseren nuttig? Welke normaalvormen zijn vorige les behandeld? Een update-anomalie is een fout die optreedt bij een afwijking van de 'standaard werkwijze' bij het vernieuwen (updaten) van gegevens in een database. Dit fenomeen treedt op door weinig (lees: onvoldoende) normalisatie. Naast de overkoepelende term update-anomalie worden ook de specifiekere termen invoeg-anomalie en verwijder-anomalie gebruikt voor anomalieën die zich voordoen specifiek bij het invoegen en verwijderen van gegevens. Sporadisch wordt in het Nederlands de term modificatie-anomalie gebruikt. In een genormaliseerd gegevensmodel kunnen de gegevens van één entiteit met één simpele opdracht worden opgeslagen. Soms wordt om technische of praktische redenen een ontwerp gekozen waarbij het invoegen, verwijderen of veranderen van gegevens meer actie vergt om alle gegevens consistent te houden. Een dergelijk model noemt men gedenormaliseerd, het heeft een of meer update-anomalieën.

Relationele databases

Wat is een relationele database (RDBMS)? Een RDBMS is een systeem : met gegevens in de vorm van tabellen het verband tussen twee tabellen(entiteiten) wordt relatie genoemd waarin SQL wordt gebruikt om tabellen te manipuleren en op te vragen Merk op dat je met SQL met hele tabellen (verzamelingen van rijen) tegelijk werkt! Dus niet met rijen zoals in een programmeertaal als Java for (int row=0;row<table.length;row++) System.out.println(table[row].getSNAAM()); Een for loop zal je in SQL dan ook niet tegenkomen! Bovendien vertel je de database mbv SQL WAT je wilt, niet HOE dat moet gebeuren (SQL is declaratief itt procedureel (Java,C,Pascal,..). SQL

verbindt twee entiteiten of een entiteit met zich zelf Relaties modeleren • Een relatie geeft weer hoe een verband is gelegd tussen twee entiteiten(tabellen) verbindt twee entiteiten of een entiteit met zich zelf is bi-directioneel heeft een naam heeft optionaliteit heeft kardinaliteit

Een relatie kan verplicht of optioneel zijn Optionaliteit Een relatie kan verplicht of optioneel zijn Elke medewerker moet op een afdeling werken Elke student kan zich inschrijven voor een cursus Welke relatie is optioneel/verplicht en hoe kun je de optionaliteit modeleren in Barker notatie en UML? Elke medewerker moet op een afdeling werken Elke student kan zich inschrijven voor een cursus

Optionaliteit modeleren Een relatie kan verplicht of optioneel zijn Elke medewerker moet op een afdeling werken Elke student kan zich inschrijven voor een cursus Welke relatie is optioneel/verplicht en hoe kun je de optionaliteit modeleren in Barker notatie en UML? Barker Notatie UML optioneel verplicht

Kardinaliteit Kardinaliteit bij een relatie geeft aan of de relatie eenvoudig of meervoudig is. Het is niet altijd mogelijk de hoeveelheid van te voren te bepalen. Elke student kan zich alleen voor een cursus inschrijven Elke klant kan meerdere tickets bestellen Welke kardinaliteit hebben deze relaties? Hoe kun je de kardinaliteit modeleren in Barker notatie en UML?

Kardinaliteit modeleren

Speciale relaties: meer-op-meer Een meer-op-meer (M:N) relatie is lastig in een fysiek model te implementeren. Het wordt geadviseerd om het te vervangen door twee een-op-meer relaties.

Voorbeeld meer-op-meer relatie Het streepje op de relatie wordt bared-relation genoemd in Barker notatie. Het betekend dat de primary-key van viewing record entieit een composite-key is. Het bestaat uit de primary key van tv show en person

Oplossen N:M Zie dat de harkjes omkeren en dat de relatie een nieuwe entiteit wordt. Ook de optionaliteit veranderd.

Los nu zelf op

Speciale relaties: transitie van een relatie (transferability) In sommige situaties kun je een relatie achteraf niet wijzigen. Er is dan sprake van “non-tranferable relationship” Voorbeeld: een persoon die zijn rijbewijs heeft gehaald. Kan een persoon zijn rijbewijs overdragen naar een andere persoon? Hoe kun dit modeleren? Hoe kun je dit implementeren in je database? Niet alle notaties kunnen non-transferable relatie weegeven. In Barker notatie kan het door een diamond op de relatie gemoderleerd worden. In het fysieke model kan het niet direct implementeerd worden. Er zijn extra stappen nodig buiten de database om dit te waarborgen.

Voorbeeld transitie van een relatie (transferability)

Speciale relaties: XOR (mutually exclusive relationships ) Een entiteit kan relaties hebben met andere entiteiten. In sommige situaties kan maar een relatie mogelijk zijn. Voorbeeld: een medewerker verdient zijn geld op uur-basis of krijgt een salaris per maand

Voorbeeld XOR in Barker notatie Hoe kun je XOR relatie implementeren in het fysieke model? Bij een XOR-relatie moeten de foreign-key optioneel blijven. In dit geval heeft membership twee foreign keys die optioneel zijn.

Oefening meer-op-meer en XOR Oefening 1: hoe kun je deze meer-op-meer relatie oplossen in twee een-meer-relaties? Oefening 2: Een ticket van een concert kan besteld worden door een agent, een ticketbureau of via het internet. Een ticket heeft een beschrijving. Een event heeft een datum en een prijs. Een agent heeft een naam en een telefoonnummer. Een ticketbureau heeft een adres en een telefoonnummer. Voor internet bestellingen wordt de URL opgeslagen. Teken alle entiteiten en de relaties daartussen in een ERD!

Supertypen en subtypen Wat is het supertype? Wat is het subtype? Hoe kun je dit implementeren in een fysiek model? De entiteit EXAM is een supertype en heeft alle attributen die alle subtypen moeten hebben. Alle afwijkende attributen moet dan afzonderlijk genoemd worden bij de subtypen. Suptypen kun je op twee manieren in fysieke model implementeren: met een tabel waar je alle afwijkende attributen optioneel maakt, of elk subtype wordt in een aparte tabel geimplementeerd. De gezamelijke attributen worden dan in elk tabelschema opgenommen.

Voorbeeld Er is een fiets. Fietsen bestaan uit een frame, een zadel, wielen, een stuur en overige onderdelen. Van een dames frame wordt bewaard, wat de maximale instaphoogte is. Bij een heren frame wordt bewaard of er een bidonhouder geïntegreerd is. VRAAG: Wat is een ‘normale entiteit’, wat is een supertype, wat is een subtype?

Structured Query Language (SQL) De kracht van SQL, het manipuleren van hele gegevenssets (tabellen) i.p.v. Per regel zoals in java. Merk op dat je met SQL met hele tabellen (verzamelingen van rijen) tegelijk werkt! Dus niet met rijen zoals in een programmeertaal als Java for (int row=0;row<table.length;row++) System.out.println(table[row].getSNAAM()); Een for loop zal je in SQL dan ook niet tegenkomen! Bovendien vertel je de database mbv SQL WAT je wilt, niet HOE dat moet gebeuren (SQL is declaratief itt procedureel (Java,C,Pascal,..). Structured Query Language (SQL)

Wat is SQL (1)? SQL (Structured Query Language): is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’) is declaratief (‘WAT’ niet ‘HOE’ !!!) werkt met verzamelingen (Engels:’set’) input : tabel(len) -> output (tabel) heeft een hoger abstractieniveau dan 3GL zoals Java,C,... Hoger abstractieniveau : dit is echt vooruitgang! Waarschijnlijk zijn SQL databases de belangrijkste ontwikkeling van de laatste 30 jaar! Je zou heel veel regels code (meestal met fouten.....) moeten schrijven om hetzelfde resultaat te krijgen als 1 regel SQL !!!

Wat is SQL (2)? er zijn 4 soorten classificaties voor SQL queries: DDL (data definition language) bijv. CREATE TABLE .... DML (data manipulation language) bijv. SELECT / INSERT / UPDATE DCL (data control language) bijv. GRANT USER TCL (tranaction control language) bijv. COMMIT DDL: definieer ‘variabelen’ (maar ook DROP table etc) DML: werk met de waarde van variabelen (SELECT, UPDATE, INSERT) DCL: toegangscontrole (wie mag wat) CREATE USER paul IDENTIFIED by luap

SQL DDL: Definitie van de database structuur definieer : tabellen, kolommen + domein, sleutels met SQL (DDL), bijv : CREATE TABLE patient( PAT# smallint not null, PNAAM char(32), LEEFTIJD smallint, GESLACHT char(1), ARTS char(32), primary key (PAT#)); domein = datatype user-defined domain? anders mbv domein constraint CHECK

Aan de slag - mini case broodjeszaak De broodjeszaak op de hoek heeft verschillende broodjes. Elk broodje heeft een recept. In het recept kun je lezen welke ingrediënten er op een broodje zitten en welk broodje er voor nodig hebt. De broodjeszaak wil bijhouden hoeveel, van welk broodje de medewerkers verkopen. De medewerkers houden bij welke ingrediënten ze gebruiken.

Voorbeeld gegevens (1) ID Naam B Bruine pistolet C Ciabatta W Witte pistolet WA Waldkornbol BW Boterham wit BB Boterham bruin ID NaamBeleg H Ham K Kaas S Spek E Ei R Rosbief F Fricandeau Hamburger V Vegaburger B Brie Saté C Cervelaat Z Zalmsalade O Omelet P_nr Voornaam Achternaam 111 Jan Klaasen 112 Hans Jansen 113 Piet Paaltjes 115 Irma Doorn 117 Kenna Baas NR Ingredient 1 Sla 2 Zout 3 Peper 4 Mayo 5 Cedarkaas 6 Hamburgersaus 7 Vegaburgersaus 8 Huissaus 9 Augurk 10 Kruiden Datum Medewerker Broodje Beleg

Voorbeeld gegevens (2) Naam broodje Broodje Ingredient 1 Ingredient 2 Gezond C Ham Kaas Ei Sla Tomaat   Tosti wit BW Tosti bruin BB B W Rosbief WA Zout Peper Hamburger Hamburgersaus Vegaburger Augurk Vegaburgersaus Brie Saté Sate Gebakken uitjes Cervelaat Zalmsalade Omelet Melk Kruiden Spek en Ei Spek Boter Huis special Cedarkaas Huissaus

Broodjeszaak – eerst zelf in 2-tallen Welke gegevensstructuur zou handig zijn? Hoe ga je met SQL de gekozen structuur maken?

Domein (Datatypen) Voorbeelden: CHAR (n), VARCHAR (n) INTEGER, SMALLINT, TINYINT DATE, TIME, TIMESTAMP (user defined types)

null : onbepaald, niet gespecificeerd heeft niets te maken met 0 null waarden kun je niet vergelijken

Projectie (SELECT) en selectie (WHERE)

Vullen van de database importeren (in MySQL bijv. als tab delimited tekstfile) tekst-file met INSERT statements met de hand (command-line) INSERT INTO student VALUES(‘S1’,’Janssen’,’O1’); INSERT INTO student VALUES(‘S2’,’Lopes’,’O1’); INSERT INTO student VALUES(‘S3’,’Smit’,’O3’); INSERT INTO student VALUES(‘S4’,’Meijer’,’O2’); Voorbeeld conversie: save Excel file als tab-delimited en importeer; of Java programmaatje, schrijf naar tekstfile. Bij evt laten zien van voorbeeld: zorg dat domain constraints fouten afvangen! ADVIEZEN: - maak constraints zo STRENG mogelijk (geslacht= [M|V] niet char(1), of smallint met 0=M en 1=V) - STRENG is niet hetzelfde als ZUINIG (Y2000) ! - met een goed database-ontwerp (constraints, maar ook vooral de structuur - welke tabellen met welke kolommen) kan je het overgrote deel van de vervuiling voorkomen.

Manipuleren van gegevens de inhoud (verzameling rijen) van een tabel wordt gemanipuleerd/getoond met SQL (DML), bijv.: INSERT INTO patient VALUES (23, ’Jansen’, 32, ’M’, ’Oei’); SELECT * FROM patient WHERE leeftijd>30; UPDATE patient SET leeftijd= 33 WHERE id = 2 DELETE FROM patient WHERE id = 2

Vul de database van de broodjeszaak Zie excel op n@tschool Maak zelf verkoopgegevens en vul deze tabel ook.

Relationele algebra

Relationele Algebra: vereniging (UNION) SELECT * FROM verz UNION SELECT * FROM wegb voorwaarde: aantal en domein v/d attributen komt overeen Selecteer alle soldaatjes uit de groene verzameling en alle soldaatjes uit de beige verzameling en orden ze op soort wapen.

Relationele Algebra: verschil (EXCEPT) SELECT * FROM verz EXCEPT SELECT * FROM wegb volgorde is van belang ! (verz - wegb) <> (wegb-verz) Voorbeeld van de soldaatjes: Selecteer alle groene soldaatjes, behalve de groene soldaatjes waarvan een zelfde type in de groep beige soldaatjes zit.

Relationele Algebra: doorsnede (INTERSECT) SELECT * FROM verz INTERSECT SELECT * FROM wegb Haal uit de verzameling groene soldaatjes alle soldaatjes die hetzelfde wapen hebben als in de verzameling beige soldaatjes.

Relationele Algebra: projectie (SELECT) SELECT kenteken FROM verz Selecteer de soldaatjes met een bazooka

Relationele Algebra: selectie (SELECT ... WHERE ..) SELECT * FROM verz WHERE naam = ‘jan’ selectie van rijen die aan voorwaarde voldoen Selecteer alle soldaatjes waarvoor geldt dat ze een pet hebben.

Relationele Algebra: product of JOIN SELECT * FROM man, vrouw alle mogelijke combinaties! Selecteer alle soldaatjes van groen, en combineer elk groene soldaatje met alle soldaatjes van beige. Schrijf deze match op. Doe dit voor elk groen soldaatje.

Manipuleren van gegevens Nogmaals : met SQL DML manipuleer je complete tabellen als verzamelingen!!! (dus NIET de individuele rijen) voor ELKE bewerking geldt: input : 1 of meer tabellen output : 1 tabel Dit is de formele basis van SQL Dus voor alle soldaatjes, of voor alle groene soldaatjes.

Hoeveel recepten zijn er? Oefening Hoeveel recepten zijn er? Zijn er recepten met meer dan 3 ingrediënten? Hoeveel recepten bevatten sla? Hoeveel broodjes zijn door medewerker Irma verkocht?