D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

QTA FLOAT,

SCADENZA DATE NOT NULL,

ID_PRODOTTO INTEGER UNIQUE

) 6

Progetto di Esposito D'Onofrio Gennaro e Esposito Ciro

STORAGE (INITIAL 60K);

ALTER TABLE MANGIMI

ADD CONSTRAINT FK_MAN_PROD FOREIGN KEY(ID_PRODOTTO)

REFERENCES PRODOTTI (ID_PRODOTTO)

ON DELETE SET NULL;

ACCESSORI:

CREATE TABLE ACCESSORI (

ID_ACCESSORI INTEGER PRIMARY KEY,

USO VARCHAR2(20),

ID_PRODOTTO INTEGER

)

STORAGE (INITIAL 73K);

ALTER TABLE ACCESSORI

ADD CONSTRAINT FK_ACC_PROD FOREIGN KEY(ID_PRODOTTO)

REFERENCES PRODOTTI (ID_PRODOTTO)

ON DELETE SET NULL;

ANIMALE:

CREATE TABLE ANIMALI(

ID_ANIMALE INTEGER PRIMARY KEY,

RAZZA VARCHAR2(20) NOT NULL,

TIPO VARCHAR2(20) NOT NULL,

MISURA VARCHAR2(20),

NANO NUMBER(1) CHECK (NANO =0 OR NANO=1),

COLORE VARCHAR2(20),

ID_PRODOTTO INTEGER

)

STORAGE(INITIAL 134K);

ALTER TABLE ANIMALI

ADD CONSTRAINT FK_ANI_PROD FOREIGN KEY(ID_PRODOTTO)

REFERENCES PRODOTTI (ID_PRODOTTO)

ON DELETE SET NULL; 7

Progetto di Esposito D'Onofrio Gennaro e Esposito Ciro

 Specifiche

 Info prodotti

- Il negozio è specializzato nella vendita di particolari animali oltre ad accessori e

mangime per animali.

Per ogni PRODOTTO si vuole tener traccia di un codice identificativo,

del nome, del prezzo, di una opportuna descrizione e della

quantità ancora disponibile in negozio.

Per quanto riguarda gli ANIMALI è necessario considerare il tipo di classe di

appartenenza, mammiferi e uccelli, e a loro volta il tipo di animale in vendita:

in particolare per MAMMIFERO si considerano cane, gatto, criceto e conigli,

mentre per UCCELLI si considerano pappagalli e canarini.

In dettaglio, per particolari Mammiferi(cane,criceto,coniglio) si tiene conto della

misura degli stessi .

Inoltre gli ACCESSORI sono memorizzati nella base di dati con un codice univoco,

la marca e l'uso mentre per il MANGIME contrassegnato da un codice, si considera

la marca e la quantità.

 Info clienti e tessere

- Ogni CLIENTE tesserato viene salvato nella base di dati con Codice Fiscale,

nome, cognome, indirizzo e recapito nel caso in cui riceva offerte oppure vinca ac-

cessori per ogni totale di punti ottenuti da ogni acquisto.

Dunque ad ogni cliente viene associata una TESSERA

contrassegnata da un codice sulla quale vengono salvati il

punti guadagnati grazie all’acquisto di

numero dei prodotti

nel negozio.

Sulla Tessera è memorizzato il livello di Fiducia (1-5) del cliente cosicché il nego-

ziante possa considerare il caso in cui fare ulteriori sconti al cliente che ha un livel-

lo di fiducia alto.

Inoltre è registrata la data dell'emissione della stessa e quindi anche la relativa sca-

denza.

 Info Fornitori

E' opportuno che il negoziante abbia informazioni memorizzate sulla base di dati

relative ai fornitori dei prodotti acquistati.

Per ogni FORNITORE è memorizzato un codice univoco, nome, cognome, recapito e

la modalità di pagamento con la quale il negoziante ha pagato i prodotti.

8

Progetto di Esposito D'Onofrio Gennaro e Esposito Ciro

 Normalizzazione

E' possibile verificare che la base di dati rispetta le 3 forme normali.

9

Progetto di Esposito D'Onofrio Gennaro e Esposito Ciro

 Query e Trigger

Implementazione di query e trigger nella base di dati.

Query

1) Elencare i prodotti con i rispettivi prezzi presenti nel negozio.

