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

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

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

Basi di da' Il modello relazionale. Anna Monreale Università di Pisa

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, IL MODELLO RELAZIONALE

DataBase Management System - DBMS

Sistemi di Elaborazione delle Informazioni (C.I. 15) Basi di dati Introduzione teorica

Informatica Industriale Modello informatico: Applicativo Modello relazionale dei dati

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Laboratorio di Basi di Dati

RELAZIONI E BASI DI DATI

Basi di dati (database)

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

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

Interrogazioni nidificate

Structured Query Language

I modelli logici dei dati. Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw -Hill, IL MODELLO RELAZIONALE

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

Interrogazioni nidificate

Il modello relazionale

Interrogazioni semplici

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

Algebra relazionale: operazioni

I modelli logici dei dati

Introduzione alle basi di dati

MODELLI LOGICI DEI DATI

Basi di Dati Corso di Laura in Informatica Umanistica

Laboratorio di Basi di Dati

ESERCIZI SQL. Esercizio 1

Esempio di database relazionale con l utilizzo del prodotto MySQL

Basi di dati I Prova di autovalutazione 30 ottobre 2014

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

Basi di dati: appello 14/07/06

Le basi di dati. Base di dati = dati + DBMS.

Informatica B. Introduzione alle Basi di Dati e ai DBMS

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

Dichiarazione degli schemi in SQL DDL 1

Ordo et connexio rerum idem est ac ordo et connexio idearum

Fondamenti di Informatica 2

BASI DATI: algebra relazionale

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Basi di dati: appello 04/07/06

Parte III. L algebra relazionale

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

Basi di Dati: Corso di laboratorio

Concettuale. Giuseppe Amato

Che cos è l informatica?

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

Basi di dati: appello 07/02/06

Informatica per le Scienze Umane. Introduzione al corso: programma

SQL. Storia un po piu in dettaglio. SQL: "storia" Tre livelli per SQL-2. Standard, dialetti, mercato

SQL QUERY: Le interrogazioni del database

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

PROGETTAZIONE DI DATABASE Linguaggio SQL

I modelli logici dei da6. Relazione: tre accezioni. Il modello relazionale. Relazione matema6ca. Relazione matema6ca, esempio IL MODELLO RELAZIONALE

Informatica per le Scienze Umane. Introduzione al corso: programma dettagliato

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale.

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

ESAME di INFORMATICA e ARCHIVIAZIONE

I modelli logici dei dati

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

Soluzione esercitazione 01

Il linguaggio SQL: DML di base. Versione elettronica: 04.2.SQL.DMLbase.pdf

Il linguaggio SQL: DML di base

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

Gestione di basi di dati in Access. SUISM Docente: Ugo de Liguoro a.a Asti

Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2010/2011. Basi di dati

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

Unità 2.2 Comandi sulle tabelle

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

Tabelle esempio: Impiegato/Dipartimento

Introduzione all algebra relazionale. Prof. Giovanni Giuffrida

Modello relazionale. Basi di dati relazionali. Modello relazionale. Il modello relazionale. Schema di una relazione. Modello relazionale

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

Manuale SQL. Manuale SQL - 1 -

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

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

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

Il modello relazionale dei dati. modello relazionale 1

Le Basi di Dati. Sommario. Sistema Informatico. Sistema Informativo. Fondamenti di Informatica Anno Accademico 2010/2011

OBIETTIVI DELL'ESERCITAZIONE

SQL. Definizione dei da6 in SQL. SQL: "storia" CREATE TABLE: esempio. CREATE TABLE: esempio

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

ESERCITAZIONI ACCESS

GESTIONE ESAMI di STATO

Il modello relazionale. Relazione: tre accezioni. Relazione matematica. Parte II. Il modello relazionale

Basi di dati (nuovo ordinamento) 16 giugno 2008 Compito A

Modello Relazionale. Esempio (Relazione) A x B. Introduzione. Relazione: definizione. I fattori del successo. Relazione

