Tema. Svolgimento del tema. Fabio Proietti (c) 2013 Licenza:

Documenti analoghi
Fabio Proietti (c) 2013 Licenza:

Fabio Proietti (c) 2013 Licenza:

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

ESAME DI STATO I.T.E. A.S

LO SVOLGIMENTO DEL TEMA DI INFORMATICA

Soluzione traccia Informatica simulazione d esame di Stato Istituto GAUSS. 15/04/2013

BASE DI DATI. Esercizi Progettazione concettuale Progettazione logica Concetti avanzati SQL: Raggruppamento Nidificazione

ESAME di INFORMATICA e ARCHIVIAZIONE

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola:

SIMULAZIONE SECONDA PROVA

ESAME DI STATO I.T.E. A.S

Basi di Dati. Applicazioni web in PHP per l interrogazione di basi di dati. Esercitazione n. 5

Interrogazioni nidificate

Basi di dati: appello 14/07/06

Fabio Proietti (c) 2013 Licenza:

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

PRODOTTO CARTESIANO Caso Generale

punto 1) Soluzione prova di Informatica Indirizzo Abacus esame

Structured Query Language

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

2011 Politecnico di Torino 1

Internet: cenni su struttura e funzionamento.

Prova Pratica di Informatica, Modulo Basi di dati Appello 23/07/2018

Gestione delle informazioni. Tot. h 10. Base di Dati. Tot. h 56. Grafica in C# - Laboratorio- Tot. h 40. Dipartimento Informatica Materia Informatica

Interrogazioni nidificate

Basi di dati: appello 04/07/06

Tema Esame Informatica Mercurio Gestione della palestra

La connessione ai database MySQL tramite script PHP versione 5.5

IPOTESI con riferimento al testo proposto come simulazione in preparazione all Esame di Stato 2015

Concettuale. Giuseppe Amato

SQL: le funzioni di aggregazione

ESAME di INFORMATICA e ARCHIVIAZIONE

Basi di Dati Corso di Laura in Informatica Umanistica

Sistemi di Elaborazione delle Informazioni

Basi di dati: appello 07/02/06

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Manuale SQL. Manuale SQL - 1 -

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Fondamenti di Informatica 2 Simulazione d esame dell 11 Dicembre 2009

Architettura Client-Server. In a nutshell

Versione 1.0. (DB Visite Specialistiche)

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 1 OTTOBRE 2015 Tempo: 2h30m

QL (Query Language) Alice Pavarani

D B M G D B M G 2. Sistemi informativi. Linguaggio SQL: costrutti avanzati

SOLUZIONE ESAME DI STATO 2015/2016 Indirizzo: ITSI - AMMINISTRAZIONE, FINANZA E MARKETING ARTICOLAZIONE SISTEMI INFORMATIVI AZIENDALI

M963 ESAME DI STATO DI ISTRUZIONE SECONDARIA SUPERIORE Indirizzo: INFORMATICA E TELECOMUNICAZIONI ARTICOLAZIONE INFORMATICA Tema di: INFORMATICA

Attività Didattica Svolta

DBMS architettura client/server

Laboratorio di Basi di Dati IV esercitazione 17 aprile 2007

B a s i d i D a t i ( M o d u l o T e o r i a ) P r o v a s c r i t t a

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

Interpretazione delle query nidificate

Basi di Dati: Corso di laboratorio

Introduzione alle basi di dati. A. Ferrari

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Select From Where...

Estensioni del linguaggio SQL per interrogazioni OLAP

Verifica di Informatica. Cognome e Nome: Classe 5ª Ci, Data

PROGETTAZIONE DI DATABASE

Il programma di oggi. Gli indici. Ottimizzazione. Metodi per la Gestione dei Dati (lezioni di laboratorio)

ORACOLO Gestione questionari.

Luca Tesei. Laboratorio di Sviluppo Web: Le Basi. Modulo IFTS. Fermo 31/03, 03/04, 07/ Prof. Luca Tesei Università di Camerino 1

MODULO 2. Query normali e parametriche Query di:

Dipartimento di Scienze Umane Corso di studi in Marketing & digital communication. Project work. Data Mining e IT. Database

ISTITUTO TECNICO INDUSTRIALE "G.M.ANGIOY"

Caratteristiche dei linguaggi per Database

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Versione 1.0. (DB Musei)

VARIABILI, ASSEGNAZIONE, DECISIONI

PRINCIPI DI INFORMATICA CORSO DI LAUREA IN SCIENZE BIOLOGICHE

