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

Documenti analoghi
Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 6 MARZO 2015 Tempo: 2h30m

IL MODELLO RELAZIONALE

Laboratorio di Basi di Dati

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

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

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

Basi di dati: appello 07/02/06

Sistemi di Elaborazione delle Informazioni

Primo Compitino di Basi di Dati

Manuale SQL. Manuale SQL - 1 -

SQL. Dott.ssa Elisa Quintarelli

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

Laboratorio di Basi di Dati

Fondamenti di Informatica 2

Interrogazioni nidificate

Interrogazioni nidificate

A.A. 2018/2019. Esercitazione 11. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

Laboratorio di Basi di Dati Esercizio 8.4/9.1

Corso sul linguaggio SQL

Fondamenti di Informatica 2 Simulazione d esame dell 11 Dicembre 2009

SQL: DDL, VI, Aggiornamenti e Viste

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

ESERCIZI SQL. Esercizio 1

LABORATORIO di INFORMATICA

ESAME di INFORMATICA e ARCHIVIAZIONE

ESAME di INFORMATICA e ARCHIVIAZIONE

Interpretazione delle query nidificate

A.A. 2018/2019. Esercitazione 12. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

Basi di Dati - Informatica umanistica Esercitazione (Lab)

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/ febbraio 2004

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Prova Scritta di Basi di Dati

Laboratorio di Basi di Dati

Corso di. Basi di Dati I. 11. Esercitazioni in SQL: Altri esercizi

Inserimento. Cancellazione. Modifica. INSERT INTO Persone VALUES ('Mario',25,52) INSERT INTO Persone(Nome, Eta, Reddito) VALUES('Pino',25,52)

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

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

ESERCITAZIONE: AZIENDA

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. Linguaggio di interrogazione per basi di dati relazionali

BASI di DATI. SQL: concetti fondamentali

PRODOTTO CARTESIANO Caso Generale

Prova Scritta di Basi di Dati

Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

Basi di Dati SQL-92. Concetti Fondamentali

Lezione 4. Dallo schema ER al relazionale

Basi di dati I 22 settembre 2014 Tempo a disposizione: un ora e trenta minuti.

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

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

Informatica Grafica. Basi di dati parte 2

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

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

Il linguaggio SQL. TUTORATO DIFONDAMENTI DIINFORMATICA

Basi di dati: appello 14/07/06

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

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

Basi di dati: appello 11/07/07

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

Caratteristiche dei linguaggi per Database

Corso di Informatica Linguaggio SQL prima parte

Versione 1.0. (DB Visite Specialistiche)

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

Esercizi di Informatica Documentale

Dichiarazione degli schemi in SQL DDL 1

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

Elena Baralis 2007 Politecnico di Torino 1

Stringhe di caratteri

Basi di dati: appello 04/07/06

SQL. Lezione 1. Docente: Alberto Belussi

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

Basi di dati: appello 28/02/06

Fondamenti di Informatica A. A / 1 9

Elena Baralis 2013 Politecnico di Torino 1

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

Esercitazione ER e Algebra Relazionale

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

Basi di dati: appello 08/03/06

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

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Aspetti avanzati nella definizione degli schemi DDL2 1

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

IL MODELLO RELAZIONALE (CAP 2) R. Basili, aa. 2011/2012

Basi di Dati: Elementi

Basi di Dati SQL-92. Dettagli e Approfondimenti

OBIETTIVI DELL'ESERCITAZIONE

LA PROGETTAZIONE LOGICA

Basi di Dati SQL-92. Dettagli e Approfondimenti

Fondamenti di Informatica 2

Fondamenti di Informatica 2

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

Basi di Dati. Esercitazione SQL. 18 maggio 2007

Prova Scritta di Basi di Dati

Corso di Basi di Dati

Transcript:

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno 2012 Cognome e nome: Matricola: Parte prima Domanda 1 Domanda 2 Domanda 3 Totale Istruzioni: È vietato portare all esame libri, eserciziari, appunti e dispense. Chiunque venga trovato in possesso di documentazione relativa al corso anche se non attinente alle domande proposte vedrà annullata la propria prova. Scrivere solo sui fogli distribuiti, cancellando le parti di brutta con un tratto di penna. Non separare questi fogli. Tempo a disposizione: 1 ora e 45 minuti. Parte prima 1) In al più 10 righe dire cosa significa che i DBMS devono poter gestire basi di dati grandi, persistenti e condivise? 2) In al più 5 righe dire cosa significano le sigle DDL e DML nell'ambito dei linguaggi per le basi di dati? 3) Quali sono le due possibili classificazioni delle generalizzazioni nel modello ER? 4) Come si rappresenta nel modello relazionale, e poi nello standard SQL, l'informazione incompleta o la mancanza di informazione? 5) Dare la rappresentazione grafica nel modello ER di un'entità debole (o, in altre parole, di un identificatore esterno). Parte seconda 1) Considerare il seguente schema ER. nome princattivo quantitapa nome paesesede FARMACO produzione PRODUTTORE 1oFarmaco 2oFarmaco cittasede interazione (0,1) descrizione a) Aggiungere le cardinalità delle relazioni. b) Spiegare brevemente (max 3 righe) che tipo di relazione è interazione e cosa rappresentano 1oFarmaco e 2oFarmaco. c) Solo sulla base dell'er sopra (cioè senza ulteriori vincoli e/o informazioni) è possibile avere in interazione un farmaco in relazione con sé stesso? Spiegare brevemente (max 3 righe) perché. d) E' possibile avere contemporaneamente nell'entità FARMACO le seguenti due istanze? (Tachipirina, paracetamolo, 50mg) (Paracet50, paracetamolo, 50mg) Spiegare brevemente (max 3 righe) perché. e) Tradurre lo schema ER in uno schema relazionale, indicando in quest'ultimo eventuali chiavi, vincoli di non nullità e vincoli di integrità referenziale. Pag. 1 di 5

2) Considerare il seguente schema relazionale che rappresenta il palinsesto dei canali televisivi. CANALE (numero, nome) PROGRAMMA (nome, tipo*, genere*, classificazione*, durata) MESSAINONDA (programma, canale, data, orainizio, orafine, numstacchipubblicitari*) con vincoli di integrità referenziale tra l'attributo programma di MESSAINONDA con la relazione PROGRAMMA e tra l'attributo canale di MESSAINONDA con la relazione CANALE. e la seguente istanza. PROGRAMMA CANALE nome tipo genere classificazione durata numero nome Blob NULL NULL T 00:20 101 RAI1 TG3 informazione NULL T 00:30 102 RAI2 Cloverfield film azione VM12 01:40 103 RAI3 programma canale data MESSAINONDA TG3 103 30-06-2012 13:00 13:30 0 Cloverfield 102 30-06-2012 21:10 23:00 3 TG3 103 30-06-2012 07:00 07:30 0 orainizio orafine numstacchipubblicitari a) Dare i comandi SQL per creare le tre tabelle sopra (incluse eventuali chiavi, vincoli di non nullità, vincoli di unicità e vincoli di integrità referenziale). Tenere conto che l'attributo nome della relazione CANALE non può contenere ripetizioni e che deve essere evitato di cancellare un programma o un canale a cui almeno una messa in onda fa riferimento. b) Dare il comando SQL per inserire in MESSAINONDA la trasmissione su RAI3 dalle 23:00 alle 23:30 del giorno 30-06-2012 del programma Blob. c) Cosa restituisce la seguente interrogazione? (scrivere la tabella risultante) SELECT c.nome as nome, count(programma) as programmi FROM CANALE AS c LEFT JOIN MESSAINONDA AS mio ON (c.numero=mio.canale) GROUP BY c.nome d) Cosa restituisce la seguente interrogazione? (scrivere la tabella risultante) SELECT canale, data, orainizio FROM MESSAINONDA WHERE programma = 'Cloverfield' e) Dire se il seguente comando è corretto, e in tal caso scrivere la tabella risultante dalla sua esecuzione nell'istanza sopra, o no, e in tal caso spiegare (max 3 righe) perché non lo è. INSERT INTO PROGRAMMA VALUES ('TG3 Salute', 'informazione', NULL, '00:25') Pag. 2 di 5

3) Considerare la base di dati definita tramite i seguenti comandi SQL. CREATE TABLE paziente ( cf char(16) PRIMARY KEY, nome varchar(32) NOT NULL, cognome varchar(32) NOT NULL, eta integer CREATE TABLE stanza ( codice integer PRIMARY KEY, piano integer NOT NULL, numero integer NOT NULL, reparto varchar(32), UNIQUE (piano, numero) CREATE TABLE visita ( paziente char(16) REFERENCES paziente(cf) ON DELETE NO ACTION ON UPDATE CASCADE, stanza integer REFERENCES stanza(codice) ON DELETE NO ACTION ON UPDATE CASCADE, data date NOT NULL, ora time NOT NULL, tipologia varchar(32) NOT NULL, motivo varchar(128), PRIMARY KEY (stanza, data, ora), UNIQUE (paziente, data, ora) La base di dati rappresenta la programmazione delle visite in un ospedale. Ogni visita è allocata in una certa stanza ad una precisa data e ora. Ad ogni visita è anche associato il paziente che la deve sostenere. a) Cosa significa ON UPDATE CASCADE utilizzato nella definizione del campo paziente della tabella visita? Formulare le interrogazioni SQL che permettano di determinare: b) nome e cognome dei pazienti la cui età è minore o uguale a 14; c) nome e cognome dei pazienti con una visita programmata per il giorno 30-06-2012; d) per ogni data, il numero di visite in tale data; e) l'età media dei pazienti con una visita la cui tipologia è oncologica ; Pag. 3 di 5

