Informatica II - 3/10/2017
Professoressa Lombardi
Le basi di dati servono per immagazzinare dei dati in una maniera strutturata. Per immagazzinare i dati si usano i file. Salvare dei dati strutturati e complessi non è molto efficiente poiché tra loro non sono correlati e vi è una grande quantità di dati. Serve perciò qualcosa di più sofisticato, che è il DBMS (Data Base Management System), un software per manipolare e gestire basi di dati. Esempi di questo software sono Access, Oracle e MySQL.
Il DBMS deve gestire grandi quantità di dati, condivisi, persistenti e deve fare tutto questo garantendo l’affidabilità e la privatezza dei dati. Come tutti i sistemi, deve poi essere efficiente ed efficace. Quando si parla di DBMS, importante è considerare la persistenza, cioè i dati non devono essere persi quando il sistema viene chiuso. I dati devono essere memorizzati su dei file.
Esempio di un'applicazione di una banca
La banca ha come dati quelli dei correntisti, cioè l’anagrafica dei clienti, e poi informazioni sui conti. Tutte le informazioni devono essere persistenti. Bisogna poi considerare il fatto che, in generale, agli stessi dati si può accedere contemporaneamente (ad esempio, accedo in modo contemporaneo dal bancomat e dal sito della banca), quindi anche la contemporaneità deve essere gestita dal DBMS. Deve essere anche sicura, ad esempio quando vado al bancomat; prima mi autentico, scelgo la cifra da prelevare, il sistema controlla la disponibilità. Cosa succede se manca la corrente dopo l’operazione? Se lo faccio con le prime tre operazioni non succede nulla, se invece è tra la 4 e 5 c’è un problema perché risulta che ho prelevato dei soldi e in realtà non li ho presi. Non si può nemmeno cambiare la sequenza tra 4 e 5. Quindi anche il DBMS deve gestire queste operazioni atomiche, o le esegue tutte o, se si interrompe, le disfa tutte.
Fasi di progettazione di una nuova base di dati
- Quando dobbiamo progettare una nuova base di dati, dobbiamo prima capire qual è la realtà che dobbiamo modellare, ad esempio se dobbiamo modellare una banca dobbiamo capire chi sono gli attori, quindi i clienti, i capi, i conti, gli investimenti e per farlo studiamo i documenti, documenti che si usano nella realtà della procedura manuale.
- Fase della progettazione concettuale, permette di arrivare a un modello astratto che si chiama modello concettuale o modello ER (entità-relazione o entità-associazione). È una rappresentazione formale della realtà da modellare.
- Fase della progettazione logica che porta al modello logico, non a caso è fatto di caselle e si chiama modello relazionale. Il modello che vediamo noi è quello relazionale, è uno dei più utilizzati ma non l’unico, ad esempio c’è quello sugli oggetti; altri modelli più obsoleti sono il modello reticolare e gerarchico. Il modello relazionale è basato sulle relazioni. La relazione rappresenta un’entità con degli attributi.
- Vedremo il linguaggio SQL che permette sia di costruire le basi di dati sia di manipolare i dati e che permette di fare delle ‘query’, cioè chiedere delle informazioni alla base di dati e per farlo devo usare il linguaggio SQL.
- Vi è poi una parte di progettazione fisica che arriva al livello fisico, che non ci interessa poiché di questa parte si occupa il DBMS, è la parte che memorizza fisicamente i file, ma per noi questa è un’astrazione, in quanto noi costruiamo solo le tabelle, a mettere i dati e a correlarli tra di loro, tutto il resto è compito di chi ha costruito il DBMS.
Insiemi
Gli insiemi sono una collezione di elementi. Per quanto riguarda le caratteristiche:
- L’ordine non è importante.
- Un insieme non contiene duplicati.
Gli insiemi si possono descrivere dando una caratteristica che deve corrispondere a tutti gli insiemi. Un caso speciale è l’insieme vuoto, che è l’insieme che non contiene elementi.
Vediamo quando un elemento appartiene a un insieme: quando un elemento è all’interno di un insieme si indica con ∈.
Sottoinsieme
Tutti gli elementi del sottoinsieme sono elementi dell’insieme. Si indica con A⊆ B (significa che A può essere B), possono essere lo stesso insieme.
Piano cartesiano
Il prodotto cartesiano di due insiemi è l’insieme delle coppie, dove le coppie sono ordinate, cioè il primo elemento della coppia appartiene sempre al primo insieme, il secondo elemento appartiene sempre al secondo insieme. I punti nel piano cartesiano sono il prodotto cartesiano. Le coppie possono cambiare ordine, non cambio l’ordine degli elementi all’interno della coppia, ma posso cambiare l’ordine tra le varie coppie, poiché l’ordine è importante solo all’interno della coppia. Diverso è il prodotto cartesiano tra N insiemi, non è più di insiemi ma di n-uple.
Relazione
Una relazione su due insiemi A e B è un sottoinsieme del prodotto cartesiano AxB. Perché mette in relazione solo alcuni degli elementi dei due insiemi, restringe solo a delle determinate coppie che sono in relazione. Allo stesso modo si definisce la relazione tra n insiemi.
Operazioni sugli insiemi
- U: unione, unisce tutti gli elementi, comuni e non, naturalmente i numeri in comune non vengono ripetuti.
- ∩: intersezione, prende gli elementi comuni. Può esistere un’intersezione vuota quando gli insiemi sono disgiunti, non contengono elementi comuni.
- -: differenza insiemistica. A-B dall’insieme di A tolgo B.
Modello ER
È un modello concettuale dei dati. Fornisce una serie di costrutti che ci permettono di modellare la realtà. L’entità rappresenta una classe di oggetti che hanno delle proprietà comuni; l’occorrenza di un’entità è un esemplare all’interno dell’entità. Ad esempio, se l’entità è gli studenti di Torino, l’occorrenza dell’entità ad esempio è Riccardo. L’entità è rappresentata da un rettangolo.
Un altro elemento del modello ER è la relazione (o associazione) che rappresenta un legame tra due o più entità. Ad esempio, esame potrebbe essere una relazione tra le entità tra studente e corso. Un’occorrenza di una relazione è una n-upla costituita dall’occorrenza dell’entità. Se definisco la relazione esame, un’occorrenza della mia relazione sarà la coppia tra studente e corso cioè, chi ha sostenuto l’esame e il luogo dove è stato sostenuto l’esame.
Possono esistere anche più relazioni tra stesse entità. Le relazioni vengono rappresentate graficamente con il rombo. È possibile che una relazione metta in relazione un’identità con la stessa, un esempio è la relazione tra l’insieme degli impiegati e l’insieme degli impiegati. In generale, si possono avere anche relazioni con più di due entità. Quello che definisce la relazione coinvolge tutte e tre le entità. La relazione può coinvolgere tante entità, ma all’atto pratico quando si progetta e si fa una relazione con più di 3 entità significa che c’è qualcosa che non va e il progetto va rivisto.
Sia le entità che le relazioni hanno attributi che descrivono le proprietà elementari. Ad esempio: cognome, stipendio e età sono attributi dell’entità impiegato. Gli attributi vengono rappresentanti, nel modello ER, con dei cerchietti collegati all’entità o alla relazione a cui fanno riferimento. (I cerchietti vanno fatti vuoti, pieni sono con un significato diverso). L’entità studente ha due attributi, il corso ha altri due attributi (anno del corso e il suo nome), l’esame ha due attributi (voto e data dell’esame).
C’è un caso particolare di attributo che è l’attributo composto, ad esempio l’attributo composto INDIRIZZO che ha a sua volta tre attributi e che è connesso alla sua entità PERSONA, composta da tre attributi.
- Relazione tra: afferenza dipartimento, impiegato
- Partecipazioni impiegato, progetto
- Composizione
- Direzione
- ?
Cardinalità
Le cardinalità specificano quanti esemplari partecipano alla relazione. Si distingue:
- Cardinalità minima: un impiegato deve avere almeno 1 incarico e massimo 5
- Cardinalità massima: un incarico può non essere assegnato a nessun impiegato e può avere al massimo 50 impiegati (1,5)
Di solito non si specifica quanti valori ci possono essere dentro le cardinalità, possono essere:
- Per la cardinalità minima:
- Zero: opzionale
- Uno: la partecipazione dell’entità è obbligatoria (secondo l’esempio di prima devo specificare almeno un incarico)
- n: più di uno
- Per la cardinalità massima:
- Uno: associo a occorrenza dell’entità una sola occorrenza; ogni città può essere residente in una sola città
- N: generico; nella stessa città possono essere residenti più persone
Esempi di cardinalità
Esempio 1
(1…) persona deve per forza avere una città di residenza (...1) Significa che la persona non può avere più di una città di residenza (0...) la partecipazione dell’entità città alla residenza è opzionale perché possono essere delle città senza residenti (...N) In una città ci possono essere tanti residenti. Quando la relazione minima è uno e la massima è N si chiama relazione uno a molti.
Esempio 2
Abbiamo una relazione tra ordine e fattura (0,1) è opzionale (1,1) una fattura deve avere uno e un solo ordine di riferimento. Quando la cardinalità massima è uno da entrambe le parti la relazione si chiama uno a uno.
Esempio 3
La cardinalità minima è uno, quindi a un turista gli associo almeno un viaggio; ma dall’altra parte ci possono essere dei viaggi che possono essere acquistati da nessun turista, ma ci può essere un viaggio acquistato da tanti turisti, per questo ci può essere un viaggio comprato da molti. Questa relazione si chiama molti a molti.
Anche per gli attributi possono essere specificate le cardinalità. In questo esempio viene specificata la cardinalità patente della persona. La persona potrebbe non avere la patente e se ce l’ha ne ha solo una, invece per le auto se ne può avere più di una. Quando non è specificata la cardinalità vuol dire che è 0,1 oppure 1,1, esempio del cognome.
- Quando la cardinalità degli attributi minima è zero vuol dire che è opzionale
- Minima 1: attributo obbligatorio
- Massima N: multivalore
Identificatori
Servono per identificare univocamente le occorrenze delle identità. Ad esempio, la targa è un buon identificatore perché ogni automobile ha la sua targa, mentre modello e colore non possono essere dei buoni identificatori, esistono più auto con lo stesso colore e modello mentre non esistono due auto con la stessa targa.
Quando c’è un solo attributo che fa da identificatore è semplice, però a volte servono più attributi per un identificatore. Ad esempio, per identificare un film serve la coppia titolo regista e anno, identifica univocamente un film, non esistono due film che hanno contemporaneamente due film che hanno lo stesso regista, film e anno.
Pallino vuoto: per attributi normali
Pallino colorato: per attributi identificatori
Cardinalità e identificatori
Per progetto l’identificativo è il nome (nella stessa azienda non c’è lo stesso nome per due progetti). In partecipazione, l’impiegato potrebbe non partecipare a nessun oggetto, un impiegato può partecipare a tanti progetti. Un progetto deve avere almeno un impiegato assegnato e può averne tanti. Questa è una relazione molti a molti.
Direzione: un impiegato può anche dirigere un dipartimento, se un impiegato è direttore di un dipartimento può essere solo di quello e non di più dipartimenti, il dipartimento ha uno e un solo direttore. Questa è una relazione uno a molti.
Afferenza: l’impiegato potrebbe non appartenere a nessun dipartimento e può afferire a un solo dipartimento, un dipartimento deve avere per forza un impiegato in generale ne può avere tanti. È una relazione uno a molti
Composizione: ogni dipartimento deve avere almeno una sede associata e al massimo 1, al contrario una sede deve avere almeno una sede ma ne può avere anche tanti. Quindi la relazione è uno a molti.
La data di consegna di un progetto è opzionale, cioè può non avere data di consegna per il telefono significa che il telefono è obbligatorio e ne può avere tanti.
Generalizzazioni
Abbiamo una persona che è una generalizzazione di uomo o donna. Abbiamo degli insiemi e persone è un sovra insieme, rappresenta le diverse opzioni che ci possono essere all’interno dell’insieme già in alto. Sono classi di oggetto, la classe più in alto è la classe madre, quelle più in basso sono le classi figlie. Si possono classificare in totale o parziale. È totale se ogni occorrenza nella classe padre (ogni persona) è occorrenza di una delle classi figlie, cioè non esista un’occorrenza nella classe padre che non sia nelle figlie, altrimenti è parziale. L’unione copre totalmente l’insieme persona.
Esclusiva: l’intersezione tra uomo e donna non si sovrappone; se le sotto classi non si sovrappongono.
Sovrapposta: se gli insiemi si sovrappongono. Ad esempio, la generalizzazione uomo donna con persona è totale ed esclusiva. Una persona, in questo caso, può essere o studente o lavoratore, però esistono persone che sono sia lavoratori che studenti, oppure ho persone che non sono né studenti né lavoratori. Quindi questa generalizzazione è parziale, poiché l’unione tra lavoratori e studenti non mi dà l’insieme persona, e poi è sovrapposta.
TOTALE-PARZIALE e ESCLUSIVA-SOVRAPPOSTA sono due classificazioni ortogonali, vanno quindi specificate tutte e due.
- Le generalizzazioni sovrapposte si possono trasformare in esclusive e per farlo aggiungiamo un’altra entità che rappresenta la zona di sovrapposizione. Nel caso precedente inserisco l’entità che comprende sempre studente/lavoratore, quindi in questo caso le due entità non si sovrappongono più.
Progettazione logica
Guardiamo ora la parte della progettazione logica, il DBMS memorizza i dati in tabelle. Un esempio di prodotto cartesiano è quello tra le mamme e figli.
M = {Anna, Fulvia, Gaia} insieme delle mamme
F = {Andrea, Federico, Luca, Giulio} insieme dei figli
Prodotto cartesiano:
M x F = {(Anna, Andrea), (Anna, Federico), (Anna, Luca), (Anna, Giulio), (Fulvia, Andrea), (Fulvia, Federico), (Fulvia, Luca), (Fulvia, Giulio), (Gaia, Andrea), (Gaia, Federico), (Gaia, Luca), (Gaia, Giulio)}
Se voglio definire la relazione mamma non prendo tutte queste.
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.