Corso di Laurea in Informatica Basi di Datirullo/teaching/basi_di_dati/... · 2013. 1. 23. ·...
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