Seconda prova informatica 2015

Seconda prova informatica 2015 svolta

Tema di: Informatica

indirizzo: INFORMATICA E TELECOMUNICAZIONI (Nuovo ordinamento)

Anno scolastico: 2014/2015

Testo, svolgimento e spiegazione passo passo della seconda prova Informatica 2015 esami di stato per l'indirizzo Informatico di un Istituto Tecnico Industriale visualizza e scarica questa pagina in formato PDF


Testo della prova

[nascondi]
Il candidato svolga la prima parte della prova e risponda a due tra i quesiti proposti nella seconda parte.

Prima Parte

Si vuole realizzare una web community per condividere dati e commenti relativi a eventi dal vivo di diverse categorie, ad esempio concerti, spettacoli teatrali, balletti, ecc. che si svolgono in Italia.

Gli eventi vengono inseriti sul sistema direttamente dai membri stessi della community, che si registrano sul sito fornendo un nickname, nome, cognome, indirizzo di e-mail e scegliendo una o più categorie di eventi a cui sono interessati.

Ogni membro iscritto riceve periodicamente per posta elettronica una newsletter, emessa automaticamente dal sistema, che riporta gli eventi delle categorie da lui scelte, che si svolgeranno nella settimana seguente nel territorio provinciale dell'utente.

I membri registrati possono interagire con la community sia inserendo i dati di un nuovo evento, per il quale occorre specificare categoria, luogo di svolgimento, data, titolo dell’evento e artisti coinvolti, sia scrivendo un post con un commento ed un voto (da 1 a 5) su un evento.

Il sito della community offre a tutti, sia membri registrati sia utenti anonimi, la consultazione dei dati on line, tra cui:

  • visualizzazione degli eventi di un certo tipo in ordine cronologico, con possibilità di filtro per territorio di una specifica provincia
  • visualizzazione di tutti i commenti e voti relativi ad un evento.

Il candidato, fatte le opportune ipotesi aggiuntive, sviluppi

  1. un’analisi della realtà di riferimento individuando le possibili soluzioni e scelga quella che a suo motivato giudizio è la più idonea a rispondere alle specifiche indicate
  2. uno schema concettuale della base di dati
  3. uno schema logico della base di dati
  4. la definizione in linguaggio SQL di un sottoinsieme delle relazioni della base di dati in cui siano presenti alcune di quelle che contengono vincoli di integrità referenziale e/o vincoli di dominio, laddove presenti
  5. le seguenti interrogazioni espresse in linguaggio SQL:
    1. elenco degli eventi già svolti, in ordine alfabetico di provincia
    2. elenco dei membri che non hanno mai inserito un commento
    3. per ogni evento il voto medio ottenuto in ordine di categoria e titolo
    4. i dati dell'utente che ha registrato il maggior numero di eventi
  6. il progetto della pagina dell’interfaccia WEB che permetta ad un utente registrato di svolgere le operazioni specificate
  7. la codifica in un linguaggio a scelta di un segmento significativo dell'applicazione Web che consente l'interazione con la base di dati.

Seconda parte

Il candidato (che potrà eventualmente avvalersi delle conoscenze e competenze maturate attraverso esperienze di alternanza scuola-lavoro, stage o formazione in azienda) risponda a due quesiti a scelta tra quelli sotto riportati:
  1. In relazione al tema proposto nella prima parte, descriva in che modo è possibile integrare lo schema concettuale sopra sviluppato in modo da poter gestire anche inserzioni pubblicitarie. Ogni inserzione è costituita da un testo e un link e può essere correlata a una o più categorie di eventi in modo da essere visualizzata in funzione dei contenuti visitati e delle preferenze degli utenti.
  2. In relazione al tema proposto nella prima parte, progetti un layout di pagina idoneo a garantire un aspetto grafico comune a tutte le pagine dell'applicazione e ne codifichi alcuni elementi in un linguaggio per la formattazione di pagine Web a sua scelta.
  3. Si consideri la seguente tabella:
    CognomeNomeTelefonoLivelloTutorTel-tutorAnticipo-versato
    VerdiLuisa345698741avanzatoBianca334563215100
    NeriEnrico348523698avanzatoCarlo369852147150
    RosiRosa347532159baseAlessio333214569120
    BianchiPaolo341236547baseCarlo369852147150
    RossiMario349567890baseCarlo36985214790
    NeriEnrico348523698complementiDina373564987100
    Il candidato verifichi le proprietà di normalizzazione e proponga uno schema equivalente che rispetti la 3a Forma Normale, motivando le scelte effettuate.
  4. Nella formalizzazione di uno schema concettuale, le associazioni tra entità sono caratterizzate da una cardinalità: esponga il significato e la casistica che si può presentare.


su


Analisi della realtà di riferimento(bozza)

[nascondi]
Si userà il DBMS MYSQL e il linguaggio php per l'implementazione dell'interfaccia grafica (pagina web) e delle interrogazioni al database. Si ipotizza quindi di poter testare il funzionamento del software in un ambiente preinstallato in locale che comprende una piattaforma integrata di sviluppo web (come ad esempio EasyPhp) contenente:
  • il server web Apache
  • il server di database MySQL
  • un interprete di script php
  • e l'interfaccia grafica phpMyAdmin per la creazione delle tabelle e il test delle query in SQL.

Ipotesi aggiuntive:

  1. I membri della web community possono aggiungere un solo post di commento per ogni evento presente, e questo comprende anche un voto obbligatorio all'atto del commento.
  2. La registrazione dei membri potrà avvenire indicando sia il nickname (opzionale) che l'email (che invece sarà obbligatoria) e avrà un numero minimo e massimo di caratteri alfanumerici e non e dovrà contenere almeno un carattere numerico e un carattere non alfanumerico (@,# ecc.); sarà inoltre memorizzata in forma cifrata utilizzando un algoritmo di cifratura come lo SHA1. Il controllo sulla lunghezza e sulla presenza di caratteri che la rafforzano sarà effettuato dal codice php del front end prima della cifratura.
Saranno usati gli stessi strumenti per l'installazione del software dopo la fase di test negli host del cliente. Si prevede in particolare l'uso di un computer server (contenente il server web e il motore MySQL e php) e poi l'uso di un computer client in rete col server per ogni punto di controllo contenente l'interfaccia grafica che interagisce col database situato sul server remoto.


su


Schema concettuale web community

[nascondi]
Diagramma Entity/Relationship seconda prova informatica 2015 apri nella dimensione originale

Note: Il campo nome dell'entità luogo contiene ad esempio: Stadio di San Siro.

su


Schema logico

[nascondi]
La progettazione logica sarà fatta elencando le tabelle e le relazioni tra le tabelle per la creazione nel database della web community.

tabelle:


categorie(idcategoria, categoria)
membri(idmembro, nome, cognome, nickname, email)
memcat(idmembro, idcategoria)
eventi(idevento, titolo, idcategoria, idluogo, data, idmembro)
commenti(idcommento, idevento, testo, idmembro, voto)
artisti(idartista, nome, descrizione)
arteven(idartista, idevento)
luoghi(idluogo, indirizzo, luogo, provincia)




relazioni:*

Tabella 1Tabella 2Relazionetramite
categoriemembriM-Nmemcat
eventicategorieM-1idcategoria
eventiluoghiM-1idluogo
eventimembriM-1idmembro
commentieventiM-1idevento
commentimembriM-1idmembro
artistieventiM-Narteven

^ * NB: le relazioni tra le tabelle, sono descritte in maniera non grafica poichè la progettazione concettuale descrive già ampiamente le associazioni tra le entità; ciononostante è opportuno descriverle indicando, per ogni relazione, la maniera nella quale sono collegate, e cioè: o tramite una chiave esterna (nel caso di relazioni uno a uno e uno a molti), oppure tramite un'altra tabella (nel caso di relazione molti a molti).
In questo schema quindi la colonna tramite assume proprio:

  • il nome del campo chiave esterna (relazioni 1-1, m-1) oppure
  • il nome della tabella che fa da "ponte" tra le due.
Inoltre è meglio specificare che, la chiave esterna che fa da collegamento (tramite) tra le due tabelle, abbia lo stesso nome della chiave primaria alla quale si collega.

su


Definizione delle relazioni

