Databanken 2
- 2017 juni examen
- 2018 compacte samenvatting
- 2018 juni examen
- 2018 voorbeeldvragen
- 2019 juni examen
- algemeen
- 2022 juni & augustus examen
2017 juni examen
12 juni 8u30
1. Wat is acid? Wat is het verband met NoSql?
2. Schrijf triggers voor integriteit op een schema
3. Schrijf een recursieve cte op dat schema
4. Wat zijn xml en json in verband met postgresql?
1 juni 8u30
1) mondeling: wat is referentiële integriteit leg uit, geef grondige voorbeelden.
2) maak een functie die als input een tabelnaam heeft en als output de kollomhoofden en datatype
bv: tabel(k1 text,k2 integer)
output:
k1 text
k2 integer
3) Wat is een dirty read ? Geef een voorbeeld hiervan met transaction. Maak ook een view met het gegeven voorbeeld waarbij alle geiten hun nummer en mogelijke aandoening getoond worden.
4) wat zijn de nadelen van ORDMS + geef telkens een voorbeeld.
1 juni namiddag
1) mondeling: uitleggen wat cartesisch product is + voorbeeldquery maken met inner join, en dan vroeg hij op het examen de volgorde van uitvoer van die query + hoeveel rijden er overbleven na de join met using + na de where
2) pc en mondeling: trigger schrijven voor een tabel "geit" en wanneer ge een geit toevoegt, moet ge voor de insert aan een zelfgemaakte tabel audit toevoegen wat de situatie was voor de insert + ook info naar die audit tabel zetten na de insert
3) schriftelijke query: van de geit tabel de stamboom geven van een geit met CTE
4) schriftelijk: 4 manieren om te beveiligen: staat in de pp's: was grant, view, stored procedures & roles
2018 compacte samenvatting
Van een onbekende auteur: Db2_compacte_samenvatting 2018.pdf
2018 juni examen
15 juni 13u00
Mondeling (5pt):
Wat zijn de 3 belangrijkste verschillen tussen ORDBMS & OODBMS en leg deze uit. (Met erna een cheeky suprise vraag: gebruiken ze beide SQL? -> OODBMS gebruikt Object query Language)
Op de R schijf zijn een schema en een script te vinden van de databank. Je kan dan je queries opbouwen met pgadmin4.
Theorie (5pt): 4 vragen:
1. Wat is de engelse vertaling van AVG, wat op 25 mei 2018 gestart is?
2. En vallen gegevens van een Europeaan op een Canadese server onder deze wet? (Simpele ja/nee)
3. Wat is een groot voordeel & nadeel van indexen? Leg beide uit met 2-3 zinnen.
4. Hoe krijg ik in PostgreSQL de execution time van een query? Leg ook uit wat dit qua informatie geeft.
Praktijk (2 vragen, elk 5pt, op KLOTE trage pc's):
1. Een vraag met WITH RECURSIVE, deze vraag is soortgelijk aan het voorbeeld met Louis en zonen van de slides, meenemen dus.
2. Een vraag over een function maken die met een loop een aantal inserts doet op een databank. Best te doen met een LOOP in plpgsql.
2018 voorbeeldvragen
Datamodellering
Vragen ivm consistentie, (referentiële) integriteit, redundantie.
Nadelen redundantie:
- meer kans op inconsistentie
- meer gegevens bijhouden dus hogere capaciteit nodig.
- complexere aanpassing van gegevens met mogelijks fouten tot gevolg.
Geef (of bespreek, verbeter) het bijhorende conceptueel, logisch en/of fysisch model
Groep 2
Bespreek volledig de uitvoering van een SELECT statement (volgorde en acties).
- FROM clause
- ON clause
- OUTER clause
- WHERE clause
- GROUP BY clause
- HAVING clause
- SELECT clause
- DISTINCT clause
- ORDER BY clause
- TOP clause
Wat is een cartesisch product? Wat moet je meestal doen om dit te vermijden?
de verzameling van alle koppels of geordende paren waarvan het eerste element uit de eerste verzameling en het tweede uit de tweede verzameling komt.
Groep 3
Wat is een niet-gecorreleerde subquery?
Als de inner query afhankelijk is van de outer query, is er sprake van een gecorreleerde subquery.
Geef een alternatieve oplossing voor deze query zonder subquery.
Groep 4
Wat is het verschil tussen een gecorreleerde subquery en een niet gecorreleerde subquery?
Als de inner query afhankelijk is van de outer query, is er sprake van een gecorreleerde subquery.
Los op een met gecorreleerde subqueries: "Geef de spelers die voor elke team gespeeld heeft"
Groep 5
Wat is het verschil tussen condities in de WHERE en de FROM?
Als conditie in FROM wordt alles zonder combinatie gecombineerd met NULL. Een conditie in de WHERE gaat rijen filteren (eruit gooien).
Geef een zinnig voorbeeld van een theta join en leg uit.
Vergelijking met een andere vergelijkingsoperator.
SELECT s.spelersnr, s.naam, count(sp.spelersnr)
FROM spelers s INNER JOIN spelers sp
ON(s.spelersnr sp.spelersnr)
WHERE length(s.naam) == length(sp.naam)
GROUP BY s.spelersnr, s.naam
Welke set-operatoren ken je en wat doen ze (kort)?
- UNION combineert resultaten van twee SQL-query's tot een enkele tabel van alle overeenkomende rijen. De twee query's moeten resulteren in hetzelfde aantal kolommen en compatibele gegevenstypen om zich te verenigen. Dubbele records worden automatisch verwijderd tenzij UNION ALL wordt gebruikt.
- INTERSECT neemt de resultaten van twee query's en retourneert alleen rijen die in beide resultaatsets voorkomen.
- EXCEPT: neemt de afzonderlijke rijen van één query en retourneert de rijen die niet in een tweede resultaatset voorkomen.
Waar dient LC_COLLATE voor en waarom kan dit belangrijk zijn?
Sorteervolgorde om in de nieuwe database te gebruiken. Dit beïnvloedt de sorteervolgorde toegepast op tekenreeksen, b.v. in query's met ORDER BY, evenals de volgorde die wordt gebruikt in indexen in tekstkolommen.
Groep 6
Hoe kan je een constraint van de tabel verwijderen?
ALTER TABLE custom_table
DROP CONSTRAINT fk_states_list;
Geef een alternatief voor de LIKE operator en geef enkele voorbeelden van wat dit alternatief meer kan.
SIMILAR TO → ondersteunt POSIX pattern matching* | denotes alternation (either of two alternatives).
- * denotes repetition of the previous item zero or more times.
- + denotes repetition of the previous item one or more times.
- ? denotes repetition of the previous item zero or one time.
- {m} denotes repetition of the previous item exactly m times.
- {m,} denotes repetition of the previous item m or more times.
- {m,n} denotes repetition of the previous item at least m and not more than n times.
- Parentheses () can be used to group items into a single logical item.
Leg uit: "connection pooling client side" met tekst en tekening.
Welke types connecties kan je maken naar database vanuit een programmeertaal?
Waarom kan het gebruik van een genereerde serial id gevaarlijk zijn?
Groep 7
Een query met de volgende elementen:(S F W G H en 1 of meer subqueries).
Groep 8
Wat is een segmenttype?
Wat typeert een netwerk databank?* bouwstenen: recordtypes, settypes, 1:n-verband owner-record member-record
- ER → netwerk: n-m → 1-n
- conceptueel: schema (schema DDL)
- intern: intern schema (DSDL)
- extern: subschema (subschema DDL)
- member kan zonder owner
- meerdere settypes tussen zelfde record types
- recordtype kan member zijn in meerdere settypes
recordtype: beschrijft gegevens in gegevensbank
settype: geven relaties tussen recordtypes aan
Groep 9
Geef een voorbeeld van een CTE met recursie.
Geef Louis V en zijn 5 voorgangers.
WITH RECURSIVE lijst (naam, zoon, nr) AS (
SELECT naam, zoon, 0
FROM kings
WHERE naam == ‘Louis V’
UNION ALL
SELECT naam, zoon, nr + 1
FROM lijst L INNER JOIN kings K
ON (L.naam == K.zoon)
WHERE nr < 5
OF
with recursive boom(naam, cirkeltrond, level) as (
select objectnaam, satellietvan, 0
from hemelobjecten
where objectnaam like '%i%a%a'
union all
select h.objectnaam, h.satellietvan, level + 1
from hemelobjecten h inner join boom b
on h.objectnaam == b.cirkeltrond
where level < 3
)
select naam || '-' || cirkeltrond as stamfrom boom
Geef een alternatief met gecorreleerde subqueries om een beperkt deel van de resultaten te tonen (cf het limiteren van resultaten).
Wat is het verschil tussen een string literal en een identifier?
String litterals are enclosed in single quotes. Double quotes are use to force a string containing otherwise special characters to be interpreted as identifiers.
Ex. assuming table foo with column bar : SELECT bar as "Bar", 'zz' as OTHER from foo;
In this select, the first column will have name Bar. Without the ", the name would have been bar since SQL does not normally distinguishes case. The second column will the the constant zz and the column name will be other.
The " are also useful to have accented chars like éè for non english languages.
Geef een alternatieve oplossing voor deze query (GROUP BY GROUPING SETS..)
Groep 10
Waarom maken we niet op elke kolom per definitie een INDEX?
Stelling: "Het gebruik van JOINS is steeds beter dan het gebruik van subqueries". Kies een standpunt en verdedig helder.
Waarvoor kan je VIEWS gebruiken?
- Vereenvoudigen van routinematige instructies
- Beveiligen van gegevens, gebruikers kunnen bv. aan de view maar niet aan de onderliggende tabellen
- Hulpmiddel bij het reorganiseren van tabellen
- Stapsgewijs opstellen van queries
Wat is SQL injectie (injection) en hoe kan je dit vermijden?
SQL statements in bv. form input fields zetten. Vermijden door gebruik te maken van prepared statements.
Groep 11
Wat zijn transacties?
Verzameling van sql-instructies die door 1 gebruiker ingevoerd wordt en waarvan de mutaties blijvend moeten zijn of ongedaan moeten gemaakt worden.
Geef een voorbeeld van embedded sql.
Bv SQL binnen PHP
Schrijf een methode die .. (generiek).
Waarvoor kunnen we TRIGGERS gebruiken?
Triggers are stored programs, which are automatically executed or fired when some events occur. Triggers are, in fact, written to be executed in response to any of the following events * A database manipulation (DML) statement (DELETE, INSERT, or UPDATE)
- A database definition (DDL) statement (CREATE, ALTER, or DROP).
- A database operation (SERVERERROR, LOGON, LOGOFF, STARTUP, or SHUTDOWN).
Triggers can be written for the following purposes* Generating some derived column values automatically
- Enforcing referential integrity
- Event logging and storing information on table access
- Auditing
- Synchronous replication of tables
- Imposing security authorizations
- Preventing invalid transactions
Groep 12
Geef de typische kenmerken van een ODMS.
- geneste objecten
- overerving (class … extends ...)
- collections (set, list, ...)
Wat zijn RULES? Geef een voorbeeld.
The PostgreSQL rule system allows one to define an alternative action to be performed on insertions, updates, or deletions in database tables. Roughly speaking, a rule causes additional commands to be executed when a given command on a given table is executed. bron
CREATE RULE "NeKeerIetsAnders" AS
ON SELECT TO wedstrijden
WHERE
spelersnr == 7
DO INSTEAD
SELECT 'eerst drie toerkes rond tafel lopen en dan nog eens proberen';
===Stelling: "We hebben geen databanken nodig, we kunnen alles met XML." Kies een standpunt en verdedig helder.
XML is not a database. It was never meant to be a database. It is never going to be a database. Relational databases are proven technology with more than 20 years of implementation experience. They are solid, stable, useful products. They are not going away. XML is a very useful technology for moving data between different databases or between databases and other programs. However, it is not itself a database. Don't use it like one.“ bron
Geef een voorbeeld van een NoSQL product en filosofie.
MongoDB → binaire JSON. Vooral document store.
Leg uit : ACID
- Atomic: mate van garantie dat hele transactie uitgevoerd wordt
- Consistent: na transactie moeten alle integriteitsregels nog gelden
- Isolated: transacties geïsoleerd van elkaar uitgevoerd
- Durable: acties kunnen niet ongedaan gemaakt worden
BASE is tegenovergestelde van ACID
Stelling: "PostgreSQL is de relationele database in alle omstandigheden, we kunnen ze voor alles gebruiken" Kies een standpunt en verdedig helder.
PostgreSQL heeft een ruim aanbod aan datatypes, heeft naar mijn weten veel hogere size limits dan bv. MySQL/MariaDB.
PostgreSQL decidedly strives to conform to the ANSI-SQL:2008 standard, is fully ACID (Atomicity, Consistency, Isolation and Durability) compliant, and is well-known for its rock-solid referential and transactional integrity. Primary keys, restricting and cascading foreign keys, unique constraints, not null constraints, check constraints and other data integrity features ensure only validated data is stored. bron
- This database management engine is scalable and can handle terabytes of data. bron
- PostgreSQL supports JSON and other NoSQL features like native XML support and key-value pairs with HSTORE. It also supports indexing JSON data for faster access. bron
- There are a variety of predefined functions. bron
- A number of interfaces are available. bron
13 Groep 13
Wat is het verschil tussen een venster en een groepering?
When a group by clause is used all the columns in the select list should either be in group by or should be in an aggregate function. While in over() clause, we don't have any such restriction. Aggregates or other functions like row number, lead, can be calculated using over function along with other columns in the select list.
Geef een voorbeeld van een cumulatieve frequentietabel met een theta join enerzijds en een venster anderzijds. Welke is het meest performant, hoe kan je dit controleren?
2019 juni examen
Mondeling: ACID. Full form. Leg uit. Verband met NoSQL?
Theorie: 1. Geef conceptueel uitvoering van Select statement. 2. Tijdens Uitnormalizatie moet vreemnde sleutel gebruik maken van primary sleutel. Ja/Nee. Leg uit. 3. Meerkeuze vraag over Select snelste is. ( keuze tussen select statements met - id, hash, datum)
Praktijk: Gegeven db met tabellen bank, in_uitgave, eigenaar, type....
1 a. Schrijf een script die een nieuw kol (bedrag en teken) aanmaakt aan table en data toevoegt met betreffende data (maak gebruikt van andere kol in tabel). b. Wat is probleem met zo'n manier van data toevoegen? c. Create view van twee tabellen zonder joins te gebruiken.
2. Update table(in_uitgave) wanner een uitgave wordt gedaan door 'Griet' (van eigenaar) naar inkomen. a. Geef bericht "This is normal.... bla bla....., bug fixed" wanner update gedaan is. b. Geeft bericht bij insert "are you sure".
algemeen
Aanwezigheden worden voor Databanken 2 niet opgenomen. Elke week kunnen 2 groepjes van maximum 5 personen een groepsopdracht maken. Als de lector het eindresultaat goedkeurt, verdien je een open-boek-examen. Je mag dan al het papieren cursusmateriaal meenemen, zoals bv. het SQL-Leerboek, Inleiding tot Gegevensbanken en een afdruk van de uitgevoerde opdracht. Zoals gewoonlijk bevindt al het lesmateriaal zich op Projektwerk.
2022 juni & augustus examen
Dit zijn al de mogelijke vragen die er tijdens het juni en augustus examen werden gevraagd:
Theorie
Een theorie vraag waarbij je een aantal stellingen kreeg en moest zeggen welke juist of fout waren
Praktijk
- Copy maken van een databank (mogelijkse varianten: met enkel het schema, enkel de data of met beide)
- Replicatie opstellen
- SQL dropbox oefeningen
3.1 copy paste van sqldropbox db1 en db2
3.2 JSON oefening & XML oefening - Script: verbeter databank structuur (gebruik van alter, drop table en index om zo de databank structuur te verbeteren, of zorgen dat het gegeven stuk sql code een kleinere cost heeft)
- Verbeter de create en insert sql file (zet comma's, haakjes, aanhalingstekens, etc... gewoon zorgen dat je de file kunt uitvoeren zonder de inhoud echt aan te passen)
- Schrijf een functie/procedure (mogelijks gebruik van venster functies)
Veel succes!!