Database
Un database è una raccolta organizzata di dati, che consente di memorizzare, gestire e
recuperare informazioni in modo efficiente. I dati in un database sono strutturati in tabelle,
dove ogni tabella è composta da righe (o record) e colonne (o campi). Le tabelle possono
essere correlate tra loro attraverso chiavi primarie e chiavi esterne. I database possono
essere categorizzati in vari tipi, come relazionali, NoSQL, grafici, e altri, a seconda della loro
struttura e del modello di gestione dei dati.
DBMS (Database Management System)
Il DBMS è un software che fornisce strumenti per creare, leggere, aggiornare e cancellare
dati all'interno di un database. Gestisce l'accesso ai dati garantendo sicurezza, integrità, e
coerenza. Un DBMS offre funzionalità come il controllo delle transazioni, che assicura che
tutte le operazioni di un'unità di lavoro siano completate correttamente o annullate in caso di
errore. Esempi di DBMS includono MySQL, PostgreSQL, Oracle Database, Microsoft SQL
Server e SQLite.
Algebra Relazionale
L'algebra relazionale è un linguaggio formale per descrivere le operazioni sui dati nei
database relazionali. Include un insieme di operazioni che possono essere combinate per
eseguire query complesse. Alcune operazioni principali sono:
● Selezione (σ): Filtra le righe di una tabella in base a una condizione specifica. Ad
esempio, σ(cognome = 'Rossi')(Dipendenti) seleziona tutti i dipendenti con cognome
'Rossi'.
● Proiezione (π): Estrae specifiche colonne di una tabella. Ad esempio, π(nome,
cognome)(Dipendenti) restituisce una tabella con solo i nomi e i cognomi dei
dipendenti.
● Unione (∪): Combina le righe di due tabelle con lo stesso schema, eliminando
duplicati. Ad esempio, Dipendenti ∪ ExDipendenti.
● Intersezione (∩): Restituisce le righe comuni a due tabelle. Ad esempio, Dipendenti
∩ ExDipendenti.
● Differenza (−): Restituisce le righe di una tabella che non sono presenti in un'altra.
Ad esempio, Dipendenti − ExDipendenti.
● Join (⨝): Combina righe di due tabelle basate su una condizione comune. Ad
esempio, Dipendenti ⨝ Dipartimenti per combinare dipendenti con i loro rispettivi
dipartimenti.
SQL Injection
L'SQL Injection è una tecnica di attacco in cui un attaccante inserisce codice SQL malevolo
in un input di un'applicazione web, con l'obiettivo di manipolare il database. Questo avviene
quando l'input dell'utente non è correttamente validato o sanitizzato. Un esempio di SQL
Injection è fornire un input come 1; DROP TABLE Utenti; in una query che non è
correttamente protetta, causando la cancellazione della tabella Utenti. Le contromisure
includono l'uso di query preparate, ORM (Object-Relational Mapping) e validazione accurata
degli input.
Normalizzazione
La normalizzazione è il processo di organizzazione dei dati in un database per ridurre la
ridondanza e migliorare l'integrità dei dati. Il processo implica la suddivisione delle tabelle in
tabelle più piccole e l'eliminazione di dati duplicati. Ci sono diverse forme normali:
● Prima Forma Normale (1NF): Richiede che tutti i campi contengano valori atomici e
ogni valore in una colonna sia dello stesso tipo.
● Seconda Forma Normale (2NF): Richiede che sia in 1NF e che ogni attributo non
chiave sia completamente dipendente dalla chiave primaria.
● Terza Forma Normale (3NF): Richiede che sia in 2NF e che ogni attributo non
chiave sia indipendente da ogni altro attributo non chiave (nessuna dipendenza
transitiva).
● Boyce-Codd Normal Form (BCNF): Una versione più rigorosa della 3NF, che
elimina alcune anomalie non gestite dalla 3NF.
Schemi E/R (Entità-Relazione)
Un schema E/R è una rappresentazione grafica delle entità in un sistema e delle relazioni
tra loro. Gli elementi principali sono:
● Entità: Oggetti del mondo reale che possono essere distinti da altri oggetti. Ad
esempio, Studente e Corso.
● Attributi: Proprietà che descrivono un'entità. Ad esempio, Nome, Cognome,
Matricola per l'entità Studente.
● Relazioni: Associazioni tra entità. Ad esempio, Iscrizione tra Studente e
Corso.
Floor
La funzione floor restituisce il massimo intero che è minore o uguale a un dato numero. È
comunemente usata per arrotondare verso il basso i numeri decimali. Nei linguaggi di
programmazione, questa funzione è spesso disponibile nelle librerie matematiche. Ad
esempio, in Python, math.floor(3.7) restituisce 3 e math.floor(-2.3) restituisce -3.
SQLite
SQLite è un DBMS leggero e autoconclusivo che non richiede un server separato. È
utilizzato frequentemente in applicazioni mobili, desktop e embedded grazie alla sua
semplicità e portabilità. SQLite memorizza l'intero database in un singolo file, rendendolo
facile da gestire. Nonostante sia leggero, supporta gran parte delle funzionalità SQL di un
DBMS completo, come transazioni, subquery, e viste.
Socket
Un socket è un endpoint di comunicazione utilizzato per inviare e ricevere dati attraverso
una rete. Viene utilizzato per stabilire una connessione tra due dispositivi su una rete e
permette lo scambio di dati. Esistono due tipi principali di socket:
● Socket Stream (TCP): Fornisce una connessione affidabile e orientata alla
connessione. Assicura che i dati arrivino nell'ordine corretto e senza perdita.
● Socket Datagram (UDP): Fornisce una connessione senza connessione e meno
affidabile. I pacchetti di dati possono arrivare in qualsiasi ordine e possono essere
persi.
REST (Representational State Transfer)
REST è uno stile architettonico per la progettazione di servizi web. I servizi RESTful
utilizzano il protocollo HTTP per comunicare e operare su risorse identificate da URL. Le
operazioni principali in REST sono:
● GET: Recupera una risorsa.
● POST: Crea una nuova risorsa.
● PUT: Aggiorna una risorsa esistente.
● DELETE: Cancella una risorsa.
REST è basato su statelessness, meaning that each request from a client to a server must
contain all the information needed to understand and process the request.
API (Application Programming Interface)
Un'API è un insieme di regole che permette a un'applicazione di interagire con un'altra
applicazione o servizio. Le API definiscono come le richieste e le risposte devono essere
formattate e quali operazioni possono essere eseguite. Le API sono essenziali per la
comunicazione tra software diversi, facilitando l'integrazione e l'interoperabilità. Le API
possono essere pubbliche, private o partner, a seconda dell'accessibilità e dell'utilizzo
previsto.
Programmazione Asincrona
La programmazione asincrona consente l'esecuzione di operazioni in modo non
bloccante, permettendo al programma di continuare a funzionare mentre si attende il
completamento di un'operazione. Questo è particolarmente utile per operazioni I/O come
l'accesso a un database o a una rete. Tecniche comuni di programmazione asincrona
includono:
● Callback: Funzioni passate come argomenti ad altre funzioni e chiamate al
completamento di un'operazione.
● Promise: Oggetti che rappresentano il completamento futuro (o il fallimento) di
un'operazione asincrona.
● Async/Await: Sintassi che permette di scrivere codice asincrono in modo simile a
quello sincrono, migliorando la leggibilità.
Riassunto
1. Database: Raccolta organizzata di dati strutturata in tabelle.
2. DBMS: Software per gestire database, fornendo strumenti per operazioni CRUD
(Create, Read, Update, Delete).
3. Algebra Relazionale: Linguaggio formale per operazioni su dati nei database
relazionali.
4. SQL Injection: Tecnica di attacco che sfrutta vulnerabilità nelle query SQL.
5. Normalizzazione: Processo di organizzazione dei dati per ridurre la ridondanza.
6. Schemi E/R: Rappresentazione grafica delle entità e delle relazioni in un sistema.
7. Floor: Funzione che arrotonda un numero verso il basso all'intero più vicino.
8. SQLite: DBMS leggero e autoconclusivo che memorizza i dati in un singolo file.
9. Socket: Endpoint di comunicazione per l'invio e la ricezione di dati attraverso una
rete.
10.REST: Stile architettonico per servizi web che utilizza HTTP per operare su risorse.
11.API: Insieme di regole che permette l'interazione tra diverse applicazioni.
12.Programmazione Asincrona: Tecnica che permette l'esecuzione non bloccante di
operazioni, migliorando l'efficienza e la reattività.
Spero che queste spiegazioni dettagliate siano utili! Se hai ulteriori domande o necessiti di
chiarimenti, fammelo sapere.