Esercizio database gestione spese | Esercizi SQL

Esercizio database gestione spese | Esercizi SQL

Creare un database che consenta di gestire una base dati relativa alle spese personali. Ogni spesa appartiene ad una categoria e ogni spesa può appartenere a più tags. Dopo aver fatto una adeguata analisi, modellizzare il database creando lo schema concettuale e logico. Scrivere le query necessarie per:

Query di creazione (CREATE):

  • inserire una nuova spesa
  • inserire una nuova categoria
  • inserire un nuovo tag
  • inserire una nuova spesa con una nuova categoria e nuovi tags
  • inserire una nuova spesa con una categoria e tags già esistenti
  • inserire una nuova spesa con una categoria esistente e nuovi tags
  • inserire una nuova spesa con una categoria esistente e tags già esistenti

Query di modifica (UPDATE):

  • modificare la descrizione di una spesa
  • modificare la categoria di una spesa
  • modificare il tag di una spesa
  • modificare la categoria e il tag di una spesa
  • modificare la descrizione, la categoria e il tag di una spesa
  • modificare la descrizione e la categoria di una spesa
  • modificare la descrizione e il tag di una spesa

Query di cancellazione (DELETE):

  • cancellare una spesa
  • cancellare una categoria
  • cancellare un tag
  • cancellare una spesa con una categoria e tags già esistenti

Proiezioni (SELECT):

  • Seleziona tutti i campi dalla tabella “spese”.
  • Seleziona solo il nome della categoria dalla tabella “categorie”.
  • Ottieni una lista delle descrizioni delle spese dalla tabella “spese”.
  • Quali sono i nomi dei tag dalla tabella “tags”?
  • Mostra l’importo e la data di tutte le spese.
  • Quali sono gli ID delle spese dalla tabella “spese”?
  • Ottieni una lista di tutte le categorie dalla tabella “categorie”.
  • Mostra solo le date delle spese dalla tabella “spese”.

Selezioni Semplici (WHERE):

  • Seleziona tutte le spese con un importo maggiore di $100.
  • Quali spese sono state effettuate il 15 ottobre 2023?
  • Mostra le spese nella categoria “Alimentari”.
  • Quali spese sono state effettuate prima del 1º gennaio 2023?
  • Seleziona le spese con una descrizione che contiene la parola “ristorante”.
  • Quali spese sono state fatte con un tag chiamato “Viaggio”?
  • Mostra le spese effettuate da un’utente specifico (supponiamo un campo “utente_id” nella tabella “spese”).

Selezioni Complesse (JOIN):

  • Quali spese sono state fatte il 2 marzo 2023 e appartengono alla categoria “Intrattenimento”?

  • Elencare le spese effettuate con il tag “Viaggio” in una categoria diversa da “Vacanze”.

  • Mostra le spese con un importo superiore a $50 fatte dopo il 1º gennaio 2023 appartenenti alla categoria “Alimentari”.

  • Quali spese hanno lo stesso tag di un’altra spesa ma un importo diverso?

  • Elencare le spese con importi superiori alla media delle spese.

  • Quali spese appartengono a categorie con almeno 10 spese registrate?

  • Mostra le spese che non hanno tag associati.

Possibile soluzione

CREATE TABLE categorie (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nome VARCHAR(255) NOT NULL
);

CREATE TABLE tags (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nome VARCHAR(255) NOT NULL
);

CREATE TABLE spese (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    descrizione VARCHAR(255) NOT NULL,
    importo DECIMAL(10,2) NOT NULL,
    data DATE NOT NULL,
    categoria_id INTEGER NOT NULL,
    FOREIGN KEY (categoria_id) REFERENCES categorie(id)
);

CREATE TABLE spese_tags (
    spesa_id INTEGER NOT NULL,
    tag_id INTEGER NOT NULL,
    FOREIGN KEY (spesa_id) REFERENCES spese(id),
    FOREIGN KEY (tag_id) REFERENCES tags(id)
);

INSERT INTO categorie (nome) VALUES ('Alimentari');
INSERT INTO categorie (nome) VALUES ('Intrattenimento');
INSERT INTO categorie (nome) VALUES ('Vacanze');
INSERT INTO categorie (nome) VALUES ('Abbigliamento');
INSERT INTO categorie (nome) VALUES ('Bollette');
INSERT INTO categorie (nome) VALUES ('Altro');

INSERT INTO tags (nome) VALUES ('Viaggio');
INSERT INTO tags (nome) VALUES ('Cena');
INSERT INTO tags (nome) VALUES ('Cinema');
INSERT INTO tags (nome) VALUES ('Caffè');
INSERT INTO tags (nome) VALUES ('Auto');
INSERT INTO tags (nome) VALUES ('Benzina');
INSERT INTO tags (nome) VALUES ('Treno');
INSERT INTO tags (nome) VALUES ('Aereo');
INSERT INTO tags (nome) VALUES ('Hotel');
INSERT INTO tags (nome) VALUES ('Noleggio');
INSERT INTO tags (nome) VALUES ('Elettronica');
INSERT INTO tags (nome) VALUES ('Libri');
INSERT INTO tags (nome) VALUES ('Musica');
INSERT INTO tags (nome) VALUES ('Giochi');
INSERT INTO tags (nome) VALUES ('Sport');
INSERT INTO tags (nome) VALUES ('Palestra');
INSERT INTO tags (nome) VALUES ('Luce');
INSERT INTO tags (nome) VALUES ('Gas');

INSERT INTO spese (descrizione, importo, data, categoria_id) VALUES ('Spesa al supermercato', 50.00, '2023-10-01', 1);
INSERT INTO spese (descrizione, importo, data, categoria_id) VALUES ('Cena al ristorante', 30.00, '2023-10-02', 2);
INSERT INTO spese (descrizione, importo, data, categoria_id) VALUES ('Biglietto del cinema', 10.00, '2023-10-03', 2);
INSERT INTO spese (descrizione, importo, data, categoria_id) VALUES ('Caffè al bar', 1.00, '2023-10-04', 2);
INSERT INTO spese (descrizione, importo, data, categoria_id) VALUES ('Benzina', 50.00, '2023-10-05', 5);
INSERT INTO spese (descrizione, importo, data, categoria_id) VALUES ('Biglietto del treno', 100.00, '2023-10-06', 3);
INSERT INTO spese (descrizione, importo, data, categoria_id) VALUES ('Biglietto aereo', 200.00, '2023-10-07', 3);
INSERT INTO spese (descrizione, importo, data, categoria_id) VALUES ('Noleggio auto', 50.00, '2023-10-08', 3);

INSERT INTO spese_tags (spesa_id, tag_id) VALUES (1, 1);
INSERT INTO spese_tags (spesa_id, tag_id) VALUES (2, 2);
INSERT INTO spese_tags (spesa_id, tag_id) VALUES (3, 3);
INSERT INTO spese_tags (spesa_id, tag_id) VALUES (4, 4);
INSERT INTO spese_tags (spesa_id, tag_id) VALUES (5, 5);
INSERT INTO spese_tags (spesa_id, tag_id) VALUES (6, 6);
INSERT INTO spese_tags (spesa_id, tag_id) VALUES (7, 7);
INSERT INTO spese_tags (spesa_id, tag_id) VALUES (8, 8);
INSERT INTO spese_tags (spesa_id, tag_id) VALUES (8, 9);
INSERT INTO spese_tags (spesa_id, tag_id) VALUES (8, 10);

Related Posts

descriptive text

7 Esercizi sui diagrammi concettuali

La progettazione concettuale dei database è una fase importante nello sviluppo di un database. In questa fase, si identificano i dati necessari per rappresentare la realtà di interesse e si modella

Leggi
descriptive text

Aspetto intensionale ed estensionale dei dati

## L'aspetto estensionale dei datiL'aspetto estensionale dei dati si riferisce al contenuto dei dati, cioè all'insieme di valori che i dati possono assumere. È il contenuto dei dati che viene effett

Leggi
descriptive text

Definzione di Database e di SQL

## Cos'è un database?Un database è una raccolta strutturata di dati elettronici. Questi dati possono essere consultati, gestiti, modificati, aggiornati, controllati e organizzati con l'aiuto di un

Leggi
descriptive text

Dati e Informazioni

# Dati e informazioni: la differenza fondamentaleIn informatica, i dati e le informazioni sono due concetti fondamentali che sono spesso confusi tra loro. In realtà, si tratta di due cose molto d

Leggi
descriptive text

Definzione di DBMS

Un sistema di gestione delle basi di dati, noto anche come database management system (DBMS), rappresenta il software che funge da intermediario tra gli utenti finali, le applicazioni e la banca dati

Leggi
descriptive text

Definizione di base di dati

