PDA

View Full Version : Algebra relazionale.. ahiaiai..


Dr Jackall
19-03-2010, 20:19
Salve a tutti!
Speravo di trovare un pò di aiuto!

Oggi a lezione la professoressa ci ha lasciato questo esercizio di algebra relazionale:

Dato il seguente schema relazionale:

AUTOSALONE(codice, indirizzo, città, regione, anno_apertura)
IMPIEGATO(codice, nome, cognome, data_nascita, qualifica, stipendio, id_autosalone)
AUTOMEZZO(targa, modello, casa produttrice, prezzo)
DISPONIBILITA’(autosalone,automezzo)
VENDITE(idimpiegato, idautomezzo, datadivendita, prezzovendita)

Esercizio:
Selezionare tutte le auto vendute dall'autosalone con minor numero di venditori


Ho cercato di ragionarci in mille modi ma non riesco a capire come fare.. come faccio innanzitutto a trovare l'autosalone con il minor numero di impiegati che hanno venduto?

Spero mi possiate aiutare!Vi ringrazio!

Kenger
19-03-2010, 22:38
Magari ricordo male, ma in algebra relazionale non sono possibili solo la selezione, la proiezione e il join?
In SQL sarebbe semplice ma in algebra relazionale non sò aiutarti, spiacente.

cionci
20-03-2010, 08:34
Minimo e massimo si possono fare, ci sono un po' di trucchi da adottare, ma si può fare.
Definisco la relazione X come il prodotto cartesiano della relazione per cui voglio calcolare il minimo (A) per se stessa (opportunamente rinominata come B).

Supponendo j l'attributo su cui voglio fare il minimo...seleziono da X tutte le tuple che hanno A(j) > B(j). A questo punto ti lascio continuare.

Kenger
20-03-2010, 13:29
Sono duro si vede ma mi manca un pezzo xD

Forse ho capito quello che dici ma così non è il minimo su un attributo già esistente della tabella? Lui il numero di dipendenti per ogni salone non lo ha.

Dr Jackall
20-03-2010, 13:45
Sono duro si vede ma mi manca un pezzo xD

Forse ho capito quello che dici ma così non è il minimo su un attributo già esistente della tabella? Lui il numero di dipendenti per ogni salone non lo ha.

Si infatti è per questo che mi sono confuso.. il minimo lo so fare, ma in questo caso non mi serve, perchè dovrei fare prima un count dei "venditori" (quindi penso si riferisca solo ai dipendenti che hanno effettivamente venduto auto) e solo dopo avere il numero di venditori per ogni autosalone potrei fare benissimo il minimo.

Il problema è che non ho i dati per calcolarmi il minimo, e l'unico modo per trovarli sarebbe il count, ma come fare in algebra relazionale?

Sto cominciando a pensare che sia stato un errore della prof..

Utilizzando l'algebra relazionale posso arrivare ad una relazione che contiene tutti i venditori e i relativi autosaloni, ma a questo punto come faccio a "conteggiarli" per ogni singolo autosalone? In php sarebbe semplice ma che io sappia non c'è un modo in algebra relazionale per fare questo count.

wingman87
20-03-2010, 14:04
Secondo il mio libro ("Basi di dati, Modelli e linguaggi di interrogazione", Atzeni-Ceri-Paraboschi-Torlone, 2006) l'operatore count non è esprimibile in algebra relazionale. A meno che non avete definito una qualche estensione...

CozzaAmara
20-03-2010, 14:42
Ho cercato di ragionarci in mille modi ma non riesco a capire come fare.. come faccio innanzitutto a trovare l'autosalone con il minor numero di impiegati che hanno venduto?

Spero mi possiate aiutare!Vi ringrazio!

Incroci gli impiegati con la tabella delle vendite in modo da trovare prima i soli soggetti che hanno fatto almeno una vendita, poi li raggruppi per autosalone contandone le occorrenze (n° impiegati) e prendi il primo risultato da un ordinamento decrescente che dovrebbe essere appunto l'autosalone con il minor numero di impiegati che hanno effettuato almeno una vendita.

Ammesso ovviamente che non ci siano autosaloni con impiegati che non hanno venduto nulla.

Spero di non avere detto cose sbagliate.

Ciao.

cionci
20-03-2010, 15:47
Ops, in effetti mi ero fossilizzato sul minimo, ma il problema è il conteggio.