Salute e malattia

Schema Database SQL per Sistema Gestione Farmacia

Schema Relazionale: Medical_Store_System

Design normalizzato per inventario, vendite, prescrizioni, gestione clienti.

Panoramica Entity-Relationship

  • Farmaci — inventario core
  • Tipi_Farmaco — categorizzazione (analgesico, antibiotico, ecc.)
  • Clienti — info paziente/acquirente
  • Prescrizioni — collega clienti, farmaci, medici
  • Fatture — transazioni vendita
  • Dettagli_Fattura — righe per fattura

Definizioni Tabelle (SQL DDL)

CREATE DATABASE Medical_Store_System; USE Medical_Store_System; CREATE TABLE Tipi_Farmaco ( Tipo_Farmaco_ID INT PRIMARY KEY AUTO_INCREMENT, Tipo_Farmaco_Nome VARCHAR(100) NOT NULL UNIQUE ); CREATE TABLE Farmaci ( Farmaco_ID INT PRIMARY KEY AUTO_INCREMENT, Farmaco_Nome VARCHAR(150) NOT NULL, Nome_Generico VARCHAR(150), Forma_Dosaggio VARCHAR(50), -- compressa, capsula, sciroppo, iniezione, ecc. Dosaggio VARCHAR(50), -- es. '500mg', '10mg/mL' Tipo_Farmaco_ID INT, Quantita_In_Stock INT DEFAULT 0, Prezzo_Unitario DECIMAL(10,2) NOT NULL, Livello_Riordino INT DEFAULT 10, Data_Scadenza DATE, Produttore VARCHAR(100), FOREIGN KEY (Tipo_Farmaco_ID) REFERENCES Tipi_Farmaco(Tipo_Farmaco_ID) ); CREATE TABLE Clienti ( Cliente_ID INT PRIMARY KEY AUTO_INCREMENT, Cliente_Nome VARCHAR(150) NOT NULL, Numero_Telefono VARCHAR(20), Email VARCHAR(100), Indirizzo VARCHAR(255), Citta VARCHAR(100), Stato VARCHAR(100), CAP VARCHAR(20), Data_Registrazione DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE Prescrizioni ( Prescrizione_ID INT PRIMARY KEY AUTO_INCREMENT, Cliente_ID INT NOT NULL, Farmaco_ID INT NOT NULL, Medico_Nome VARCHAR(150), Medico_Licenza_No VARCHAR(50), Data_Prescrizione DATETIME DEFAULT CURRENT_TIMESTAMP, Quantita_Prescritta INT NOT NULL, Istruzioni_Dosaggio TEXT, Rinnovi_Consentiti INT DEFAULT 0, Status ENUM('Attiva','Evasa','Scaduta','Annullata') DEFAULT 'Attiva', FOREIGN KEY (Cliente_ID) REFERENCES Clienti(Cliente_ID), FOREIGN KEY (Farmaco_ID) REFERENCES Farmaci(Farmaco_ID) ); CREATE TABLE Fatture ( Fattura_ID INT PRIMARY KEY AUTO_INCREMENT, Cliente_ID INT NOT NULL, Data_Fattura DATETIME DEFAULT CURRENT_TIMESTAMP, Totale_Importo DECIMAL(12,2) NOT NULL, Metodo_Pagamento ENUM('Contanti','Carta','Assicurazione','UPI','Altro') DEFAULT 'Contanti', Stato_Pagamento ENUM('Pagato','Parziale','In Sospeso','Rimborsato') DEFAULT 'In Sospeso', FOREIGN KEY (Cliente_ID) REFERENCES Clienti(Cliente_ID) ); CREATE TABLE Dettagli_Fattura ( Dettaglio_Fattura_ID INT PRIMARY KEY AUTO_INCREMENT, Fattura_ID INT NOT NULL, Farmaco_ID INT NOT NULL, Quantita INT NOT NULL, Prezzo_Unitario DECIMAL(10,2) NOT NULL, Totale_Riga DECIMAL(12,2) GENERATED ALWAYS AS (Quantita * Prezzo_Unitario) STORED, FOREIGN KEY (Fattura_ID) REFERENCES Fatture(Fattura_ID), FOREIGN KEY (Farmaco_ID) REFERENCES Farmaci(Farmaco_ID) ); -- Indici per performance CREATE INDEX idx_farmaci_nome ON Farmaci(Farmaco_Nome); CREATE INDEX idx_prescrizioni_cliente ON Prescrizioni(Cliente_ID); CREATE INDEX idx_fatture_cliente_data ON Fatture(Cliente_ID, Data_Fattura); CREATE INDEX idx_dettagli_fattura ON Dettagli_Fattura(Fattura_ID); 

Note Design Chiave

  • Tipi_Farmaco normalizzato per evitare ridondanza.
  • Farmaci include tracciamento scadenza e livello riordino per alert inventario.
  • Prescrizioni linkano sia cliente che farmaco; supportano tracciamento rinnovi.
  • Fatture/Dettagli_Fattura separano header/righe per record vendite normalizzati.
  • Colonna Generata Totale_Riga assicura consistenza calcolo.
  • Aggiungere trigger/stored procedure per decremento stock su vendita, alert scadenza, audit log.