Basi di dati Corso di Laurea in Informatica Umanistica

Documenti analoghi
Basi di Dati Corso di Laurea in Informatica Umanistica

Basi di Dati. Esercitazione SQL. 18 maggio 2007

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

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

Basi di dati I 8 settembre 2011 Tempo a disposizione: un ora e trenta minuti. Libri chiusi.

Versione 1.0. (DB Musei)

Basi di Dati Corso di Laura in Informatica Umanistica

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

Basi di dati: appello 14/07/06

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

Interrogazioni in SQL

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

Basi di Dati - Informatica umanistica Esercitazione (Lab)

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

Basi di Dati e Sistemi Informativi A 1 A.A. 2009/ /09/10 -A Prof. Paolo Brunasti

Basi di dati: appello 07/02/06

Basi di Dati. Esercitazione Algebra Relazionale. 16 maggio 2008

Versione 1.0. (DB Visite Specialistiche)

Corso di Informatica Medica

Basi di dati I Esercizi proposti il 24 ottobre 2016

Basi di Dati. Concetti Avanzati

Basi di dati: appello 04/07/06

Basi di Dati. Esercitazione SQL. 17 novembre 2011

Primo Compitino di Basi di Dati

ed SQL 10 Novembre 2009

Interrogazioni con Raggruppamenti

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

Interrogazioni nidificate

Concettuale. Giuseppe Amato

SQL /10/2016 Basi di dati - SQL 1

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Basi di dati: appello 09/03/07

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

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

Basi di Dati Corso di Laura in Informatica Umanistica

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

formulare in SQL una interrogazione per ciascuno dei seguenti punti:

Basi di Dati: Corso di laboratorio

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

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Esercitazione su SQL

ESAME di INFORMATICA e ARCHIVIAZIONE

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

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

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

SQL - Structured Query Language

Basi di dati: appello 11/07/07

Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Esercitazione 1. ogni tupla contribuisce al risultato: Impiegato Reparto Rossi. Bruni. Bianchi

Basi di dati I 6 settembre 2018 Tempo a disposizione: un ora e 45 minuti.

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

PRODOTTO CARTESIANO Caso Generale

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

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Basi di Dati SQL-92. Concetti Fondamentali

Basi di Dati. Esercitazione SQL. Paolo Papotti. 19 maggio 2005

Laboratorio di Basi di dati Soluzioni della V esercitazione - 23 aprile 2007

Laboratorio di Basi di Dati

Soluzione esercitazione 01

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

Laboratorio di Basi di Dati

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

Interrogazioni nidificate

Laboratorio di Basi di Dati e Multimedia

Corso sul linguaggio SQL

Il linguaggio SQL. TUTORATO DIFONDAMENTI DIINFORMATICA

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - (SELECT FROM WHERE ORDER BY)

3. Selezionare i nomi dei clienti che iniziano con le lettere P, Q, R, S

ESAME di INFORMATICA e ARCHIVIAZIONE

ESERCIZI SQL. Esercizio 1

Esempi di Query SQL Complesse basate su Viste

Esercizi sul linguaggio SQL e le basi dati relazionali

Esercitazione 6 SQL 3

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Esempio di database relazionale con l utilizzo del prodotto MySQL

Esercitazione ER e Algebra Relazionale

Figlio Maria. Luigi. Olga Filippo Andrea Aldo Figlio Franco Olga Filippo Andrea Aldo

Esercitazione 3 SQL.

Versione 1.0. (Iniziamo ad interrogare il DB)

OBIETTIVI DELL'ESERCITAZIONE

Esercitazione 4 SQL.

ESERCITAZIONE: Fornitore-Fornisce-Articolo

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Basi di dati: appello 28/02/06

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

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

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

SQL: definizione schema

Prova Scritta di Basi di Dati

SQL Esempi. 24/10-7/11/2016 Basi di dati - SQL 1

Il formato di base di un interrogazione in SQL è: SELECT R i1.c 1, R i2.c 2,..., R in.c n FROM R 1, R 2,..., R k WHERE F;

Vincoli, procedure e regole attive in SQL. SQL: vincoli, trigger 1

Esercitazione: Interrogazioni SQL

Vincoli di integrità generici: check

Transcript:

