1. Introduzione e info
Lezione 23 settembre 2025
Una base di dati è una collezione di dati, ed in questo corso ci si focalizzerà sulle basi di dati relazionali, quindi un'organizzazione basata su tabelle. La parte di un'organizzazione che gestisce i dati è il sistema informativo, mentre il sistema informatico gestisce i dati attraverso un calcolatore.
DBMS, database management system.
Un programma software per gestire una base di dati, tipo MySQL, Oracle… Per gestire una base di dati si intende che questi dati possono essere modificati, aggiornati, memorizzati, interrogati, ovvero estrarre da essi delle informazioni.
- Studio di fattibilità: si valutano le possibili alternative per realizzare il sistema informativo, si fa un'analisi dei costi e dei benefici, pro e contro di ciascuna alternativa e poi si capisce qual è quella più opportuna;
- Raccolta e analisi dei requisiti: si cerca di capire quali sono i dati gestiti e quali sono le operazioni che devono essere effettuate sul sistema informativo. Questa analisi in genere si fa con il committente interessato a questo sistema;
- Documento dei requisiti, composto da:
- Requisiti funzionali:
- Gestione dei clienti;
- Gestione fatture;
- Analisi;
- Requisiti non funzionali:
- Web;
- Sistema pagamenti sicuri;
- Dover usare pacchetti open source;
- Requisiti funzionali:
- Progettazione;
- Implementazione: si va su un calcolatore e si crea la struttura della base di dati;
- Testing-Validazione e collaudo: sistema testato per vedere se funziona come ci si aspetta;
- Messa in opera-funzionamento: il testing è andato a buon fine e questa è la fase finale;
Da una fase si può passare alla precedente, ma in realtà si può passare a qualsiasi delle precedenti, questo perché è possibile che ad esempio ci si renda conto di qualche aspetto dimenticato durante la validazione e quindi torno indietro alla fase di progettazione, rimediando agli errori o le possibili dimenticanze.
Fase 4: Progettazione
Prima fase: progettazione concettuale.
Prende dei requisiti e produce uno schema concettuale, e in genere questi requisiti vengono scritti testualmente.
Schema concettuale: descrizione ad un alto livello di astrazione dei dati, può essere redatto utilizzando uno dei tanti linguaggi, si userà il modello Entità-Relazione (E-R), quindi sarà uno schema E-R.
Seconda fase: progettazione logica.
Schema logico: più concreto di quello concettuale, e dice come i dati verranno organizzati sul computer. Quindi esso sarà uno schema relazionale, intuitivamente è la struttura, nome delle tabelle, come si chiamano le colonne e quante sono.
Terza fase: progettazione fisica.
Riguarda individuare delle strutture dati che permettono un accesso efficiente ai dati, e si chiamano indici. L'output della progettazione non è solo lo schema fisico, ma consiste di esso, di quello logico e quello concettuale.
Linguaggio di interrogazione è un linguaggio che in questo caso interroga le strutture dati, SQL darà la possibilità di esprimere interrogazioni ma anche altro, invece con l'algebra relazionale si possono porre solo interrogazioni.
Modello Entità-Relazione
Linguaggio per la progettazione concettuale. Vuole essere una descrizione di quelli che sono i dati riportati dai requisiti.
Entità: serve a descrivere una classe di oggetti con proprietà comuni aventi esistenza autonoma. Si specifica con un rettangolo all'interno del quale è riportato il nome dell'entità. Non necessariamente dipendono dagli altri costrutti messi nello schema.
Ogni studente viene chiamato occorrenza dell'entità.
Relazione: non hanno esistenza autonoma, dipendono dalle entità.
Le occorrenze della relazione sono i legami, tra ad esempio studente e insegnamento.
Preso uno studente e un insegnamento ci può essere al più un esame per come è scritto sopra lo schema, per lo studente e l'insegnamento presi. Le occorrenze di esame sono coppie.
Verranno utilizzate solo relazioni binarie, che collegano due entità. Ma esistono relazioni che collegano più entità. Le relazioni ricorsive collegano la stessa entità. Tra due entità ci possono 0, 1 o più relazioni. Un'occorrenza di propedeuticità è il collegamento tra un insegnamento e un insegnamento.
Attributi: servono a specificare le proprietà delle entità e delle relazioni. Esistono attributi chiamati composti, nell'esempio "indirizzo" lo è.
Cardinalità: si possono esprimere per le relazioni e gli attributi. Per le relazioni: x1, y1 devono essere valori interi non negativi, o n valore generico > 1, x2 deve essere minore uguale y2 uguale x1 e y1, x1 cardinalità minima sul lato sx, y2 cardinalità massima su sx, uguale x2 e y2 per il lato dx.
Le cardinalità vanno messe necessariamente.
(1,1) significa da un minimo di uno a un massimo di uno.
Se si ha una relazione e si guardano le cardinalità massime si può classificare in:
- Uno a uno: quando le cardinalità massime sono 1;
- Uno a molti: quando una cardinalità max è 1 e l'altra è n;
- Molti a molti: quando entrambe le cardinalità sono n.
Un valore maggiore di 1 va trattato come n.
Nell'esempio le relazioni molti a molti sono esame, propedeuticità, commissione.
Relazioni uno a uno è direzione.
Relazioni uno a molti titolarità.
Le cardinalità si possono specificare anche per gli attributi, nella maggior parte dei casi sono (1,1) e si omettono per questo.
Nell'esempio le uniche cardinalità degli attributi che esprimo sono quella del telefono e della patente.
2. Ulteriori costrutti E-R
Lezione 26 settembre 2025
Schema entità relazione, 2 entità studente e insegnamento, la prima ha tre attributi, la seconda ne ha due. Relazione esame, che ha due attributi, lega uno studente ad insegnamento e lo caratterizza un voto e una data. Cardinalità sulla sx, ogni studente può essere legato ad uno o più insegnamenti, quella a dx, un insegnamento può essere legato a uno o più studenti che seguono l'insegnamento. Nella relazione esame c'è un vincolo implicito? Preso uno studente e preso un insegnamento non posso avere più esami, al più uno.
Se io volessi memorizzare più esami per uno stesso studente per un insegnamento? Occorre usare un altro schema.
Esame non è più opportuno modellarlo come relazione, ma deve diventare a sua volta un'entità, con due nuove relazioni.
Identificatore
Servono a identificare le occorrenze di un'entità. Ogni entità deve avere almeno un identificatore, significa che ogni identificatore va specificato. MAI per le relazioni.
Identificatori interni: consistono di alcuni degli attributi dell'entità o anche tutti, sottoinsieme degli attributi.
Esempio qui è l'attributo matricola per lo studente, perché non ci possono essere studenti con la stessa matricola, è univoca. Se un attributo fa parte di un identificatore la sua cardinalità deve essere (1,1). Per codice, non ci possono essere insegnamenti con lo stesso codice. Secondo identificatore per studente fatto di due attributi, nome e cognome, e significa che insieme mi permettono di identificare univocamente uno studente.
A sx, c'è un unico identificatore, come prima. A dx, due identificatori, uno fatto solo da nome, uno solo da cognome, non ci possono essere più studenti con lo stesso nome, non ci possono essere più studenti con lo stesso cognome. La modellazione a dx è più stringente rispetto a quella a sx. L'uso di una o dell'altra dipende da ciò che serve e ciò che è stato chiesto, nella vita reale non è un esempio realistico.
Identificatori esterni
Base di dati che può memorizzare dati di più università. Fa storcere il naso l'identificatore su matricola, quello che bisogna fare è mantenerlo a patto che si parli di una università, ma in una diversa università le cose potrebbero cambiare, quindi si cambia:
Ogni studente è identificato dalla sua matricola e dall'iscrizione dell'università di appartenenza.
Quindi adesso l'identificatore abbraccia oltre l'attributo anche altre entità. Quindi ogni studente è identificato dalla sua matricola e l'università in cui è iscritto.
Generalizzazione
Generalizzazione: lega un'entità genitore a una o più entità dette figlie. La prima entità è più generale rispetto a quelle figlie, perché effettivamente esse sono delle specializzazioni dell'entità genitore. L'entità figlia eredita tutto ciò che caratterizza l'entità genitore.
Uomo e donna solo delle specializzazioni di persona. Ogni uomo è una persona, ogni donna è una persona. Un'occorrenza di uomo/donna è anche un'occorrenza di persona e quindi eredita tutto di persona.
Ci possono essere generalizzazioni a più livelli. Alle entità figlie si possono aggiungere attributi, relazioni, ma devono valere unicamente per l'entità figlia presa in esame.
Quando l'entità figlia è una sola si parla di sottoinsieme.
Tipi:
- Totale o parziale;
- Esclusiva o sovrapposta;
Questi due criteri sono ortogonali, cioè indipendenti l'uno dall'altro.
Totale → quando l'unione delle occorrenze delle entità figlie è uguale all'insieme delle occorrenze dell'entità genitore. Se non è totale è parziale.
(Nell'esempio sarebbe stata parziale se ci fosse stata una persona né uomo né donna).
Esclusiva → quando gli insiemi delle occorrenze delle entità figlie sono a due a due disgiunte. Se non è esclusiva è sovrapposta.
(Uomini disgiunti dalle donne, non c'è uomo che sia donna, quindi è totale ed è esclusiva).
Insiemi disgiunti quando l'intersezione dà l'insieme vuoto: ∩ = ∅
Parziale-Esclusiva. Parziale nel senso che esiste almeno un professionista che non è né ingegnere, né avvocato, né architetto. Oppure, non coprono tutte le professioni. Insiemisticamente sto dicendo che i singoli insiemi uniti danno un insieme proprio.
Esclusiva significa che un professionista non può avere più di una professione, quindi insiemisticamente insieme degli ingegneri disgiunto da quello di avvocati e così via.
Totale-Esclusiva.
Parziale-Sovrapposta.
Totale-Sovrapposta.
Gerarchie di generalizzazioni
Questa potrebbe essere classificata come parziale-sovrapposta.
Una stessa entità può partecipare a più generalizzazioni.
3. Esercitazione e modello relazionale
Lezione 30 settembre 2025
Esercizio 1
Si progetti il modello E-R per una base di dati di supporto ad una ditta che si occupa di interventi di manutenzione e riparazione di elettrodomestici. I clienti della ditta sono caratterizzati dal codice fiscale (attributo identificativo), dal nome e dalla residenza, ed associati ad una lista di richieste di intervento. Ciascuna richiesta di intervento, oltre che dal cliente che l'ha effettuata, è caratterizzata da un codice identificativo, dalla data/ora di ricezione, da una descrizione del guasto comunicato, e dall'elettrodomestico a cui si riferisce. Ogni elettrodomestico è identificato dalla coppia marca, modello, ed è anche caratterizzato dal peso, dal volume e da una descrizione. Uno stesso elettrodomestico può essere presente in un numero qualunque di richieste di intervento.
Alcune richieste di intervento sono dette "con prelievo" in quanto rendono necessario il trasporto dell'elettrodomestico verso il laboratorio della ditta. Per richieste di tale tipo, occorre indicare la data e la fascia oraria concordate per il prelievo. Inoltre, per ogni richiesta con prelievo, può essere specificato il veicolo utilizzato per il trasporto. I veicoli sono caratterizzati dalla targa (attributo identificativo), dal modello, da una descrizione, e ciascuno di essi può essere utilizzato per il trasporto in un numero qualunque di richieste con prelievo.
Ogni richiesta di intervento è inoltre associata alla lista degli interventi effettuati sull'elettrodomestico. Ogni intervento è caratterizzato, oltre che dalla richiesta che lo ha reso necessario, da un numero progressivo, dalla data di effettuazione e dal nome del tecnico che lo ha eseguito. Il numero progressivo identifica un intervento rispetto agli altri svolti in seguito alla stessa richiesta. Ciascun intervento è anche associato alla lista dei ricambi che è stato necessario utilizzare. I ricambi hanno un codice identificativo, nonché un prezzo ed una descrizione. Uno stesso ricambio può essere utilizzato in un numero qualunque di interventi, e nell'indicare che un ricambio è stato utilizzato in un intervento deve essere possibile indicare il numero di esemplari del ricambio utilizzati.
Esercizio 2
Si progetti una base di dati di supporto alla gestione di un parcheggio per lunghe soste di veicoli in un'area aeroportuale.
La superficie del parcheggio è divisa in zone, ciascuna delle quali contiene più piazzole di sosta. Ogni piazzola di sosta è caratterizzata dalla zona che la contiene, da un numero progressivo, e dalla dimensione, ed è di esattamente uno dei due tipi: 1) per autoveicoli, 2) per motoveicoli. Il numero progressivo di una piazzola la distingue rispetto alle altre collocate nella stessa zona. Alcune piazzole di sosta per autoveicoli sono dette elettriche, in quanto sono dotate di una stazione di ricarica per veicoli elettrici, di cui occorre riportare la potenza.
I veicoli ospitati nel parcheggio sono caratterizzati dalla targa (attributo identificativo), dalla marca e dal modello, e possono essere di due tipi: autoveicolo o motoveicolo.
Occorre tenere traccia delle soste dei veicoli, tenendo conto che gli autoveicoli possono sostare solo nelle piazzole per autoveicoli, e i motoveicoli solo nelle piazzole per motoveicoli. Pertanto, ogni sosta è caratterizzata dal numero di ticket emesso, dalla data di inizio e dalla data di fine della sosta, ed è esattamente uno dei due tipi: sosta per autoveicoli (e in questo caso è caratterizzata da un autoveicolo e da un piazzola per autoveicolo) e sosta per motoveicoli (e in questo caso è caratterizzata da un motoveicolo e da una piazzola per motoveicolo). Lo stesso numero di ticket può caratterizzare diverse soste, ma non esistono più soste con la stessa data iniziale e con lo stesso numero di ticket. Si noti che uno stesso veicolo può essere registrato in un numero qualunque di soste, così come una piazzola può essere usata in un numero qualunque di soste.
Per ogni sosta, può essere specificato al più un operatore che ha registrato l'ingresso del veicolo. Gli operatori sono caratterizzati dal codice fiscale (che è identificativo) e dal nome, e possono registrare un numero qualunque di veicoli. Per ogni operatore occorre anche riportare la lista delle piazzole elettriche sulle quali egli ha effettuato un controllo di qualità, e per ciascuna piazzola in tale lista deve essere specificata la data del controllo più recente effettuato dall'operatore. Si noti che una piazzola elettrica può subire un numero qualunque di controlli di qualità.
Modello relazionale
In questo modello una relazione è una tabella e prende spunto dal concetto di relazione della Teoria degli Insiemi.
Relazione insiemistica (su due insiemi): dati due insiemi D1 e D2, non necessariamente distinti, ⇒ il prodotto cartesiano di D1 e D2, indicato con D1xD2, è l'insieme di tutte le possibili coppie ordinate (v1,v2) tali che: 1 × 2 = {( 1, 2)| 1 ∈ 1, 2 ∈ 2}
Una relazione su D1 e D2 è un sottoinsieme di D1xD2.
Esempio:
1={ , , }
2 = {1, 2}
1 × 2 = {( , 1), ( , 2), ( , 1), ( , 2), ( , 1), ( , 2)}
Relazioni su e , esempio 1 2 {( , 2), ( , 1), ( , 2)} ⇒
Relazione insiemistica (su insiemi): dati n insiemi , il prodotto cartesiano di 1, , 1, ,… è l'insieme di tutte le possibili di n-uple ordinate (v1,…,vn) tali che vi appartiene a 1× ×⇒ × × ... × = {( , , ..., )| ∈ , ∈ , ∈ ,1 ≤ ≤ }1 2 1 2 1 1 2 2
Una relazione su D1,…,Dn è un sottoinsieme di D1x…xDn.
4. Continuo modello relazionale
Lezione 3 ottobre 2025
Do un nome alle colonne dell'esempio precedente e riscrivo l'esempio nel seguente modo:
Relazione.
Dato un insieme di attributi , dove ciascun attributo A in è associato a un insieme di valori, dominio di , una tupla su è una funzione associata ad ogni elemento di in un valore appartenente al dominio.
Uno Schema di relazione è un'espressione della forma , dove è un nome di relazione e è un insieme di attributi, ciascuno associato a un dominio.
Un'Istanza di Relazione (o relazione) su uno scenario di relazione è un insieme finito di tuple su .
Uno schema di basi di dati è un insieme finito di schemi di relazione con nomi diversi = { ( ), ..., ( )}1 1
Un'istanza di basi di dati (o semplicemente basi di dati) su uno schema di
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.