Operatori aggregati: COUNT

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

Instanze inconsistenti. Informatica II Basi di Dati (07/08) Parte 2. Instanze inconsistenti. Vincoli di integrità

SELECT s.nome, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

Sommario. Introduzione... 13

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

Fondamenti di Teoria delle Basi di Dati

Università di Roma La Sapienza Laurea in Ingegneria Informatica. Basi di Dati. Anno Accademico 2003/2004 Canale M-Z.

DATABASE PER IL WEB. Programmazione Web 1

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

3 Algebra Relazionale

Corso di Basi di Dati

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

Transcript:

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

Vincoli sui Dati Regole del dominio di interesse Unicità di codici di corso e matricole Un codice deve corrispondere ad un solo corso Una matricola deve corrispondere ad un solo studente Voti degli studenti da 18 a 30 lode solo se il voto è 30 Correttezza dei riferimenti 2

Una base di dati con errori Studenti Matricola Cognome Nome Data Nascita 6554 Pinco Pallino 05/12/1978 8765 Neri Paolo 03/11/1976 9283 Verdi Luisa 12/11/1979 9283 Rossi Maria 01/02/1978 Unicità della matricola Esami Studente Voto Lode Corso 3456 34 1 04 3456 24 0 02 9283 28 1 01 1111 26 0 01 Voti scorretti Riferimento scorretto

Vincoli di Integrità Regole imposte sui valori della base di dati Vincoli sulle singole tabelle vincoli di chiave vincoli di ennupla Vincoli tra tabelle diverse vincoli di riferimento o di integrità referenziale 5

