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;