Basi di dati Corso di Laurea in Informatica Umanistica Esercitazione pre-verifica del 19.03.2012 Parte 1 modello relazionale, SQL (A) Si consideri il seguente schema di base di dati letteraria: TABLE Autori Cognome char(30) NOT NULL, Nome char(20) NOT NULL, Sesso char(1), AnnoNascita integer, AnnoMorte integer, Nazionalità char(20)} TABLE Romanzi Titolo char(40) NOT NULL, Autore integer NOT NULL REFERENCES Autori(Codice), Protagonista integer REFERENCES Personaggi(Codice), AnnoPubblicazione integer} TABLE PersonaggiNeiRomanzi {Romanzo integer NOT NULL REFERENCES Romanzi(Codice), Personaggio integer NOT NULL REFERENCES Personaggi (Codice), PRIMARY KEY(Romanzo, Personaggio)} TABLE Personaggi Cognome char(30) NOT NULL, Nome char(20) NOT NULL, Sesso char(1)} 1) Elencare gli autori dell ottocento, ordinati per nazionalità, che hanno scritto romanzi nel cui titolo compare un termine con radice tempesta (algebra oppure SQL, punti 6) Tab1 = (Autori JOIN Romanzi ON Autori.Codice=Romanzi.Autore) Tab2 = σ Autori.AnnoNascita >= 1800 AND Autori.AnnoNascita < 1900 AND Romanzi.Titolo LIKE *tempest* (Tab1) Tab3 = (π Autori.Cognome, Autori.Nome, Autori.Nazionalità (Tab2)) Risultato = ORDER BY Autori.Nazionalità, Autori.Cognome (DISTINCT(Tab3)), Autori.Nazionalità WHERE Autori.AnnoNascita >= 1800 AND Autori.AnnoNascita < 1900 AND Romanzi.Titolo LIKE *tempest* ORDER BY Autori.Nazionalità, Autori.Cognome 2) Elencare i romanzi degli autori russi viventi, con il relativo anno di pubblicazione (algebra oppure SQL, punti 6) Tab1 = (Autori JOIN Romanzi ON Autori.Codice=Romanzi.Autore) Tab2 = σ Autori.Nazionalità = russa AND Autori.AnnoMorte IS NULL (Tab1) Risultato = (π Romanzo.Titolo, Romanzi.AnnoPubblicazione, Autori.Cognome (Tab2)) SELECT Romanzi.Titolo, Romanzi.AnnoPubblicazione, Autori.Cognome FROM (Autori JOIN Romanzi ON Autori.Codice=Romanzi.Autore) WHERE Autori.Nazionalità = russa AND Autori.AnnoMorte IS NULL ORDER BY Romanzi.AnnoPubblicazione, Autori.Cognome

3) Elencare i personaggi dei romanzi il cui protagonista è Maigret (algebra o SQL, punti 7) Tab1 = (Personaggi AS Protagonisti JOIN Romanzi ON Personaggi.Codice=Romanzi.Protagonista JOIN PersonaggiNeiRomanzi ON Romanzi.Codice=PersonaggiNeiRomanzi.Romanzo JOIN Personaggi ON Personaggi.Codice=PersonaggiNeiRomanzi.Personaggio) Tab2 = σ Protagonisti.Cognome = Maigret (Tab1) Risultato = DISTINCT (π Personaggi.Cognome, Personaggi.Nome (Tab2)) SELECT DISTINCT Personaggi.Cognome, Personaggi.Nome FROM Personaggi AS Protagonisti JOIN Romanzi ON Protagonisti.Codice=Romanzi.Protagonista JOIN PersonaggiNeiRomanzi ON Romanzi.Codice=PersonaggiNeiRomanzi.Romanzo JOIN Personaggi ON Personaggi.Codice=PersonaggiNeiRomanzi.Personaggio WHERE Protagonisti.Cognome = Maigret Alternativa: CREATE VIEW RomanziMaigret SELECT DISTINCT Romanzi.Codice FROM Personaggi JOIN Romanzi ON Personaggi.Codice=Romanzi.Protagonista WHERE Personaggi.Cognome = Maigret SELECT DISTINCT Personaggi.Cognome, Personaggi.Nome FROM RomanziMaigret JOIN PersonaggiNeiRomanzi ON RomanziMaigret.Codice=PersonaggiNeiRomanzi.Romanzo JOIN Personaggi ON Personaggi.Codice=PersonaggiNeiRomanzi.Personaggio 4) Elencare gli autori longevi, che hanno pubblicato romanzi a distanza di oltre 40 anni l uno dall altro (algebra o SQL, punti 7) Tab1 = (Autori JOIN Romanzi AS Rom1 ON Autori.Codice=Rom1.Autore JOIN Romanzi AS Rom2 ON Autori.Codice=Rom2.Autore) Tab2 = σ Rom1.AnnoPubblicazione Rom2.AnnoPubblicazione > 40 (Tab1) Tab3 = DISTINCT (π Autori.Cognome, Autori.Nome, Autori.Nazionalità (Tab2)) Risultato = ORDER BY Autori.Cognome (Tab3) FROM Autori JOIN Romanzi AS Rom1 ON Autori.Codice=Rom1.Autore JOIN Romanzi AS Rom2 ON Autori.Codice=Rom2.Autore WHERE Rom1.AnnoPubblicazione Rom2.AnnoPubblicazione > 40 ORDER BY Autori.Cognome

