Esercizio da risolvere

Anthan

Utente Attivo
67
6
Devo risolvere un esercizio di informatica basato sul sql, ecco il testo:


Un'azienda intende effettuare una indagine di mercato su prodotti alimentari presenti nel mercato estero.
Ogni nazione è individuata dal numero di abitanti, mentre di ognuno dei prodotti si conosce sia la quantità consumata dagli abitanti sia la quantità prodotta all'interno della nazione (in kg).
Della suddetta realtà, dopo aver condotto le fasi di analisi (con la stesura delle specifiche) e di progettazione concettuale (schema statico e dinamico), realizzare il sistema informativo automatizzato presentando:
la definizione dello schema relazionale del database
l'implementazione dei seguenti servizi espressi nel linguaggio sql:
1. La quantità consumata per abitante (per ogni prodotto e ordinata per nazione)
2. La quantità per abitante che viene prodotta all' interno della nazione (per ogni prodotto e ordinata per nazione)
3. La differenza tra quantità consumata per abitante e quantità prodotta per abitanta(quantità importata per abitante ordinata per nazione)
4. La ricerca per prodotto della nazione in cui risulta più elevata la quantità importata per abitante.


Io per ora l'ho fatto così:

Entità:

- Nazioni(CodiceNazioni(PK), Nome, Abitanti);
- Prodotti(CodiceProdotti(PK), Nome, QuantitaConsumata, QuantitàProdotta, Codice(FK));

Associazioni:
Fabbricare
1:N

Create Table Nazioni (
CodiceNazioni char(10) primary key,
Nome char(20) not null,
Abitanti integer not null
);

Create Table Prodotti (
CodiceProdotti char(10) primary key,
Nome char(15) not null,
QuantitaConsumata integer not null,
QuantitàProdotta integer not null,
Codice char(10) not null,
foreign key(Codice) references Nazioni(CodiceNazioni)
);

1:
Select QuantitaConsumata, Count(CodiceProdotti)
From Nazioni, Prodotti
Where Nazioni.CodiceNazioni=Prodotti.Codice
Group by Nazioni.Nome;

2:
Select QuantitaConsumata, QuantitàProdotta
From Nazioni, Prodotti
Where Nazioni.CodiceNazioni=Prodotti.Codice
Group by Nazioni.Nome;

3:
Select (Abitanti-QuantitàProdotta) AS Differenza
From Nazioni, Prodotti
Where Nazioni.CodiceNazioni=Prodotti.Codice AND (Abitanti*QuantitaConsumata)
Group by Nazioni.Nome;

4:
Select Prodotti.Nome, Max((Abitanti*QuantitaConsumata))
From Nazioni, Prodotti
Where Nazioni.CodiceNazioni=Prodotti.Codice AND (Abitanti*QuantitaConsumata);

Qualcuno potrebbe dirmi se è giusto? Se ho sbagliato potrebbe dirmi come fare l'esercizio? Sono un novizio di questo linguaggio :inchino:

Vi ringrazio in anticipo
 

simolavende

Utente Attivo
99
3
con che DBMS fai questo database?? perche non esiste ne in access ne in mysql la forma "tabella.campo"

comunque le create sono giuste le select per me sono sbagliate nel senso che io uso o mysql (con linux) o access e quel tipo di espressione non lo uso.. uso solo il nome del campo.

volevo solamente darti un consiglio visto che hai detto di essere un novizio dell'sql ti consiglio di chiamare i campi in modo piu corto es (codNaz,nomNaz,abitNaz) oppure (codprod, nomeprod, ecc)

ultima cosa complimenti per la chiave esterna che è stata dichiarata correttamente :D
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili