Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA'...

56
UNIVERSITA' DELLA CALABRIA Basi di Dati Relazionali Corso di Laurea in Informatica a.a. 2009-2010 Laboratorio Corso di Basi di Dati Relazionali – 05 Giugno 09 Laboratorio Ing. G. Laboccetta Ing. G. Laboccetta Dott.ssa. Dott.ssa. V. Policicchio V. Policicchio Coadiutore: Dott.ssa D. Nicotera Coadiutore: Dott.ssa D. Nicotera

Transcript of Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA'...

Page 1: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

Basi di Dati Relazionali

Corso di Laurea in Informatica

a.a. 2009-2010

Laboratorio

Corso di Basi di Dati Relazionali – 05 Giugno 09

Laboratorio

Ing. G. LaboccettaIng. G. Laboccetta

Dott.ssa.Dott.ssa. V. PolicicchioV. Policicchio

Coadiutore: Dott.ssa D. Nicotera Coadiutore: Dott.ssa D. Nicotera

Page 2: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

PROGETTAZIONE FISICASQL-DDL

Corso di Basi di Dati Relazionali – 05 Giugno 09

OBIETTIVO:

Rappresentare i dati della realtà di interesse

attraverso le strutture dati di uno specifico DBMS

Page 3: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

OBIETTIVI DEL CORSO-RIEPILOGO

� Le lezioni di laboratorio del corso di Basi di Dati Relazionali prevedono la progettazioneprogettazione e la realizzazionerealizzazione di un sistema informatico basato su un DBMS relazionale (MySql 5.05.0).

• Durante le lezioni devono essere svolte tutte le fasi di sviluppo del sistema informatico. Ogni fase è composta da diversi step, ciascuno dei quali porta alla produzione di più documenti.

Corso di Basi di Dati Relazionali – 05 Giugno 09

ciascuno dei quali porta alla produzione di più documenti.

� L'insieme di tali documenti costituisce la documentazione del sistema informatico che deve essere prodotta durante le lezioni.

� Il sistema informatico deve essere costituito da una base di dati realizzata su un DBMS relazionale (MySql 5.05.0) interrogabile mediante SQL.

Page 4: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

FASI DELLA PROGETTAZIONE

Schema concettuale

Progettazione concettuale

Raccolta e Analisi dei requisiti

Corso di Basi di Dati Relazionali – 05 Giugno 09

Progettazione logica

Progettazione fisica

Schema logico

Schema fisico

Page 5: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

PROGETTAZIONE DELLA BASE DIDATI

Corso di Basi di Dati Relazionali – 05 Giugno 09

Page 6: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

FASI E STEP DEL PROGETTO

1.Analisi e progettazione concettuale

a. Raccolta e Analisi dei requisiti

b. Progettazione dello schema Entità-Relazione (E-R)

c. Specifica delle funzioni per operare sui dati

d. Stima del carico applicativo del sistema informatico

Corso di Basi di Dati Relazionali – 05 Giugno 09

d. Stima del carico applicativo del sistema informatico

2.Progettazione logica della base di dati

a. Ristrutturazione dello schema E-R in uno schema E-R

semplificato orientato al modello relazionale

b. Traduzione dello schema E-R ristrutturato in schema

relazionale

Page 7: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

FASI E STEP DEL PROGETTO

3. Progettazione fisica ed implementazione della base di

dati

a. Definizione dello schema della base di dati sul DBMS

relazionale open-source MySQL 5.0 mediante SQL-

Corso di Basi di Dati Relazionali – 05 Giugno 09

relazionale open-source MySQL 5.0 mediante SQL-

DDL

b. Popolamento della base di dati

c. Realizzazione delle interrogazioni per operare sui dati

Page 8: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

OBIETTIVI DELLA LEZIONE

� SQL:� Funzionalità DDL

� Sintassi� Esempi

Corso di Basi di Dati Relazionali – 05 Giugno 09

Page 9: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

PROGETTAZIONE FISICA

Obiettivo: Rappresentare i dati della realtà di interesse attraversole strutture dati di uno specifico DBMS• Input:� Schema logico (prodotto della progettazione logica)

