College 3 Hoofdstuk 3: Basis concepten van een relationele database

Slides:



Advertisements
Verwante presentaties
Inleiding in de statistiek voor de gedragswetenschappen Met ondersteuning van SPSS Guido Valkeneers.
Advertisements

SQL deel 2: datamodel ontwerp
Module 7 – Hoofdstuk 5 (1) SQL – een begin.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Functionele opleiding strategische analyse - Module
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.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Wouter van der Zwan Lezing Draaitabellen Wouter van der Zwan
Het selecteren van data uit meerdere gekoppelde tabellen
Sets in een RDBS Een database
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Normaliseren Datamodellering 2006.
Databases.
<Mdl01 hoorcollege 1>
Opleiding AI cursus Databases
Base: bewerkingen 2 soorten - Oplopend- Aflopend.
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.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Normalisatie Relationeel databaseontwerp:
Opleiding Kunstmatige Intelligentie cursus Databases voor AI
Vrij Technisch Instituut - Hasselt
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 Docent: Henny Klein
Databases.
Relationele Databases Hoofdstuk 10 Deel 2 Blz.: 90 t/m 95.
Laat software voor je werken
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
Inleiding in de statistiek voor de gedragswetenschappen
Computervaardigheden Hoofdstuk 4 — Databank (Basis)
Vakgroep Telecommunicatie en Informatieverwerking 1 Relationele databases: Het relationeel databasemodel Hoofdstuk 4 Database, Document and Content Management.
24/04/2015IT-Assurance1 IT-Assurance deeltijd 4. Inleiding SQL Introductie in de basisfuncties Bijbehorend lesmateriaal: -AIV-boek van Derksen en Crins.
Databases I (H. 7: 1-3) Het Relationele Model Wiebren de Jonge Vrije Universiteit, Amsterdam versie 2003.
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.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Analyse 3 INFANL01-3 week 2 CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK 8 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Herhaling ▸ Normaliseerregels ▸ Omzetten ERD ▸ Group by en SET ▸ Proeftentamen.
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.
Informatica-Actief Thema: Databases en informatiemodellering
LauwersCollege Buitenpost Informatica
Een computersysteem organiseert gegevens in een hiërarchie die begint bij een bit die de waarde 0 of een 1 vertegenwoordigt. Bits kunnen worden gegroepeerd.
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:

College 3 Hoofdstuk 3: Basis concepten van een relationele database tabel attribuutwaarden: domeinen, null entity integrity en referential integrity data manipulatie in een relationele database

De elementen van een tabel/ relation tabelkop: schema heading attribuut, veldnaam, Kolomkop attribute record, entiteit, rij, tupel Tuple, row record Set body Veldwaarde value Kolom column NB Attribuut heeft een domein

Domeinen Domein van een attribuut kan specifieker zijn dan alleen een datatype, zoals number, string of date - Range van mogelijke waarden - Keuzelijst van waarden Verwijzende sleutel: waarde uit andere tabel (Access: lookup-field – DEMO) Nog meer semantiek wenselijk maar meestal niet goed te definiëren in een database: - Verder onderscheid: lengtemaat, gewichtsmaat e.d. - Mogelijke operaties gekoppeld aan domein

Null Null (een leeg veld) kan bij vrijwel elk datatype gebruikt worden (boolean?) Wat kan null betekenen? - waarde ontbreekt nog of is onbekend - attribuut bij deze entiteit niet van toepassing Null is geen waarde, wordt niet gebruikt bij berekeningen (gemiddelde, etc) null is niet 0 (number), is niet “” (string) Null wordt niet gebruikt bij vergelijkingen als leeftijd < 10, aantal = 0 Je kunt alleen testen: is null of is not null

Sleutels in een tabel Kandidaatsleutel: een attribuut of een minimale combinatie van attributen die te gebruiken is om een entiteit uniek te identificeren Primaire sleutel: de kandidaatsleutel die gekozen is om de entiteit uniek te identificeren Alternatieve sleutel: een (eventuele) andere sleutel naast de primaire sleutel Verwijzende/ refererende sleutel (foreign key) een attribuut dat verwijst naar een entiteit in een andere tabel, doordat het gelijk is aan de primaire sleutel van die andere tabel. Bij de keuze van sleutels moet niet alleen naar de huidige concrete data gekeken worden, maar over alle mogelijkheden worden nagedacht!

Sets in een RDBS Een database bevat een set tabelschema’s (entiteitsklassen) Een tabelschema (entiteitsklasse) bevat een set attribuutnamen met hun domein Een tabel bevat een set records (entiteiten) Een record bevat een set waarden gekoppeld aan attribuutnamen Een resultaat van een view of query is een tabel NB hoewel settheorie de basis is van het relationeel model wordt in Access niet altijd in sets gewerkt en kun je toch duplicaat records krijgen, gebruik zo nodig DISTINCT(ROW).

