Anteprima
Vedrai una selezione di 10 pagine su 90
Basi di Dati Esercizi Pag. 1 Basi di Dati Esercizi Pag. 2
Anteprima di 10 pagg. su 90.
Scarica il documento per vederlo tutto.
Basi di Dati Esercizi Pag. 6
Anteprima di 10 pagg. su 90.
Scarica il documento per vederlo tutto.
Basi di Dati Esercizi Pag. 11
Anteprima di 10 pagg. su 90.
Scarica il documento per vederlo tutto.
Basi di Dati Esercizi Pag. 16
Anteprima di 10 pagg. su 90.
Scarica il documento per vederlo tutto.
Basi di Dati Esercizi Pag. 21
Anteprima di 10 pagg. su 90.
Scarica il documento per vederlo tutto.
Basi di Dati Esercizi Pag. 26
Anteprima di 10 pagg. su 90.
Scarica il documento per vederlo tutto.
Basi di Dati Esercizi Pag. 31
Anteprima di 10 pagg. su 90.
Scarica il documento per vederlo tutto.
Basi di Dati Esercizi Pag. 36
Anteprima di 10 pagg. su 90.
Scarica il documento per vederlo tutto.
Basi di Dati Esercizi Pag. 41
1 su 90
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Algebra relazionale

SOLO un attributo

Almeno due A, almeno due B

MaxMin

UNO SOLO tabella

SIA __ SIA

