FASI DI PROGETTAZIONE BASE DATI – NEGOZIO DI PROFUMI
Per progettare una base di dati per un negozio di profumi, è necessario seguire un processo che coinvolge diverse fasi. Ogni fase mira a garantire che i dati siano strutturati in modo efficiente e che il sistema possa rispondere alle esigenze specifiche del negozio. Di seguito descrivo le fasi principali del processo di progettazione, con esempi pratici per ciascuna.
1. Analisi dei requisiti
In questa fase, raccogliamo e comprendiamo le necessità del negozio di profumi. Ciò include identificare i principali attori coinvolti (come clienti, venditori, magazzino), le operazioni che dovranno essere supportate (come vendite, gestione magazzino), e i tipi di dati che devono essere gestiti (profumi, clienti, ordini, pagamenti, ecc.).
Requisiti principali:
-
Clienti: Ogni cliente avrà informazioni come nome, indirizzo, numero di telefono, e preferenze.
-
Profumi: Ogni profumo avrà un nome, una marca, una descrizione, una quantità in magazzino, un prezzo.
-
Ordini: Gli ordini conterranno i dettagli su quale cliente ha acquistato cosa, in quale quantità e a quale prezzo.
-
Pagamento: Dettagli relativi al pagamento, come metodo (carta di credito, contante), data, importo.
Esempio di domande da porsi:
-
Che tipo di informazioni devono essere registrate sui clienti?
-
Come vengono gestiti gli ordini (separati per data, per cliente, ecc.)?
-
Ci sono promozioni o sconti applicabili?
2. Disegno logico dei dati
In questa fase, traduciamo i requisiti raccolti in una struttura logica dei dati. Dobbiamo definire le entità principali (ad esempio, Clienti, Profumi, Ordini) e come queste entità sono collegate tra loro.
Entità principali:
-
Cliente (ID_cliente, nome, indirizzo, telefono, email)
-
Profumo (ID_profumo, nome, marca, descrizione, prezzo, quantità_disponibile)
-
Ordine (ID_ordine, data, ID_cliente, ID_ordine_stato)
-
Dettaglio_Ordine (ID_ordine, ID_profumo, quantità, prezzo_unitario)
-
Pagamento (ID_pagamento, ID_ordine, data_pagamento, metodo_pagamento, importo)
Relazioni tra le entità:
-
Un Cliente può fare più Ordini.
-
Un Ordine contiene più Dettagli_Ordine, ognuno dei quali rappresenta un profumo specifico acquistato.
-
Un Ordine può essere associato a un Pagamento.
-
Un Profumo può essere presente in molti Dettagli_Ordine.
3. Modello Entità-Relazione (ER)
In questa fase, realizziamo un modello entità-relazione (ER), che rappresenta graficamente le entità e le loro relazioni. Ecco un esempio di modello ER per il negozio di profumi:
Entità:
-
Cliente: ID_cliente, nome, indirizzo, telefono, email.
-
Profumo: ID_profumo, nome, marca, descrizione, prezzo, quantità_disponibile.
-
Ordine: ID_ordine, data, ID_cliente.
-
Dettaglio_Ordine: ID_ordine, ID_profumo, quantità, prezzo_unitario.
-
Pagamento: ID_pagamento, ID_ordine, data_pagamento, metodo_pagamento, importo.
Relazioni:
-
Cliente 1:N Ordine: Un cliente può fare molti ordini.
-
Ordine 1:N Dettaglio_Ordine: Un ordine può contenere molti dettagli di ordine (profumi acquistati).
-
Ordine 1:1 Pagamento: Ogni ordine è associato a un pagamento (se effettuato).
-
Profumo N:M Dettaglio_Ordine: Un profumo può essere acquistato in più ordini e un ordine può contenere più profumi.
Diagramma ER:
Immagina un diagramma in cui ogni entità è rappresentata da un rettangolo. Le relazioni sono linee che collegano i rettangoli. Ad esempio:
-
La relazione tra Cliente e Ordine è una linea con una "1" vicino a Cliente e una "N" vicino a Ordine, indicando che un cliente può avere molti ordini.
-
La relazione tra Ordine e Dettaglio_Ordine è anch'essa una linea "1:N", poiché un ordine può contenere più profumi.
4. Creazione del modello relazionale
Una volta che il modello ER è stato definito, possiamo tradurlo in un modello relazionale, che consiste nella creazione delle tabelle per il database.
Esempio di tabelle SQL:
CREATE TABLE Cliente (
ID_cliente INT PRIMARY KEY,
nome VARCHAR(100),
indirizzo VARCHAR(200),
telefono VARCHAR(15),
email VARCHAR(100)
);
CREATE TABLE Profumo (
ID_profumo INT PRIMARY KEY,
nome VARCHAR(100),
marca VARCHAR(50),
descrizione TEXT,
prezzo DECIMAL(10, 2),
quantità_disponibile INT
);
CREATE TABLE Ordine (
ID_ordine INT PRIMARY KEY,
data DATE,
ID_cliente INT,
FOREIGN KEY (ID_cliente) REFERENCES Cliente(ID_cliente)
);
CREATE TABLE Dettaglio_Ordine (
ID_ordine INT,
ID_profumo INT,
quantità INT,
prezzo_unitario DECIMAL(10, 2),
PRIMARY KEY (ID_ordine, ID_profumo),
FOREIGN KEY (ID_ordine) REFERENCES Ordine(ID_ordine),
FOREIGN KEY (ID_profumo) REFERENCES Profumo(ID_profumo)
);
CREATE TABLE Pagamento (
ID_pagamento INT PRIMARY KEY,
ID_ordine INT,
data_pagamento DATE,
metodo_pagamento VARCHAR(50),
importo DECIMAL(10, 2),
FOREIGN KEY (ID_ordine) REFERENCES Ordine(ID_ordine)
);
5. Popolamento e test dei dati
Infine, dobbiamo testare il database inserendo alcuni dati di esempio e verificando che le query siano eseguite correttamente.
Esempio di inserimento di dati:
INSERT INTO Cliente (ID_cliente, nome, indirizzo, telefono, email)
VALUES (1, 'Mario Rossi', 'Via Roma 10, Milano', '1234567890', Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.');
INSERT INTO Profumo (ID_profumo, nome, marca, descrizione, prezzo, quantità_disponibile)
VALUES (1, 'Profumo Elegante', 'Marca A', 'Profumo floreale con note di rosa e violetta', 50.00, 100);
INSERT INTO Ordine (ID_ordine, data, ID_cliente)
VALUES (1, '2025-04-09', 1);
INSERT INTO Dettaglio_Ordine (ID_ordine, ID_profumo, quantità, prezzo_unitario)
VALUES (1, 1, 2, 50.00);
INSERT INTO Pagamento (ID_pagamento, ID_ordine, data_pagamento, metodo_pagamento, importo)
VALUES (1, 1, '2025-04-09', 'Carta di credito', 100.00);
6. Esegui le query e test funzionalità
A questo punto, possiamo eseguire delle query per verificare che il sistema funzioni correttamente. Esempio di una query per:
6.1 Tutti gli ordini di un cliente:
SELECT O.ID_ordine, O.data, P.nome, DO.quantità, DO.prezzo_unitario
FROM Ordine O
JOIN Dettaglio_Ordine DO ON O.ID_ordine = DO.ID_ordine
JOIN Profumo P ON DO.ID_profumo = P.ID_profumo
WHERE O.ID_cliente = 1;
6.2 Prodotti disponibili con quantità maggiore di 5
6.3. Vendite effettuate da un cliente
6.4 Valore totale di una vendita
6.5. Prodotti più venduti
6.6. Fornitori e numero di prodotti forniti
Conclusione
Queste fasi di progettazione ti guideranno attraverso la creazione di un database ben strutturato per un negozio di profumi. Il processo include la raccolta dei requisiti, il disegno logico, la creazione di un modello ER, la scrittura delle tabelle SQL, e infine i test per garantire che il sistema funzioni correttamente.