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

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

Concettuale. Giuseppe Amato

ESAME di INFORMATICA e ARCHIVIAZIONE

Basi di Dati Corso di Laura in Informatica Umanistica

Esame di Stato Istituto Tecnico Industriale Soluzione della Seconda Prova Indirizzo: INFORMATICA Tema: INFORMATICA Anno Scolastico:

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

Esame di Basi di Dati, SOLUZIONE APPELLO 09/06/2009

Basi di dati: appello 14/07/06

1. Schema concettuale della base di dati Lo schema concettuale (o statico) è uno dei due schemi del progetto concettuale di un sistema informativo.

Basi di dati: appello 04/07/06

Basi di Dati Corso di Laura in Informatica Umanistica

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

Fondamenti di Informatica 2

Basi di dati: appello 07/02/06

Laboratorio di Basi di Dati

PROVA SCRITTA DI TECNOLOGIA DATABASE 05/12/2003 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF.

Volumi di riferimento

Basi di Dati. Esercitazione Algebra Relazionale e SQL. Ing. Paolo Cappellari. 15 maggio 2006

Esercitazione seconda prova Esame di Stato Prova di Informatica Gestionale ITC Programmatori e Mercurio. Note introduttive

ESERCIZI SQL. Esercizio 1

M733 ESAME DI STATO DI ISTITUTO TECNICO COMMERCIALE CORSO DI ORDINAMENTO

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

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

PROGETTAZIONE DI DATABASE Linguaggio SQL

Lezione 4. Dallo schema ER al relazionale

Basi di dati: appello 08/03/06

Laboratorio di Basi di Dati

SQL: definizione schema

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Basi di dati: appello 28/02/06

ESAME di INFORMATICA e ARCHIVIAZIONE

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.

Interrogazioni nidificate

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

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

SCHEMA ER. Tutti i dati del carrello acquisti sono memorizzati nel database e quindi può essere costruito con più query.

UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME

Soluzione esercitazione 01

Prova del 14/09/09. Considerare la seguente descrizione di un campeggio:

Interrogazioni in SQL

LA PROGETTAZIONE LOGICA

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

