Databases I Domeincalculus Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002.

Slides:



Advertisements
Verwante presentaties
SINT LUKAS HOGESCHOOL BRUSSEL
Advertisements

Les 13 De herbieding van de bijbieder (1)
Familie de Koning Dien en Theo Hein, Ine en Gitte
28 juni 2009 Paëllanamiddag 1 Paëllanamiddag 28 juni 2009 Voorbereiding vrijdagavond (Loopt automatisch - 7 seconden)
Hoe werkt een rekenmachine?
Uitwerkingen blok 4 hoofdstuk 3 versie 2
1 Trip Amsterdam Trip Amsterdam D e A r a b i e r D e A r a b i e r.
November 2013 Opinieonderzoek Vlaanderen – oktober 2013 Opiniepeiling Vlaanderen uitgevoerd op het iVOXpanel.
Module 7 – Hoofdstuk 5 (1) SQL – een begin.
Sint Jorisschool Examenvoorlichting Studie & Voorbereiding Examen Uitslag Diploma.
Sint Jorisschool Examenvoorlichting
Ronde (Sport & Spel) Quiz Night !
SPREEKBEURT 3de LEERJAAR
wivo's football calendar
De Kalender en De Seizoenen Ellen Adriansens Gegradueerde in de ergotherapie BuSo – OV 2 – 2 e graad Algemene en Sociale Vorming Raamplan BuSo.
1 Trip Amsterdam Trip Amsterdam D e A r a b i e r D e A r a b i e r.
Databases I Van EER naar relationeel
Weekendwerk Dorpsweg 6 – 9 juni 2014 Vreselijk warm, dreiging met stortbuien, veel werk, kleine tegenslagen, intensieve interne communicatie En Op tijd.
BOVO procedure
Oefenopgaven februari 2008
vwo D Samenvatting Hoofdstuk 9
Als de som en het verschil gegeven zijn.
Opbouw ISS Vanaf tot ‘Klein maar fijn’,
01/09 1 ste schooldag! 06/09 Info-avond 10/09 Parochiefeesten 11/09 Parochiefeesten 24/09 Veldloop.
Regelmaat in getallen … … …
Regelmaat in getallen (1).
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
Wat levert de tweede pensioenpijler op voor het personeelslid? 1 Enkele simulaties op basis van de weddeschaal B1-B3.
Les 12b : MODULE 1 Snedekrachten (4)
Les 12b : MODULE 1 Snedekrachten (4)
Databases I Relationeel Model Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002.
Databases I (H.14) Functionele Afhankelijkheden en Normaalvormen
Databases I EER and Object Modeling Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002.
Databases I (H. 9.3) Tupelcalculus Wiebren de Jonge Vrije Universiteit, Amsterdam versie 2003.
Databases I Normaliseren Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002.
Inkomen bij ziekte en arbeidsongeschiktheid
Hogeschool van Utrecht1 LEERPLAN V2GDSY3 Februari 2010 – August 2010
Werken aan Intergenerationele Samenwerking en Expertise.
Les 9 Gelijkstroomschakelingen
2.6 Het gebruik van formules en diagrammen
ribwis1 Toegepaste wiskunde, ribPWI Lesweek 01
1. Levensbeschouwing en communicatie
Les 20 Sterke openingen: de 2SA-opening
DEEL 2 LES 16 De verdieping Les 16 Slembiedingen versie
Voorbereiding Clubbridge
Vergelijkingen oplossen
ZijActief Koningslust 10 jaar Truusje Trap
Versie 1: ; v2: ; v3: ; v4:… ca. 50 minuten met maken van tekening (vraag 12) ca. 40 minuten zonder maken van tekening (vraag.
Op reis naar een dierentuin
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
Hoofdstuk 9 havo KWADRATEN EN LETTERS
Herbalife Outer Nutrition
De financiële functie: Integrale bedrijfsanalyse©
Centrummaten en Boxplot
ontdek wat jij kunt bereiken
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
ZijActief Koningslust
Dienstregelingen en Wiskunde
7 Databases. SAMENGESTELDE VOORWAARDEN 1 Wat is het adres van Odile Goossens? SELECT adres, woonplaats FROM leden WHERE naam = ‘Goossens’ AND voornaam.
Databases I (H. 7: 1-3) Het Relationele Model Wiebren de Jonge Vrije Universiteit, Amsterdam versie 2003.
Databases I Praktische aspecten Database Design en Database System Architectuur Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve.
Databases I (Info) Wiebren de Jonge Vrije Universiteit, Amsterdam versie 2003.
Databases I Relationele Algebra Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002.
Databases I Het Entity-Relationship Model
Databases I SQL Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002.
Databases I (H.8) SQL Wiebren de Jonge Vrije Universiteit, Amsterdam versie 2003.
Databases I (H.9.4) Domeincalculus Wiebren de Jonge Vrije Universiteit, Amsterdam versie 2003.
Databases I Tupelcalculus Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002.
Databases I (H.7.4 e.v.) Relationele Algebra Wiebren de Jonge Vrije Universiteit, Amsterdam versie 2003.
Transcript van de presentatie:

Databases I Domeincalculus Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002

Te behandelen querietalen u relationele algebra u domeincalculus u tupelcalculus u SQL

Voorbeeld Database DEPARTMENT D#NAMEBUDGET D1engineering500,000 D2sales200,000 DEPENDENT EMPLOYEEE#NAME REL E#NAME BDATE D# E3Mary daughter E1John D1 E3Sue wife E2Joe D1 E4Suzie daughter E3Jack D1 E4Tom son E4Will D2 E4Mary wife E5Bridget D2

Domeincalculus “Geef de naam en geboortedatum van de employees die in D2 werken” { (n, b) | EMPLOYEE( name: n, bdate: b, D#: “D2” ) } notatie boek: { n, b | EMPLOYEE( e, n, b, “D2” ) } soms ook in boek: { n, b |  e  d EMPLOYEE( e, n, b, d ) AND e=“E5” } Onze notatie: u geef namen van attributen expliciet weer u laat attributen die je niet nodig hebt gewoon weg u constanten toegestaan als specificatie attribuutwaarden

Domeincalculus Algemene vorm: { (v 1, v 2, …, v n ) | CONDITIE(v 1, v 2, …, v n ) } CONDITIE is een formule in predicaatlogica (met v 1, v 2, …, v n als vrije variabelen), opgebouwd uit de volgende atomen: –REL(A 1 : a 1, A 2 : a 2, …, A n : a n ) met a 1, a 2, …, a n variabelen of constanten –v i op v j met v i en v j variabelen en op  { , , , , ,  } –v i op c (of: c op v i ) met v i variabele, c constante en op  { , , , , ,  }

Voorbeeld query (  /  ) “Geef de namen en E#’s van employees die voor 1970 zijn geboren” { (n, e) |  b (EMPLOYEE( E#: e, name: n, bdate: b )  b < “ ” ) } ne JohnE1 JoeE2 JackE3

Voorbeeld query (  ) “Geef de namen van de dependents van Will” { (n) |  e (EMPLOYEE(E#: e, name: “Will”)  DEPENDENT(E#: e, name: n)) } n Suzie Tom Mary

Voorbeeld Database SECRETARY NAME E# BDATE ADDRESS TSPEED Sue E Singel Mary E Damrak SALESMAN NAME E# BDATE ADDRESS LIMIT John E Rokin Joe E Nes ENGINEER NAME E# BDATE ADDRESS SPECIAL Jack E NZVBW 13 electronics Jill E NZABW 15 software

Voorbeeld query (  ) “Geef voor iedere employee (= secretary, salesman of engineer) z’n E# en naam” { (e, n) | SECRETARY(E#: e, name: n)  SALESMAN(E#: e, name: n)  ENGINEER(E#: e, name: n) } en E1Sue E2Mary E3John E4Joe E5Jack E6Jill

Voorbeeld query (  ) “Geef de E#’s en namen van de ongehuwde engineering- employees” { (e, n) |  d (EMPLOYEE(E#: e, name: n, D#: d)  DEPARTMENT(D#: d, name: “engineering”)   DEPENDENT(E#: e, REL: “husband”)   DEPENDENT(E#: e, REL: “wife”) ) } en E1John E2Joe in feite maak je hier gebruik van de Closed World Assumption

Voorbeeld query (  ) (alternatief) “Geef de E#’s en namen van de ongehuwde engineering- employees” { (e, n) |  d (EMPLOYEE(E#: e, name: n, D#: d)  DEPARTMENT(D#: d, name: “engineering”)   r (DEPENDENT(E#: e, REL: r)  (r=“husband”  r=“wife”)) }

Voorbeeld query (  ) “Geef de E#’s van de employees die werken aan alle projecten” { (e) |  j (PROJECT(J#: j)  EMP_PROJ(E#: e, J#: j)) } e E3

Voorbeeld Database PROJECT J#NAME J1build-intranet J2market-research EMP_PROJ EMPLOYEEE#J# E#NAME BDATE D# E2J1 E1John D1 E3J1 E2Joe D1 E3J2 E3Jack D1 E4J2 E4Will D2 E5J2 E5Bridget D2

Voorbeeld query (  ) “Geef alle paren (naam + adres) van mannen en vrouwen, ongeacht of ze in elkaars gewenste leeftijdscategorie vallen” { (mn, ma, vn, va) | M_ZOEKENDE(m_naam: mn, m_adres: ma)  V_ZOEKENDE(v_naam: vn, v_adres: va) }

Voorbeeld Database M_ZOEKENDE M_NAAM M_ADRESM_GJAAR M_MINJ M_MAXJ TeunNes WimSingel SjonDamstr V_ZOEKENDE V_NAAM V_ADRES V_GJAARV_MINJ V_MAXJ Truus Amstel Bep Rokin Anita NZVBW

Resultaat query mn mavn va Teun Nes 30Truus Amstel 80 Teun Nes 30Bep Rokin 42 Teun Nes 30Anita NZVBW 18 Wim Singel 23Truus Amstel 80 Wim Singel 23Bep Rokin 42 Wim Singel 23Anita NZVBW 18 Sjon Damstr 9Truus Amstel 80 Sjon Damstr 9Bep Rokin 42 Sjon Damstr 9Anita NZVBW 18

Resultaat query (alternatief) PAAR m_naamm_adresv_naamv_adres TeunNes 30Truus Amstel 80 Teun Nes 30Bep Rokin 42 Teun Nes 30Anita NZVBW 18 Wim Singel 23Truus Amstel 80 Wim Singel 23Bep Rokin 42 Wim Singel 23Anita NZVBW 18 Sjon Damstr 9Truus Amstel 80 Sjon Damstr 9Bep Rokin 42 Sjon Damstr 9Anita NZVBW 18

Voorbeeld query (alternatief) “Geef alle paren (naam + adres) van mannen en vrouwen, ongeacht of ze in elkaars gewenste leeftijdscategorie vallen” { PAAR(m_naam: mn, m_adres: ma, v_naam: vn, v_adres: va) | M_ZOEKENDE(m_naam: mn, m_adres: ma)  V_ZOEKENDE(v_naam: vn, v_adres: va) }

Relationeel compleet u domeincalculus is relationeel compleet; je kunt er dezelfde queries mee opstellen als met de operaties { , , , ,  } in relationele algebra u queries met de operaties outer join, outer union of aggregate functions kunnen niet noodzakelijkerwijs in domeincalculus worden uitgedrukt

Voorbeeld complexe queries (I) ZOEKENDE NAAM ADRES GESL GJAARMINJ MAXJ Teun Nes 30 M Wim Singel 23 M Sjon Damstr 9 M Truus Amstel 80 V Bep Rokin 42 V Anita NZVBW 18 V “Geef de namen en adressen van alle eventuele paren (d.w.z. personen van tegenovergesteld geslacht die binnen elkaars gewenste leeftijdscategorie vallen)”

Voorbeeld query (I) “Geef de namen en adressen van alle eventuele paren (d.w.z. personen van tegenovergesteld geslacht die binnen elkaars gewenste leeftijdscategorie vallen)” { (mn, ma, vn, va) |  m_gjaar  m_minj  m_maxj  v_gjaar  v_minj  v_maxj (ZOEKENDE(naam: mn, adres: ma, gesl: ‘M’, gjaar: m_gjaar, minj: m_minj, maxj: m_maxj)  ZOEKENDE(naam: vn, adres: va, gesl: ‘V’, gjaar: v_gjaar, minj: v_minj, maxj: v_maxj)  v_minj  m_gjaar  m_gjaar  v_maxj  m_minj  v_gjaar  v_gjaar  m_maxj)

Voorbeeld complexe queries (I) mn ma vn va Teun Nes 30 Truus Amstel 80 Teun Nes 30 Bep Rokin 42 Wim Singel 23 Truus Amstel 80 Wim Singel 23 Bep Rokin 42 Sjon Damstr 9 Anita NZVBW 18

Voorbeeld complexe queries (II) CAN_SUPPLY SUPPLIERPART PRICE s1 p1 3 s1 p2 3NEEDED s2 p1 2PART s2 p2 3 p1 s2 p3 4 p2 s3 p1 4 p3 s3 p2 3 s3 p3 3 “Geef voor iedere supplier die s3 p4 8 alles kan leveren wat we nodig hebben z’n totaalprijs” (kan niet in domeincalculus)

Voorbeeld complexe queries (algebra) “Geef voor iedere supplier die alles kan leveren wat we nodig hebben z’n totaalprijs” TOTAL_SUPPLIERS  (  SUPPLIER, PART CAN_SUPPLY)  NEEDED CAN_SUPPLY_RELEVANT  CAN_SUPPLY  TOTAL_SUPPLIERS  NEEDED RESULT  SUPPLIER F SUM PRICE CAN_SUPPLY_RELEVANT

Voorbeeld complexe queries (II) CAN_SUPPLY SUPPLIERPART PRICE s1 p1 3 s1 p2 3NEEDED s2 p1 2PART s2 p2 3 p1 s2 p3 4 p2 s3 p1 4 p3 s3 p2 3 s3 p3 3“Geef de suppliers die s3 p4 8alles kunnen leveren wat we nodig hebben”

Voorbeeld complexe queries (II) “Geef de suppliers die alles kunnen leveren wat we nodig hebben” { (s) |  p (NEEDED(part: p)  SUPPLIES(supplier: s, part: p)) } s s2 s3

Voorbeeld complexe queries (III) DRAAITFAN_VAN STATIONARTIESTPERSOONARTIEST CountryCarpenters JanOP CountryParton PietMeeuwis NoordzeeHazes JoostBorsato NoordzeeBorsato JoostCarpenters NoordzeeMeeuwis Radio10MeeuwisLUISTERT_NAAR Radio10ElvisPERSOONSTATION Radio10Abba JanRadio10 PietNoordzee JoostRadio10 JoostNoordzee

Voorbeeld complexe queries (III) “Geef de artiesten die gedraaid worden op de stations waar Joost naar luistert” { (a) |  s (DRAAIT(station: s, artiest: a)  LUISTERT_NAAR(persoon: “Joost”, station: s) } a Hazes Borsato Meeuwis Elvis Abba

Voorbeeld complexe queries (III) “Geef de personen die tenminste naar ieder radiostation luisteren waar Piet ook naar luistert (eventueel ook nog naar andere stations)” { (p) |  s (LUISTERT_NAAR(persoon: “Piet”, station: s)  LUISTERT_NAAR(persoon: p, station: s)) } p Piet Joost

Voorbeeld complexe queries (III) “Geef de fans van artiesten die nergens gedraaid worden” { (p) |  a (FAN_VAN(persoon: p, artiest: a)   s DRAAIT(station: s, artiest: a)) } p Jan

Herschrijven queries: PNF “Geef de fans van artiesten die nergens gedraaid worden” { (p) |  a (FAN_VAN(persoon: p, artiest: a)   s DRAAIT(station: s, artiest: a)) }  a (FAN_VAN(p, a)   s DRAAIT(s, a))   a (FAN_VAN(p, a)   s  DRAAIT(s, a))(    )   a (  s  DRAAIT(s, a)  FAN_VAN(p, a))(f  d  d  f)   a  s (  DRAAIT(s, a)  FAN_VAN(p, a))(uitbreiden scope  )

Prenex Normal Form u Een formule is in Prenex Normal Form (PNF) als alle kwantoren aan het begin van de formule staan: Q 1 x 1 Q 2 x 2 … Q n x n f’ met Q i  { ,  } en f’ formule zonder kwantoren u waarom herschrijven? –vergelijken of twee queries equivalent zijn –herschrijven query soms noodzakelijk wegens beperkingen querytaal –PNF levert in SQL veelal beter leesbare queries op

Herschrijfregels PNF (1/2) u  f  f u f  g   f  g u f  g  g  f f  g  g  f u  (f  g)   f   g  (f  g)   f   g u f  (g  h)  (f  g)  (f  h) f  (g  h)  (f  g)  (f  h) u  x f(x)   x  f(x)  x f(x)   x  f(x)

Herschrijfregels PNF (2/2) u Qx f(x)  Qy f(y)(d.w.z. vervang alle vrije voorkomens van x in f door y) u Qx f(x)  g  Qx (f(x)  g) Qx f(x)  g  Qx (f(x)  g) u Q 1 x f(x)  Q 2 x g(x)  Q 1 x Q 2 y (f(x)  g(y)) Q 1 x f(x)  Q 2 x g(x)  Q 1 x Q 2 y (f(x)  g(y)) u  x f(x)   y g(y)   x (f(x)  g(x))  x f(x)   y g(y)   x (f(x)  g(x)) u let op:  x f(x)   y g(y)   x (f(x)  g(x))  x f(x)   y g(y)   x (f(x)  g(x))

Thuis u nalezen: aanvullingen hoofdstuk 9 u voorbereiden: 9.3 u huiswerk: –opgave 19 (nieuw) –opgave 20 (nieuw) –opgave 4