Databases samenvatting van de aangeboden clips / notites uit het hoorcollege / en de goede kahoot quiz antwoorden + toelichting. Samenvatting is deels Engels & Nederlands. Vak Database Universiteit Utrecht. Samenvatting is hoorcollege 1 t/m hoorcollege 14. In de samenvatting zijn plaatjes/tabellen ...
,Hoorcollege 1 Intro & Relational model
Het relationele model is een wiskundig model, om begrip tabel dat je als concept gebruikt om data
te onderbouwen. We zien hier 1 tabel ofwel 1 relatie die bestaat uit Movie(movid, title, year and
rating). Het heeft 4 attributen namelijk: movid, title, year and rating. Er zijn 5 tuples(een rij van n
objecten) rijen en er zijn 4 kolommen, geïdentificeerd door een attribuut, die elk 5 waardes
bevatten. Omdat deze tabel 4 kolommen heeft is zijn degree(graad) ook 4.
Definition: A domain D is a set of atomic values. (For example: integers, chars, strings, floats, dollars,
dates)
Definition: A relation schema R, denoted R(A1, A2, ..., An), exists of a relation name R and a set of
attributes A1, A2, ..., An; n is the degree of schema R. We define attr(R) = {A1, A2, ..., An}.
Definition: A relation r over a schema R, denoted r(R), is a set of tuples < v1, v2, ..., vn >, where every
vi ∈ Di ∪ {null}. So every Ai is connected to a specific domain Di.
How do we identify movies?
- By title?
- By title + year?
Risico hierbij is dat er meerdere films zijn met dezelfde titel, of dat een film met dezelfde naam in
hetzelfde jaar is uitgebracht als een andere.
,In dit soort gevallen voegen we een extra nummer of code als attribuut toe, dit keer movid. Dit zijn
strings met letters of cijfers en zijn uniek voor elk element in de tabel. Dit is een primary key, deze
kan eenmalig toegekend worden in een tabel. Movid is in deze tabel uniek voor alle elementen in
deze tabel. Deze movid kunnen nu ook gebruikt worden om te refereren naar specifieke films. We
identify movies by a key, but beware: tuples are also identified by (movid, title) or (movid, year) or
(movid, title, rating) or any combination of attributes containing a key. Hence the notion of key
versus superkey. Als je een groep attributen hebt die identificeren zijn, noem je dat een superkey.
Echter als dit niet verder terug te breien valt (minimalistisch is) dan is het een key. Movid vs (movid,
title).
Als je een relatie(r, tabel met inhoudt) met schema R hebt, dan kun je een set attributen hebben als
eigenschap dat je nooit 2 verschillende tupels(elementen) kunt vinden die dezelfde keywaarden
hebben.
Definition: A set of attributes K ⊆ attr(R) is a superkey if for each valid relation r(R): ∀t1,t2 ∈ r : t1[K] =
t2[K] ⇒ t1 = t2
Definition: A superkey K ⊆ attr(R) is a (candidate) key if there is no K’ ⊂ K, K’ /= K, that is also a
superkey. Als het de eigenschap heeft dat je hem niet kleiner kan maken. Er is geen kleinere groep
attributen binnen die key die ook identificeert.
A key K identifies a tuple, because the key values of a tuple are unique in the relation. This
requirement is intensional; we call such a requirement a constraint.
Definition: One of the candidate keys is chosen (for some reason) as primary key.
Definition: A foreign key is a set of attributes K ∈ attr(Ri) that occurs in another relation Rj as a
candidate key. We say that Ri [K] references Rj [K]. Voorbeeld in de leningtabel: het boeknummer is
een primary key in de boekentabel, maar in de leningentabel is deze ook aanwezig als foreign key.
,Candidate key:
,Hoorcollege 2 Relational Algebra
RA1:
Relationele algebra dat een fundamentele query taal is die hoort bij het relationele model.
Relationele algebra is een minimumeis voor de uitdrukkingskracht van een query taal. Elke query die
in de rationele algebra uit te drukken is moet ook in jouw query taal uit te drukken zijn bv SQL.
Ander eigenschap is dat deze procedureel is. Je kan een algebraïsche expressie zien als een
berekening voorschrift om het resultaat van een query op te leveren. Een algebraïsche expressie kan
bestaan uit meerdere sub query’s. Daarnaast is het erg compact, het maakt maar gebruik van 5 basis
operatoren. De algebra is niet in gebruik als query taal, zoals bv SQL, maar algebra speelt een rol
achter de schermen bij query processing. Een query kan omgezet worden naar algebra en kan
hierdoor geoptimaliseerd worden.
De selection σp operator waarbij p is selection predicate. Deze werkt
op een bepaalde tabel en levert een nieuwe tabel op die hetzelfde
schema heeft als het oorspronkelijke tabel, maar waarbij aantal
dingen weg gefilterd zijn. Welke over mogen blijven word bepaald
door het selectie predicaat σ(sigma). In dit voorbeeld zijn we opzoek
naar acteurs geboren voor 1960. Het resultaat is de onderste tabel,
waar de tabel identiek is aan het originele tabel. De selectie predicaat
reduceert het aantal resultaten in de tabel.
Het selectiepredicaat kan ingewikkelder gemaakt worden door gebruik te maken van de logische
operator AND, OR, NOT, ().
In dit voorbeeld zijn we opzoek naar actrices geboren voor 1996. Hierbij
maken we gebruik van de AND(∧) operator. Logical and corresponds to set
intersection.
σ(birth year>1996)∧(gender=0 female0)(Actor)
In dit voorbeeld zijn we opzoek naar acteurs uit Nederland of België.
Hierbij maken we gebruik van de OR(V) operator. Logical or corresponds to
set union.
,De projection πL operator waarbij L is projection list. De
projectie operator werkt op de tabel en levert een tabel op
als resultaat. Via de projectie geven we aan dat we in een
beperkt aantal attributen geïnteresseerd zijn. In dit geval
titel & jaar van films. Het schema van het gepresenteerde
resultaat is een subset van het schema van de
oorspronkelijke relatie. De projectie wordt aangegeven met
de letter π(pi). Waar aan meegegeven wordt L in welke
attributen je geïnteresseerd bent. Er wordt in de
verzamelingenleer geen duplicaten toegestaan. Als we nog een keer projecteren op alleen de titel
houden we nog maar 3 resultaten over.
De composition in werking van projection π en selection σ. We hebben
een tabel waar we eerste de operatie selectie op loslaten. Het resultaat
is een nieuwe tabel waar we weer een operator op los kunnen laten,
namelijk de projectie.
πname,birth year(σbirth year<1960(Actor))
De operatoren die we hebben gezien zijn unair, werken op 1 tabel en geven 1 tabel terug als
resultaat. We hebben ook binaire operatoren die op 2 tabellen werken en 1
tabel als resultaat teruggeven.
In dit geval zijn we geïnteresseerd in regisseurs en acteurs. Omdat de schema’s
van deze 2 tabellen overeen komen kunnen we deze 2 tabellen samenvoegen
via de union (U). Het resultaat is de 3e tabel rechts. Omdat we met
verzamelingen werken worden duplicaten geëlimineerd.
Andere binaire operator die we hebben is de difference – operator ofwel het
verschil. We kijken naar alle elementen van het linker operant en naar alle
elementen van het rechter operant en verwijderen daar de elementen die ook
in het rechter operant voorkomen. In dit geval kijken we naar acteurs die niet
ook regisseurs zijn en zien dat Mel Gibson verdwijnt in het resultaat.
,Ten slotte kennen we de intersection ∩ operator, oftewel de intersectie.
Daarbij kijken we naar de elementen die in beide tabellen voorkomen. In
dit geval is Mel Gibson de enigste die zowel acteur als regisseur is.
Het cartesian product x is een binaire operator. Bij de bepaling van
het cartesisch product stel je vast dat het schema de oorspronkelijke
samenstelling is van de operanten, in dit geval A, B, C & D en dat de
inhoudt bestaat uit alle mogelijke combinaties.
De binaire operator theta-join ⋈θ waarbij θ is matching
condition, is een koppelingsconditie met linker en rechter
tabel. In dit geval staan we niet alle combinaties toe maar
alleen de combinaties die aan de voorwaarde theta voldoen.
In dit voorbeeld:
θ : (R.A = S.C) ∧ (R.B > S.D)
eist θ dat de waarde onder de A aan de linkerkant(R) gelijk moet zijn aan de waarde C aan de
rechterkant(S) en dat daarnaast de waarde B aan de linkerkant(R) groter moet zijn dan D aan de
rechterkant(S).
De binaire operator natural join ⋈, het komt erop neer dat je gaat
kijken naar attributen die zowel in het linker schema(R) als in het
schema van de rechter operant (S) voorkomen. In dit geval is het
alleen attribuut A.
Voorbeelden/oefeningen:
Q1: Give the names of the readers who borrowed at least one bock of Dickens
RA2:
De binaire operator Division ÷ werkt op 2 tabellen in het voorbeeld namelijk tabel
T & tabel U. De tabel U dient een subset te zijn van de tabel T. In dit geval betekent
het dat het attribuut B van tabel U moet voorkomen als attribuut in schema T. Het
resultaat van de query waarbij geldt dat het schema bestaat van alle elementen
van de linkerkant van de operant voor zover deze niet in de rechterkant van de
operant voorkomen. De volgorde aan de linkerkant van de operant doet er niet
toe. Het werkt als volgt: Ga alle waarden van A langs en groepeer in gedachten
even alle elementen met dezelfde A waarden. Als je bij A naar de waarde 1 kijkt zie
je dat bij B de elementen 1,3,4 horen. De set waarde bij B overdekt alle B waarden
van U. Dit betekent dat A = 1 door mag naar het resultaat. Als we naar A = 2 kijken zien we alleen
dat B de waarde 2 en 4 heeft. Deze overdekken U niet en A = 2 niet door naar het resultaat. Bij A = 6
missen we 4 dus A = 6 mag ook niet door. 8 mag weer wel door. Bij A = 8 horen de waarden 1, 3, 4 &
7. Deze overdekken alle waarde van U.
Voorbeeldvraag:
Q4: Give the name of the readers who borrowed all Dickens-books
De binaire operator assignment(:=) & renaming. := wordt uitgesproken als wordt. Hiermee kunnen
we het resultaat(een tabel) van een algebraïsche expressie kunnen toekennen aan een naam. Met
deze tabel kunnen we verder aan de slag. Mocht het gewenst zijn om deze nieuwe tabel nieuwe
attribuut namen toe te kennen gebruiken we de renaming. T[A1, ..., An] :=< alg expr >, waarbij we in
de rechte haken aangeven hoe de attribuutnamen van de tijdelijke variabelen eruit moeten zien.
Soms kan het handig zijn om ‘on the fly’ algebraïsche expressie een herbenoeming te doen. Hiervoor
hebben we de operator renaming on the fly die wordt aangeduid met ρ(rho).
- ρ(T)(< alg expr >): Geeft aan dat je een willekeurige expressie herbenoemd naar T.
- ρ(T, A1, ..., An)(< alg expr >): In dit geval gaan we de tabel die het resultaat is van de
algebraïsche expressie tussenhaakjes herbenoemd naar tabelnaam T, en daarbij geven we
ook de gewenste specificaties van de attribuutnamen.
On the fly renaming within an expression: . . . . ⋈ ρ(Oldmovies, omid, omtitle)(πmovid,title
(σyear<1930(Movie)))
,Oefening/voorbeeld:
Q5: Give the names of the reader who borrowed at least two different Dickens-books
A5: To be continued.
Overzicht operators:
Operators Uitleg
Unary operators werken op 1 tabel en geven 1 tabel terug als resultaat.
Selection σp(R) where p is selection predicate (σp) Deze werkt op een bepaalde tabel en levert een
nieuwe tabel op die hetzelfde schema heeft als het
oorspronkelijke tabel, maar waarbij aantal dingen
weg gefilterd zijn.
Projection πL(R) where L is projection list (πL) De projectie operator werkt op de tabel en levert
een tabel op als resultaat. Via de projectie geven we
aan dat we in een beperkt aantal attributen
geïnteresseerd zijn. Deze heeft mogelijk niet
hetzelfde schema
Renaming ρ(R) where or using assignment (ρ) Hiermee kunnen we het resultaat(een tabel) van
een algebraïsche expressie kunnen toekennen aan
een naam. Met deze tabel kunnen we verder aan de
slag.
Binaire operators werken op 2 tabellen en geven 1 tabel terug als resultaat.
Union R ∪ S schema compatibility (U) In dit geval zijn we geïnteresseerd in regisseurs en
acteurs. Omdat de schema’s van deze 2 tabellen
overeen komen kunnen we deze 2 tabellen
samenvoegen via de union (U). Omdat we met
verzamelingen werken worden duplicaten
geëlimineerd.
Difference R − S schema compatibility (−) We kijken naar alle elementen van het linker
operant en naar alle elementen van het rechter
operant en verwijderen daar de elementen die ook
in het rechter operant voorkomen.
Intersection R ∩ S schema compatibility (∩) Daarbij kijken we naar de elementen die in beide
tabellen voorkomen.
Cartesian product R × S (x) Bij de bepaling van het cartesisch product stel je
vast dat het schema de oorspronkelijke
samenstelling is van de operanten, in dit geval A, B,
C & D en dat de inhoudt bestaat uit alle mogelijke
combinaties.
Theta-join R ⋈θ S where θ is matching condition (⋈θ) Is een koppelingsconditie met linker en rechter
tabel. In dit geval staan we niet alle combinaties toe
maar alleen de combinaties die aan de voorwaarde
theta voldoen.
Natural join R ⋈ S (⋈) Het komt erop neer dat je gaat kijken naar
attributen die zowel in het linker schema(R) als in
het schema van de rechter operant (S) voorkomen.
Division R ÷ S schema requirements (÷) Werkt op 2 tabellen in het voorbeeld namelijk tabel
T & tabel U. De tabel U dient een subset te zijn van
de tabel T. In dit geval betekent het dat het
attribuut B van tabel U moet voorkomen als
attribuut in schema T. Het resultaat van de query
waarbij geldt dat het schema bestaat van alle
elementen van de linkerkant van de operant voor
zover deze niet in de rechterkant van de operant
voorkomen.
, Zoals hij zei is het associatief. A en B eerst joinen en daarna C heeft geen invloed in feite. B en C en
vervolgens A zal hetzelfde effect hebben (uiteindelijk)
Extra aantekeningen vanuit reflectiecollege:
Equivalence:
We hebben hier 4 query’s. De query’s geven hetzelfde
resultaat maar de tussen uitkomsten en berekeningen zijn
wel anders.
Bij Q3 wordt bijvoorbeeld gezegd: neem het boektabel,
selecteer op auteur is Dickens. Join dit resultaat met Loan en
join dit resultaat weer met Reader en projecteer dit op
naam.
Bij Q2 gaat dit net wat anders. Je joint de Reader met Loan & join dit daarna met het resultaat van de
selectie auteurs is Dickens uit de Book tabel.
De Q1 zegt niks over de volgorde, alleen dat er 3 tabellen gejoined moeten worden. Qua betekenis
maakt het niet uit of je Q1 , Q2 of Q3 neemt.
De join(⋈) is een associatieve operator, dus (A ⋈ B) ⋈ C is hetzelfde als A ⋈ (B ⋈ C). Q4 is het minsts
efficiënt. Eerst worden complete tabellen met elkaar gejoined(enorm tussenresultaat), en daarna
pas de selectie op dickens en projectie op de naam. Q3 is het meest efficiënt, deze brengt direct het
resultaat tot het minimale door de selectie operator.
Renaming:
Je kunt een algebraïsche expressie maken en dit toekennen aan
een bepaalde tabel. Je noteert dit als Tabel :=
<algebrarische_expressie> . Soms kan je ook de speicifieke
attributen die uit de algebrarische expressie komen
herbenoemen. Als een algebrarische expressie N attributen heeft kan ik via de linkerkant T[A1 .. An]
de attributen een nieuwe naam geven. Soms is er de behoefte om in de expressie ‘on the fly’ de
namen van de attributen en de tabel te herbenoemen.
Voorbeeld:
- Oldmovies1 := πmovid,title (σyear<1930(Movie)) (hier herbenoem je de tabel)
- Oldmovies2[omid, omtitle] := πmovid,title (σyear<1930(Movie)) (hier herbenoem je de tabel en
attributen erin)
Als Oldmovies nog gebruikt gaat worden in de verdere query kan je het ook “on the fly” doen. On
the fly renaming within an expression: . . . . ⋈ ρ(Oldmovies, omid, omtitle)(πmovid,title
(σyear<1930(Movie)))
Les avantages d'acheter des résumés chez Stuvia:
Qualité garantie par les avis des clients
Les clients de Stuvia ont évalués plus de 700 000 résumés. C'est comme ça que vous savez que vous achetez les meilleurs documents.
L’achat facile et rapide
Vous pouvez payer rapidement avec iDeal, carte de crédit ou Stuvia-crédit pour les résumés. Il n'y a pas d'adhésion nécessaire.
Focus sur l’essentiel
Vos camarades écrivent eux-mêmes les notes d’étude, c’est pourquoi les documents sont toujours fiables et à jour. Cela garantit que vous arrivez rapidement au coeur du matériel.
Foire aux questions
Qu'est-ce que j'obtiens en achetant ce document ?
Vous obtenez un PDF, disponible immédiatement après votre achat. Le document acheté est accessible à tout moment, n'importe où et indéfiniment via votre profil.
Garantie de remboursement : comment ça marche ?
Notre garantie de satisfaction garantit que vous trouverez toujours un document d'étude qui vous convient. Vous remplissez un formulaire et notre équipe du service client s'occupe du reste.
Auprès de qui est-ce que j'achète ce résumé ?
Stuvia est une place de marché. Alors, vous n'achetez donc pas ce document chez nous, mais auprès du vendeur luukvaa. Stuvia facilite les paiements au vendeur.
Est-ce que j'aurai un abonnement?
Non, vous n'achetez ce résumé que pour €6,99. Vous n'êtes lié à rien après votre achat.