Una base di dati, spesso abbreviata come "DB" o "database", è una raccolta di dati strutturati, organizzati in modo da consentire l'archiviazione, la gestione, la ricerca, l'aggiornamento e la manipo

Leggi
descriptive text

Diagramma concettuale di un social tipo Instagram | Esercizio sui diagrammi concettuali

Un'azienda desidera creare un social network tipo Instagram. Gli utenti possono registrarsi sulla piattaforma e fornire informazioni personali come nome, cognome, indirizzo email e password. Aggiun

Leggi
descriptive text

Diagramma concettuale di un social tipo Twitter | Esercizio sui diagrammi concettuali

Un'azienda desidera creare un social network tipo Twitter. Gli utenti possono registrarsi sulla piattaforma e fornire informazioni personali come nome, cognome, indirizzo email e password. Aggiunger

Leggi
descriptive text

Reallizzare una webapp con Python e bottle | Expense Tracker

In questo esercizio vedremo come realizzare una webapp con Python e bottle. La webapp che andremo a realizzare sarà un semplice gestionale per le spese. L'utente potrà inserire le spese e visualizz

Leggi
descriptive text

Gestione file come google drive | Esercizio sui diagrammi concettuali

Un'azienda desidera creare un sistema di gestione per i suoi file. I dipendenti possono caricare file, visualizzare dettagli sui file e scaricare quelli di loro interesse. Ogni dipendente deve regi

Leggi
descriptive text

libreria online | Esercizio sui diagrammi concettuali

Una libreria online desidera creare un sistema di gestione per i suoi libri e i suoi clienti. I clienti possono cercare libri, visualizzare dettagli sui libri e acquistare quelli di loro interesse.

Leggi
descriptive text

Gestione Ecommerce | Esercizio sui diagrammi concettuali

Un'azienda di e-commerce desidera creare un sistema di gestione per i suoi prodotti e i suoi clienti. I clienti possono cercare prodotti, visualizzare dettagli sui prodotti e acquistarli quelli di

Leggi
descriptive text

Gestione museo | Esercizio sui diagrammi concettuali

Si vuole rappresentare una base dati per la gestione di un museo, tenendo conto delle seguenti informazioni:- I musei sono identificati da un codice univoco. Per ciascun museo sono noti il nome,

Leggi
descriptive text

Gestione noleggio auto | Esercizio sui diagrammi concettuali

Una società di noleggio auto intende gestire un sistema online per consentire ai clienti di prenotare veicoli per un periodo specifico. I clienti devono registrarsi come utenti sulla piattaforma e

Leggi
descriptive text

Gestione noleggio biciclette | Esercizio sui diagrammi concettuali

Si vuole rappresentare una base dati per la gestione di un servizio di noleggio di biciclette, tenendo conto delle seguenti informazioni:- I clienti del servizio sono identificati da un codice

Leggi
descriptive text

Gestione ordini pizzeria | Esercizio sui diagrammi concettuali

Viene chiesto di realizzare il sistema informatico della pizzeria "Bella Zi". Le esigenze del committente sono quelle di gestire i clienti salvando l'anagrafica e gestire gli ordini effettuati che

Leggi
descriptive text

Maturità Informatica Ordinaria 2004 | Diagramma concettuale e logico

[Tema di esame](https://www.istruzione.it/esame_di_stato/Secondo_Ciclo/tracce_prove_scritte/2005/tecnica/M070.pdf)## Soluzione![Maturità ordinaria 2004|Diagramma concettuale](/images/maturita-

Leggi
descriptive text

Simulazione Esame Informatica | Logistica aziendale

Una società di logistica sta sviluppando un sistema informatico per gestire il flusso delle merci all'interno della propria rete aziendale. La società gestisce una vasta gamma di merci e ha una rete

Leggi
descriptive text

Simulazione Esame Informatica | Gestione azienda sviluppo software

Una società di sviluppo software sta pianificando l'implementazione di un sistema informatico per gestire in modo efficiente il ciclo di sviluppo del software e le risorse umane coinvolte. Questa soc

Leggi
descriptive text

Progettazione un Database: modello concettuale e logico

La progettazione di un database è un processo complesso che richiede una profonda conoscenza

Leggi
descriptive text

Tipi di basi di dati

Esistono diversi tipi di basi di dati, a seconda della loro struttura, della tecnologia utilizzata e del modello di dati utilizzato.I principali tipi di basi di dati sono:- **Basi di dati relazio

Leggi