Vincoli di Integrità Vincoli di chiave chiave: identificatore per le ennuple es: matricola è una chiave per Studenti Vincoli di ennupla predicati sui valori delle ennuple ( voto<=30 es: (voto>=18 and Vincoli di Riferimento assenza di riferimenti inesistenti es: esistono esami solo per gli studenti della base di dati 6

Vincoli di Chiave Studenti Matricola Cognome Nome Data Nascita 6554 Pinco Pallino 05/12/1978 8765 Neri Paolo 03/11/1976 9283 Verdi Luisa 12/11/1979 3456 Rossi Maria 01/02/1978 CREATE TABLE Studenti(matricola integer, cognome char(20), nome char(20), datanascita date, UNIQUE(matricola)); oppure: TABLE Studenti(matricola integer PRIMARY KEY,... 7

Vincoli di Ennupla Esami Studente Voto Lode Corso 3456 30 1 04 3456 24 0 02 9283 28 0 01 6554 26 0 01 TABLE Esami (matricola integer, voto integer, corso char(3), lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30)); 8

Vincoli di Riferimento Esami Studente Voto Lode Corso 3456 30 1 04 3456 24 0 02 9283 28 0 01 6554 26 0 01 = esterna chiave riferimento ad un attributo chiave di un'altra tabella CREATE TABLE Esami (matricola integer, corso char(3), voto integer, lode bool, oppure: CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), FOREIGN KEY(matricola) REFERENCES Studenti(matricola), FOREIGN KEY(corso) REFERENCES Corsi(codice) ); CREATE TABLE Esami (matricola integer REFERENCES Studenti(matricola),... 9

TABLE Studenti(matricola integer, cognome char(20), nome char(20), datanascita date, UNIQUE(matricola)); TABLE Corsi (codice char(3), titolo char(50), docente char(20), UNIQUE(codice)); Schema con vincoli di integrità TABLE Esami (matricola integer, corso char(3), voto integer, lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), FOREIGN KEY(matricola) REFERENCES studenti(matricola), FOREIGN KEY(corso) REFERENCES corsi(codice), UNIQUE (matricola, corso)); 10

Caratteristiche del Modello Legami tra i dati basati sui valori L informazione è organizzata in più tabelle: la relazione tra tabelle differenti determina informazioni più complesse I valori devono essere semplici valori atomici : numeri, caratteri, stringhe, booleani, date ecc. non sono consentite nidificazioni 11

Un Esempio di Informazione Nidificata Dal Sudicio Via Buia, Pisa Ricevuta Fiscale 1235 del 12/10/2001 3 Coperti 3,00 2 Antipasti 6,20 3 Primi 12,00 2 Bistecche 18,00 Dal Sudicio Via Buia, Pisa Ricevuta Fiscale 1240 del 13/10/2001 2 Coperti 2,00 2 Antipasti 7,00 2 Primi 8,00 2 Orate 20,00 2 Caffè 2,00 Totale 39,20 Totale 39,00 Come organizzare l informazione in modo da gestire i dettagli nidificati dentro ogni ricevuta? 12

Una possibile rappresentazione Dal Sudicio Via Buia, Pisa Ricevuta Fiscale 1235 del 12/10/2001 3 Coperti Dal Sudicio3,00 2 Antipasti Via Buia, Pisa 6,20 3 Ricevuta Primi Fiscale 12,00 2 1240 del 13/10/2001 Bistecche 18,00 2 Coperti 2,00 2 Antipasti 7,00 2 Primi Totale 8,00 39,20 2 Orate 20,00 2 Caffè 2,00 Totale 39,00 Una tabella gestisce la lista di tutte le ricevute Numero Data Totale 1235 12/10/2001 39,20 1240 13/10/2001 39,00 I dettagli di ogni ricevuta sono contenuti in una tabella, collegata tramite chiave esterna Numero Qta Descriz Prezzo 1235 3 Coperti 3,00 1235 2 Antipasti 6,20 1235 3 Primi 12,00 1235 2 Bistecche 18,00 1240 2 Coperti 2,00 1240 2 Antipasti 7,00

Basi di dati Studenti Corsi Esami Matricola Cognome Nome Data Nascita 6554 Pinco Pallino 05/12/1978 8765 Neri Paolo 03/11/1976 9283 Verdi Luisa 12/11/1979 3456 Rossi Maria 01/02/1978 Codice Titolo Docente a01 Analisi Sempronio c02 Chimica Bruni c04 Chimica Verdi Studente Voto Lode Corso 3456 30 1 c04 3456 24 0 c02 9283 28 0 a01 6554 26 0 a01 Data questa organizzazione, sono necessari altri strumenti per correlare tra loro le tabelle

Introduzione Algebra per Tabelle insieme di operatori che applicati a tabelle restituiscono tabelle analogo: y+3, x-2 espressioni analogo: z=(y+3)-2 sintassi astratta semantica operazionale astratta

Esempio: base di dati per corso di informatica Professori codice, nome, qualifica, facoltà numeri di telefono Studenti matricola, nome, tipo di corso (ciclo): laurea triennale / specialistica relatore della tesi Corsi codice, titolo, docente, ciclo Esami studente, voto, lode, corso Tutorato Studentesco studente tutore, studente tutorato

CREATE TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); CREATE TABLE Studenti ( matr integer PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Professori(cod) ); CREATE TABLE Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod) ); CREATE TABLE Tutorato ( studente integer REFERENCES Studenti(matr), tutor integer REFERENCES Studenti(matr), UNIQUE (studente,tutor)); CREATE TABLE Esami ( studente integer REFERENCES Studenti(matr), corso char(3) REFERENCES Corsi(cod), voto integer, lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), UNIQUE (studente, corso)); CREATE TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), UNIQUE (professore,numero));

Professori cod cognome nome qualifica facolta FT Totti Francesco ordinatio Ingegneria CV Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null Studenti Corsi matr cognome nome ciclo anno relatore 111 Rossi Mario laurea tr. 1 null 222 Neri Paolo laurea tr. 2 null 333 Rossi Maria laurea tr. 1 null 444 Pinco Palla laurea tr. 3 FT 777 Bruno Pasquale laurea sp. 1 FT 888 Pinco Pietro laurea sp. 1 CV cod titolo ciclo docente PR1 Programmazione I laurea tr. FT ASD Algoritmi e Str. Dati laurea tr. CV INFT Informatica Teorica laurea sp. ADP

Numeri professore numero FT 0971205145 FT 347123456 VC 0971205227 ADP 0971205363 ADP 338123456 Tutorato studente tutor 111 777 222 777 333 888 444 888 Esami studente corso voto lode 111 PR1 27 false 222 ASD 30 true 111 INFT 24 false 777 PR1 21 false 777 ASD 28 false 888 ASD 28 false 888 PR1 30 false 888 INFT 30 true

Algebra Relazionale Operatori principali selezione proiezione prodotto cartesiano e join unione, intersezione e differenza

Selezione Funzione serve per selezionare alcune delle ennuple di una tabella scartando le altre sulla base di una condizione Esempio Estrarre dalla base di dati una tabella, StudentiTriennio, contenente i dati dei soli studenti della laurea triennale

Studenti laurea triennale Studenti Studenti Triennale matr cognome nome ciclo anno relatore 111 Rossi Mario laurea tr. 1 null 222 Neri Paolo laurea tr. 2 null 333 Rossi Maria laurea tr. 1 null 444 Pinco Palla laurea tr. 3 FT 777 Bruno Pasquale laurea sp. 1 FT 888 Pinco Pietro laurea sp. 1 CV condizione: Studenti.ciclo= laurea tr. matr cognome nome ciclo anno relatore 111 Rossi Mario laurea tr. 1 null 222 Neri Paolo laurea tr. 2 null 333 Rossi Maria laurea tr. 1 null 444 Pinco Palla laurea tr. 3 FT Il risultato della selezione è una tabella contenente solo le ennuple che soddisfano la condizione

Selezione: sintassi Operatore unario ( monadico ) condizione sui valori degli attributi Condizione: espressione booleana operandi: valori degli attributi della tabella operatori di confronto, operatori booleani Sintassi: Esempio di uso:

Proiezione Funzione estrarre alcune delle colonne di una tabella Esempio Estrarre l elenco dei nomi e i cognomi degli studenti CREATE TABLE Studenti ( matr integer, cognome varchar(20), nome varchar(20), ciclo char(20), anno integer, relatore char(4) ); TABLE ElencoNomi ( Studenti.cognome varchar(20), Studenti.nome varchar(20), );

Proiezione: cognome e nome Studenti matr cognome nome ciclo anno relatore 111 Rossi Mario laurea tr. 1 null 222 Neri Paolo laurea tr. 2 null 333 Rossi Maria laurea tr. 1 null 444 Pinco Palla laurea tr. 3 FT 777 Bruno Pasquale laurea sp. 1 FT 888 Pinco Pietro laurea sp. 1 CV ElencoNomi cognome Rossi Neri Rossi Pinco Bruno Pinco nome Mario Paolo Maria Palla Pasquale Pietro CREATE TABLE ElencoNomi ( Studenti.cognome varchar(20), Studenti.nome varchar(20), );

Proiezione: sintassi Operatore unario lista di attributi della tabella Sintassi Esempio d'uso

Linguaggio SQL Interrogazioni SQL una o più sotto-interrogazioni correlate da operatori insiemistici Sotto-interrogazioni: varie clausole Nucleo della SELECT SELECT: proiezioni, distinct FROM: prodotti cartesiani o join, alias [WHERE]: selezioni Clausole aggiuntive [ORDER BY]: ordinamenti

SQL: Selezione Studenti della laurea triennale di anni successivi al primo σ ciclo= laurea tr. AND anno>1 (Studenti) SELECT * FROM Studenti WHERE ciclo= laurea tr. AND anno>1;

SQL: Proiezione e DISTINCT Cognomi e nomi degli studenti, senza duplicati ElencoNomi = DISTINCT(π cognome,nome (Studenti)) SELECT DISTINCT cognome, nome FROM Studenti;