SOLUZIONI Parte prima 1) Grandi: le basi di dati possono avere dimensioni (molto) maggiori della memoria centrale dei sistemi di calcolo utilizzati il limite deve essere solo quello fisico dei dispositivi. Persistenti: le basi di dati hanno un tempo di vita indipendente dalle singole esecuzioni dei programmi che le utilizzano. Condivise: una base di dati è condivisa da più applicazioni ed utente che vi possono accedere anche contemporaneamente e concorrentemente. 2) DDL: Data Definition Language, linguaggio per la definizione di schemi e altre operazioni generali DML: Data Manipulation Language, linguaggio per l interrogazione e l aggiornamento (inserimento, cancellazione, modifica) di istanze di basi di dati 3) Totale-Parziale e Esclusiva-Sovrapposta 4) L'informazione incompleta o la sua mancanza si rappresenta con il valore NULL. 5) (1,1) (x,y) Parte seconda 1) a) Aggiungere le cardinalità delle relazioni. nome princattivo quantitapa nome paesesede FARMACO (1,N) produzione PRODUTTORE 1oFarmaco 2oFarmaco cittasede interazione (0,1) descrizione b) interazione è una relazione ricorsiva e 1oFarmaco e 2oFarmaco sono i ruoli svolti dalle due diverse istanze di FARMACO. c) Sì è possibile, perché interazione è identificata dai nomi di entrambi i farmaci che compongono l'interazione e non vi è nessun vincolo nell'er sul fatto che questi due farmaci debbano essere diversi. d) Sì è possibile, perché l'unico vincolo in FARMACO è il vincolo di chiave e le due tuple lo rispettano avendo chiavi (nomi) diversi. e) FARMACO(nome, princattivo, quantitapa) PRODUTTORE(nome, paesesede, cittasede) PRODUZIONE(nomeFarmaco, nomeproduttore) con vincoli di integrità referenziale tra l'attributo nomefarmaco di PRODUZIONE con la relazione FARMACO e tra l'attributo nomeproduttore di PRODUZIONE con la relazione PRODUTTORE. INTERAZIONE(1oFarmaco, 2oFarmaco, descrizione*) con vincoli di integrità referenziale tra gli attributi 1oFarmaco e 2oFarmaco di INTERAZIONE con la relazione FARMACO. Pag. 4 di 5

2) a) CREATE TABLE canale ( numero integer PRIMARY KEY, nome varchar(32) NOT NULL UNIQUE CREATE TABLE programma ( nome varchar(32) PRIMARY KEY, tipo varchar(32), genere varchar(32), classificazione varchar(32), durata time NOT NULL CREATE TABLE messainonda ( programma varchar(32) REFERENCES programma(nome) ON DELETE NO ACTION, canale integer REFERENCES canale(numero) ON DELETE NO ACTION, data date, orainizio time, orafine time NOT NULL, numstacchipubblicitari integer, PRIMARY KEY (programma, canale, data, orainizio) b) INSERT INTO messainonda (programma, canale, data, orainizio, orafine) VALUES ('Blob', 103, '30-06-2012', '23:00', '23:30' oppure INSERT INTO messainonda VALUES ('Blob', 103, '30-06-2012', '23:00', '23:30', NULL c) nome programmi d) RAI1 0 RAI2 1 RAI3 2 canale data orainizio 102 30-06-2012 21:10 3) e) Non è corretto perché, non avendo specificato la lista degli attributi di cui si specificano i valori, è obbligatorio specificare un valore per ogni attributo della relazione PROGRAMMA, mentre nel comando dato ne manca uno. a) ON UPDATE CASCADE significa che ogni modifica ad un valore del campo cf della tabella paziente viene a cascata e automaticamente eseguita anche sul campo paziente di tutte le tuple della tabella visita che fanno riferimento al valore modificato. b) SELECT nome, cognome FROM paziente WHERE eta <= 14 c) SELECT nome, cognome FROM paziente JOIN visita ON cf = paziente WHERE data = '30-06-2012' d) SELECT data, count(*) FROM visita GROUP BY data e) SELECT avg(eta) FROM paziente JOIN visita ON cf = paziente WHERE tipologia = 'oncologica' Pag. 5 di 5