Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
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)
-
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)
- Si visualizzi la tipologia delle operazioni effettuate da almeno due correntisti nel 2013 ma da nessun correntista nel 2014
- Si visualizzino il nome e il cognome dei correntisti che hanno effettuato il minimo numero di operazioni con la tipologia "Prelievo"
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}
- 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.
- 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.