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

Post on 22-Aug-2020

0 views 0 download

Transcript of 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

Basi di Dati

Corso di Laurea in Informatica

a.a. 2012-2013

Laboratorio

Ing. G. Laboccetta

Dott.ssa. V. Policicchio

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

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

PROGETTAZIONE DELLA BASE DI

DATI

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

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

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

OBIETTIVI DELLA LEZIONE

� SQL:� Funzionalità DDL

� Sintassi� Esempi

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

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

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)

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)

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

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

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

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

DOMINI

�Domini elementari (predefiniti)

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

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

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

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

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 )

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

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)

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

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

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

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!

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

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

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

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

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)

)

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

MODIFICHE DEGLI SCHEMI

� ALTER DOMAIN

� ALTER TABLE

� DROP DOMAIN

� DROP TABLE

...

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)

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

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)

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)

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

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

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA

Gestione di una Farmacia -Progettazione Fisica

Corso di Basi di Dati Relazionali – 05 Giugno 09

UNIVERSITA' DELLA CALABRIA SCHEMA RISTRUTTURATO

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)

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

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

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;

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;

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;

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.

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;

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;

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;

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;

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

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;

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