Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C

Slides:



Advertisements
Presentazioni simili
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Advertisements

1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
Corso di Informatica (Basi di Dati)
SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio.
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
sql: esempi di linguaggio sql nell'implementazione mysql
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
SQL (III) Data Definition Language/ Data Manipulation Language.
Vincoli interrelazionali
Basi di dati I Prof.ssa Rosalba Giugno Prof. Alfredo Pulvirenti SQL: Amministrazione e Viste.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Progettazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rileaborato da M. Lenzerini - Basi di dati
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Secondo Compito: PROGETTAZIONE DI UN DATABASE Claudia Angione
PROGETTAZIONE DATABASE SECONDO COMPITO CAROLINA CASIELLO
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Rielaborato da Atzeni et al., Basi di dati, Mc-Graw Hill
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Progettazione di una base di dati relazionale
Creare tabelle in sql Ripasso!.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
A. A – 2008 Basi di dati 1 Corso Prof
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Corso di Basi di Dati Il Linguaggio SQL
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Progettazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di Dati 1 in eLearning C
Progettazione di una base di dati relazionale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Integrità referenziale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
I vincoli di integrità Alcuni aspetti della realtà NON possono essere modellati solamente con entità, attributi e relazioni, per esempio i vincoli di integrità.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Il modello relazionale
Rielaborato da Atzeni et al., Basi di Dati, Mc-Graw Hill
Progettazione logica: Il modello relazionale
Partizionamento/accorpamento di concetti
SQL per la modifica di basi di dati
Vincoli di Integrità Non tutte le combinazioni possibili di valori dei domini su cui è definita una relazione sono accettabili. Alcuni attributi possono.
Transcript della presentazione:

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

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Vincoli di integrita’ 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Cosa e’ un vincolo di integrita’ E’ una proprieta’ sempre valida per le istanze di una o piu’ relazioni 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Tipi di vincoli Intrarelazionali – proprieta’ valida all’ interno di una relazione Interrelazionali – proprieta’ relativa a piu’ relazioni 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Vincoli intrarelazionali 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Vincoli intrarelazionali NOT NULL UNIQUE definisce chiavi PRIMARY KEY: chiave primaria (una sola) CHECK, permette di definire sia vincoli intra che inter relazionali, lo vedremo più avanti 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Vincolo NOT NULL Indica che il valore nullo non e‘ ammesso per il dominio a cui e‘ associato il vincolo. 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Vincolo UNIQUE Si applica a uno (A) o un insieme di attributi (I) Impone che i valori dell’attributo A o dell’insieme I siano una chiave, cioe’ che tuple diverse abbiano valori diversi su A o I. Fa eccezione il valore nullo, che si assume sempre diverso nelle diverse occorrenze Due forme: nella definizione di un attributo, se forma da solo la chiave Es. Cognome CHAR(20) UNIQUE come elemento separato, se definito su piu’ attributi Es. Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, UNIQUE (Cognome,Nome) 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Chiavi su più attributi, attenzione Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, UNIQUE (Cognome,Nome), Nome CHAR(20) NOT NULL UNIQUE, Cognome CHAR(20) NOT NULL UNIQUE, non hanno lo stesso effetto! Perche‘ la seconda dichiarazione corrisponde a due comandi distinti 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

CREATE TABLE, esempio sviluppato fino a questo punto CREATE TABLE Impiegato( Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, Dipart CHAR(15), Stipendio NUMERIC(9) DEFAULT 0, FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip), UNIQUE (Cognome,Nome) ) 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Clausola PRIMARY KEY Serve per specificare la chiave primaria Puo’ essere usata una sola volta Due forme (come per unique) per un attributo o piu’ attributi Gli attributi della chiave primaria non possono assumere valori nulli Matricola CHAR(6) PRIMARY KEY Matricola CHAR(6), …, PRIMARY KEY (Matricola) 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

CREATE TABLE, esempio sviluppato fino a questo punto CREATE TABLE Impiegato( Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL, Dipart CHAR(15), Stipendio NUMERIC(9) DEFAULT 0, FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip), UNIQUE (Cognome,Nome) ) 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Vincoli interrelazionali 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Vincoli interrelazionali Vincoli di integrita‘ referenziale (IR) REFERENCES e FOREIGN KEY CHECK, vedremo più avanti perche‘ e‘ prima necessario trattare le interrogazioni SQL 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Vincoli di IR Creano un legame tra i valori di n attributi della tabella corrente (detta interna) e i valori di n attributi di una seconda tabella (detta Esterna o Master o Principale) di cui tipicamente costituiscono una chiave di nuovo due sintassi (come in precedenza) per singoli attributi su più attributi E' possibile definire politiche di reazione alla violazione 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Infrazioni (tabella interna) Codice 34321 73321 64521 53524 Data 1/2/95 4/3/95 5/4/96 5/2/98 Vigile 3987 3295 9345 Prov Numero MI TO PR 39548K E39548 839548 Vigili (esterna o master) Matricola Cognome Nome 3987 Rossi Luca 3295 Neri Piero 9345 Neri Mario 7543 Mori Gino 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Infrazioni (interna) Codice 34321 73321 64521 53524 Data 1/2/95 4/3/95 5/4/96 5/2/98 Vigile 3987 3295 9345 Prov Numero MI TO PR 39548K E39548 839548 Auto (esterna o master) Prov Numero MI TO PR 39548K E39548 839548 Cognome Rossi Neri Nome Mario Luca 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

CREATE TABLE, esempio con le due sintassi CREATE TABLE Infrazioni( Codice CHAR(6) NOT NULL PRIMARY KEY, Data DATE NOT NULL, Vigile INTEGER NOT NULL REFERENCES Vigili(Matricola), Provincia CHAR(2), Numero CHAR(6) , FOREIGN KEY(Provincia, Numero) REFERENCES Auto(Provincia, Numero) ) 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Politiche di reazione alle violazioni Se viene eseguita una operazione di aggiornamento che porta alla violazione di un vincolo di integrita’ referenziale, lo stato della base di dati diventa non valido. Sono percio’ definite un insieme di politiche per evitare che questo accada. Tali politiche vanno dichiarate nella dichiarazione DDL dello schema. 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Politiche di reazione alle violazioni o referential triggered action Cause di violazione: 1. Operazione sulla tabella interna (TI) inserimento di tupla nella TI modifica di valore di attributo nella TI In entrambi i casi il comando non viene eseguito 2. Operazione sulla tabella esterna/master (TE) Quattro politiche possibili (vedi ) Motivo della asimmetria: la TE e’ la tabella master, quindi e’ la tabella rilevante per la integrita’ complessiva della base di dati 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Politiche per comando su TE: modifica/cancellazione 1. Cascade: Operazione di Modifica  valore modificato anche nella TI Operazione di Cancellazione  la cancellazione viene propagata alla TI 2. Set null: NULL nella TI in entrambi i casi 3. Set default: default nella TI in entrambi i casi 4. No action: rifiutata in entrambi i casi 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Sintassi delle politiche nel linguaggio SQL-DDL Vedi il libro di riferimento. 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Politiche per comando su TE: modifica/cancellazione Le due politiche possono essere differenti per modifica/cancellazione Esempio Dipart CHARACTER (15) REFERENCES Dipartimento (NomeDip) ON DELETE SET NULL ON UPDATE CASCADE 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Istruzioni SQL di modifica di schema 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Modifiche degli schemi: ALTER ALTER DOMAIN, modifica domini (default, vincoli) ALTER TABLE, modifica tabelle. Attenzione: Quando si definisce un nuovo vincolo, deve essere soddisfatto dalla istanza presente, altrimenti viene rifiutato. 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

Modifiche degli schemi: DROP DROP DOMAIN, cancellazione del dominio (attributo) DROP TABLE, cancellazione della tabella Due opzioni: RESTRICT, un oggetto (dominio, tabella) non e‘ rimosso se non e‘ vuoto CASCADE, viene rimosso l‘oggetto e tutto cio‘ che e‘ coinvolto nella definizione dell‘ oggetto 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 In pratica In molti sistemi si utilizzano strumenti diversi dal codice SQL per definire lo schema della base di dati Es. Form in Access 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Esercizio 6.2.1 Esegui l’esercizio 4.3 del libro di riferimento 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Esercizio 6.2.2 Esegui l’esercizio 4.4 del libro di riferimento 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Esercizio 6.2.3 Esegui l’esercizio 4.5 del libro di riferimento 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Esercizio 6.2.4 Esegui l’esercizio 4.7 del libro di riferimento 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4

adattato da Atzeni-etal., Basi di dati, Capitolo 4 Concetti introdotti Politica di reazione alle violazioni 04/2007 adattato da Atzeni-etal., Basi di dati, Capitolo 4