100% tevredenheidsgarantie Direct beschikbaar na je betaling Lees online óf als PDF Geen vaste maandelijkse kosten 4.2 TrustPilot
logo-home
Samenvatting

Databases samenvatting Universiteit Utrecht clips / college / kahoot quiz

Beoordeling
4,0
(2)
Verkocht
14
Pagina's
102
Geüpload op
22-03-2021
Geschreven in
2020/2021

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 toegevoegd voor extra ondersteuning.

Meer zien Lees minder

















Oeps! We kunnen je document nu niet laden. Probeer het nog eens of neem contact op met support.

Documentinformatie

Geüpload op
22 maart 2021
Bestand laatst geupdate op
10 april 2021
Aantal pagina's
102
Geschreven in
2020/2021
Type
Samenvatting

Onderwerpen

  • database hans philippi

Voorbeeld van de inhoud

Inhoud
Hoorcollege 1 Intro & Relational model ................................................................................................. 2
Hoorcollege 2 Relational Algebra ........................................................................................................... 5
Hoorcollege 3 ERD & FD concept .......................................................................................................... 12
Hoorcollege 4 More FD's; lossness decomposition, BCNF .................................................................... 19
Hoorcollege 5 SQL ................................................................................................................................. 29
Hoorcollege 6 Further normalization & 3NF & DP ................................................................................ 42
Hoorcollege 7 4NF; Indexing ................................................................................................................. 51
Hoorcollege 8 Constraints, triggers, view ............................................................................................. 56
Hoorcollege 9 TP concurrency .............................................................................................................. 61
Hoorcollege 10 TP recovery .................................................................................................................. 70
Hoorcollege 11 2PC; Query processing ................................................................................................. 83
Hoorcollege 12 Query processing ......................................................................................................... 89
Hoorcollege 13 Kahoot (CTP and Query optimizer) .............................................................................. 96
Hoorcollege 14 Gastcollege .................................................................................................................. 99

,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.

σ(country=0Netherlands0)∨(country=0Belgium0)(Actor)

,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

A1: πname(Reader ⋈ Loan ⋈ (σauthor=’Dickens’ Book))



Q2: Give the names of the readers who never borrowed a book of Dickens

A2: πrid (Reader) – πrid(Loan ⋈ (σauthor=’Dickens’ Book))

,Q3: Give the names of the readers who borrowed only Dickens-books

A3: πrid (Reader) – πrid(Loan ⋈ (σauthor<> “Dickens” Book))



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

A4: πname Reader ⋈ πrid, bid (Loan) ÷ πbid(σauthor= “Dickens” Book))



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.

Voorbeeld:

assignment & renaming examples:

- Oldmovies1 := πmovid,title (σyear<1930(Movie))
- Oldmovies2[omid, omtitle] := πmovid,title (σyear<1930(Movie))

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)))

Beoordelingen van geverifieerde kopers

Alle 2 reviews worden weergegeven
2 jaar geleden

4 jaar geleden

4,0

2 beoordelingen

5
0
4
2
3
0
2
0
1
0
Betrouwbare reviews op Stuvia

Alle beoordelingen zijn geschreven door echte Stuvia-gebruikers na geverifieerde aankopen.

Maak kennis met de verkoper

Seller avatar
De reputatie van een verkoper is gebaseerd op het aantal documenten dat iemand tegen betaling verkocht heeft en de beoordelingen die voor die items ontvangen zijn. Er zijn drie niveau’s te onderscheiden: brons, zilver en goud. Hoe beter de reputatie, hoe meer de kwaliteit van zijn of haar werk te vertrouwen is.
luukvaa Universiteit Utrecht
Bekijk profiel
Volgen Je moet ingelogd zijn om studenten of vakken te kunnen volgen
Verkocht
760
Lid sinds
7 jaar
Aantal volgers
589
Documenten
12
Laatst verkocht
6 dagen geleden

Welkom op mijn stuvia pagina! Kijk gerust rond welke samenvattingen op dit moment op mijn pagina staan. Gedurende elk jaar zullen er weer nieuwe samenvattingen verschijnen, dus neem af en toe een kijkje en klik op het knopje \'\'volgen\". Succes met studeren!

4,0

284 beoordelingen

5
108
4
102
3
58
2
5
1
11

Recent door jou bekeken

Waarom studenten kiezen voor Stuvia

Gemaakt door medestudenten, geverifieerd door reviews

Kwaliteit die je kunt vertrouwen: geschreven door studenten die slaagden en beoordeeld door anderen die dit document gebruikten.

Niet tevreden? Kies een ander document

Geen zorgen! Je kunt voor hetzelfde geld direct een ander document kiezen dat beter past bij wat je zoekt.

Betaal zoals je wilt, start meteen met leren

Geen abonnement, geen verplichtingen. Betaal zoals je gewend bent via iDeal of creditcard en download je PDF-document meteen.

Student with book image

“Gekocht, gedownload en geslaagd. Zo makkelijk kan het dus zijn.”

Alisha Student

Veelgestelde vragen