Che materia stai cercando?

Anteprima

ESTRATTO DOCUMENTO

Progetto di Esposito D'Onofrio Gennaro e Esposito Ciro

GRANT SELECT ON UTENTE_DBA.prodotti TO clienti ;

 Creazione Tabelle

CLIENTI:

CREATE TABLE CLIENTI (

CF VARCHAR2(16) PRIMARY KEY,

NOME VARCHAR2(40) NOT NULL,

COGNOME VARCHAR2(40) NOT NULL,

CELLULARE NUMBER(14,0),

TELEFONO NUMBER (14,0) NOT NULL,

EMAIL VARCHAR2(40) NOT NULL,

VIA_PIAZZA VARCHAR2(40),

CAP NUMBER(5,0)

)

STORAGE (INITIAL 41K);

TESSERE:

CREATE TABLE TESSERE (

ID_TESSERA INTEGER PRIMARY KEY,

DATA_EMISSIONE DATE NOT NULL,

SCADENZA DATE NOT NULL,

PUNTI INTEGER NOT NULL,

LIV_FIDUCIA INTEGER,

CF VARCHAR2(16) UNIQUE,

RICEVUTA VARCHAR(20)

)

STORAGE (INITIAL 14K NEXT 11k);

ALTER TABLE TESSERE

ADD CONSTRAINT FK_CLI_TES FOREIGN KEY(CF)

REFERENCES CLIENTI(CF)

ON DELETE SET NULL;

DETTAGLI:

CREATE TABLE DETTAGLI (

CF VARCHAR2(16) ,

ID_PRODOTTO INTEGER ,

DATA DATE,

QTA INTEGER,

PRIMARY KEY (CF,ID_PRODOTTO)

)

STORAGE (INITIAL 54K) 5

Progetto di Esposito D'Onofrio Gennaro e Esposito Ciro

FORNITORI:

CREATE TABLE FORNITORI (

ID_FORNITORE INTEGER PRIMARY KEY,

NOME VARCHAR2(20) NOT NULL,

COGNOME VARCHAR2(20) NOT NULL,

MADALITA_PAGAMENTO VARCHAR2(20),

IVA FLOAT NOT NULL,

EMAIL VARCHAR2(50),

TELEFONO NUMBER(14,0) NOT NULL,

CELLULARE NUMBER(14,0),

VIA_PIAZZA VARCHAR2(50) NOT NULL,

CAP NUMBER(5,0),

FAX NUMBER(14,0)

)

STORAGE (INITIAL 5K);

PRODOTTI:

CREATE TABLE PRODOTTI (

ID_PRODOTTO INTEGER PRIMARY KEY,

NOME VARCHAR(20) NOT NULL,

PREZZO FLOAT NOT NULL,

QTA INTEGER,

DESCRIZIONE CLOB DEFAULT 'DATI NON DISPONIBILI',

DATA_RICHIESTA DATE,

ID_FORNITORE INTEGER

)

LOB(DESCRIZIONE) STORE AS LOB_PRODOTTI(TABLESPACE db_lob)

STORAGE (INITIAL 67K);

ALTER TABLE PRODOTTI

ADD CONSTRAINT FK_PROD_FORN FOREIGN KEY(ID_FORNITORE)

REFERENCES FORNITORI (ID_FORNITORE)

ON DELETE SET NULL;

MANGIMI:

CREATE TABLE MANGIMI (

ID_MANGIME INTEGER PRIMARY KEY,

MARCA VARCHAR2(20),

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


ACQUISTATO

1 volte

PAGINE

18

PESO

3.02 MB

PUBBLICATO

+1 anno fa


DETTAGLI
Esame: Basi di Dati
Corso di laurea: Corso di laurea in ingegneria informatica
SSD:
A.A.: 2015-2016

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à Napoli Federico II - Unina o del prof Moscato Vincenzo.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Basi di dati

Esercitazione Basi di dati
Esercitazione
Basi di Dati
Dispensa
Basi di Dati – Campionato di calcio
Appunto
Basi di Dati - Boyce /Codd
Dispensa