Quaderno 4: Progetto di una base di dati e realizzazione di un applicazione web

BASE DI DATI. Esercizio: Campionato corse Progettazione concettuale Progettazione logica. Informatica Umanistica Università di Pisa

ESERCIZI SQL. Esercizio 1

Programma Master Programmatore Java

A.s Programma di Informatica

Comune di Venezia. Scheda descrittiva del programma. whistleblowing

Le basi di dati. Le basi di dati. dalla teoria all'utilizzo di tutti i giorni. Alessandro Tanasi

21/06/2007 Prof. Alberto Ferrari

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

SQL. Esercitazione 6-7. Contatti: Dott.ssa Silvia Bonfanti

Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL

Prof. Pagani corrado SISTEMI INFORMATIVI E DATABASE

I DBMS sono... efficienti

Informatica per le Scienze Umane - Corso di Laurea in Lettere Appello del Docente: Mirco Nanni. Soluzione

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

Progettazione e sviluppo WEB

Informatica e Bioinformatica: Basi di Dati

Università degli Studi de L Aquila A. A Prof. Giuseppe Della Penna. Software House GRUPPO 19 CANALE A. A cura di:

Corso di Access Modulo L2 A (Access) I tipi di query

Corso di Informatica - prova scritta del 21/12/2007

Basi di Dati: Elementi

APPENDICE 4 AL CAPITOLATO TECNICO

DBMS. Alice Pavarani

Linguaggi per basi di dati e SQL

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato

4/16/07. Le Basi di Dati Relazionali. Concetti Fondamentali. Base di dati, tabella, ennupla, attributo, dominio. Valori nulli

Transcript:

Tema Oggi la realizzazione di un sito web è agevolata dalla presenza di software caratterizzati da un'interfaccia utente relativamente semplice e, in certi casi, sono sufficienti pochi clic per realizzare il proprio spazio in rete, ma si pongono nuove problematiche relative ai requisiti e ai criteri di valutazione di questi software. Svolgimento del tema Da quando esistono i linguaggi di programmazione lato server sono state realizzate applicazioni che aiutano il webmaster a realizzare un sito web. Alcuni esempi di questo tipo di software sono: Wordpress, Joomla, Drupal e MediaWiki. Tutti questi software sono stati sviluppati da una comunità di programmatori che hanno rilasciato il codice sorgente con licenza libera oppure open source. Grazie alla libertà offerta da questi software sono nate spontaneamente molte altre librerie o plugin che li rendono sempre più semplici da usare e da personalizzare. Questi software permettono anche all'utente, che naviga il sito web, di contribuire ai contenuti del sito (come nella famosa wikipedia). La loro realizzazione nasconde una certa complessità e il loro uso aumenta i rischi di sicurezza intrinseci di tutte le applicazioni web lato server, e devono essere continuamente aggiornati. Esistono anche applicazioni simili per i campi dell'e-commerce o della gestione aziendale (ERP), che possono essere distribuite anche con licenza proprietaria. In ogni caso, i criteri di scelta del progettista che decide di utilizzare tali software, dovrebbero mirare, oltre alla riduzione dei costi, anche ad ottenere programmi che: producano dati in formato facilmente interscambiabile, che garantiscano degli aggiornamenti costanti, abbiano un buon supporto tecnico ad un prezzo accettabile utilizzino al meglio l'hardware (requisiti hardware) realizzino un sito facilmente accessibile. La riduzione dei costi è evidente per i software open source, ma questi possono avere meno supporto tecnico rispetto ai software proprietari. Il formato dei dati è importante per poter recuperare facilmente i dati anche a distanza di tempo. I dati vengono quasi sempre salvati in un server DBMS e il progettista deve scegliere il software anche in base al DBMS più adatto alle proprie esigenze. L'accessibilità è una funzione importante per le aziende e per le pubbliche amministrazioni, e può essere valutata in base al rispetto degli standard del web (html5, css3).