Modello concettuale Modello logico

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Linguaggi Formali. Π nome (Π nome,c.f. (correttore c.f=c.f._correttore σ n_capitolo=5 bozza

1. Schema concettuale della base di dati PROGETTO CONCETTUALE SCHEMA ER

Corso di Basi di Dati A.A. 2014/2015

Unità 2.2 Comandi sulle tabelle

Fondamenti di Informatica 2 Simulazione d esame dell 11 Dicembre 2009

Esame di Basi di Dati SOLUZIONE APPELLO 14/06/2011

Database per la gestione delle ferrovie dello stato. I treni gestiti sono identificati da un numero. Su ciascun treno sono specificate le classi per

Soluzione DDL ed Algebra Relazionale

Basi di dati: appello 21/09/12

Laboratorio di Basi di Dati Esercizio 8.4/9.1

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

Fabio Proietti (c) 2013 Licenza:

Corso di Laboratorio di Basi di Dati

Laboratorio di Basi di Dati

ESAME di INFORMATICA e ARCHIVIAZIONE

SOLUZIONE ESAME DI STATO 2014/2015 INFORMATICA. Giselda De Vita 2015

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti.

Esempio di database relazionale con l utilizzo del prodotto MySQL

Anno 2013 Informatica ABACUS

Interrogazioni nidificate

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

SQL PER LA DEFINIZIONE DI BASI DI DATI

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

CORSO di INFORMATICA e ARCHIVIAZIONE

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

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

Basi di dati Appello del Soluzione del compito B

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

2 Anno Informatica ABACUS

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Esercitazione 1: DB-MAIN e modello E/R

Ese1: DB-MAIN e modello E/R

SQL (STRUCTURED QUERY LANGUAGE)

LO SVOLGIMENTO DEL TEMA DI INFORMATICA

Esempi SQL con Access. Orazio Battaglia

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

SQL: DDL, VI, Aggiornamenti e Viste

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

BASI DATI INFORMATICA

Si considerino le seguenti specifiche relative alla realizzazione di un sistema informativo per la gestione di un sito di blog.

Modello concettuale dei dati. Paolo Brunasti - UniMiB 1 / 12

ISTITUTO PARITARIO MICHELANGELO - RIMINI- PIANO DI LAVORO

PROVA SCRITTA DI TECNOLOGIA DATABASE 02/12/2004 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF.

Gestione e Analisi dei Dati. Lezione 4 Relazioni multi tabella Relazioni uno-a-uno, uno-a-molti, molti-a-molti

MAX, SUM, AVG, COUNT)

SQL Sintassi Dei Comandi

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

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica

Manuale SQL. Manuale SQL - 1 -

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

2011 Politecnico di Torino 1

DATABASE CLIENTIRAPPRESENTANTI

Transcript:

Verifica di Informatica Cognome e Nome: Classe 5ª Ci, Data Progettare la base di dati di una palestra. E necessario memorizzare le informazioni relative ai clienti che riguardano: codice fiscale, cognome e nome, indirizzo, età e numero telefonico. Ogni cliente deve avere un certificato di sana e robusta costituzione prima di cominciare l attività fisica, pertanto, occorre assegnare a ciascuno un appuntamento con uno dei medici sportivi che seguono la palestra. Il cliente potrà iscriversi, in periodi differenti, ai vari corsi proposti, quindi una sola tra queste iscrizioni sarà attiva. Dei corsi proposti è noto il nome e l istruttore. Mentre per ogni iscrizione si memorizzi la situazione dei pagamenti cioè il costo complessivo per l iscrizione al corso e l elenco di tutte le rate pagate e non pagate con la relativa data di scadenza. Inoltre, per ogni iscrizione si memorizzino anche gli esercizi che il cliente deve eseguire per rispettare il programma assegnatogli. Di ogni esercizio si conosce il nome, il muscolo principale coinvolto, le controindicazioni e, per ogni cliente, il numero di ripetizioni da eseguire. Della suddetta realtà, dopo aver precisato le ipotesi aggiuntive, ritenute opportune, si realizzi: Un analisi della situazione sopra descritta che illustri le premesse per i successivi passi della progettazione della base di dati. La definizione dello schema concettuale mediante un diagramma Entità-Relazione. La definizione dello schema relazionale della base di dati. La definizione degli script SQL per la creazione fisica della base di dati. L implementazione delle seguenti interrogazioni espresse nel linguaggio SQL: 1. L elenco delle rate che ogni cliente deve pagare ordinato per cognome e nome e per data di scadenza della rata. 2. Il numero di iscrizioni che si sono avute in un determinato anno raggruppando per i vari corsi. 3. L elenco riportante il totale delle rate da pagare, superiori a 500, dettagliando il risultato sui singoli corsi. 4. L elenco dei clienti con età superiore all età di tutti i clienti iscritti al corso di Body Building. 5. Riportare le informazioni relative ai corsi a cui sono iscritti clienti che eseguono un programma con più di 10 esercizi. 6. L elenco dei clienti che non eseguono l esercizio chiamato piegamenti con numero di ripetizioni pari a 5. 7. L elenco riportante per ogni cliente il costo totale dell iscrizione al corso frequentato e il totale delle rate da pagare.

Soluzione: Progettazione Concettuale: Modello Entità-Relazione. Progettazione Logica: Schema Relazionale. Fig. 1: Modello Entità-Relazione MediciIDMedico, Cognome, Nome VisiteIDClienteFK, IDMedicoFK, DataVisita ClientiIDCliente, Cognome, Nome, CF, Indirizzo, Telefono, Eta IscrizioniIDIscrizione, Dal, Al, Attiva, CostoTotale, IDClienteFK, IDCorsoFK CorsiIDCorso, Nome, Istruttore ProgrammiIDIscrizioneFK, IDEsercizioFK, NumeroRipetizioni RateIDRata, DataPagamento, Importo, Pagata, DataScadenza, IDIscrizioneFK EserciziIDEsercizio, Nome, Muscolo, Controindicazione Attenzione in questo caso la relazione molti a molti è stata tratta diversamente dagli esercizi precedenti: la chiave primaria è costituita dalle due chiavi primarie delle tabelle coinvolte nella relazione, con i relativi vincoli di FK.

Fig. 2: Schema Relazionale. Implementazione Fisica: Script SQL di creazione Create table [Medici] [IDMedico] Integer NOT NULL, [Nome] Varchar50 NULL, [Cognome] Varchar50 NULL, Constraint [pk_medici] Primary Key [IDMedico] /*e un modo alternativo per definire le pk*/ Create table [Clienti] [IDCliente] Integer NOT NULL, [Cognome] Varchar50 NULL, [Nome] Char10 NULL, [CF] Char10 NULL, [Indirizzo] Char10 NULL, [Telefono] Char10 NULL, [Eta] Integer NULL, Constraint [pk_clienti] Primary Key [IDCliente] Create table [Iscrizioni] [IDIscrizione] Integer NOT NULL,

[Dal] Datetime NULL, [Al] Datetime NULL, [CostoTotale] Money NULL, [Attiva] Char10 NULL, [IDCorso] Integer NOT NULL, [IDCliente] Integer NOT NULL, Constraint [pk_iscrizioni] Primary Key [IDIscrizione] Create table [Corsi] [IDCorso] Integer NOT NULL, [Nome] Char10 NULL, [Istruttore] Char10 NULL, Constraint [pk_corsi] Primary Key [IDCorso] Create table [Rate] [IDRata] Integer NOT NULL, [Importo] Money NULL, [Pagata] Bit NULL, [DataScadenza] Datetime NULL, [DataPagamento] Datetime NULL, [IDIscrizione] Integer NOT NULL, Constraint [pk_rate] Primary Key [IDRata] Create table [Esercizi] [IDEsercizio] Integer NOT NULL, [Nome] Char10 NULL, [Muscolo] Char10 NULL, [Controindicazioni] Char10 NULL, Constraint [pk_esercizi] Primary Key [IDEsercizio] Create table [Programmi] [IDIscrizione] Integer NOT NULL, [IDEsercizio] Integer NOT NULL, [NumeroRipetizioni] Integer NULL, Constraint [pk_programmi] Primary Key [IDIscrizione],[IDEsercizio] Create table [Visite] [IDCliente] Integer NOT NULL, [IDMedico] Integer NOT NULL, [DataVisita] Datetime NULL, Constraint [pk_visite] Primary Key [IDCliente],[IDMedico] Alter table [Visite] add Constraint [FK_Medici_Visite_IDMedico] foreign key[idmedico] references [Medici] [IDMedico] Alter table [Iscrizioni] add Constraint [FK_Clienti_Iscrizioni_IDCliente] foreign key[idcliente] references [Clienti] [IDCliente] Alter table [Visite] add Constraint [FK_Clienti_Visite_IDCliente] foreign key[idcliente] references [Clienti] [IDCliente] Alter table [Rate] add Constraint [FK_Iscrizioni_Rate_IDIscrizione] foreign key[idiscrizione] references [Iscrizioni] [IDIscrizione]

Alter table [Programmi] add Constraint [FK_Iscrizioni_Programmi_IDIscrizioni] foreign key[idiscrizione] references [Iscrizioni] [IDIscrizione] Alter table [Iscrizioni] add Constraint [FK_Corsi_Iscrizioni_IDCorso] foreign key[idcorso] references [Corsi] [IDCorso] Alter table [Programmi] add Constraint [FK_Esercizi_Programmi_IDEsercizio] foreign key[idesercizio] references [Esercizi] [IDEsercizio] In aggiunta è riportato lo script di creazione di un indice sulla tabella clienti per velocizzare le ricerche per cognome e nome: CREATE INDEX IX_Clienti_Cognome_Nome ON ClientiCognome,Nome Inoltre è aggiunto un vincolo Constraint sui valori assunti dalle date di iscrizione ad un corso: Al deve essere maggiore di Dal. ALTER TABLE Iscrizioni ADD CONSTRAINT CK_Iscrizioni_Date CHECK Al>=Dal Per finire è riportato lo script di creazione di una vista che riporta per ogni iscrizione il nome del corso e il cliente relativo: Create VIEW [ClientiIscrizioniCorsi] AS SELECT Corsi.IDCorso, Corsi.Nome AS NomeCorso, Corsi.Istruttore, Iscrizioni.IDIscrizione, Iscrizioni.Dal, Iscrizioni.Al, Iscrizioni.CostoTotale, Iscrizioni.IDCliente, Iscrizioni.Attiva, Clienti.Cognome, Clienti.Nome AS NomeCliente, Clienti.CF, Clienti.Indirizzo, Clienti.Telefono, Clienti.Eta FROM Corsi INNER JOIN Iscrizioni ON Corsi.IDCorso = Iscrizioni.IDCorso INNER JOIN Clienti ON dbo.iscrizioni.idcliente = Clienti.IDCliente Fig. 3: Schema Relazionale in MS SQL Server 2005

Interrogazioni. 1. SELECT Clienti.Cognome, Clienti.Nome, Iscrizioni.IDCorso, Iscrizioni.Dal, Iscrizioni.Al, Rate.IDRata, Rate.Importo, Rate.DataScadenza FROM Clienti INNER JOIN Iscrizioni ON Clienti.IDCliente = Iscrizioni.IDCliente INNER JOIN Rate ON Iscrizioni.IDIscrizione = Rate.IDIscrizione WHERE Iscrizioni.Attiva = 1 ORDER BY Clienti.Cognome, Clienti.Nome, Rate.DataScadenza 2. SELECT COUNT* NumeroIscrizione, Corsi.Nome FROM Corsi INNER JOIN Iscrizioni ON Corsi.IDCorso = Iscrizioni.IDCorso GROUP BY Corsi.Nome 3. SELECT SUMRate.Importo ImportoTotale,Corsi.Nome FROM Corsi INNER JOIN Iscrizioni ON Corsi.IDCorso = Iscrizioni.IDCorso INNER JOIN Rate ON Iscrizioni.IDIscrizione = Rate.IDIscrizione GROUP BY Corsi.Nome HAVING SUMRate.Importo>500 4. SELECT * FROM Clienti WHERE eta > ALL SELECT Clienti.eta FROM Clienti INNER JOIN Iscrizioni ON Clienti.IDCliente = Iscrizioni.IDCliente INNER JOIN Corsi ON Iscrizioni.IDCorso = Corsi.IDCorso WHERE Iscrizioni.Attiva = 1 AND Corsi.Nome='Body Building' 5. SELECT * FROM Corsi WHERE IDCorso IN SELECT DISTINCT IDCorso FROM Iscrizioni WHERE IDIscrizione IN SELECT IDIscrizione FROM dbo.programmi GROUP BY IDIscrizione HAVING COUNT* > 10 6. SELECT * FROM Clienti WHERE Clienti.IDCliente NOT IN SELECT Iscrizioni.IDCliente FROM Iscrizioni INNER JOIN Programmi ON Iscrizioni.IDIscrizione = Programmi.IDIscrizione INNER JOIN Esercizi ON Esercizi.IDEsercizio=Programmi.IDEsercizio WHERE Iscrizioni.Attiva=1 AND Esercizi.Nome='Piegamenti' AND Programmi.NumeroRipetizioni=5

7. SELECT Clienti.Cognome,Clienti.Nome,Iscrizioni.IDIscrizione, Tab.TotaleRateDaPagare,Iscrizioni.CostoTotale FROM Iscrizioni INNER JOIN Clienti ON Iscrizioni.IDCliente = Clienti.IDCliente INNER JOIN SELECT SUMRate.Importo TotaleRateDaPagare, Rate.IDIscrizione FROM Rate WHERE Rate.Pagata=0 GROUP BY Rate.IDIscrizione Tab ON Iscrizioni.IDIscrizione=Tab.IDIscrizione WHERE Iscrizioni.Attiva=1