[nascondi]
La definizione delle relazioni è fatta per tre delle tabelle esistenti. In particolare, si fornisce il codice SQL per la creazione della tabella membri, della tabella eventi e della tabella commenti collegata ad entrambe le tabelle precedenti tramite le chiavi esterne idevento e idmembro come da schema logico.
create table membri
(
idmembro int unsigned not null,
nome varchar(20),
cognome varchar(30),
nickname varchar(30),
email varchar(30),
password varchar(255),
primary key (idmembro),
);

Si noti che il campo password ha un numero massimo di 255 caratteri perché deve contenere la password in forma cifrata che è molto più lunga rispetto a quella in chiaro; per altre considerazioni sulla password vedi ipotesi aggiuntive.

create table eventi
(
idevento int unsigned not null auto_increment,
titolo varchar(255),
idcategoria int unsigned,
idluogo int unsigned,
data date,
primary key (idevento),
foreign key (idcategoria) references categorie,
foreign key (idluogo) references luoghi
);

Si suppone che esistano già la tabella categorie con chiave primaria idcategoria e la tabella luoghi con chiave primaria idluogo.

create table commenti
(
idcommento int unsigned not null auto_increment,
idevento int unsigned,
testo text,
idmembro int unsigned,
voto int,
check(voto>=1 and voto<=5),
primary key (idcommento),
foreign key (idevento) references eventi
);

su


Query SQL

[nascondi]
  1. elenco degli eventi già svolti, in ordine alfabetico di provincia

    SELECT titolo, categoria, luogo, data
    FROM eventi, categorie, luoghi
    WHERE (eventi.idcategoria=categorie.idcategoria)
    and (eventi.idluogo=luoghi.idluogo)
    and (data<curdate())
    ORDER BY provincia
    NB: la funzione curdate() di MySql restituisce la data corrente
  2. Elenco dei membri che non hanno mai inserito un commento

    SELECT nome, cognome, nickname
    FROM membri
    WHERE where idmembro NOT IN
    (SELECT idmembro
    FROM membri, commenti
    where membri.idmembro=commenti.idmembro)

  3. per ogni evento il voto medio ottenuto in ordine di categoria e titolo;


    SELECT AVG(voto), titolo, categoria, data
    FROM eventi, commenti, categorie
    WHERE (commenti.idevento=eventi.idevento)
    and (categorie.idcategoria=eventi.idcategoria)
    GROUP BY idevento
    ORDER BY titolo, categoria

  4. i dati dell'utente che ha registrato il maggior numero di eventi

    SELECT count(idevento) as numeroeventi, nome, cognome, nickname
    FROM membri, eventi
    WHERE (membri.idmembro=eventi.idmembro)
    GROUP BY idmembro
    ORDER BY numeroeventi DESC
    limit 1
    NB: questa query (che sicuramente si può fare in un altro modo magari migliore ma forse più complicato) è stata fatta nel modo seguente:
    • si immagini di fare un elenco di eventi e di raggrupparli per ogni membro della web community (group by idmembro),
    • si conta quanti sono gli eventi di quel membro (count(idevento)) ,
    • si ordina in maniera decresente (DESC e cioè dal più grande al più piccolo) in base a questo numero (numeroeventi) e
    • si limita la visualizzazione solo alla prima riga che corrisponde membro col maggior numero di eventi di cui si visualizzano nome,cognome e nickname

    NB: le query qui presenti non sono state provate, quindi sono possibili errori od omissioni.
    su


Progetto Home Page Web community

[nascondi]
Il progetto della Home Page per la web community si può fare semplicemente disegnando i componenti grafici importanti della pagina web ed è attualmente in lavorazione
su

Codifica in linguaggio php

[nascondi]
La codifica della parte di php è attualmente in lavorazione
su


Seconda parte

[nascondi]
  1. Per integrare lo schema concettuale prevedendo la possibilità di inserire delle inserzioni pubblicitarie sulla base delle preferenze degli utenti basta inserire un'entità INSERZIONE con attributi: idinserzione (chiave primaria), testo, link e un'associazione (con verbo appartenere) con l'entità CATEGORIA che fa riferimento alla categoria di eventi; questa associazione deve essere del tipo Molti a Molti (a ogni inserzione possono corrispondere più categorie e ogni categoria può avere più inserzioni. (In un compito d'esame è opportuno inserire sia questa descrizione che la progettazione concettuale integrata anche parziale).
  2. in lavorazione
  3. in lavorazione
  4. in lavorazione
    su


Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.