Opgave 2 ica

Opgave 2: Queries

In deze tweede opgave bij het vak Databases wordt de implementatie van de database afgerond en het geheel in gebruik genomen: het opstellen van zinvolle queries.

Met het oog op de correctie is het verplicht de terminologie van het schema en het commentaar in het Engels op te stellen. De gebruikte taal voor de data in de database is niet relevant.

Relatie met (de beoordeling van) opgave 1

Let op: de twee practicumopgaven bij het vak Databases hangen met elkaar samen. Onhandige oplossingen in een vroeg stadium kunnen dus - net als in de real world - gevolgen hebben voor latere uitwerkingen. Maak, indien je vragen hebt over de beoordeling van opgave 1, een afspraak met de practicumleider voor inzage van het gemaakte werk. Je kunt dan nog tijdig je uitwerking bijsturen voor deze opgave.

Het is toegestaan als onderdeel van deze opgave een gecorrigeerd database-schema (in SQL), al dan niet vergezeld van gecorrigeerde documentatie, in te leveren, gebaseerd op de feedback van de nakijkers en/of inzage in het gemaakte werk. Indien aanwezig in de inlevering, wordt de uitwerking van opgave 2 geacht plaats te hebben gevonden op basis van de gecorrigeerde uitwerking van opgave 1. Het cijfer van opgave 1 wordt niet aangepast op basis van de correctie, maar de correctie kan wel voorkomen dat het cijfer voor opgave 2 negatief beïnvloed wordt door eerdere fouten in opgave 1. De correctie van opgave 1 kan wel vast als basis worden gezien van een eventuele benodigde toekomstige herkansing van opgave 1.

Voorbereiding

Bestudeer de paragrafen uit het cursusboek die betrekking hebben op SQL. Zorg ervoor dat je de gebruikte technieken begrijpt en goed beheerst voor je aan deze opgave begint.

Samenwerking

Bij deze opgave is het de bedoeling dat je samenwerkt met een practicumpartner en samen 1 uitwerking inlevert (die dezelfde beoordeling geeft voor beide deelnemers). Indien je dat perse wilt, mag je de opgave(n) ook alleen maken. Samenwerken in groepen van meer dan twee personen is niet toegestaan.

Let op: je dient alle practicumopgaven met dezelfde practicumpartner te maken; in dit geval dus je practicumpartner van opgave 1. (En indien je er bij opgave 1 voor gekozen hebt de opgave alleen te maken, zul je noodzakelijkerwijs ook deze opgave alleen moeten maken.)

De opdracht: queries

In deze opgave dien je een zestal SQL queries op te stellen. Bedenk queries die voor jouw domein/database relevant zijn en voldoen aan de onderstaande voorwaarden. Geef elke query zowel in natuurlijke taal als in een SQL DML statement (SELECT). Licht toe waarom de query relevant is voor je domein/database en leg uit wat er binnen de query gebeurt.

  1. Geef een query waar een OUTER JOIN in voorkomt (LEFT is voldoende).
  2. Geef een query waarbij de query in natuurlijke taal het woord "geen enkele" bevat (vergelijk werkcollege opgave 3: Q3).
  3. Geef een query waarbij de query in natuurlijke taal het woord "uitsluitend" bevat (vergelijk werkcollege opgave 3: Q4).
  4. Geef een query met een division (zoals je die kent uit de relationele algebra).
  5. Geef een query waar het maximum van een sommatie (SUM) in berekend wordt.
  6. Geef een query die het op één na grootste element van een verzameling geeft. Daarbij mag je geen LIMIT en OFFSET gebruiken.

Test je SELECT statements! Zorg ervoor dat al je queries uitvoer geven, gegeven de vulling van je database. Kies deze slim: zodanig dat de data van de database je queries adequaat illustreren. De vulling van je database hoeft niet omvangrijk te zijn. Uiteraard moeten de queries ongeacht de specifieke vulling van je database altijd het juiste antwoord geven; ze mogen niet op de huidige vulling toegesneden zijn.

De gebruikte SQL syntax moet compatible zijn met de bij Databases gebruikte versie van SQLite. Zet alle SQL DML statements (die je queries representeren) in tekstbestanden met namen q1.txt tot en met q6.txt. Laat elk SELECT statement voorafgaan door de bijbehorende query in natuurlijke taal, in commentaar (regels die met "--" beginnen worden door SQLite als commentaar gezien).

Wijze woorden

De queries worden behalve op correctheid (syntax en semantiek) ook beoordeeld op relevantie en complexiteit. Merk op dat de voorwaarden ruim genoeg zijn om op een minimalistische wijze invulling te geven aan de opgave, terwijl je strikt genomen wel aan de gestelde eisen voldoet. Het zal geen verrassing zijn dat een dergelijke minimalistische oplossing leidt tot een minimalistisch cijfer :-). Probeer jezelf uit te dagen: uit deze opdracht krijg je wat je er zelf instopt, in termen van tijd, plezier, kennis en beoordeling; creativiteit wordt beloond.

Inleveren

De uitwerking dient via submit ingeleverd te worden.

Je dient een zip-bestand in te leveren met daarin de volgende bestanden:

(Let op: ook de laatste twee bestanden moeten ingeleverd te worden. Ze zijn nodig om de nakijkers snel je database opnieuw op te laten zetten.)

De maximale omvang van het in te leveren zip-bestand is 2Mb.


hansp@cs.uu.nl