Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. ·...

52
Corso di Basi di Dati Relazionali – 05 Giugno 09 UNIVERSITA' DELLA CALABRIA Basi di Dati Corso di Laurea in Informatica a.a. 2012-2013 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio

Transcript of Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. ·...

Page 1: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

Basi di Dati

Corso di Laurea in Informatica

a.a. 2012-2013

Laboratorio

Ing. G. Laboccetta

Dott.ssa. V. Policicchio

Page 2: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

PROGETTAZIONE FISICASQL-DDL

OBIETTIVO:

Rappresentare i dati della realtà di interesse

attraverso le strutture dati di uno specifico DBMS

Page 3: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

PROGETTAZIONE DELLA BASE DI

DATI

Page 4: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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

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 5: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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-

DDL

b. Popolamento della base di dati

c. Realizzazione delle interrogazioni per operare sui dati

Page 6: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

OBIETTIVI DELLA LEZIONE

� SQL:� Funzionalità DDL

� Sintassi� Esempi

Page 7: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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)

• 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 8: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

MODELLI DI DATI

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

� Schema concettuale � modello concettuale

� Schema logico� modello logico

� Schema fisico� modello logico + parametri fisici

Page 9: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

MODELLI DEI DATI ADOTTATI

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

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

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

Page 10: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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)

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

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

Page 11: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SQL- FUNZIONALITÀ DDL

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

� 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 12: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

DEFINIZIONE DI TABELLE

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

Page 13: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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

Stipendio NUMERIC(9) DEFAULT 0,

FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip),

UNIQUE (Cognome,Nome) )

Page 14: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

DOMINI

�Domini elementari (predefiniti)

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

Page 15: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

DOMINI ELEMENTARI

– Carattere

singoli caratteri o stringhe, anche di lunghezza variabile:

char(n)

character(n)

stringhe di lunghezza fissa

varchar(n)

char varying(n)

stringhe di lunghezza variabile

nchar(n)

nvarchar(n)

nchar varying(n))

come sopra ma UNICODE

Page 16: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

DOMINI ELEMENTARI

– Numerici esatti e approssimati:

int, integer, smallint interi

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 17: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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)

• bit varying(n)

– Introdotti in SQL 1999

• boolean

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

Page 18: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

DEFINIZIONE DI DOMINI

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

• SINTASSI:CREATE DOMAIN NomeDominioas DominioPreesistente [ Default ] [ Vincoli ]

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

Page 19: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA VINCOLI

INTRARELAZIONALI

� NOT NULL

� UNIQUE definisce attributi che identificano una tupla

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

� CHECK, consente di verificare che una condizione venga rispettata

Page 20: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

UNIQUE E PRIMARY KEY

Due forme:• singolo attributo:

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

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

Page 21: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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

Stipendio NUMERIC(9) DEFAULT 0,

FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip),

UNIQUE (Cognome,Nome) )

Page 22: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

PRIMARY KEY, ALTERNATIVE

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

Oppure

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

Page 23: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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

Stipendio NUMERIC(9) DEFAULT 0,

FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip),

UNIQUE (Cognome,Nome) )

Page 24: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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,

Attenzione: non è la stessa cosa!

Page 25: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

VINCOLI INTERRELAZIONALI

� CHECK

� REFERENCES e FOREIGN KEY� Permettono di definire vincoli di integrità referenziale

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

� E' possibile definire politiche di reazione alla violazione

Page 26: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

REFERENCES E FOREIGN KEY

• Permettono di definire vincoli di integrità referenziale.

� Sintassi:– per singoli attributi:

references dopo la specifica del dominio– riferimenti su più attributi:

foreign key(Attributo,...,Attributo) referencesALTRATABELLA(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 27: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

Matricola

3987

3295

9345

Vigili Cognome

Rossi

Neri

Neri

Nome

Luca

Piero

Mario

Mori Gino7543

InfrazioniCodice

34321

73321

64521

53524

Data

1/2/95

4/3/95

5/4/96

5/2/98

Vigile

3987

3295

3295

9345

Prov Numero

MI

TO

PR

PR

39548K

E39548

839548

839548

EsempioEsempioEsempioEsempio

Page 28: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

InfrazioniCodice

34321

73321

64521

53524

Data

1/2/95

4/3/95

5/4/96

5/2/98

Vigile

3987

3295

3295

9345

Prov Numero

MI

TO

PR

PR

39548K

E39548

839548

839548

Auto Prov Numero

MI

TO

PR

39548K

E39548

839548

Cognome

Rossi

Rossi

Neri

Nome

Mario

Mario

Luca

EsempioEsempioEsempioEsempio

Page 29: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

CREATE TABLE, ESEMPIO

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)

)

Page 30: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

MODIFICHE DEGLI SCHEMI

� ALTER DOMAIN

� ALTER TABLE

� DROP DOMAIN

� DROP TABLE

...

Page 31: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

MODIFICHE DEGLI SCHEMI

ALTER 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), Provincia CHAR(2), Numero CHAR(6) )

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

Page 32: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

MODIFICHE DEGLI SCHEMI

DROP TABLE

� Elimina una tabella� Sintassi:

DROP TABLE NomeTabella restrict | cascade

� Esempio:� 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 33: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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 index• Sintassi (semplificata):

CREATE [UNIQUE] INDEX NomeIndice onNomeTavola(col_1, col_2, …, col_n)

• Esempio:create index IndiceIP on Infrazioni(Provincia)

Page 34: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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)

Page 35: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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);

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

Page 36: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

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

Page 37: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

Gestione di una Farmacia -Progettazione Fisica

Page 38: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA SCHEMA RISTRUTTURATO

Page 39: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

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

PRODOTTO(codice, nome, descrizione, scadenza, prezzo)

CASAFARMACEUTICA(nome,recapito)

FARMACO(codiceP*, prescrivibile, brevettato, num_anni,

equivalente*, nomeCasa*)

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

SCONTRINO(data,numero)

Page 40: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

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

PRODOTTOPROFUMERIA(codiceP*, tipo, cap_contenitore,

mesi_ap, colore)

con un vincolo di integrità referenziale tra:

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

PERSONA(CF, nome, cognome, è_medico, cod_ASL)

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

numero_s)*)

con un vincolo di integrità referenziale tra:

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

(2) l’attributo paziente e la relazione PERSONA

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

Page 41: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

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

FARMACOPRESCRITTO((numeroRic,medicoRic)*,farmaco*,

quantità)

con un vincolo di integrità referenziale tra:

(1) gli attributi (numeroRic,medicoRic) e la relazione PRESCRIZIONE,

(2) l’attributo farmaco e la relazione FARMACO

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

prezzo_vendita, sconto_applicato)

con un vincolo di integrità referenziale tra:

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

(2) l’attributo prodotto e la relazione PRODOTTO

Page 42: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Prodotto(codice, nome, descrizione, scadenza)

SQL-DDL Statement

CREATE TABLE prodotto(

codice int(10) unsigned

auto_increment PRIMARY KEY,

nome varchar(20) NOT NULL,

descrizione varchar(100) NOT NULL,

scadenza date NOT NULL

prezzo real NOT NULL

) Engine=InnoDB;

Page 43: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE casaFarmaceutica(data, numero)

SQL-DDL Statement

CREATE TABLE casaFarmaceutica(

nome varchar(20) Primary key,

recapito varchar(100) NOT NULL

)engine=innodb;

Page 44: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Farmaco(codiceP*, prescrivibile, brevettato, num_anni,

equivalente*,nomeCasa*)

SQL-DDL Statement