5) Modificare lo schema del database letterario per rappresentare le case editrici dei romanzi (punti 7) TABLE Romanzi Titolo char(40) NOT NULL, Autore integer NOT NULL REFERENCES Autori(Codice), Protagonista integer REFERENCES Personaggi(Codice), CasaEditrice integer REFERENCES CaseEditrici(Codice), AnnoPubblicazione integer} TABLE CaseEditrici Nome char(30) NOT NULL, Città char(20), Nazionalità char(20)} 6) Elencare i romanzi il cui protagonista è Maigret (algebra o SQL, punti 7) Tab1 = (Personaggi JOIN Romanzi ON Personaggi.Codice=Romanzi.Protagonista) Tab2 = σ Personaggi.Cognome = Maigret (Tab1) Risultato = DISTINCT (π Romanzi.Titolo, Romanzi.AnnoPubblicazione (Tab2)) SELECT DISTINCT Romanzi.Titolo, Romanzi.AnnoPubblicazione FROM Personaggi JOIN Romanzi ON Personaggi.Codice=Romanzi.Protagonista WHERE Personaggi.Cognome = Maigret 7) Elencare gli autori che hanno scritto romanzi sia nell 800 che nel 900 (algebra o SQL, punti 7) WHERE Romanzi.AnnoPubblicazione < 1900 AND Romanzi.AnnoPubblicazione >= 1900 ERRORE! Perché? Qual è il risultato che si ottiene? Alternativa corretta: WHERE Romanzi.AnnoPubblicazione > 1799 AND Romanzi.AnnoPubblicazione < 1900 INSTERSECT WHERE Romanzi.AnnoPubblicazione > 1899 AND Romanzi.AnnoPubblicazione < 2000

Altra possibilità: FROM Autori JOIN Romanzi AS Romanzi1800 ON Autori.Codice=Romanzi1800.Autore JOIN Romanzi AS Romanzi1900 ON Autori.Codice=Rom1900.Autore WHERE Romanzi1800.AnnoPubblicazione > 1799 AND Romanzi1800.AnnoPubblicazione <1900 AND Romanzi1900.AnnoPubblicazione > 1899 AND Romanzi1900.AnnoPubblicazione < 2000 ORDER BY Autori.Cognome, Autori.Nome 8) Elencare gli autori che hanno scritto romanzi esclusivamente nell 800 (algebra o SQL, punti 7) WHERE Romanzi.AnnoPubblicazione > 1799 AND Romanzi.AnnoPubblicazione < 1900 EXCEPT WHERE Romanzi.AnnoPubblicazione < 1800 OR Romanzi.AnnoPubblicazione > 1899

Elencare gli autori longevi, che hanno pubblicato romanzi a distanza di oltre 40 anni. CREATE VIEW AutoriLongevi, Autori.Codice JOIN Romanzi AS Romanzi1 ON Autori.Codice=Romanzi1.Autore WHERE Romanzi1.AnnoPubblicazione Romanzi.AnnoPubblicazione > 40 ORDER BY Autori.Cognome, Autori.Nome Elencare tutti i romanzi degli autori longevi, che hanno pubblicato romanzi a distanza di oltre 40 anni. SELECT DISTINCT AutoriLongevi.Cognome, Romanzi.Titolo, AnnoPubblicazione FROM AutoriLongevi JOIN Romanzi ON AutoriLongevi.Codice=Romanzi.Autore ORDER BY AutoriLongevi.Cognome, Romanzi.AnnoPubblicazione