• Non ci sono risultati.

Sistemi per la Gestione delle Basi di Dati 23 Febbraio 2016

N/A
N/A
Protected

Academic year: 2021

Condividi "Sistemi per la Gestione delle Basi di Dati 23 Febbraio 2016"

Copied!
3
0
0

Testo completo

(1)

Sistemi per la Gestione delle Basi di Dati

23 Febbraio 2016

1. (8 Punti) Sono date le relazioni seguenti (le chiavi primarie sono sottolineate, gli attributi opzionali sono indicati con *).

LIBRO(ISBN, Editore, DataPubblicazione)

AUTORE(CodAutore, Nome, Cognome, DataNascita)

TOTALE VENDITE LIBRERIA(CodLibreria, ISBN, TotaleNumCopieVendute, IncassoComplessivo) INCASSO AUTORE(ISBN, CodAutore, ContributoAutore, IncassoAutore)

VENDITA LIBRO(CodLibreria, ISBN, Data, NumCopieVendute, Incasso)

LIBRO PI`U VENDUTO(CodLibreria, Timestamp, ISBN, IncassoComplessivo, NumeroAutori) Si vogliono gestire in modo automatico le informazioni relative alle vendite di libri. La tabella LIBRO elenca i libri in vendita presso le diverse librerie. Per ciascuna libreria, la tabella TOTALE VENDITE LIBRERIA riporta il numero di copie complessivamente vendute per ciascun libro e l’incasso conseguito. Ogni libro pu`o avere uno o pi`u autori. Per ogni libro la tabella INCASSO AUTORE riporta l’elenco degli au- tori del libro. A ciascun autore del libro spetta un incasso proporzionale al suo contributo al libro (attributo ContributoAutore nella tabella INCASSO AUTORE, attributo numerico con valori tra 0 e 1).

L’attributo IncassoAutore indica l’incasso ottenuto dall’autore sul libro, ed `e calcolato come prodotto dell’incasso conseguito sul libro moltiplicato per il contributo dell’autore al libro.

Si scrivano i trigger per eseguire le seguenti operazioni.

(1) Aggiornamento delle vendite di un libro in una libreria e dell’incasso per i co-autori del libro. Ogni giorno sono memorizzate le informazioni sulle vendite giornaliere di un libro in una libreria nella tabella VENDITA LIBRO (inserimento di un record). Le seguenti operazioni devono quindi essere eseguite.

(a) Si deve aggiornare nella tabella TOTALE VENDITE LIBRERIA il numero complessivo di copie del libro vendute presso la libreria e l’importo complessivamente incassato dalla libreria per quel libro.

Per ciascuna libreria `e gi`a presente nella tabella TOTALE VENDITE LIBRERIA il record relativo ad un libro solo per i libri per cui `e stata precedentemente venduta almeno una copia.

Si deve poi registrare (inserimento nella tabella LIBRO PI`U VENDUTO) il libro che al momento ha conse- guito l’incasso maggiore nella libreria. Si ipotizzi che ci sia al pi`u un libro che ha conseguito tale valore di incasso nella libreria. Per tale libro si deve registrare l’incasso complessivo conseguito nella libreria e il numero di autori del libro. Il valore dell’attributo Timestamp `e assegnato mediante la variabile di sistema sysdate.

(b) Si deve aggiornare l’incasso complessivo per tutti gli autori del libro (aggiornamento dell’attributo IncassoAutore) tenendo conto delle nuove copie vendute.

(2) Vincolo di integrit`a sul contributo degli autori di un libro. La somma dei contributi (attributo ContributoAutore) dei diversi autori ad uno stesso libro deve sempre essere minore o uguale a 1.

Ogni operazione di modifica della tabella INCASSO AUTORE che causi la violazione del vincolo non deve essere eseguita.

(2)

create or replace trigger AGGIORNA_VENDITA_LIBRO after insert on VENDITA_LIBRO

for each row declare begin

select count(*) into x

from TOTALE_VENDITE_LIBRERIA

where ISBN = :new.ISBN and codlibreria = :new.codlibreria;

if x = 0 then

insert into TOTALE_VENDITE_LIBRERIA

values (new.codlibreria, new.isbn, new.numcopievendute, new.incasso) else

update TOTALE_VENDITE_LIBRERIA

set incassocomplessivo = incassocomplessivo + new.incasso,

totalenumcopievendute = totalenumcopievendute + new.numcopievendute where isbn = :new.isbn and codlibreria = :new.codlibreria;

end if;

select max(incasso) into myincasso from TOTALE_VENDITE_LIBRERIA

where codlibreria = :new.codlibreria select isbn into myisbn

from TOTALE_VENDITE_LIBRERIA

where codlibreria = :new.codlibreria and incassocomplessivo = myincasso select count(*) into myautori from incasso_autore

where isbn = new.isbn

insert into LIBRO_piu_venduto (...)

values (:new.libreria, sysdate, myisbn, myincasso, myautori) update incasso_autore

set incasso_autore =incasso_autore + new.incasso*contributoautore where isbn = new.isbn;

end

2

(3)

create trigger contributo after insert on INCASSO_AUTORE begin

select count(*) into X from INCASSO_AUTORE where isbn in

(select isbn

from INCASSO_AUTORE group by isbn

having sum(contributo) <>1) if (X <>0) then

rollback end if;

end

3

Riferimenti

Documenti correlati

3282577616, al quale risponderemo con la disponibilità del/dei titolo/i, o eventuale ordine dello stesso e comunicheremo come effettuare il pagamento, per poi aggiungere il libro

La motivazione del personale di vendita rappresenta un punto di potenziale fragilità della gestione dell’attività di vendita, perché il lavoro non può prescindere da una spinta

(a) Si deve aggiornare nella tabella TOTALE VENDITE LIBRERIA il numero complessivo di copie del libro vendute presso la libreria e l’importo complessivamente incassato dalla

Gestisci_offline offline pcap pcap_ _close close Gestisce la Gestisce la redirezione redirezionedel del traffico (output in traffico (output in un file e non a un file e non a

In corrispondenza e all'interno delle traverse angolari di raccordo della doppia catena quattro grandi nuclei di calcestruzzo a pianta poligonale sono superstiti,

Quanto all'epoca cui possiamo far risalire la primitiva costruzione: l'i m piego di mura tura simile a quella di ciot- toli; gli archi tozzi, perchè a profili paralleli e

fabbrica venne eretta dall'Abbreviatore Apostolico Giovanni Pietro Turci come fa fede l'iscrizione incisa nel fregio della prima trabeazione: IO PETRUS TURCIUS

Pertanto, al termine del nostro percorso, riap- parirà lo schema di derivazione storico-artistica di Benjamin: così come la musica elettroacustica ha sviluppato la propria