CREATE TABLE Farmaco(

codiceP int(10) unsigned PRIMARY KEY,

prescrivibile boolean NOT NULL,

brevettato boolean NOT NULL,

num_anni int(10) unsigned,

equivalente int(10) unsigned,

nomeCasa varchar(20) NOT NULL,

FOREIGN KEY (codiceP) REFERENCES Prodotto(codice),

FOREIGN KEY (nomeCasa) REFERENCES casaFarmaceutica(nome)

) engine=innodb;

Page 45: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Farmaco(codiceP*, prescrivibile, brevettato,

num_anni, equivalente*,nomeCasa*)

SQL-DDL Statement

ALTER TABLE Farmaco

ADD CONSTRAINT FK_farmaco_4

FOREIGN KEY (equivalente) REFERENCES Farmaco(codiceP);

Modifichiamo la tabella Farmaco per inserire il vincolo di integrità

referenziale sull’attributo equivalente.

Page 46: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE Scontrino(nome, recapito)

SQL-DDL Statement

CREATE TABLE scontrino(

Data date NOT NULL ,

numero int(10) unsigned NOT NULL,

PRIMARY KEY(numero,medico)

)engine=innodb;

Page 47: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE PRODOTTOPROFUMERIA(codiceP*, tipo, cap_contenitore, mesi_ap,

colore)

SQL-DDL Statement

CREATE TABLE ProdottoProfumeria(

codiceP int(10) unsigned PRIMARY KEY,

tipo varchar(16) NOT NULL,

cap_contenitore int ,

mesi_ap int unsigned,

colore varchar(16),

FOREIGN KEY (codiceP) REFERENCES Prodotto(codice)

) engine=innodb;

Page 48: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE PERSONA(CF, nome, cognome, è_medico, cod_ASL)

SQL-DDL Statement

CREATE TABLE Medico(

cf char(16) PRIMARY KEY,

nome varchar(20) NOT NULL,

cognome varchar(20) NOT NULL,

è_medico boolean NOT NULL,

cod_ASL varchar(20)

) engine=innodb;

Page 49: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

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

(data_s,numero_s)*)

CREATE TABLE Prescrizione(

numero int(10) unsigned NOT NULL,

medico char(16) NOT NULL,

data date,

paziente char(16),

Data_s date,

Numero_s unsigned int(10),

PRIMARY KEY(numero,medico),

FOREIGN KEY (medico) REFERENCES Persona(cf),

FOREIGN KEY (paziente) REFERENCES Persona(cf)

) engine=innodb;

Page 50: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

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

(data_s,numero_s)*)

SQL-DDL Statement

ALTER TABLE Prescrizione

ADD CONSTRAINT FK_Prescrizione_3

FOREIGN KEY (data_s,numero_s) REFERENCES

Scontrino(data,numero);

Modifichiamo la tabella Ricetta per inserire il vincolo di integrità

referenziale sugli attributi (data_s, numero_s).

Page 51: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

RELAZIONE FARMACOPRESCRITTO((numeroRic,medicoRic)*,

farmaco*, quantità)

CREATE TABLE FarmacoPrescitto(

numeroRic int(10) unsigned NOT NULL,

medicoRic char(16) NOT NULL,

farmaco int(10) unsigned NOT NULL,

quantità int unsigned NOT NULL default 1,

FOREIGN KEY (farmaco) REFERENCES Farmaco(codiceP),

CONSTRAINT FK_dett_ric FOREIGN KEY (numeroRic,medicoRic)

REFERENCES Prescrizione(numero,medico)

CONSTRAINT FK_dett_prescr

PRIMARY KEY(numeroRic,medicoRic,farmaco)

) engine=innodb;

Page 52: Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. · Corso di Basi di Dati Relazionali –05 Giugno 09 UNIVERSITA' DELLA CALABRIA FASIESTEPDEL

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

SCHEMA FISICO –DEFINIZIONE DELLE TABELLE

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

quantità, prezzo_vendita, sconto_applicato)

Completare per esercizio