Database
• In italiano: base di dati
• Insieme organizzato di dati
• Due aspetti importanti
– Struttura dati
• Relazionale, ad albero, ad oggetti
– Possibilità di effettuare query
DBMS
• Database Management System
• E’ il sistema software (server) per la gestione
di un database
– Contiene il database
– Permette di modificare il database
• Inserimento, modifica di record
– Risponde alle query dell’utente (client)
DBMS - Funzionalità
• Multiutenza con autorizzazioni CRUD
– Amministratori, utenti standard, utenti ospiti
• Interrogazioni mediante query
– “select”, “update”, “insert”, “delete”, … (in SQL)
– Con linguaggio di programmazione
• Mediante apposito “driver”
– Query mediante interfaccia grafica (QBE)
• Cosa possibile per esempio in Microsoft Access
• Integrità dei dati
– Transazioni di tipo ACID (atomiche, consistenti, isolate,
durabili o persistenti)
DBMS - Tipologie
• DBMS ad oggetti
– I record sono organizzati come oggetti
– Ogni oggetto può contenere altri oggetti
• DBMS relazionale
– Si basa sul concetto matematico di relazione
insiemistica
DBMS relazionali
Open Source
• MySQL
• PostgreSQL
Proprietari
• Oracle
• Microsoft Access
Modello relazionale
• Insieme S = {a, b, c, d}
• Insieme T = {1, 2, 3}
• Prodotto cartesiano
S x T = {(a, 1), (a, 2), (a, 3), (b, 1), (b, 2) …………..}
• Relazione
– sottoinsieme del prodotto cartesiano
Esempio pratico
• S = tabella dei clienti di un’azienda
• T = tabella degli ordini effettuati
• Una query esprime in qualche modo una
relazione tra le due tabelle (esempio: trova tutti
gli ordini del cliente “Rossi”)
– Tipi di query:
• SELECT
• INSERT
• UPDATE
Relazioni - Tipologie
• “Uno ad uno”
– Poco usata nella pratica, perché ?
• “Uno a molti”
• “Molti a molti”
Fare degli esempi pratici
Query - esempi didattici
• SELECT
FROM
WHERE
nome, cognome
clienti
(anno_registrazione > 2000);
• SELECT
FROM
WHERE
*
clienti, ordini
(clienti.nome = “Marco”)
AND (clienti.id = ordini.user_id);
Query - esempi didattici
• INSERT INTO books(title, autor, publisher)
VALUES (“I moderni sistemi operativi”,
“NomeAutore”, “NomeEditore”);
• UPDATE books
SET release_date = ‘2016-04-26’,
publisher = “nomecasaeditrice”
WHERE id = 234;