2004 – Portfolio studente

Dopo attenta valutazione delle richieste…

Schema E/R

E/R Portfolio

SOTTOSCHEMI E QUERY

Un ente organizza corsi esterni che, insieme a quelli interni, sono attivati diverse volte…

image

Dato un corso, quali sono i dati relativi ad esso

SELECT *
FROM   CORSO
WHERE  Titolo = [Titolo del corso?]

Dato un corso, quali sono i dati relativi ad esso (+ dati corso esterno)

SELECT *
FROM   CORSO LEFT JOIN CORSOESTERNO ON CORSO.IDcorso = CORSOESTERNO.IDesterno
WHERE  Titolo = [Titolo del corso?]

ENTE_CORSOESTERNO: i dati dei corsi esterni

SELECT *
FROM   ENTE INNER JOIN CORSOESTERNO ON ENTE.IDente = CORSOESTERNO.IDesterno

Dato un corso, quali sono i dati relativi ad esso (+ corso esterno + ente). Risolve il problema del left join + inner join con la query ENTE_CORSOESTERNO

SELECT *
FROM   CORSO LEFT JOIN ENTE_CORSOESTERNO ON CORSO.IDcorso = ENTE_CORSOESTERNO.IDesterno
WHERE  Titolo = [Titolo del corso?]

Gli studenti frequentano una classe all’anno

image

Dato uno studente quali classi ha frequentato, in quali anni scolastici e con quali esiti finali

SELECT   IDstudente, Cognome, Nome, Anno, Sezione, AnnoScolastico, Promosso, ConDebito, EsitoCompleto
FROM     CLASSE INNER JOIN STUDENTE_CLASSE ON CLASSE.IDclasse            = STUDENTE_CLASSE.classeID
                INNER JOIN STUDENTE        ON STUDENTE_CLASSE.studenteID = STUDENTE.IDstudente
WHERE    IDstudente = [Codice dello studente?]
ORDER BY AnnoScolastico

Gli studenti frequentano i corsi attivati

image

SCHEMA RELAZIONALE / QUERY

image

Dato un anno scolastico, quali corsi interni sono stati attivati

SELECT   Titolo, Descrizione, Tipo, MonteOre, Dal, Al
FROM     CORSO INNER JOIN ATTIVAZIONE ON CORSO.IDcorso = ATTIVAZIONE.corsoID
WHERE    (AnnoScolastico = [Anno scolastico?]) AND
         (IDcorso NOT IN (SELECT IDesterno
                          FROM CORSOESTERNO))
ORDER BY Titolo

Dato uno studente, quali corsi ha frequentato, di che tipo, per quale monte ore e in quale anno scolastico

SELECT Titolo, Descrizione, Tipo, MonteOre, AnnoScolastico
FROM   STUDENTE_ATTIVAZIONE ... ATTIVAZIONE ... CORSO ...
WHERE  studenteID = [Codice studente?]

Data una classe, quali studenti di quella classe hanno frequentato corsi e di che tipo

SELECT   Cognome, Nome, Titolo, Tipo
FROM     STUDENTE_CLASSE ... STUDENTE ... STUDENTE_ATTIVAZIONE ... ATTIVAZIONE ... CORSO ...
WHERE    classeID = [Codice classe?]
ORDER BY Cognome, Nome

Dato un anno scolastico, quali corsi interni sono stati attivati e da quali studenti sono stati seguiti

SELECT   Titolo, Descrizione, Tipo, Cognome, Nome, IDstudente
FROM     CORSO INNER JOIN ATTIVAZIONE ON CORSO.IDcorso = ATTIVAZIONE.corsoID
WHERE    (AnnoScolastico = [Anno scolastico?]) AND
         (IDcorso NOT IN (SELECT IDesterno
                          FROM CORSOESTERNO))
ORDER BY Titolo,Cognome,Nome