Vocabolario dei termini dipendente: si devono registrare dati anagrafici, come nome, cognome, data di nascita, CF. Ogni dipendente può effettuare presenze con il proprio badge. Il badge è solo un codice che identifica il dipendente. presenza: la presenza è costituita da un ingresso e un'uscita (data e ora). La presenza deve corrispondere ad un solo dipendente. NOTA: Qualche volta l'orario dei dipendenti può essere flessibile e consentire più ingressi e più uscite, ma nel testo non è specificato nulla. Se fosse fatta tale ipotesi, si dovrebbero associare più ingressi e uscite ad ogni presenza giornaliera assenza: per determinare l'assenza di un dipendente è necessario conoscere quali siano i giorni lavorativi durante l'anno e l'orario di lavoro dei dipendenti. Ad esempio, si può ipotizzare dal lunedì al venerdì. In un caso più realistico sarebbe necessaria una tabella dei giorni di chiusura. ritardo: I ritardi del dipendente sono segnalati registrando e calcolando l'ora di ingresso. Una funzione calcolerà i ritardi, ma non è sviluppata perché non è richiesto. Per determinare il ritardi, oltre al giorno è necessario l'orario di lavoro, cioè conoscere i turni dei dipendendi. Anche qui, semplificando, si può ipotizzare che tutti i dipendenti lavorano dalle 8:00 alle 16:00. NOTA: per la comunicazione automatica del ritardo o dell'assenza si dovrà realizzare una funzione che visualizza un messaggio di output, ma non è sviluppata perché non è richiesto. ferie: è la richiesta di ferie di un dipendente: ha una data di richiesta, una data di inizio e di fine, e l'eventuale approvazione (vero o falso). NOTA: Per calcolare il numero di ferie di cui ha usufruito un dipendente si può usare un'interrogazione, ma nell'esercizio non è richiesto lo sviluppo di questa funzione. Lo stesso per i tempi di approvazione. permesso: la richiesta di permesso di un dipendente. Deve avere la data di richiesta, la data del permesso, la motivazione e l'eventuale approvazione. NOTA: Per calcolare il numero di permessi di cui ha usufruito un dipendente si può usare un'interrogazione, ma non ne è richiesto lo sviluppo. Lo stesso per i tempi di approvazione. contratto: ogni cliente può avere contratto part-time o a tempo pieno (può essere un attributo con un valore vero/falso oppure un'entità "durata"). tipodicontratto: tipologia di contratti dei dipendenti. Può assumere solo tre valori: vi è un codice identificatore e una descrizione che può valere: tempo determinato, indeterm., apprendistato. Ogni tipo di contratto può essere applicato anche a più clienti. sede: la sede di lavoro del dipendente. Ha un codice identificativo, una via, un n. civico e una città. In una sede sono impiegati più dipendenti.

Schema E-R Per completare lo schema dovrebbero essere aggiunti anche gli attributi sulle entità... L'entità "tempo di impiego" rappresenta contratti part-time o tempo pieno. Nel caso di associazioni ternarie le regole di lettura sono un po' complicate. L'associazione ternaria diventa un modo per obbligare la presenza contemporanea di almeno un elemento appartenente a tutte e tre le entità. Un'alternativa più semplice potrebbe essere quella di usare un semplice attributo VERO/FALSO sull'associazione. Regole di lettura Ogni dipendente possiede un tipo di contratto, con un tempo d'impiego Ogni tipo di contratto, con un tempo d'impiego, è posseduto da uno o più dipendenti Ogni tempo di impiego si applica ad un tipo di contratto e ad uno o più dipendenti Ogni dipendente lavora in una sede In ogni sede lavorano uno o più dipendenti Ogni dipendete effettua una o più presenze Ogni presenza è effettuata da un dipendete Ogni dipendente richiede uno o più permessi Ogni permesso è richiesto da un dipendente Ogni dipendente domanda una o più ferie Ogni ferie è domandata da un dipendente Relazioni sedi (idsede, via, civico, citta) tipicontratto (idtipocontratto, descrizione) durata (iddurata, descrizione) dipendenti (cf, badge, nome, cognome, datanascita, luogonascita, part-time, idtipocontratto, idsede ) possessi (cf, idtipocontratto, iddurata) presenze (idpresenza, ingresso, uscita, cf ) permessi (idpermesso, datarichiesta, data, motivazione, approvazione, dataapprovazione, cf ) ferie (idferie, datarichiesta, datainizio, datafine, approvazione, dataapprovazione, cf ) NOTA: La relazione "possessi" ha una chiave primaria composta da tre chiavi esterne