Nessuna Tabella

  • A
  • B
  • C
  • D
  • Almeno due
  • Almeno due
  • Nessuno (non comune)
  • Almeno uno
  • Almeno due
  • Almeno due
  • Nessuno (non comune)
  • Tab
  • TAB
  • (Non è l'unica o è Nessuna)

Anno 2015 (Traccia 1)

IMMOBILI codImmobile (tipologia, intestino)

CLIENTI codCliente (nome, cognome, intestino)

PREVENTIVI codPreventivo (data, prezzo, codCliente, codImmobile)

VENDITE codVendita (importo, data, modalitàPagamento, codPreventivo)

  1. Si determinino il nome e il cognome dei clienti che nel 2016 hanno richiesto preventivi di soli appartamenti.

    *SOLO di abitazio

IMOBILI

  • PZ1
  • σ = tipologia = appartamento
  • |r1. codImmobile
  • P1. codImmobile

PREVENTIVI

  • P1
  • σ [data > '2016-01-01']
  • ∧ < '2016-12-31'
  • |r1. codImmobile
  • P1. codImmobile

CLIENTI

  • PC1
  • |R3. codCliente
  • c1. codCliente
  • πc1.nome, c2.cognome

3 Luglio 2015 (Traccia 1)

  • CLIENTI (codCliente, nome, cognome, indirizzo)

  • TESSERE (codTessera, codCliente, punti)

  • PROMOZIONI (codPromozione, nome, dataInizio, dataFine)

  • ADESIONI (codAdesione, dataAdesione, codPromozione, codTessera)

Si determini il nome e cognome del cliente che ha il maggior numero di punti sulla una tessera

Max

Min

Attivabilità dei incondizionato condizioni

analisi massimo/minimo

Tessere

Trovo il max

8 Settembre 2015 (traccia 1)

CLIENTI (codCliente, nome, cognome, indirizzo)

ALBERGHI (codAlbergo, nome, indirizzo, città, telefono, numStelle)

CAMERE (numCamera, codAlbergo, descrizione)

PERNOTTAMENTI (codPernottamento, dataInizio, numGiorni, codAlbergo, numCamera, codCliente)

Q1. Determinare i nomi e le città degli alberghi a 4 stelle in cui hanno pernottato sia Angelo Rossi che Antonio Neri.

*SIA SIA, esplicito gli alberghi interessati e poi mi incrocio.

CLIENTI

PERNOTTAMENTI

P1

R1 (codCliente, nome, cognome, indirizzo) — codCliente

CAMERE

P1

P2 numCamera = P1.numCamera R1.codAlbergo = A1.codAlbergo

ALBERGHI

P1

P2 numStelle = 4

P3 codAlbergo = P1.codAlbergo

R3 nome, città, stelle

...

Q2. Selezionare il nome e il cognome dei clienti che nel 2014 hanno pernottato in almeno due (diverse) camere da almeno due alberghi.

PERNOTTAMENTI

P1

dataInizio >= '2014-01-01'

A dataInizio < '2015-01-01'

P2

...

R4 codCliente = P1.codCliente

R4 codCliente, P3 codAlbergo = P1.codAlbergo

P3 numCamera ≠ R1.numCamera

CLIENTI

P1

R1 codCliente = P3.codCliente

R3, nome, cognome

3 luglio 2015 (traccia 2)

CORRENTISTI (codcorrenitsta, nome, cognome, inidirizzo)

CARTE (codcarta, codcorrenitsta, fido, dataScadenza)

OPERAZIONI (codoperazione, descrizione, tipologia)

MOVIMENTI (codMovimento, codOperazione, codCarta, dataMovimento)

  1. Si visualizzi la tipologia delle operazioni effettuate da almeno due correntisti nel 2013 ma da nessun correntista nel 2014
SELECT O.tipologia FROM Operazioni O, Movimenti M, Carte C WHERE O.codOperazione = M.codOperazione AND M.codCarta = C.codCarta AND year(M.dataMovimento) = 2013 AND C.codcorrentista NOT IN (SELECT CI.codcorrentista FROM Carte CI, Movimenti MI WHERE CI.codcarta = MI.codCarta AND year(MI.dataMovimento) = 2014 GROUP BY CI.codcorrentista) GROUP BY O.codOperazione, O.tipologia HAVING COUNT(*) > 1;
  1. Si visualizzino il nome e il cognome dei correntisti che hanno effettuato il minimo numero di operazioni con la tipologia "Prelievo"
SELECT C.nome, C.cognome FROM Correntisti C, Carte A, Movimenti M, Operazioni O WHERE C.codcorrentista = A.codcorrentista AND A.codcarta = M.codCarta AND M.codOperazione = O.codOperazione AND O.tipologia = 'Prelievo' GROUP BY C.codcorrentista, C.nome, C.cognome HAVING COUNT(*) <= ALL (SELECT CI.nome, CI.cognome FROM Correntisti CI, Carte AI, Movimenti MI, Operazioni OI WHERE CI.codcorrentista = AI.codcorrentista AND AI.codCarta = MI.codCarta AND MI.codOperazione = OI.codOperazione AND OI.tipologia = 'Prelievo' GROUP BY CI.codcorrentista, CI.nome, CI.cognome );

3 luglio 2015 (traccia 1)

CLIENTI (codCliente, nome, cognome, indirizzo)

TESSERE (codTessera, codCliente, punti)

PROMOZIONI (codPromozione, nome, dataInizio, dataFine)

ADESIONI (codAdesione, dataAdesione, codPromozione, codTessera)

Si crei un database riportato tenendo presente che promozioni e adesioni non possono mai essere eliminate dal database mentre le tessere possano essere eliminate nel caso in cui il cliente venga cancellato.

* posson essere eliminate sulle FK uso ON DELETE NO ACTION possono essere eliminate in più passi una cancellazione * sulle FK uso ON DELETE CASCADE

CREATE TABLE Clienti (

  • codCliente INT PRIMARY KEY,
  • nome VARCHAR (25),
  • cognome VARCHAR (25),
  • indirizzo VARCHAR (45)

);

CREATE TABLE Tessera (

  • codTessera INT PRIMARY KEY,
  • codCliente INT,
  • punti INT,
  • FOREIGN KEY (codCliente) REFERENCES Clienti(codCliente) ON DELETE CASCADE

);

CREATE TABLE Promozioni (

  • codPromozione INT PRIMARY KEY,
  • nome VARCHAR (25),
  • dataInizio DATE,
  • dataFine DATE

);

CREATE TABLE Adesioni (

  • codAdesione INT PRIMARY KEY,
  • dataAdesione DATE,
  • codPromozione INT,
  • codTessera INT,
  • FOREIGN KEY (codPromozione) REFERENCES Promozioni(codPromozione) ON DELETE NO ACTION
  • FOREIGN KEY (codTessera) REFERENCES Tessera(codTessera) ON DELETE CASCADE

);

21 luglio 2015 (traccia 2)

Data:

  • T(A, B, C, D, E)
  • DF = {
    • (C, D) -> (B, E)
    • E -> B
    • B -> A}
  1. Si identifichi una possibile chiave primaria e si determini il livello di normalizzazione raggiunto da T.

Ribadiamo DF in forma standard

  • C, D -> B
  • (C, D) -> E
  • (C, D) -> A
  • E -> B
  • B -> A

(C, D) chiave primaria perché compare solo a sinistra.

Vediamo il livello di normalizzazione

T(C, D, A, B, E)

Siccome E -> B, B -> A non siamo in 3NF (DF tra attributi non primi).

Verifichiamo 2NF: tutti i non primi devono dipendere dall'intera chiave

  • B -> A
  • (C, D) -> B => (C, D) -> A

B ed E dipendono dalla chiave. Siamo in 2NF.

  1. Si determini una decomposizione lossless in BCNF e si discutano se la decomposizione trovata precedentemente preserva le DF.
  • T(C, D, A, B, E)

Decomponiamo rispetto alla chiave (C, D) -> (B, E)

  • T1(C, D, B, E)

Siccome E -> B non siamo in 3NF, quindi decomponiamo e ottengo

  • T2(C, D, E)

T3 = (E, B)

T4 = (B, A)

T2, T3, T4 sono in BCNF.

Dettagli
Publisher
A.A. 2019-2020
90 pagine
3 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher GiulioRusso 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 Cassino e del Lazio Meridionale o del prof Marrocco Claudio.