� DBMS scelto (per sapere quali strutture dati fisiche utilizzare)� Previsioni del carico applicativo (per ottimizzare la base di dati

rispetto ad esso)

Corso di Basi di Dati Relazionali – 05 Giugno 09

rispetto ad esso)

• Output:� Schema fisico (Tipicamente nei DBMS attuali consiste in uno

schema logico definito mediante SQL-DDL + alcune scelte relativeall’effettiva implementazione sul DBMS di detto schema)

• Qualità:– Efficienza rispetto al carico applicativo

Page 10: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

MODELLI DI DATI

I prodotti della varie fasi della progettazione sono schemi basati su specifici modelli di datimodelli di dati:

� Schema concettuale � modello concettuale

� Schema logico� modello logico

Corso di Basi di Dati Relazionali – 05 Giugno 09

� Schema logico� modello logico

� Schema fisico� modello logico + parametri fisici

Page 11: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

MODELLI DEI DATI ADOTTATI

– Schema concettuale:• Modello Entità-Relazione (ER)

– Schema logico:• Modello Relazionale • DDL: SQL-standard

Corso di Basi di Dati Relazionali – 05 Giugno 09

• DDL: SQL-standard

– Schema fisico:• Modello relazionale + strutture fisiche• DDL: SQL supportato dal DBMS scelto (MySql 5.0)

Page 12: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SQL

� Originariamente acronimo di "Structured Query Language", ora nome proprio

� Prima proposta: SEQUEL (IBM Research, 1974)

� È uno standard (1986, poi 1989, 1992, 1999 e infine 2003) ma esistono varie versioni (DBMS diversi implementano versioni diverse)

Corso di Basi di Dati Relazionali – 05 Giugno 09

esistono varie versioni (DBMS diversi implementano versioni diverse)

� È un linguaggio dichiarativo (a differenza dell’Algebra Relazionale che è di tipo procedurale)

� Ha varie funzionalità:� DDL (Data Definition Language)� DML (Data Manipulation Language)

Page 13: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SQL- FUNZIONALITÀ DDL

� Data Definition Language: funzionalità che consente di definire lo schema dei dati

Corso di Basi di Dati Relazionali – 05 Giugno 09

� L’istruzione più importante del DDL di SQL è:

CREATE TABLE� definisce uno schema di relazione, specificando attributi e vincoli)

� crea un’istanza vuota dello schema

Page 14: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

DEFINIZIONE DI TABELLE

CREATE TABLE NomeTabella (NomeAttributo Dominio [ Vincoli ] {, NomeAttributo Dominio [ Vincoli ]}[ AltriVincoli ])

Corso di Basi di Dati Relazionali – 05 Giugno 09

[ AltriVincoli ])

Page 15: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

CREATE TABLE, ESEMPIO

CREATE TABLE Impiegato(

Matricola CHAR(6) PRIMARY KEY,

Nome CHAR(20) NOT NULL,

Cognome CHAR(20) NOT NULL,

Dipart CHAR(15),

Corso di Basi di Dati Relazionali – 05 Giugno 09

Dipart CHAR(15),

Stipendio NUMERIC(9) DEFAULT 0,

FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip),

UNIQUE (Cognome,Nome) )

Page 16: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

DOMINI

�Domini elementari (predefiniti)

�Domini definiti dall'utente (semplici, ma riutilizzabili)

Corso di Basi di Dati Relazionali – 05 Giugno 09

riutilizzabili)

Page 17: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

DOMINI ELEMENTARI

– Carattere

singoli caratteri o stringhe, anche di lunghezza variabile:

char(n) stringhe di lunghezza fissa

Corso di Basi di Dati Relazionali – 05 Giugno 09

char(n)

character(n)

varchar(n)

char varying(n)

stringhe di lunghezza variabile

nchar(n)

nvarchar(n)

nchar varying(n))

come sopra ma UNICODE

Page 18: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

DOMINI ELEMENTARI

– Numerici esatti e approssimati:

