Practicumtoets Databases 1 oktober 2003

advertisement
Practicumtoets Databases 1 oktober 2003
versie A
Studentnummer
Naam
Cijfer
Op een hogeschool worden database ontwerpprojecten uitgevoerd voor externe opdrachtgevers. Vanwege het
brede karakter van de opdrachten nemen studenten van diverse opleidingen deel aan de projecten. Steeds heeft
echter één opleiding de eind verantwoordelijkheid voor het project. Natuurlijk worden ook de projectgegevens in
een database opgeslagen. Op blackboard vind je onder [Documenten]>[Practicumtoets] het conceptueel ontwerp
van deze database in Dezign formaat. Aan jou de taak om hierbij een relationele database te implementeren.
Van de entiteiten en relaties is bovendien het volgende bekend:
 Een student kan aan meerdere projecten deelnemen, een project kent meerdere studenten als leden.
 Bijgehouden dient te worden welke functie/taak een student in een bepaald project vervult (b.v.
projectleider, databaseadministrator, informatieanalist, etc.)
 Een project kan een vervolgproject zijn op een eerder project. Dit moet geïmplementeerd worden.
Opdrachten:
 Implementeer de database in SQL Server.
Gebruik hierbij als naam: <jouw inlognaam>_toets (b.v. rvwolffela_toets).
Hanteer hierbij de geldende regels voor relationele implementatie.
(30 punten)
In het ontwerp moeten ook de volgende zaken geregeld zijn:
 De opleidingscode bestaat uit drie tekens en moet één van de volgende codes zijn: HIO, TBK of KAM.
Definieer hiervoor een herbruikbaar datatype.
 Als een project afgebroken en dus verwijderd wordt, dan dienen ook alle functies/taken in dit project en
de opdrachtgever automatisch uit de database te worden verwijderd.
 Als de opdrachtgever verandert, b.v. vanwege overname bij een faillissement, dan dient dit ook
automatisch in de projectgegevens aangepast te worden.
 De in te voeren einddatum bij een project dient voorbij de begindatum te liggen.
(4 x 5 punten)
Vul de tabellen met enkele gegevens en ontwerp de volgende query’s (in de vorm van SQL-views)
 Een overzicht van de projecten(omschrijving) met per project de projectleden (studentnummers) met
hun functie en de opleiding(opleidingscode) waartoe ze behoren.
 Het totaal aantal studenten dat aan projecten deelneemt.
 Een overzicht van de projecten (omschrijving) met per project het aantal projectleden, gesorteerd van
hoog naar laag aantal deelnemers.
 Een overzicht van de opleidingen met de projecten waarvoor ze verantwoordelijk zijn.
Ook opleidingen die voor geen enkel project verantwoordelijk zijn dienen in het overzicht opgenomen
te worden.
 Een overzicht van de opleidingen die verantwoordelijk zijn voor meer dan twee projecten met een duur
van meer dan zes weken.
(5 x 10 punten)
Bijlage conceptueel model:
Oplossing relationeel model:
Opleiding
oplcode*
omschrijving
Project
projcode*
omschrijving
opdgevercode
Student
Functie
oplcode
Opdrachtgever
studnr*
functie
duur
naam
studnr*
begindatum
opdgevercode*
oplcode
projcode*
einddatum
opdrachtgever
vervolgopproject
Query 1
SELECT
FROM
Project.omschrijving AS Expr1, Functie.studnr, Functie.functie, Student.oplcode
Functie INNER JOIN Project
ON Functie.projcode = Project.projcode INNER JOIN Student
ON Functie.studnr = Student.studnr
Query 2
SELECT
FROM
COUNT(DISTINCT studnr) AS aantal_studenten
Functie
Query 3
SELECT
FROM
Project.omschrijving, COUNT(Functie.studnr) AS aantal_studenten
Project INNER JOIN Functie
ON Project.projcode = Functie.projcode
GROUP BY Project.omschrijving
ORDER BY COUNT(Functie.studnr) DESC
Query 4
SELECT
FROM
Opleiding.omschrijving, Project.omschrijving
Opleiding LEFT OUTER JOIN Project
ON Opleiding.oplcode= Project.oplcode
Query 5
SELECT
FROM
Opleiding.omschrijving
Opleiding INNER JOIN
Project ON Opleiding.oplcode = Project.oplcode
WHERE (Project.duur > 6)
GROUP BY Opleiding.omschrijving
HAVING
(COUNT(Project.projcode) > 2)
Download