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
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