int, integer, smallint interi

numeric,numeric(p), valori numerici esatti non

Corso di Basi di Dati Relazionali – 05 Giugno 09

numeric,numeric(p), numeric(p,s))

valori numerici esatti non negativi

decimal, decimal(p), decimal(p,s))

valori numerici esatti anche negativi

float, float(p), real, double precision

Reali

Page 19: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

DOMINI ELEMENTARI

– Data, ora

• date / time / timestamp• time with timezone / timestamp with timezone

– Bit: singoli bit o stringhe di bit• bit(n)

Corso di Basi di Dati Relazionali – 05 Giugno 09

• bit(n)

• bit varying(n)

– Introdotti in SQL 1999

• boolean

• BLOB, CLOB (binary/character large object): per grandi immagini e testi

Page 20: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

DEFINIZIONE DI DOMINI

� Istruzione CREATE DOMAINCREATE DOMAIN: • definisce un dominio (semplice), utilizzabile in definizionidi relazioni, anche con vincoli e valori di default

• SINTASSI:CREATE DOMAIN NomeDominioCREATE DOMAIN NomeDominio

Corso di Basi di Dati Relazionali – 05 Giugno 09

CREATE DOMAIN NomeDominioCREATE DOMAIN NomeDominioas DominioPreesistente [ Default ] [ Vincoli ]as DominioPreesistente [ Default ] [ Vincoli ]

• ESEMPIO:CREATE DOMAIN Voto CREATE DOMAIN Voto AS SMALLINT DEFAULT NULLAS SMALLINT DEFAULT NULLCHECK ( value >=18 AND value <= 30 )CHECK ( value >=18 AND value <= 30 )

Page 21: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA VINCOLIINTRARELAZIONALI

� NOT NULL

� UNIQUE definisce attributi che identificano una tupla

PRIMARY KEY: chiave primaria (una sola, implica

Corso di Basi di Dati Relazionali – 05 Giugno 09

� PRIMARY KEY: chiave primaria (una sola, implica NOT NULL e UNIQUE)

� CHECK, consente di verificare che una condizione venga rispettata

Page 22: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

UNIQUE E PRIMARY KEY

Due forme:• singolo attributo:

�unique dopo la specifica del dominio�primary key dopo la specifica del dominio

Corso di Basi di Dati Relazionali – 05 Giugno 09

• più attributi:�unique (Attributo,..., Attributo)�primary key (Attributo,..., Attributo)

Page 23: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

CREATE TABLE, ESEMPIO

CREATE TABLE Impiegato(

Matricola CHAR(6) PRIMARY KEY,

Nome CHAR(20) NOT NULL,

Cognome CHAR(20) NOT NULL,

Dipart CHAR(15),

Corso di Basi di Dati Relazionali – 05 Giugno 09

Dipart CHAR(15),

Stipendio NUMERIC(9) DEFAULT 0,

FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip),

UNIQUE (Cognome,Nome) )

Page 24: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

PRIMARY KEY, ALTERNATIVE

CREATE TABLE Impiegato (Matricola character(6) primary key,...)

Oppure

Corso di Basi di Dati Relazionali – 05 Giugno 09

Oppure

CREATE TABLE Impiegato (Matricola character(6),...primary key (Matricola))

Page 25: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

CREATE TABLE, ESEMPIO

CREATE TABLE Impiegato(

Matricola CHAR(6) PRIMARY KEY,

Nome CHAR(20) NOT NULL,

Cognome CHAR(20) NOT NULL,

Dipart CHAR(15),

Corso di Basi di Dati Relazionali – 05 Giugno 09

Dipart CHAR(15),

Stipendio NUMERIC(9) DEFAULT 0,

FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip),

UNIQUE (Cognome,Nome) )

Page 26: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

CHIAVI SU PIÙ ATTRIBUTI

� 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,

Corso di Basi di Dati Relazionali – 05 Giugno 09

Cognome CHAR(20) NOT NULL UNIQUE,

Attenzione: non è la stessa cosa!

Page 27: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

VINCOLI INTERRELAZIONALI

�� CHECKCHECK

�� REFERENCESREFERENCES e FOREIGN KEYFOREIGN KEY� Permettono di definire vincoli di integrità referenziale

Corso di Basi di Dati Relazionali – 05 Giugno 09

� di nuovo due sintassi:�per singoli attributi�su più attributi

� E' possibile definire politiche di reazione alla violazione

Page 28: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

REFERENCES E FOREIGN KEY• Permettono di definire vincoli di integrità referenziale.

� Sintassi:– per singoli attributi:referencesreferences dopo la specifica del dominio

– riferimenti su più attributi:foreignforeign key(Attributo,...,key(Attributo,...,AttributoAttributo) ) referencesreferences

Corso di Basi di Dati Relazionali – 05 Giugno 09

foreignforeign key(Attributo,...,key(Attributo,...,AttributoAttributo) ) referencesreferencesALTRATABELLA(A1,…,AN)

� Gli attributi referenziati nella tabella di arrivo (master) devono formare una chiave (primay key o unique).

� Semantica: ogni combinazione (senza NULL) di valori per gli attributi nella tabella di partenza (slave) deve comparire nellatabella di arrivo (master).

Page 29: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

InfrazioniCodice

34321

64521

53524

Data

1/2/95

4/3/95

5/4/96

Vigile

3987

3295

3295

Prov Numero

MI

TO

PR

39548K

E39548

839548

EsempioEsempioEsempioEsempio

Corso di Basi di Dati Relazionali – 05 Giugno 09

Matricola

3987

3295

9345

Vigili Cognome

Rossi

Neri

Neri

Nome

Luca

Piero

Mario

Mori Gino7543

73321

64521 5/4/96

5/2/98

3295

9345

PR

PR

839548

839548

Page 30: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

InfrazioniCodice

34321

64521

53524

Data

1/2/95

4/3/95

5/4/96

Vigile

3987

3295

3295

Prov Numero

MI

TO

PR

39548K

E39548

839548

EsempioEsempioEsempioEsempio

Corso di Basi di Dati Relazionali – 05 Giugno 09

73321

64521 5/4/96

5/2/98

3295

9345

PR

PR

839548

839548

Auto Prov Numero

MI

TO

PR

39548K

E39548

839548

Cognome

Rossi

Rossi

Neri

Nome

Mario

Mario

Luca

Page 31: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

CREATE TABLE, ESEMPIO

CREATE TABLE Infrazioni(

Codice CHAR(6) NOT NULL PRIMARY KEY,

Data DATE NOT NULL,

Vigile INTEGER NOT NULLREFERENCES

Vigili(Matricola),

Corso di Basi di Dati Relazionali – 05 Giugno 09

Vigili(Matricola),

Provincia CHAR(2),

Numero CHAR(6) ,

FOREIGN KEY(Provincia, Numero)REFERENCES Auto(Provincia,

Numero)

)

Page 32: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

MODIFICHE DEGLI SCHEMI

� ALTER DOMAIN

� ALTER TABLE

� DROP DOMAIN

� DROP TABLE

...

Corso di Basi di Dati Relazionali – 05 Giugno 09

...

Page 33: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

MODIFICHE DEGLI SCHEMIALTER TABLE

� Permette di modificare lo schema di una tabella� Esempio:CREATE TABLE Infrazioni(Codice CHAR(6) NOT NULL PRIMARY KEY, Data DATE NOT NULL, Vigile INTEGER NOT NULL

REFERENCES Vigili(Matricola),

Corso di Basi di Dati Relazionali – 05 Giugno 09

Vigile INTEGER NOT NULLREFERENCES Vigili(Matricola),

Provincia CHAR(2), Numero CHAR(6) )

ALTER TABLE Infrazioni ADD CONSTRAINT MioVincolo foreign key (Provincia, Numero) references Auto(Provincia,Numero)

Page 34: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

MODIFICHE DEGLI SCHEMIDROP TABLE

� Elimina una tabella� Sintassi::

DROP TABLE NomeTabella restrict | cascade

