.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ comunicazione digitale (http://www.dsy.it/forum/forumdisplay.php?forumid=108)
-- Esempi di algebra relazionale e SQL (http://www.dsy.it/forum/showthread.php?threadid=31412)


Posted by Voodoo on 05-07-2007 10:26:

Esempi di algebra relazionale

I seguenti esercizi provengono dal corso di basi di dati della Castano,in informatica triennale. Siccome gli argomenti sono gli stessi,possono essere un valido aiuto.
Dato il seguente schema trovare il algebra relazionale le seguenti richieste:



1)Trovare lo stato di provenienza del presidente Kennedy



2) Trovare gli anni in cui è stato eletto un presidente repubblicano dell'Illinois.



3) Trovare i nomi di tutti i presidenti texani che sono anche vicepresidenti dopo il 1950.



4)Trovare i nomi delle mogli dei presidenti provenienti dalla California eletti dopo il 1960.



5)Trovare i nomi di persone che hanno partecipato alle elezioni presidenziali.



6)Trovare la data di morte del presidente dell'anno in cui la california è stata ammessa negli Stati Uniti d'America.



7)Trovare la percentuale dei repubblicani al Senato e alla Camera dei congressi tenuti da presidenti repubblicani eletti dopo il 1945.

__________________
GET DROPBOX
# il grado di lentezza è direttamente proporzionale all'intensità della memoria;il grado di velocità è direttamente proporzionale all'intensità dell'oblio (Kundera) #
BLOG: Byte Strike
ChRiS :ciao:


Posted by Voodoo on 09-07-2007 15:16:

Relazione di riferimento:



1) Determinare codice e nome dei clienti che hanno acquistato prodotti gestionali a Milano.



2)Determinare i codici dei clienti con sconto che hanno acquistato prodotti gestionali e office automation.



3)Determinare il nome dei prodtti acquistati da tutti i clienti provvisti di sconto.



__________________
GET DROPBOX
# il grado di lentezza è direttamente proporzionale all'intensità della memoria;il grado di velocità è direttamente proporzionale all'intensità dell'oblio (Kundera) #
BLOG: Byte Strike
ChRiS :ciao:


Posted by Voodoo on 09-07-2007 16:16:

Relazione di riferimento: FORNITURA.Fornitore è chiave esterna per FORNITORE.PIVA,così per FORNITURA.Cliente a CLIENTE.Matricola. Negli esempi a seguire,per la ridenominazione, nel loro corso hanno usatoscambiare i posti degli insieme di attributi,ma Perlasca dice che è solo questione di convenzione.



1)Trovare matricola e nome dei clienti che hanno ricevuto forniture da fornitori milanesi.



2) Trovare le città in cui risiedono sia i clienti sia i fornitori.



3) Trovare il nome del fornitore che ha effettuato forniture a tutti i clienti

__________________
GET DROPBOX
# il grado di lentezza è direttamente proporzionale all'intensità della memoria;il grado di velocità è direttamente proporzionale all'intensità dell'oblio (Kundera) #
BLOG: Byte Strike
ChRiS :ciao:


Posted by Voodoo on 09-07-2007 18:21:

SQL

Relazioni di riferimento (le chiavi hanno un asterisco a fianco del nome):

IMPIEGATO (ID*,Nome,Cognome,Ufficio,Stipendio,DipN)
DIPARTIMENTO (Nome*,Indirizzo,Direttore)


1) Dire quanti sono gli stipendi diversi fra loro che percepiscono gli impiegati.



2) Dire quanti sono gli impiegati del dipartimento di produzione.



3) Determinare l'ammontare degli stipendi del dipartimento di amministrazione.



4)si vuole sapere lo stipendio massimo tra quelli degli impiegati che lavorano in un dipartimento di Houston in Texas.



5)Determinare per ciascun dipartimento il numero di impiegati e la somma dei loro stipendi.



6)Determinare i dipartimenti che spendono di più di 130KE in stipendi.



7)Per i dipartimenti in cui lavorano almeno due impiegati con stipendio superiore a 40KE mostrare il nome del dipartimento e il numero totale di impiegati.



8)Determinare i cognomi degli impiegati che sono anche nomi.



9)Trovare i codici degli impiegati che non sono direttori



10)Trovare i nomi e i cognomi degli impiegati che lavorano a Houston in Texas



11)Trovare nomi e cognomi degli impiegati che lavorano nello stesso ufficio di qualche impiegato del dipartimento di produzione,escludendo quelli del dipartimento stesso di produzione.



12)Trovare i dipartimenti dove non lavorano persone di nome Smith.



13) Trovare il dipartimento con gli stipendi più elevati



14)Determinare gli impiegati che guadagnano più dello stipendio medio del proprio dipartimento con ordinamento del risultato per dipartimento



15)Trovare gli impiegati che hanno omonimi



__________________
GET DROPBOX
# il grado di lentezza è direttamente proporzionale all'intensità della memoria;il grado di velocità è direttamente proporzionale all'intensità dell'oblio (Kundera) #
BLOG: Byte Strike
ChRiS :ciao:


Posted by Voodoo on 15-07-2007 10:15:

Considerare la seguente base di dati:



1)Vogliamo sapere i codici degli impiegati che partecipano a tutti i progetti con un budget superiore di 50000. Esprimerla in algebra relazionale e in SQL.



__________________
GET DROPBOX
# il grado di lentezza è direttamente proporzionale all'intensità della memoria;il grado di velocità è direttamente proporzionale all'intensità dell'oblio (Kundera) #
BLOG: Byte Strike
ChRiS :ciao:


Posted by WillyWonka on 13-09-2007 16:03:

2) Trovare gli anni in cui è stato eletto un presidente repubblicano dell'Illinois.

è corretta dire questo?

∏anno(∏nomeP,DataN(σPartito=’Repubblicano’ Λ stato=’Illinois’(PRESIDENTE)JOIN ELEZIONE)

e

5)Trovare i nomi di persone che hanno partecipato alle elezioni presidenziali.

è corretta questa implementazione?

∏nomeP, nomePerd(ELEZIONE)

nn è più semplice così in teoria?

Nella soluzione proposta per il punto 6) invece non capisco come si faccia ad identificare che l'anno è quello in cui la California è stata ammessa negli USA.


Posted by Voodoo on 13-09-2007 22:08:

Originally posted by WillyWonka
2) Trovare gli anni in cui è stato eletto un presidente repubblicano dell'Illinois.

è corretta dire questo?

∏anno(∏nomeP,DataN(σPartito=’Repubblicano’ Λ stato=’Illinois’(PRESIDENTE)JOIN ELEZIONE)

e

5)Trovare i nomi di persone che hanno partecipato alle elezioni presidenziali.

è corretta questa implementazione?

∏nomeP, nomePerd(ELEZIONE)

nn è più semplice così in teoria?

Nella soluzione proposta per il punto 6) invece non capisco come si faccia ad identificare che l'anno è quello in cui la California è stata ammessa negli USA.

Per la prima va bene,la selezione nell'esempio vien fatta per alleggerire il join e basta. La seconda potrebbe andare bene,ma non ritornerebbe i nomi come lista,in cui ogni riga ha un nome,bensì due nomi (un output confuso dunque).
Per la terza non ho controllato ma se ti fai i calcoli il risultato viene.

__________________
GET DROPBOX
# il grado di lentezza è direttamente proporzionale all'intensità della memoria;il grado di velocità è direttamente proporzionale all'intensità dell'oblio (Kundera) #
BLOG: Byte Strike
ChRiS :ciao:


Posted by el-mundo on 21-09-2007 16:54:

io sinceramente in alcuni ci capisco ben poco perchè io li faccio diversamente ma non so fino a che punto siano uguali!!!!


Posted by Von Neumann on 11-12-2008 16:27:

E' indifferente fare una selezione "a monte" o "a valle" di un JOIN?

Mi spiego con un esercizio:

INSEGNAMENTI(Codice,Denominazione)
STUDENTI(Matricola,Cognome,Nome)
ESAMI(Studente,Corso,Data,Voto)

specificare la seguente interrogazione in algebra relazionale: “trovare denominazione, data e voto per gli
esami superati da Bartolomeo Pestalozzi”


La soluzione proposta è la seguente

Denominazione,Data,Voto(Insegnamenti JOIN ON Codice=Corso Esami JOIN ON Studente=Matricolaσ Cognome='Pestalozzi AND Nome='Bartolomeo'(Studenti))

Domanda: E' la stessa cosa fare così:

Denominazione,Data,Voto(σVoto>=18 AND Nome='Bartolomeo' AND Cognome='Pestalozzi'(Insegnamenti JOIN ON Codice=Corso Esami JOIN ON Studente=Matricola Studenti))

__________________
Vendo libri Comunicazione digitale
Vendo Basso
Vendo Cartucce 88 HP


Posted by *°§_-??? on 15-12-2008 08:58:

Premesso che devo ancora superare questo esame
La mia interpretazione è che:

  1. la prima query premette che gli esami registrati riportino una valutazione positiva (e quindi non esistono record di esami con valutazioni insufficienti)
  2. la seconda soluzione risulta più gravosa da un punto di vista computazionale (pur logicamente restituendo mi pare lo stesso risultato) dato che il calcolo prevede la creazione di risultati partendo dalla serie di join (dove i join associano a TUTTI gli studenti gli esami fatti) solo successivamente si limitano i risultati con la selezione (mentre nel calcolo precedente la prima operazione effettua una selezione sullo studente)


da un punto di vista di premesse il controllo del voto è più preciso (anche se sostituibile con una semplice indicazione iniziale)
In conclusione: credo che le due soluzioni siano equivalenti logicamente anche se differenti per gravosità computazionale e quindi tempo di risposta

__________________
:pccrash::pccrash:


Posted by Ste Ramone on 17-01-2010 14:57:

qualcuno di voi può dirmi se le due query si equivalgono?

lo schema di partenza è:

Libri (Codice, Titolo, Genere, Autore) con vincolo di ir fra Autore e la chiave di Scrittori
Edizioni (Libro,Editore,Collana,Anno) con vincolo di ir fra Libro e la chiave di Libri, e fra Editore e la chiave di Editori
Editori (Sigla, Nome, Città)
Scrittori (Codice, Cognome, Nome)

1- Trovare Nome e Cognome degli autori di libri pubblicati da editori di Milano

la soluzione proposta è:

SELECT Cognome, Nome
FROM Scrittori, Libri, Edizioni, Editori
WHERE Scrittori.Codice = Autore AND Libri.Codice = Libro AND Editore = Sigla AND Città = 'Milano';

si può dire anche così?

SELECT Cognome, Nome
FROM Scrittori INNER JOIN Libri ON (Libri.Autore = Scrittori.Codice) INNER JOIN Edizioni ON (Edizioni.Libri = Libri.Codice AND Edizioni.Editore = Editore.Sigla) INNER JOIN Editori ON (Editori.Sigla = Edizioni.Editore)
WHERE Città = 'Milano';

__________________
"The more the water, the higher the boat"

DeviantART - Blog - Portfolio


All times are GMT. The time now is 18:07.
Show all 11 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.