Laboratorio Basi di Dati Laura Po

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

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

Laboratorio di Basi di Dati

Sistemi di Elaborazione delle Informazioni

PRODOTTO CARTESIANO Caso Generale

Laboratorio di Basi di Dati Esercizio 8.4/9.1

ESERCITAZIONE: Fornitore-Fornisce-Articolo

Corso di Basi di Dati

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

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

Laboratorio di Basi di Dati

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

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

SQL: DDL, VI, Aggiornamenti e Viste

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

Stringhe di caratteri

Manuale SQL. Manuale SQL - 1 -

Primo Compitino di Basi di Dati

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

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

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

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

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

SQL-DDL. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste

Esercitazione: Il DBMS MySQL. Insegnamento di Basi di Dati. Laurea in Ingegneria Informatica SAPIENZA Università di Roma

SQL. Dott.ssa Elisa Quintarelli

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

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

ASSISTENZA TECNICA RELAZIONE

Fondamenti di Informatica A. A / 1 9

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

IL MODELLO RELAZIONALE

Principi di Progettazione del Software a.a Il linguaggio SQL. Prof. Luca Mainetti Università del Salento

Viste come strumenti di programmazione

Principi di Progettazione del Software a.a Il linguaggio SQL. Linguaggi per DBMS

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

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a

Basi di dati (2) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: tabelle (1.

Il linguaggio SQL: DDL di base

Esercitazione 4 SQL.

Analisi soluzione DB esercizio 1

Data Definition in MySQL

Fondamenti di Informatica 2 Simulazione d esame dell 11 Dicembre 2009

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language)

ESAME di INFORMATICA e ARCHIVIAZIONE

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

Dichiarazione degli schemi in SQL DDL 1

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

Soluzione esercitazione 01

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

Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati

Linguaggio SQL: fondamenti D B M G

D B M G. Linguaggio SQL: fondamenti. Gestione delle tabelle

Elena Baralis 2007 Politecnico di Torino 1

Appunti dalle lezioni. Sistemi informativi e basi di dati. Il modello relazionale. SQL come DCL Utilizzo di un DBMS Reale.

Laboratorio di Basi di Dati

Basi di Dati Corso di Laura in Informatica Umanistica

Elena Baralis 2007 Politecnico di Torino D B M G M BG. Gestione delle tabelle. Linguaggio SQL: fondamenti. Creazione di una tabella (1/3)

A.Veneziani Vincoli di integrità e vincoli di integrità referenziale

Gestione NARRATIVA del 900

Basi di dati. Giuseppe De Giacomo. Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di Roma La Sapienza

SCHEMA E/R DI UNA UNIVERSITA'

Informatica per le scienze umane ESERCIZI

SQL: "storia" 31/05/2006 2

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati e Sistemi Informativi

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

Basi di Dati Attive. Basi di Dati Attive

GESTIONE MAGAZZINO 1

PROGETTAZIONE LOGICA. Prof. Ing. Alfredo GARRO 1/6. Artista. Cantante. DataDiNascita. Codice. Nazionalità

LABORATORIO di INFORMATICA

Elena Baralis 2007 Politecnico di Torino 1

A. Veneziani Analisi problema DB Magazzino

Modello relazionale e algebra relazionale

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

La connessione ai database MySQL tramite script PHP versione 5.5

Linguaggio SQL: costrutti avanzati Controllo dell accesso

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

Lezione 3. Il modello relazionale

GESTIONE MAGAZZINO 1

Fondamenti di Informatica 2

Il linguaggio SQL. Il linguaggio SQL

Linguaggi e Traduttori

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL

GESTIONE ABBONAMENTI RIVISTE

SQL. Lezione 1. Docente: Alberto Belussi

Laboratorio di Basi di Dati

Elena Baralis 2007 Politecnico di Torino 1

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

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Soluzione prova scritta di basi di dati del 30 Settembre 2002

SQL Server Architettura Client-Server. SQL Server Introduzione all uso di SQL Server Dutto Riccardo.

Basi di Dati e Sistemi Informativi. Structured Query Language

ESERCIZI SQL. Esercizio 1

DataBase Management System - DBMS

SQL - Structured Query Language

SQL Server Introduzione all uso di SQL Server Dutto Riccardo. Dutto Riccardo - SQL Server 2008.

GESTIONE VOTI SCOLASTICI

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1

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

Transcript:

Laboratorio Basi di Dati Laura Po

Si vuole progettare un database per la gestione delle ferrovie dello stato. I treni gestiti sono identificati da un numero. Su ciascun treno sono specificate le classi per le quali offre servizio (prima, seconda, lusso). Le tratte che un treno può percorrere sono identificate dalla stazione di partenza e dalla stazione di arrivo. Ogni stazione è identificata da un nome. Ogni treno percorre diverse tratte in date e ore distinte. Il sistema memorizza le tratte percorse dai treni. Gli utenti sono identificati attraverso un username, hanno una password, una email ed eventualmente una tessera fedeltà. Un utente può acquistare biglietti per una tratta per uno specifico numero di posti ad un prezzo stabilito dal sistema. Il sistema informativo permette di definire particolari utenti di classe business che usufruiscono di una percentuale di sconto nell acquisto di biglietti.