Verzamelingen Het relationeel model is gebaseerd op de verzamelingenleer. Een verzameling (set) bestaat uit 0 - N () elementen. Het aantal elementen: de kardinaliteit van de set. Een element kan zelf weer een set zijn. {} lege set {1,8,3} een set met 3 elementen {{2,4},{1,8}} een set met twee sets als elementen De elementen van een set zijn ongeordend {1,8,3} = {8,1,3} De elementen van een set zijn uniek (vgl groep individuen) {1,8,3,3,1} = {1,8,3}

Operaties op sets: Venndiagram 3 2 sets, b.v. studenten en barkeepers Samenvoegen van twee sets: vereniging / union A B {1,2,5,6}  {2,6,7} = {1,2,5,6,7} Gemeenschappelijke deel van twee sets: doorsnede / intersection A  B {1,2,5,6}  {2,6,7} = {2,6} verschil / difference / minus bij twee sets: A - B {1,2,5,6} – {2,6,7} = {1,5} 1 2 7 5 6 s b 3 1 2 7 5 6 b s 3 1 2 7 5 6 s b

Overzicht operaties op tabellen Setoperaties op meer dan 1 tabel union, intersection, minus Relationele operaties op 1 tabel restrict project Relationele operaties meer dan 1 tabel product join (meerdere vormen) divide NB tabel kan hierbij basistabel zijn, maar ook een view of een via een query geconstrueerde combinatie van tabellen

Setoperaties op twee tabellen: UNION Vereniging entiteiten uit twee tabellen met zelfde schema VB: samenvoegen van 2 ledenlijsten Naam Adres Wpl Naam Adres Wpl AA Aweg 1 A AA Aweg 1 A BB Bweg 2 B DD Dweg 4 D CC Cweg 3 C union EE Eweg 5 E Naam Adres Wpl AA Aweg 1 A BB Bweg 2 B CC Cweg 3 C DD Dweg 4 D EE Eweg 5 E ADO VVV

Setoperaties op hele tabellen: INTERSECTION Doorsnede gemeensch. elementen uit twee tabellen VB: vergelijken van 2 ledenlijsten: wie is van beide lid? Naam Adres Wpl Naam Adres Wpl AA Aweg 1 A AA Aweg 1 A BB Bweg 2 B DD Dweg 4 D CC Cweg 3 C intersection EE Eweg 5 E Naam Adres Wpl AA Aweg 1 A VVV ADO

Setoperaties op hele tabellen: MINUS Difference/except/minus verschil tussen twee tabellen VB: wie is wel van VVV maar niet van ADO lid? VVV ADO Naam Adres Wpl Naam Adres Wpl AA Aweg 1 A AA Aweg 1 A BB Bweg 2 B DD Dweg 4 D CC Cweg 3 C VVV-ADO EE Eweg 5 E Naam Adres Wpl BB Bweg 2 B CC Cweg 3 C

Relationele operaties op 1 tabel Relationele operaties zijn gebaseerd op de tabel, oftewel de relatie Restrict: selectie van bepaalde records uit een tabel via condities Project: selectie van de te tonen velden van een tabel

Restrictie en projectie restrictie: de set beperken tot de rijen die aan een voorwaarde voldoen Naam Adres Wpl Naam Adres Wpl AA Aweg 1 A restrictie AA Aweg 1 A BB Bweg 2 B Wpl = A DD Dweg 4 A CC Cweg 3 C DD Dweg 4 A projectie: de set beperken tot bepaalde kolommen Naam Adres Wpl Naam Wpl AA Aweg 1 A AA A BB Bweg 2 B projectie BB B CC Cweg 3 C Naam, Wpl CC C DD Dweg 4 A DD A

Combinaties van restricties (Vereniging) keus tussen verschillende restricties OR b.v. Welke planten zijn rood OF paars? Welke planten zijn bollen OF bloeien in maart? (Intersectie) meerdere restricties tegelijk AND b.v. Welke planten zijn bollen EN bloeien in maart? (Verschil) positive en negatieve restrictie (AND NOT) maar bloeien NIET in maart?

Relationele operaties op meer dan 1 tabel product join (meerdere vormen) divide

