Please enable JavaScript.
Coggle requires JavaScript to display documents.
Schemi info - Coggle Diagram
Schemi info
INTRODUZIONE AI DATABASE (Prima parte)
Dati e Informazioni, Schema ed Istanza, Ciclo di Vita dei Sistemi Informativi
Un sistema informativo è un insieme organizzato di risorse che raccolgono, memorizzano ,elaborano e distribuiscono informazioni necessarie alle attività di un'organizzazione. un sistema informatico e la porzione del sistema informativo automatizzata tramite tecnologie hardware e software.
Dato: Rappresentazione grezza, elementare e non interpretata di un fatto o di un fenomeno (es. il numero 38.5).
nformazione: Elaborazione dei dati all'interno di un contesto specifico, in grado di conferire loro una forma, un significato e un'utilità per i processi decisionali (es. "38.5 °C è la temperatura corporea del paziente X, indicante stato febbrile").
Schema (Livello Intensionale): La componente strutturale del database, fissa nel tempo, che ne definisce le regole, le entità, gli attributi e i vincoli (i metadati).
Istanza (Livello Estensionale): L'insieme dei dati effettivi memorizzati nel database in un preciso istante temporale. L'istanza muta continuamente a seguito delle operazioni di inserimento, modifica e cancellazione.
Ciclo di Vita di un Sistema Informativo
Studio di fattibilità: Definizione degli obiettivi, analisi dei costi/benefici e valutazione dei vincoli tecnici ed economici.
analisi dei requisiti: raccolta dettagliata delle necessita degli utenti tramite interviste e analisi documentale
progettazione: suddivisa in concettuale, logica e fisica
implementazione e sviluppo: scrittura del codice, creazione delle tabelle su dbms e popolamento iniziale
validazione e testing: verifica della rispondenza ai requisiti e assenza di bug
manutenzione ed evoluzione: correzione degli errori residui, adattamento a nuove piattaforme e aggiunta di nuove funzionalita
Caratteristiche di un DBMS (MySQL) e Diritti di Accesso
Caratteristiche Fondamentali di un DBMS
Un Database Management System (DBMS) è un sistema software che si frappone tra l'utente (o le applicazioni) e i dati fisici memorizzati sul disco. Un DBMS deve garantire:
Persistenza: I dati devono sopravvivere alla chiusura del software e a guasti hardware.
Condivisione: Più utenti o applicazioni devono poter accedere ai dati simultaneamente.
Concorrenza: Gestione degli accessi simultanei tramite meccanismi di locking per evitare inconsistenze (es. la perdita di un aggiornamento).
Sicurezza e Controllo degli Accessi: Protezione da accessi non autorizzati tramite autenticazione e autorizzazione.
Integrità dei dati: Rispetto dei vincoli strutturali e aziendali definiti nello schema.
Modello Concettuale, Logico e Fisico. Viste e Vincoli di Integrità
Per garantire l'indipendenza dei dati, l'architettura dei DBMS si articola su tre livelli:
Livello Concettuale (Schema Concettuale): Rappresentazione formale e astratta della realtà di interesse, indipendente dall'hardware e dal software (es. Modello Entità-Relazione). Descrive cosa il database contiene.
Livello Logico (Schema Logico): Traduzione dello schema concettuale in una struttura dati implementabile dal tipo di DBMS scelto (es. Modello Relazionale a tabelle, Modello Documentale). Descrive la composizione logica delle strutture dati.
Livello Fisico (Schema Interno): Descrizione dell'effettiva memorizzazione dei dati sui supporti di memoria di massa (file, indici B-Tree, organizzazione dei record, allocazione dello spazio).
Indipendenza dei Dati
Indipendenza Logica: Capacità di modificare lo schema concettuale (es. aggiungendo un'entità) senza dover modificare gli schemi esterni (le applicazioni o le viste dell'utente).
Indipendenza Fisica: Capacità di modificare lo schema fisico (es. spostando il file di database su un altro disco o creando un indice) senza dover modificare lo schema logico o concettuale.
Viste (Views)
Una Vista è una tabella virtuale il cui contenuto è definito da una query SQL su altre tabelle (chiamate tabelle di base). Non memorizza i dati fisicamente (tranne nel caso delle viste materializzate), ma genera la tabella dinamicamente al momento della chiamata.
Scopo: Semplificare query complesse, mascherare dati sensibili agli utenti non autorizzati (sicurezza).
Vincoli di Integrità
I vincoli sono regole atte a garantire la correttezza e la coerenza dei dati nel tempo.
Vincolo di Integrità Referenziale: Regola fondamentale del modello relazionale. Stabilisce che ogni valore non nullo di una chiave esterna (Foreign Key) in una tabella deve corrispondere a un valore esistente della chiave primaria (Primary Key) nella tabella referenziata. Garantisce la solidità dei legami tra record.
Vincolo di Entità: La chiave primaria di una relazione non può assumere il valore nullo (NOT NULL) e deve essere univoca.
Vincoli di Dominio: Limitazioni sui valori ammissibili per un singolo attributo (es. ETA > 14, vincoli sul tipo di dato).
Linguaggi per Database e Operazioni Relazionali
Classificazione dei Linguaggi SQL
DDL (Data Definition Language): Comandi per definire, modificare o distruggere le strutture del database (es. CREATE, ALTER, DROP).
DML (Data Manipulation Language): Comandi per manipolare le istanze dei dati (es. INSERT, UPDATE, DELETE).
DQL (Data Query Language): Sottoinsieme specifico focalizzato sull'interrogazione e il recupero dei dati (istruzione SELECT).
DCL (Data Control Language): Comandi per la gestione dei permessi e della sicurezza (es. GRANT, REVOKE).
LINGUAGGIO SQL (STRUCTURED QUERY LANGUAGE)(parte3)
Introduzione e Data Definition Language (DDL)
il linguaggio sql è lo standard internazionale per l'interazione con i database relazionali. E un linguaggio dichiarativo: l'utente specifica cosa vuole ottenere, non il procedimento algoritmico per estrarlo.
Comandi DDL Fondamentali
Il DDL gestisce la definizione geometrica e strutturale delle tabelle e dei vincoli.
CREATE TABLE: Genera una nuova tabella definendo attributi, domini e vincoli.
ALTER TABLE: Modifica la struttura di una tabella esistente (aggiunta/rimozione colonne o vincoli).
DROP TABLE: Elimina definitivamente la tabella e tutti i dati in essa contenuti dal database.
Data Manipulation Language (DML) e Istruzione SELECT
Comandi DML Fondamentali
Il DML opera sulle istanze all'interno delle tabelle create dal DDL.
INSERT INTO: Inserisce nuove tuple.
UPDATE: Modifica i valori di righe preesistenti, filtrate da una condizione WHERE.
DELETE FROM: Rimuove righe specifiche basate su filtri operativi.
L'Istruzione SELECT e le Operazioni di Join
L'interrogazione dei dati (DQL) avviene tramite la struttura SELECT. I tipi fondamentali di JOIN permettono l'accorpamento di tabelle correlate:
INNER JOIN: Restituisce le righe solo se vi è una corrispondenza in entrambe le tabelle coinvolte nella condizione.
LEFT JOIN (o Outer Join): Restituisce tutte le righe della tabella di sinistra e le righe corrispondenti della tabella di destra. Se non c'è corrispondenza, inserisce valori NULL.
Operatori, Funzioni di Aggregazione e Raggruppamenti
Operatori di Filtraggio (WHERE)
AND, OR, NOT: Operatori logici booleani standard.
BETWEEN ... AND ...: Verifica l'inclusione in un intervallo chiuso di valori.
IN (...): Verifica la corrispondenza con una lista definita di valori discreti.
IS NULL / IS NOT NULL: Verifica l'assenza o presenza di un valore in un attributo.
Funzioni di Aggregazione e Clausole GROUP BY / HAVING
Le funzioni di aggregazione calcolano un singolo valore riassuntivo a partire da un insieme di tuple.
COUNT(): Conta il numero di righe o valori non nulli.
SUM(), AVG(): Calcolano la somma e la media aritmetica (valori numerici).
MIN(), MAX(): Estraggono il valore minimo e massimo del set.
LINGUAGGI DI PROGRAMMAZIONE DINAMICI LATO SERVER(parte 2)
Analisi delle Tecnologie Server-Side: PHP e Python
Il World Wide Web si basa sul protocollo stateless HTTP/HTTPS. Nelle pagine statiche, il client (browser) richiede un file HTML e il server web (es. Apache o Nginx) si limita a inviarlo.
Confronto Tecnologico: PHP vs Python
PHP (Hypertext Preprocessor): Nato specificamente per il web. Il codice PHP viene inserito direttamente all'interno dei file HTML tramite i tag di apertura/chiusura <?php ... ?>. È interpretato nativamente tramite moduli del server web (es. mod_php) o gestori di processi esterni (PHP-FPM).
Python: Linguaggio di programmazione general-purpose multiparadigma. In ambito web non si innesta dentro l'HTML, ma utilizza framework dedicati (es. Flask, Django) che implementano l'architettura MVC (Model-View-Controller) e si interfacciano al server web mediante protocolli standard come WSGI o ASGI.
Gestione dello Stato: Cookie e Sessioni
Il Problema della Statelesness di HTTP
Il protocollo HTTP è definito stateless (privo di stato) perché ogni richiesta inviata da un client a un server viene trattata come una transazione indipendente e isolata. Il server non conserva memoria delle richieste precedenti. Per superare questa limitazione e realizzare funzionalità complesse (es. carrelli della spesa, aree riservate con login), sono stati introdotti i Cookie e le Sessioni.
Cookie
Un Cookie è un piccolo file di testo memorizzato direttamente sul computer dell'utente (lotto client) dal browser, su istruzione del server web mediante l'header HTTP Set-Cookie.
Funzionamento: A ogni richiesta successiva verso lo stesso server, il browser allega automaticamente i cookie salvati nell'header HTTP Cookie.
Problematiche: I dati sono modificabili dall'utente e visibili in chiaro, rappresentando un rischio di sicurezza se utilizzati per dati critici.
Sessioni
La Sessione memorizza i dati sul server (lato server) all'interno di file temporanei o database. Al client viene inviato esclusivamente un codice identificativo univoco e casuale chiamato Session ID, tipicamente memorizzato in un cookie di sessione temporaneo.
PARTE QUINTA: PROGETTAZIONE DI DATABASE (RDBMS)
Modello Concettuale: Il Modello Entità-Relazione (E-R)
Costrutti Fondamentali del Modello E-R
Entità: Classi di oggetti (persone, luoghi, cose, eventi) della realtà di interesse che hanno un'esistenza autonoma e rilevanza ai fini dell'applicazione. Vengono rappresentate graficamente da rettangoli.
Attributo: Proprietà elementari che descrivono le caratteristiche delle entità o delle associazioni. Rappresentate da cerchi o elencate dentro l'entità.
Identificatore (Chiave): Un attributo (o un insieme di attributi) che permette di distinguere univocamente ogni singola occorrenza di un'entità dalle altre. Può essere interno (se composto da attributi dell'entità stessa) o esterno (se coinvolge l'identificatore di un'altra entità tramite un'associazione).
Associazione (Relazione): Legame logico, significativo per l'azienda, che intercorre tra due o più entità. Rappresentata graficamente da un rombo.
Cardinalità delle Associazioni
La cardinalità specifica il numero minimo e massimo di occorrenze di associazione a cui una singola occorrenza di entità può partecipare. Si classificano in:
1 more item...
Modello Logico: Ristrutturazione e Traduzione Relazionale
Normalizzazione delle Relazioni
La Normalizzazione è una procedura matematica di verifica e ottimizzazione strutturale dello schema logico relazionale. Il suo scopo è eliminare la ridondanza dei dati ed evitare le pericolose anomalie di transazione
Le Tre Forme Normali (1NF, 2NF, 3NF)
Prima Forma Normale (1NF)
Una relazione è in 1NF se, e solo se:
Tutti i suoi attributi sono atomici (non composti e non multivalore, ovvero non ulteriormente scomponibili).
Esiste una Chiave Primaria definita.
Seconda Forma Normale (2NF)
Una relazione è in 2NF se, e solo se:
È in 1NF.
Tutti gli attributi non-chiave dipendono interamente dalla chiave primaria (non possono dipendere da una parte di essa). Questa verifica ha senso solo se la chiave primaria è composta (ha più attributi).
Terza Forma Normale (3NF)
Una relazione è in 3NF se, e solo se:
È in 2NF.
Nessun attributo non-chiave dipende in modo transitivo dalla chiave primaria (ovvero nessun attributo non-chiave deve dipendere da un altro attributo non-chiave). Ogni attributo deve dipendere "soltanto dalla chiave, da tutta la chiave, nient'altro che dalla chiave".
Modello Fisico, Ottimizzazione e Gestione Avanzata (RDBMS)
La progettazione fisica traduce lo schema logico normalizzato in strutture fisiche ottimizzate per lo specifico DBMS
Indicizzazione
Un Indice è una struttura dati ausiliaria (tipicamente implementata tramite alberi bilanciati B-Tree o tabelle Hash) che il DBMS crea e mantiene per velocizzare le operazioni di ricerca e selezione dei record
Vantaggi: Velocità esponenziale nelle interrogazioni (SELECT filtrate da WHERE).
Svantaggi: Rallenta le operazioni di scrittura (INSERT, UPDATE, DELETE), poiché il DBMS deve aggiornare anche l'indice a ogni modifica dei dati fisici.
Transazioni e Proprietà ACID
Una Transazione è una sequenza di operazioni sui dati che costituisce un'unità logica di lavoro indivisibile. Una transazione deve tassativamente rispettare le proprietà ACID:
Atomicità (Atomicity): La transazione è un atomo: o viene eseguita interamente con successo (COMMIT), o non deve lasciare alcuna traccia sul database; in caso di errore viene annullata completamente eseguendo un (ROLLBACK).
Consistenza (Consistency): La transazione porta il database da uno stato valido a un altro stato altrettanto valido, senza mai violare i vincoli di integrità definiti.
Isolamento (Isolation): L'esecuzione di una transazione concorrente deve essere isolata rispetto alle altre transazioni simultanee, evitando interferenze sui dati intermedi non ancora consolidati.
1 more item...
Trigger
Un Trigger è un blocco di codice SQL (una procedura memorizzata) che viene eseguito automaticamente dal DBMS al verificarsi di un evento specifico di manipolazione dati (INSERT, UPDATE o DELETE) su una determinata tabella.
Strategie di Sicurezza: Backup dei Dati
Backup Fisico: Copia brutale dei file binari e delle directory dei dati presenti sul disco. Veloce nel ripristino, ma richiede spesso il blocco del DBMS (Cold Backup).
Backup Logico: Generazione di un file di testo contenente tutti i comandi SQL (CREATE, INSERT) necessari per ricostruire interamente la struttura e i dati da zero (es. tramite l'utility mysqldump)
Strategia Incrementale: Si esegue un backup totale periodico (es. settimanale) combinato con backup giornalieri incrementali (che memorizzano solo le variazioni registrate nel Transaction Log dall'ultimo backup).
PARTE SESTA: DATABASE NoSQL E BIG DATA
Limitazioni del Modello Relazionale e il Mondo NoSQL
Per decenni il modello relazionale ha dominato lo scenario tecnologico. Tuttavia, l'avvento del Web 2.0, dei Big Data, dell'Internet of Things (IoT) e delle infrastrutture cloud su larga scala ha evidenziato limiti strutturali intrinseci dei sistemi RDBMS tradizionali.
Le Limitazioni Principali dei RDBMS
Rigidità dello Schema: I RDBMS richiedono uno schema strutturale fisso e predefinito (Schema-on-Write). Modificare la struttura di una tabella con miliardi di righe per aggiungere una colonna blocca il sistema ed è estremamente oneroso.
Difficoltà di Scalabilità Orizzontale: I RDBMS nascono per scalare verticalmente (aggiungendo hardware più potente come CPU e RAM sullo stesso server). La scalabilità orizzontale (distribuire i dati su un cluster di macchine economiche tramite sharding) è complessa nei RDBMS a causa della necessità di mantenere l'integrità referenziale globale e la coerenza transazionale ACID attraverso la rete.
Tipologie ed Esempi di Database NoSQL
I database NoSQL (Not Only SQL) superano il vincolo tabellare offrendo schemi flessibili (Schema-on-Read) e scalabilità nativa. Si dividono in quattro grandi famiglie:
Chiave-Valore (Key-Value Stores): I dati sono memorizzati come coppie composte da una chiave univoca e un valore associato (un blocco di dati opaco al DBMS). Massima semplicità e performance velocistiche assolute.
Esempi: Redis, Riak.
Casi d'uso: Gestione di cache di sistema, sessioni utente ad alto traffico.
Documentali (Document Stores): Evoluzione del chiave-valore. Il valore è un documento strutturato (tipicamente in formato JSON o BSON), che il DBMS è in grado di leggere e indicizzare internamente.
Esempi: MongoDB, CouchDB.
Casi d'uso: Sistemi di Content Management (CMS), cataloghi e-commerce con prodotti eterogenei.
Orientati alle Colonne (Wide-Column Stores): I dati sono memorizzati in colonne anziché in righe, raggruppate in "famiglie di colonne". Permette letture e aggregazioni ultra-rapide su moli di dati sterminate.
Esempi: Apache Cassandra, HBase.
Casi d'uso: Analisi di serie temporali, log industriali, Big Data Analytics.
A Grafo (Graph Databases): Basati sulla teoria dei grafi. Rappresentano i dati sotto forma di nodi (entità) e archi (relazioni), entrambi dotati di proprietà. Ottimizzati per navigare relazioni complesse.
Casi d'uso: Social network (reti di amicizie), sistemi di raccomandazione, tracciamento di frodi bancarie.
Esempi: Neo4j, OrientDB.