Salute e malattia
Design normalizzato per inventario, vendite, prescrizioni, gestione clienti.
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);
Gestione sanitaria