Cartesisch product van tabellen Product/ de entiteiten uit twee tabellen in alle mogelijke Times combinaties samenvoegen tot een nieuwe entiteit VB : gemengd spel VNaam VLft MNaam MLft V1 28 M1 28 V2 24 M2 18 V3 18 product VNaam VLft Mnaam MLft V1 28 M1 28 V2 24 M1 28 V3 18 M1 28 V1 28 M2 18 V2 24 M2 18 V3 18 M2 18

Joins: combineren op voorwaarde Zelden wil je alle mogelijke combinaties van entiteiten uit twee tabellen, je zoekt meestal naar feitelijke combinaties, die al via een verwijzende sleutel zijn vastgelegd Een product dat beperkt wordt door eisen t.a.v. attribuutwaarden in de 2 tabellen heet een join. Voorbeeld: niet elke combinatie van een BOEK en een UITGEVER maar de combinatie van de feitelijke uitgever met het boek Restrictie van deze join: de verwijzende sleutel naar de uitgever van het boek in tabel BOEKEN moet gelijk zijn aan de primaire sleutel van de uitgever in tabel UITGEVER

Joins-1: Equi-join Equi join product van tabellen met restrictie: alleen de rijen met een gelijke waarde voor een gelijk attribuut (gewoonlijk sleutel/verwijzende sleutel) VB: Geef alle paren met gelijke leeftijd: VNaam VLft MNaam MLft V1 28 M1 28 V2 24 M2 18 V3 18 equi-join VLft=MLft VNaam VLft Mnaam Lft V1 28 M1 28 V3 18 M2 18

Joins-2: Natural join BOOKS Equi-join, maar dubbele kolom maar eenmaal: NATURAL JOIN! PUBLISHERS EQUI-JOIN BOOKS - PUBLISHERS

Joins-3: Theta-join Theta join: product van 2 tabellen met restrictie: alleen rijen met ongelijke waarde voor een gelijk attribuut ( < , > , =<, => ) VB: Geef alle paren waarbij de man ouder is dan de vrouw VNaam VLft MNaam MLft V1 28 M1 28 V2 24 M2 18 V3 18 theta join MLft > VLft VNaam VLft Mnaam MLft V2 24 M1 28 V3 18 M1 28

Joins-4: Alle vormen Inner join of kortweg join product van 2 (of meer) tabellen: alle velden samengevoegd restrictie: rijen met gelijke waarde voor een (of meer) attributen Natural join : inner join, maar naast restrictie ook projectie: de gelijke kolom(men) maar 1 keer in resultaattabel Left/right outer join: van één tabel alle records, van de ander de bestaande combinaties, verder lege velden (Full outer join: left + right outer join) Theta join Combineren op restrictie ongelijke waarde Self join (tabel dupliceren) Een tabel combineren met zichzelf

Opties voor een relatie -1 Jointype definieren in relatieschema of QBE (Access) Wil je, als je de relatie boek-uitgever gebruikt 1. alleen de bestaande combinaties van beiden zien? 2. alle boeken, en alleen de bijbehorende uitgevers? 3. alle uitgevers, en alleen de bijbehorende boeken? 1 is de equi-join, 2 en 3 zijn left/right outer joins geen full outer join mogelijk Default in Access is 1, maar soms is een andere keus nuttig, dan kun je b.v. zoeken naar de uitgevers zonder boeken.

Opties voor een relatie – 2 Enforce Referential Integrity? Het sleutelveld moet altijd naar een bestaande entiteit verwijzen vb de uitgeverscode in BOEKEN moet in UITGEVERS staan Cascade Update Related Fields? Als het originele veld gewijzigd wordt (naamsverandering, nieuwe codering), verandert het bijbehorende sleutelveld mee vb de uitgevercode wordt veranderd, de refererende sleutel ook Cascade Delete Related Records? Als de oorspronkelijke entiteit wordt verwijderd, verdwijnen de gerelateerde records ook vb als een uitgever wordt geschrapt, dan verdwijnen zijn boeken

Nog een relationele operator: Divide Een complexe operator, maar soms nuttig, voor vragen als: wie heeft alle propedeusevakken gehaald? wie verkoopt alle houtsoorten? Je hebt een studentresultatentabel met studenten en gehaalde vakken en een tabel met propedeusevakken en “deelt” de studenten door de propedeusevakken geef de studenten uit de studentresultatentabel voor wie voor alle propedeusevakken een (pos) resultaat staat

Operatoren en Access restrict, project en join zijn minimale eisen, union en minus zijn aanvullende eisen voor relationeel compleet systeem intersect en divide: uit de andere operatoren intersect: zie pg 59, kan dit korter? divide: ziet iemand hier kans toe? In Access SQL zijn beschikbaar: restrict, project, join en union daar moet je minus, intersect en divide op andere manieren formuleren