SELECT NOME, PREZZO

FROM PRODOTTI;

2) Elenca l'identificativo tessera e nome dei tesserati del giorno 20/01/2015.

SELECT C.NOME, T.ID_TESSERA AS NUMERO_TESSERA

FROM TESSERE T, CLIENTI C

WHERE T.CF=C.CF AND DATA_EMISSIONE='20-gen-15';

3) Il prezzo del mangime della marca Prolife acquistato dal fornitore gennaro

mocerino.

SELECT P.PREZZO

FROM ((FORNITORI F JOIN PRODOTTI P ON F.ID_FORNITORE=P.ID_FORNITORE) JOIN

MANGIMI M ON P.ID_PRODOTTO=M.ID_PRODOTTO)

WHERE M.MARCA='PROLIFE' and F.NOME='gennaro' and F.COGNOME='mocerino';

4) Per ogni tipo di animale, il numero dei clienti che lo hanno acquistato.

SELECT A.TIPO AS ANIMALE, COUNT(C.CF) AS NUMERO_COMPRATORI

FROM (ANIMALI A JOIN DETTAGLI D ON A.ID_PRODOTTO=D.ID_PRODOTTO) JOIN

CLIENTI C ON C.CF=D.CF

GROUP BY A.TIPO;

5) Trovare per ogni cliente l'ammontare della spesa in acquisti qualora sia

maggiore di 100 euro.

SELECT C.NOME, SUM(P.PREZZO*D.QTA) AS SPESA

FROM (CLIENTI C JOIN DETTAGLI D ON C.CF=D.CF) JOIN PRODOTTI P ON

P.ID_PRODOTTO=D.ID_PRODOTTO

GROUP BY C.NOME

HAVING SUM(P.PREZZO*D.QTA)>100; 10

Progetto di Esposito D'Onofrio Gennaro e Esposito Ciro

6) Elencare nome , cognome ed e-mail del cliente che ha meno punti sulla tessera.

SELECT C.NOME, C.COGNOME, C.EMAIL

FROM CLIENTI C JOIN TESSERE T ON T.CF=C. CF

WHERE T.PUNTI= ( SELECT min(T1.PUNTI)

FROM TESSERE T1 );

7) Nome e cognome del fornitore che ha fornito sia cani sia criceti.

SELECT F.NOME, F.COGNOME

FROM (FORNITORI F JOIN PRODOTTI P ON F.ID_FORNITORE=P.ID_FORNITORE) JOIN

ANIMALI A ON P.ID_PRODOTTO=A.ID_PRODOTTO

WHERE A.TIPO='cane'

INTERSECT

SELECT F.NOME,F.COGNOME

FROM (FORNITORI F JOIN PRODOTTI P ON F.ID_FORNITORE=P.ID_FORNITORE)JOIN

ANIMALI A ON P.ID_PRODOTTO=A.ID_PRODOTTO

WHERE A.TIPO='criceto' ; 11

Progetto di Esposito D'Onofrio Gennaro e Esposito Ciro

 Trigger

CREATE OR REPLACE TRIGGER T1

AFTER INSERT ON DETTAGLI

FOR EACH ROW

DECLARE PRICE PRODOTTI.PREZZO%TYPE;

DECLARE INCREMENTO NUMBER(4,2) NOT NULL :=0.0;

BEGIN

SELECT P.PREZZO INTO PRICE

FROM PRODOTTI P, DETTAGLI D

WHERE P.ID_PRODOTTO=D.ID_PRODOTTO;

INCREMENTO:=(PRICE*QTA)/10;

IF(INCREMENTO>=10) THAN

UPDATE TESSERE SET PUNTI=PUNTI+INCREMENTO

WHERE CF=:NEW.CF;

ELSE

RAISE_APPLICATION_ERROR(-20000,'PREZZO BASSO PER INCREMENTARE I

PUNTI');

END IF;

END; 12

Progetto di Esposito D'Onofrio Gennaro e Esposito Ciro

Allegati

- Modelli E/R e E/R semplificato

- Progettazione logica

- Dimensionamento base di dati 13

Dettagli
Publisher
A.A. 2014-2015
18 pagine
1 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher cikenthebest di informazioni apprese con la frequenza delle lezioni di Basi di Dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof Moscato Vincenzo.