# 2018 augustus examen THEORIE 10/20 1\) Geef alternatief equivalent query zonder gebruik van CUBE SELECT row\_number() over () as volgnr, geslacht, plaats, count(\*) FROM spelers GROUP BY geslacht, plaats WITH CUBE ORDER BY geslacht, plaats Aandacht: let op met row\_number(), denk verder 2\) Waarvoor gebruikt men FILTER, maak duidelijk aan de hand van een kleine SQL 3\) Hoe garandeer je integriteit van een 1-1 of 1-0 relatie tussen 2 tabellen? Illustreer en onderlijn het noodzakelijke volgens jou. 4\) Wat zijn de verschillen tussen een hiërarisisch model en relationeel model 5\) Geef de uitvoer van volgende query SELECT t1.nummer, t1.kolom1, (SELECT count(\*) from tabel2 WHERE tabel2.nummer = t1.nummer) FROM tabel1 as t1, tabel2 as t2 WHERE t1.nummer < 3
Tabel1
nummerkolom1
11
22
33
44
55
66
Tabel2
nummerkolom1
110
220
330
440
SQL 10/20 6\) Geef een lijst met servers (serial, jaar, os) waarvoor er geen interventies gebeurd zijn. 7\) Geef de naam van het personeelslid dat het hoogste aantal interventie-eenheden heeft gepresteerd aan gameservers. Gebruik hiervoor geen LIMIT of TOP. 8\) Geef de naam van het OS waarvoor gemiddeld gezien de meeste interventie-eenheden zijn gepresteerd. Gemiddeld gezien wil zeggen: het totaal aantal interventies bekijken in verhouding tot het totaal aantal servers van dit OS. Gebruik geen LIMIT of TOP. 9\) De klant met het minst aantal interventies in december 2010 krijgt een vast kortingspercentage van 15%. Maak gebruik van een transactie. 1. SERVERROOM 1. 1. Korte beschrijving: Een serverroom heeft verschillende servers voor verschillende klanten. Een server heeft maar één besturingssysteem en is niet gevirtualiseerd. Sommige servers zijn gameservers en hebben een hogere prioriteit wat betreft nodige interventies. Voor iedere interventie wordt het aantal gewerkte tijdseenheden genoteerd. Maandelijks wordt er een factuur gemaakt per klant die interventies gehad heeft. Een standaardbedrag wordt dan vermenigvuldigd met het aantal te factureren eenheden. Als een klant een korting geniet, wordt dit percentage in mindering gebracht op de factuur. Alle mogelijke applicaties staan beschreven. Het gaat hier om binaire, wat wil zeggen dat als een applicatie bestaat voor verschillende besturingssystemen, het ook meerdere keren voorkomt in de applicatietabel. Installaties van applicaties op bepaalde servers worden ook geregistreerd om zo een algemeen beeld te hebben van de staat van een server. 1. 1. Tabel- en veldbeschrijving Server ``` serial int not null uniek serienummer voor de server [PK] jaar int not null jaar van ingebruikname os char(50) not null naam van het besturingssysteem klantid int huidige klant waarvoor deze server draait isgameserver boolean not null gameservers hebben een hogere prioriteit ```
Klant ``` id int not null uniek ID voor een klant [PK] naam int not null naam van de klant tarief double not null tarief per eenheid voor deze klant korting double kortingspercentage voor speciale klanten ```
Interventie ``` serial int not null [PK] personeelslid int not null datum datetime not null opmerkingen char(255) not null eenheden int not null factuurnr int not null ```
Factuur ``` factuurnr int not null klantid int not null datum date not null bedrag double not null isbetaald boolean not null ```
Applicatie ``` id int not null uniek ID voor een applicatie naam char(50) not null verschillende versies van een app hebben dezelfde naam (ook voor verschillende OS) versie char(10) os char(50) not null ```
Installatie ``` applicatieid int not null [PK] serial int not null [PK] datum datetime not null personeelslid int not null personeelslid dat de installatie verrichte ```
Personeelslid ``` id int not null [PK] naam char(60) not null naam van het personeelslid ```
1. 1. ERD ``` ------------------- ---------------- | server | | klant | -------------------- |-------------------| |----------------| | factuur | | serial INT [PK] | | id INT [PK] | | -------------------| | jaar INT | >|--------------------|| | naam INT | | factuurnr INT [PK] | | os CHAR(50) | | tarief DOUBLE | ||----|< | klantnr INT | | klantid INT | ||-- | korting DOUBLE | | datum DATE | | isgameserver BOOL | | ---------------- | bedrag DOUBLE | ------------------- | | isbetaald BOOL | = | ----------------------- -------------------- | | | interventie | = | | |-----------------------| | | | | serial INT [PK] | | | | | personeelslid INT | >|-------------------------- | --|< | datum DATETIME | | | opmerkingen CHAR(255) | ---------------- | | eenheden INT | >|-- | personeelslid | _ | factuurnr INT | | |----------------| ^ ---------------------- --|| | id INT [PK] | ----------------------- | naam CHAR(60) | ----------------- | installatie | ---------------- | applicatie | |-----------------------| = |-----------------| | applicatieid INT [PK] | | | id INT [PK] | | serial INT | >|------------------------------------------------ | naam CHAR(50) | | datum DATETIME | | versie CHAR(10) | | personeelslid INT | >|----------------------------------------------------------|| | os CHAR(50) | ----------------------- ----------------- ```