� Esempio:Elimina la tabella solo se non ci sono riferimenti ad

Corso di Basi di Dati Relazionali – 05 Giugno 09

� Elimina la tabella solo se non ci sono riferimenti ad essa:

1. DROP TABLE Infrazioni [restrict]

� Elimina la tabella e tutte le tabelle (o più in generale tutti gli oggetti del DB) che si riferiscono ad essa

1. DROP TABLE Infrazioni cascade

Page 35: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

DEFINIZIONE DEGLI INDICI

Definizione di indici:• è rilevante dal punto di vista delle prestazioni• ma è a livello fisico e non logico

Istruzione create indexcreate index

Corso di Basi di Dati Relazionali – 05 Giugno 09

Istruzione create indexcreate index• Sintassi (semplificata):CREATE [UNIQUE] INDEX NomeIndice onNomeTavola(col_1, col_2, …, col_n)

• Esempio:create index IndiceIP on Infrazioni(Provincia)

Page 36: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

PROGETTO DIDATTICO

� Realizzazione dell'applicazione consiste nell'implementazione della base di dati secondo lo schema logico prodotto nella fase di progettazione logica (con SQL-DDL) e dall'implementazione delle operazioni previste sui dati (con SQL-DML)

Corso di Basi di Dati Relazionali – 05 Giugno 09

operazioni previste sui dati (con SQL-DML)

Page 37: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

PROGETTO DIDATTICO

� La documentazione relativa alla realizzazione del progetto consiste:� nel listato delle istruzioni SQL per la definizione dello schema della base di dati (SQL-DDL);

� nel listato delle istruzioni SQL la definizione delle interrogazioni per la visualizzazione dei dati (SQL-DML);

Corso di Basi di Dati Relazionali – 05 Giugno 09

� nel listato delle istruzioni SQL la definizione delle operazioni per la manipolazione dei dati (aggiornamenti, inserimenti, cancellazioni) (SQL-DML).

Page 38: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

PROGETTO DIDATTICO� Test dell'applicazione. La documentazione di questa parte consiste nella:

�Definizione del contenuto di test della base di dati �Stampa dei risultati delle interrogazioni su tali dati

Corso di Basi di Dati Relazionali – 05 Giugno 09

dati

Page 39: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

Gestione di una Farmacia -Progettazione Fisica

Corso di Basi di Dati Relazionali – 05 Giugno 09

Progettazione Fisica

Page 40: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA RISTRUTTURATO

Corso di Basi di Dati Relazionali – 05 Giugno 09

Page 41: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

(SOTTO) SCHEMA RISTRUTTURATO –FARMACI E PRODOTTI

TRALASCIAMO

IL SOTTOINSIEME DELLO

SCHEMA RELATIVO AI

PRODOTTI DI PROFUMERIA

Corso di Basi di Dati Relazionali – 05 Giugno 09

Page 42: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA LOGICO (1/3)� Traduzione delle entità (II PARTE):

PRODOTTO(codice, nome, descrizione, scadenza)

CASAFARMACEUTICA(nome,recapito)

CATEGORIAFT(codice,nome)

F (codiceP*, prescrivibile, brevettato, equivalente*,

Corso di Basi di Dati Relazionali – 05 Giugno 09

FARMACO(codiceP*, prescrivibile, brevettato, equivalente*,

nomeCasa*, categoria*)

con un vincolo di integrità referenziale tra:

(1) l’attributo codiceP e la relazione PRODOTTO,

(2) l’attributo equivalente e la relazione FARMACO

(3) l’attributo nomeCasa e la relazione CASAFARMACEUTICA

(4) l’attributo categoria e la relazione CATEGORIAFT

Page 43: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA LOGICO (2/3)� Traduzione delle entità (II PARTE):

SCONTRINO(data,numero)

PAZIENTE(CF, nome,cognome)

MEDICO(CF, nome,cognome)

P (data,numero,medico*,paziente*, (data_scontrino,

Corso di Basi di Dati Relazionali – 05 Giugno 09

PRESCRIZIONE(data,numero,medico*,paziente*, (data_scontrino,

num_scontrino)*)

con un vincolo di integrità referenziale tra:

(1) l’attributo medico e la relazione MEDICO,

(2) l’attributo paziente e la relazione PAZIENTE

(3) gli attributi (data_scontrino,numero_scontrino) e la relazione

SCONTRINO

Page 44: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA LOGICO (3/3)� Traduzione delle associazioni molti a molti:

INTERAZIONE(categoria1,categoria2)

con un vincolo di integrità referenziale tra:

(1) l’attributo categoria1 e la relazione CATEGORIAFT,

(2) l’attributo categoria2 e la relazione CATEGORIAFT.

DETTAGLIOSCONTRINO((data,numero)*,prodotto*,quantità)

Corso di Basi di Dati Relazionali – 05 Giugno 09

DETTAGLIOSCONTRINO((data,numero)*,prodotto*,quantità)

con un vincolo di integrità referenziale tra:

(1) gli attributi (data,numero) e la relazione SCONTRINO,

(2) l’attributo prodotto e la relazione PRODOTTO

DETTAGLIOPRESCRIZIONE((data,numero,medico)*,farmaco*)

con un vincolo di integrità referenziale tra:

(1) gli attributi (data,numero,medico) e la relazione PRESCRIZIONE,

(2) l’attributo farmaco e la relazione FARMACO

Page 45: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Prodotto(codice, nome, descrizione, scadenza)

SQL-DDL Statement

CREATE TABLE prodotto(

codice int(10) unsigned

Corso di Basi di Dati Relazionali – 05 Giugno 09

codice int(10) unsigned

auto_increment PRIMARY KEY,

nome varchar(20) NOT NULL,

descrizione varchar(100) NOT NULL,

scadenza date NOT NULL

) Engine=InnoDB;

Page 46: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE CasaFarmaceutica(nome, recapito)

SQL-DDL Statement

CREATE TABLE casaFarmaceutica(

nome varchar(20) PRIMARY KEY,

Corso di Basi di Dati Relazionali – 05 Giugno 09

nome varchar(20) PRIMARY KEY,

recapito varchar(100) NOT NULL

)engine=innodb;

Page 47: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE CategoriaFT(codice,nome)

SQL-DDL Statement

CREATE TABLE categoriaFT(

codice int(10) unsigned

Corso di Basi di Dati Relazionali – 05 Giugno 09

codice int(10) unsigned

auto_increment PRIMARY KEY,

nome varchar(20) NOT NULL

)engine=innodb;

Page 48: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Farmaco(codiceP*, prescrivibile, brevettato, equivalente*,nome

Casa*,categoria*)

SQL-DDL Statement

CREATE TABLE Farmaco(

codiceP int(10) unsigned auto_increment PRIMARY KEY,

prescrivibile boolean NOT NULL,

brevettato boolean NOT NULL,

Corso di Basi di Dati Relazionali – 05 Giugno 09

brevettato boolean NOT NULL,

equivalente int(10) unsigned,

nomeCasa varchar(20) NOT NULL,

categoria int(10) unsigned NOT NULL,

FOREIGN KEY (codiceP) REFERENCES Prodotto(codice),

FOREIGN KEY (nomeCasa) REFERENCES casaFarmaceutica(nome),

FOREIGN KEY (categoria) REFERENCES categoriaFT(codice)

) engine=innodb;

Page 49: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Farmaco(codiceP*, prescrivibile, brevettato,

equivalente*,nome Casa*,categoria*)

Modifichiamo la tabella Farmaco per inserire il vincolo di integrità

referenziale sull’attributo equivalente.

Corso di Basi di Dati Relazionali – 05 Giugno 09

equivalente*,nome Casa*,categoria*)

SQL-DDL Statement

ALTER TABLE Farmaco

ADD CONSTRAINT FK_farmaco_4

FOREIGN KEY (equivalente) REFERENCES Farmaco(codiceP);

Page 50: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Scontrino(data,numero)

SQL-DDL Statement

CREATE TABLE Scontrino(

data date not null,

Corso di Basi di Dati Relazionali – 05 Giugno 09

data date not null,

numero int(10) not null,

CONSTRAINT PK_scontrino PRIMARY KEY(data, numero)

) engine=innodb;

Note La relazione ha una chiave primaria composta da

due attributi

Page 51: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Medico(CF, nome,cognome)

SQL-DDL Statement

CREATE TABLE Medico(

cf char(16) PRIMARY KEY,

Corso di Basi di Dati Relazionali – 05 Giugno 09

nome varchar(20),

cognome varchar(20)

) engine=innodb;

Page 52: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Paziente(CF, nome,cognome)

SQL-DDL Statement

CREATE TABLE Paziente(

cf char(16) PRIMARY KEY,

Corso di Basi di Dati Relazionali – 05 Giugno 09

nome varchar(20),

cognome varchar(20)

) engine=innodb;

Page 53: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Prescrizione(data,numero,medico*,paziente*,

(data_scontrino, num_scontrino)*)

CREATE TABLE Prescrizione(

data date NOT NULL,

numero int(10) unsigned NOT NULL,

medico char(16) NOT NULL,

Corso di Basi di Dati Relazionali – 05 Giugno 09

medico char(16) NOT NULL,

paziente char(16) NOT NULL,

data_scontrino date NOT NULL,

num_scontrino int(10) NOT NULL,

PRIMARY KEY(data, numero,medico),

FOREIGN KEY (data_scontrino,num_scontrino)

REFERENCES Scontrino(data,numero),

FOREIGN KEY (medico) REFERENCES Medico(cf),

FOREIGN KEY (paziente) REFERENCES Paziente(cf) ) engine=innodb;

Page 54: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Interazione (categoria1,categoria2)

SQL-DDL Statement

CREATE TABLE Interazione(

categoria1 int(10) unsigned,

categoria2 int(10) unsigned,

Corso di Basi di Dati Relazionali – 05 Giugno 09

categoria2 int(10) unsigned,

FOREIGN KEY (categoria1) REFERENCES CategoriaFT(codice),

FOREIGN KEY (categoria2) REFERENCES CategoriaFT(codice),

PRIMARY KEY (categoria1,categoria2)

) engine=innodb;

Note La chiave primaria è formata dalla coppia

(categoria1,categoria2)

Page 55: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE DettaglioScontrino((data,numero)*,prodotto*,

quantità)

CREATE TABLE DettaglioScontrino(

data date NOT NULL,

numero int(10) NOT NULL,

Corso di Basi di Dati Relazionali – 05 Giugno 09

numero int(10) NOT NULL,

prodotto int(10) unsigned NOT NULL,

quantità int NOT NULL DEFAULT 1,

FOREIGN KEY (prodotto) REFERENCES Prodotto(codice),

CONSTRAINT FK_prescrizione FOREIGN KEY (data,numero)

REFERENCES Scontrino(data,numero),

PRIMARY KEY(data, numero,prodotto)

) engine=innodb;

Page 56: Basi di Dati Relazionali - mat.unical.itrullo/teaching/basidati_rel/a.a.09-10/... · UNIVERSITA' DELLA CALABRIA OBIETTIVIDELCORSO-RIEPILOGO Le lezioni di laboratorio del corso di

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE DettaglioPrescrizione(codiceFarmaco*,(dataP,

numeroP,medico)*)

CREATE TABLE DettaglioPrescrizione(

codiceFarmaco int(10) unsigned NOT NULL,

data date NOT NULL,

Corso di Basi di Dati Relazionali – 05 Giugno 09

numeroP int(10) unsigned NOT NULL,

medico char(16) NOT NULL,

FOREIGN KEY (codiceFarmaco) REFERENCES Farmaco(codiceP),

CONSTRAINT FK_dett_prescr FOREIGN KEY (data, numeroP,medico)

REFERENCES Prescrizione(data,numero,medico)

CONSTRAINT FK_dett_prescr

PRIMARY KEY(data, numeroP,medico,codiceFarmaco)

) engine=innodb;