Si vuole progettare un database per la gestione delle ferrovie dello stato. I treni gestiti sono identificati da un numero. Su ciascun treno sono specificate le classi per le quali offre servizio (prima, seconda, lusso).

Le tratte che un treno può percorrere sono identificate dalla stazione di partenza e dalla stazione di arrivo. Ogni stazione è identificata da un nome.

Ogni treno percorre diverse tratte in date e ore distinte. Il sistema memorizza le tratte percorse dai treni. Occorre reificare per imporre che nella stessa data e ora il treno non percorra più di una tratta

Gli utenti sono identificati attraverso un username, hanno una password, una email ed eventualmente una tessera fedeltà.

Un utente può acquistare biglietti per una tratta per uno specifico numero di posti ad un prezzo stabilito dal sistema.

Il sistema informativo permette di definire particolari utenti di classe business che usufruiscono di una percentuale di sconto nell acquisto di biglietti.

A partire dallo schema ER modellare lo schema relazionale (10 min)

TRENO(numero,classe1,classe2,classe3) STAZIONE(nome) TRATTA(stazPartenza,stazArrivo) FK: stazpartenza REFERENCES STAZIONE FK: stazarrivo REFERENCES STAZIONE PERCORRE(numero,dataOra,stazPartenza,stazArrivo) FK: numero REFERENCES TRENO FK: stazpartenza,stazarrivo REFERENCES TRATTA not null

CLIENTE(username,pw,email,tessera) BUSINESS(username,sconto) FK: username REFERENCES CLIENTE BIGLIETTO(cod,nposti,prezzo,username, stazpartenza,stazarrivo) FK: stazpartenza,stazarrivo REFERENCES TRATTA not null FK: username REFERENCES CLIENTE not null

TRENO(numero,classe1,classe2,classeL) STAZIONE(nome) TRATTA(numTratta,stazPartenza,stazArrivo) AK: stazpartenza,stazarrivo FK: stazpartenza REFERENCES STAZIONE FK: stazarrivo REFERENCES STAZIONE PERCORRE(numero,dataOra,numTratta) FK: numero REFERENCES TRENO FK: numtratta REFERENCES TRATTA CLIENTE(username,pw,email,tessera) BUSINESS(username,sconto) FK: username REFERENCES CLIENTE BIGLIETTO(cod,nposti,prezzo,username,numTratta) FK: numtratta REFERENCES TRATTA FK: username REFERENCES CLIENTE

Imposta l'ordine delle parti della data relative a mese, giorno e anno per l'interpretazione di stringhe di caratteri date, smalldatetime, datetime, datetime2 e datetimeoffset. Sintassi SET DATEFORMAT { format @format_var } Argomenti format @format_var Ordine delle parti della data. I parametri validi sono mdy, dmy, ymd, ydm, myd e dym. L'impostazione predefinita per l'inglese (Stati Uniti) è mdy. Osservazioni DATEFORMAT ydm non è supportata per i tipi di dati date, datetime2 e datetimeoffset.

L'opzione SET DATEFORMAT viene impostata in fase di esecuzione, non in fase di analisi. L'opzione SET DATEFORMAT ignora l'impostazione esplicita del formato di data dell'opzione SET LANGUAGE. L'effetto dell'impostazione DATEFORMAT sull'interpretazione di stringhe di caratteri potrebbe essere diverso per i valori datetime e smalldatetime rispetto ai valori date, datetime2 e datetimeoffset, a seconda del formato di stringa. Questa impostazione influisce sull'interpretazione di stringhe di caratteri nel momento in cui queste vengono convertite in valori di data per l'archiviazione nel database. Non influisce sulla visualizzazione di valori del tipo di dati date archiviati nel database o sul formato di archiviazione di questi.

Treno impostiamo gli attributi classe come 1, 2 e lusso, dobbiamo controllare che un treno definisca almeno una classe. -- Treno CREATE TABLE Treno ( numero varchar(10) PRIMARY KEY, classe1 BIT not null, classe2 BIT not null, classel BIT not null, CHECK (classe1=1 or classe2=1 or classel=1) ) GO

Tratta dobbiamo definire i controlli opportuni per la AK -- Tratta CREATE TABLE Tratta ( numtratta varchar(5) PRIMARY KEY, stazpartenza VARCHAR(20) REFERENCES Stazione not null, stazarrivo VARCHAR(20) REFERENCES Stazione not null, UNIQUE (stazpartenza,stazarrivo) ) GO

Percorre -- Percorre CREATE TABLE Percorre ( numero varchar(10) REFERENCES Treno not null, data DATETIME not null, numtratta varchar(5) REFERENCES Tratta not null, PRIMARY KEY (numero,data) ) GO

Cliente e Business -- Cliente CREATE TABLE Cliente ( username varchar(20) PRIMARY KEY, pw varchar(10) not null, email varchar(40) not null, tessera varchar(10) null ) GO -- Business CREATE TABLE Business ( username varchar(20) PRIMARY KEY REFERENCES Cliente, sconto int not null ) GO

Biglietto -- Biglietto CREATE TABLE Biglietto ( codice INT IDENTITY PRIMARY KEY, numposti INT not null, prezzo money not null, username varchar(20) REFERENCES Cliente not null, numtratta varchar(5) REFERENCES Tratta not null ) GO

Se si esegue la seguente operazione sul database popolato UPDATE Tratta set numtratta='mo:bo' where numtratta='mo-bo' Si ottiene un messaggio di errore simile al seguente Msg 547, Level 16, State 0, Line 3 The UPDATE statement conflicted with the REFERENCE constraint "FK Percorre numtra 1367E606". The conflict occurred in database "Test21Marzo2011", table "dbo.percorre", column 'numtratta'. The statement has been terminated. Questo avviene perché il sistema ha rilevato la VIOLAZIONE DEL VINCOLO DI INTEGRITA, ovvero esistono delle istanze in tabelle dipendenti (in questo caso nelle tabelle PERCORRE e BIGLIETTO) che fanno riferimento all istanza di tabella TRATTA che stiamo cercando di modificare.

E' possibile cambiare il funzionamento della foreign key in seguito al verificarsi di una violazione al vincolo di integrità referenziale. La clausola ON UPDATE, utilizzata in fase di definizione del vincolo di FOREIGN KEY, definisce che azione intraprendere quando si cerca di aggiornare una chiave candidata verso la quale esistono riferimenti di foreign key. Esempio, modificare gli script nel seguente modo CREATE TABLE Percorre ( numero varchar(10) REFERENCES Treno not null, data DATETIME not null, numtratta varchar(5) REFERENCES Tratta ON UPDATE CASCADE, PRIMARY KEY (numero,data) ) CREATE TABLE Biglietto ( codice INT IDENTITY PRIMARY KEY, numposti INT not null, prezzo money not null, username varchar(20) REFERENCES Cliente not null, numtratta varchar(5) REFERENCES Tratta ON UPDATE set null )

Se ora ritorno ad eseguire l operazione di modifica sul database popolato UPDATE Tratta set numtratta='mo:bo' where numtratta='mo-bo non riscontro più un errore! L aggiornamento verrà eseguito sulla tabella Tratta e sarà propagato anche sulle istanze della tabella Percorre, che fanno riferimento all istanza modificata sulla tabella Tratta. In tabella Biglietto, invece, in corrispondenza di istanze che fanno riferimento a quella modificata verrà posto numtratta a null

Laboratorio Basi di Dati Laura Po

1. Selezionare il cliente che ha acquistato più biglietti 2. Selezionare il treno che ha percorso più tratte dal 1/01/2009 al 05/01/2009 3. Selezionare la tratta più percorsa e visualizzare il numero di treni medio che la percorre giornalmente 4. Selezionare il cliente di classe BUSINESS che ha acquistato più biglietti

5. Visualizzare per ciascun cliente i suoi dati e tutti i biglietti acquistati. 6. Visualizzare per ciascun cliente i suoi dati e tutti i biglietti acquistati, compresi i clienti che non hanno acquistato alcun biglietto. 7. Selezionare per ciascun cliente e per ciascun biglietto da lui acquistato i possibili treni che percorrono la tratta a cui si riferisce il biglietto.

8. Selezionare per ciascuna tratta il cliente che ha comprato il biglietto al minor prezzo, comprese le tratte per cui non sono stati acquistati biglietti. 9. Selezionare clienti che hanno acquistato biglietti per una tratta per cui esista almeno un altro biglietto acquistato da un altro cliente. 10. Visualizzare per ciascun cliente il prezzo medio dei biglietti acquistati su ciascuna tratta.

a) Per ogni cliente di classe business che possiede uno sconto inferiore al 5%, impostare lo sconto pari al 5% b) Offerta promozionale Inserire un biglietto GRATUITO per due posti sulla tratta Modena- Bologna per ciascun cliente che possiede una tessera

c) Aggiungere l informazione relativamente alla data di acquisto dei biglietti d) Aggiungere un prezzo minimo e massimo sulle tratte calcolato come il prezzo minimo e massimo pagato per l acquisto di biglietti sulle relative tratte e) Aggiungere il vincolo che la stazione di partenza sia diversa dalla Stazione di arrivo sulla tabella TRATTA