FASI DI PROGETTAZIONE BASE DATI – NEGOZIO DI SCARPE
Guida completa e passo dopo passo per la progettazione di una base di dati per un negozio di scarpe, pensata per essere chiara, didattica e adatta anche a contesti scolastici.
👟 1. Descrizione dell’Attività
Un negozio di scarpe vende calzature di varie marche, modelli, numeri e colori, e gestisce:
-
Clienti che acquistano online o in sede
-
Ordini con uno o più articoli
-
Pagamenti associati agli ordini
-
Magazzino e forniture da parte di fornitori
L’obiettivo è progettare una base di dati che gestisca in modo efficiente vendite, scorte, clienti e fornitori.
📋 2. Analisi dei Requisiti Utente
🔍 Requisiti funzionali:
-
Visualizzare il catalogo delle scarpe disponibili
-
Registrare clienti, ordini e pagamenti
-
Gestire scorte in magazzino
-
Collegare ogni ordine a uno o più articoli acquistati
-
Collegare scarpe ai fornitori
🧾 Requisiti informativi:
-
Ogni scarpa ha: marca, modello, colore, numero, prezzo, quantità
-
Ogni cliente ha: nome, cognome, email, indirizzo
-
Ogni ordine ha: data, cliente, stato, articoli acquistati
-
Ogni fornitore ha: nome, telefono, email
🧠 3. Identificazione delle Entità e Relazioni
| Entità | Attributi Principali |
|---|---|
| Scarpa | ID_scarpa, marca, modello, colore, numero, prezzo, quantità_in_magazzino |
| Cliente | ID_cliente, nome, cognome, email, indirizzo |
| Ordine | ID_ordine, data_ordine, stato, ID_cliente (FK) |
| Pagamento | ID_pagamento, data, importo, metodo_pagamento, ID_ordine (FK) |
| DettaglioOrdine | ID_ordine (FK), ID_scarpa (FK), quantità |
| Fornitore | ID_fornitore, nome, telefono, email |
| Fornitura | ID_fornitore (FK), ID_scarpa (FK), data_fornitura |
🧾 4. Disegno Logico dei Dati (Schema Relazionale)
CLIENTE (
ID_cliente INT PRIMARY KEY,
nome VARCHAR(50),
cognome VARCHAR(50),
email VARCHAR(100),
indirizzo TEXT
)
SCARPA (
ID_scarpa INT PRIMARY KEY,
marca VARCHAR(50),
modello VARCHAR(50),
colore VARCHAR(30),
numero INT,
prezzo DECIMAL(6,2),
quantità_in_magazzino INT
)
ORDINE (
ID_ordine INT PRIMARY KEY,
data_ordine DATE,
stato VARCHAR(30),
ID_cliente INT,
FOREIGN KEY (ID_cliente) REFERENCES CLIENTE(ID_cliente)
)
DETTAGLIO_ORDINE (
ID_ordine INT,
ID_scarpa INT,
quantità INT,
PRIMARY KEY (ID_ordine, ID_scarpa),
FOREIGN KEY (ID_ordine) REFERENCES ORDINE(ID_ordine),
FOREIGN KEY (ID_scarpa) REFERENCES SCARPA(ID_scarpa)
)
PAGAMENTO (
ID_pagamento INT PRIMARY KEY,
data DATE,
importo DECIMAL(7,2),
metodo_pagamento VARCHAR(30),
ID_ordine INT,
FOREIGN KEY (ID_ordine) REFERENCES ORDINE(ID_ordine)
)
FORNITORE (
ID_fornitore INT PRIMARY KEY,
nome VARCHAR(100),
telefono VARCHAR(20),
email VARCHAR(100)
)
FORNITURA (
ID_fornitore INT,
ID_scarpa INT,
data_fornitura DATE,
PRIMARY KEY (ID_fornitore, ID_scarpa),
FOREIGN KEY (ID_fornitore) REFERENCES FORNITORE(ID_fornitore),
FOREIGN KEY (ID_scarpa) REFERENCES SCARPA(ID_scarpa)
)
🧩 5. Modello Entità-Relazione (E-R)
Ecco la struttura concettuale:
CLIENTE (1) —— (N) ORDINE
ORDINE (1) —— (N) DETTAGLIO_ORDINE —— (N) SCARPA
ORDINE (1) —— (1) PAGAMENTO
FORNITORE (1) —— (N) FORNITURA —— (N) SCARPA
Vuoi che ti generi lo schema E-R grafico? Posso farlo!
💡 6. Esempi Pratici (Query SQL)
▶️ Visualizzare tutte le scarpe disponibili
SELECT * FROM SCARPA WHERE quantità_in_magazzino > 0;
▶️ Inserire un nuovo cliente
INSERT INTO CLIENTE (ID_cliente, nome, cognome, email, indirizzo)
VALUES (1, 'Sara', 'Bianchi', Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.', 'Via Firenze 20');
▶️ Aggiungere un nuovo ordine
INSERT INTO ORDINE (ID_ordine, data_ordine, stato, ID_cliente)
VALUES (101, '2025-04-09', 'in lavorazione', 1);
▶️ Aggiungere scarpe all'ordine
INSERT INTO DETTAGLIO_ORDINE (ID_ordine, ID_scarpa, quantità)
VALUES (101, 202, 2); -- 2 paia della scarpa ID 202
▶️ Registrare pagamento ordine
INSERT INTO PAGAMENTO (ID_pagamento, data, importo, metodo_pagamento, ID_ordine)
VALUES (501, '2025-04-09', 159.90, 'Carta di Credito', 101);
✅ Riepilogo delle Fasi
| Fase | Descrizione sintetica |
|---|---|
| Descrizione attività | Vendita scarpe, clienti, ordini, fornitori |
| Analisi requisiti utente | Cosa serve sapere e fare con i dati |
| Individuazione entità | Scarpe, clienti, ordini, pagamenti, fornitori |
| Modello E-R | Relazioni tra entità (1:N, N:M) |
| Disegno logico relazionale | Tabelle SQL con PK/FK |
| Esempi pratici | Query e inserimenti con SQL |