Testing: riempire sempre le tabelle per provarle... Schema dei dati Archivio campo vincolo tipo di dato dimensione sedi idsede c. primaria CHAR 16 via VARCHAR 50 civico VARCHAR 10 citta VARCHAR 50 tipicontratto idtipocontratto c. primaria CHAR 1 descrizione not null VARCHAR 60 durata iddurata c. primaria CHAR 1 descrizione not null VARCHAR 60 dipendente cf c. primaria CHAR 16 badge not null unique CHAR 16 nome not null VARCHAR 50 cognome not null VARCHAR 50 datanascita DATE luogonascita VARCHAR 50 part-time BOOLEAN idsede c. esterna CHAR 3 idtipocontratto c. esterna CHAR 1 possessi idtipocontratto c. esterna UNIQUE iddurata c. esterna UNIQUE CHAR 1 CHAR 1 presenze idpresenza c. primaria CHAR 16 ingresso not null TIMESTAMP uscita TIMESTAMP permessi idpermesso c. primaria CHAR 6 datarichiesta not null DATE data not null DATE motivazione VARCHAR 250 approvazione BOOLEAN

Archivio campo vincolo tipo di dato dimensione dataapprovazione DATE ferie idferie c. primaria CHAR 6 datarichiesta not null DATE datainizio not null DATE datafine not null DATE approvazione dataapprovazione BOOLEAN DATE Osservazioni: si potrebbe inserire il vincolo NOT NULL sia sulla colonna "ingresso" che sulla colonna "uscita" nella tabella "presenze"? Se si mettesse questo vincolo anche sulla colonna "uscita" sarebbe impossibile registrare l'ingresso, in quanto sarebbe richiesto di inserire contemporaneamente anche l'uscita. Interrogazioni Le interrogazioni parametriche in SQL andrebbero costruite ed eseguite all'interno di un linguaggio di programmazione come il PHP. Visualizzare i dati identificativi dei dipendenti per una determinata sede SELECT cf FROM dipendenti NATURAL JOIN sedi WHERE sede=$idsede; Visualizzare il numero di dipendenti per ogni tipologia di contratto SELECT descrizione, COUNT(*) FROM dipendenti NATURAL JOIN tipicontratti GROUP BY descrizione; Visualizzare i dati identificativi delle sedi dove vi siano meno di 10 dipendenti SELECT sedi.idsede, COUNT(cf) FROM dipendenti NATURAL JOIN sedi GROUP BY sedi.idsede HAVING COUNT(cf)<10; Descrizione del software Per la gestione dei dati si può utilizzare MySQL un DBMS server open source. L'interfaccia utente può essere realizzata in HTML e PHP. Nel lato client si può usare un qualsiasi browser, nel lato server si può usare il web server Apache con interprete PHP. Tutti questi programmi sono disponibili sia per sistema operativo Microsoft che per Linux, ma sarebbe meglio utilizzare un hosting di tipo Linux perché sono nativi di questo sistema operativo Funzioni svolte dal sistema software Per riassumere le funzioni svolte dal software potrebbe essere utile pensare ad un menù.

Il sito che dovrebbe consentire la gestione automatizzata delle presenze, della richiesta dei permessi e della segnalazione dei ritardi può essere utilizzato solo dal personale della segreteria e dai dipendenti per effettuare la domanda di ferie, perciò è necessario una funzione per il login. Solo le ultime tre funzioni sono disponibili anche per i dipendenti. dipendenti: inserimento, ricerca, modifica, eliminazione, scelta tipo di contratto, conteggio ferie, conteggio permessi, conteggio ritardi sedi: inseriento, ricerca, modifica, eliminazione, conteggio dipendenti login richieste di permesso richieste di ferie Mappa del sito web Progettare il grafo della mappa del sito e dei collegamenti tra le pagine. Devono essere presenti le pagine che realizzano le voci delle funzioni del precedente menù. Pagina web richiesta <html> <head><title>appartamento</title> </head> <body> <?php $dbms="mysql"; $host="indirizzo.dbms.it"; $dbname="agenzia"; $user="mysql-banca"; $password="abc123"; $cf=$_post['cf']; $db = new PDO($dbms.":host=".$host.";dbname=".$dbname,$user,$password); // ---------------------interrogazione per i dati dell'appartamento------ $espressione = $db->query("select * FROM dipendenti WHERE cf='".$cf."';"); $risultato = $espressione->fetchall(pdo::fetch_assoc); $c1=key($risultato); //chiave del primo elemento echo "\n<table">\n <tr>\n"; foreach($risultato[$c1] as $c => $v) { echo "\t <th> ".$c." </th> \n"; } echo " </tr>\n"; foreach($risultato as $riga => $val) { echo "\n <tr>\n"; foreach($val as $c => $v) { echo "\t <td> ".$v." </td> \n"; } echo " </tr>\n"; } echo "\n</table>\n"; </body> </html>