


























































































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Riassunto completo di basi di dati
Tipologia: Appunti
1 / 98
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!



























































































Nello svolgimento di ogni attività, sia a livello individuale sia in organizzazioni di ogni dimensione, sono
essenziali la disponibilità delle informazioni e la capacità di gestirle in modo efficiente; ogni organizzazione
è quindi dotata di un Sistema Informativo che svolge i seguenti compiti:
Il Sistema Informatico è la parte del Sistema Informativo che si avvale delle tecnologie informatiche per
svolgere questi 3 compiti.
Nei Sistemi Informatici le informazioni vengono rappresentate tramite i dati:
di codifica dell’informazione).
Una Base di Dati (o database) è una collezione di dati, utilizzati per rappresentare le informazioni di
interesse per un Sistema Informativo. Essa deve essere:
dati comuni.
Un DBMS è un insieme di programmi che permettono agli utenti di creare e mantenere una base di dati. Il
DBMS è un sistema software con scopi generali che facilita il processo di definire, costruire, manipolare e
condividere basi di dati per varie applicazioni.
Si parlerà di basi di dati quando c’è una collezione di dati gestita da un DBMS.
Base di Dati = dati + DBMS
Un DBMS garantisce a un database:
attraverso meccanismi di autorizzazione.
Esempio di Database condiviso
In un Database non condiviso sono presenti delle ridondanze, quindi per rendere più efficiente il Database
stesso evitando le ripetizioni, si possono unire gli archivi. In questo modo si realizza un Database condiviso.
Database non condiviso Database condiviso
Nel Database non condiviso, gran parte dei dati viene memorizzata 2 volte, si ha quindi uno spreco di
memoria che si risente maggiormente quando il Database è di notevoli dimensioni.
Nel Database condiviso, invece, gli archivi vengono uniti, di conseguenza si avrà una ridondanza controllata
evitando inutili sprechi.
Quando però (come nell’esempio del database condiviso) più utenti condividono una base di dati, ad alcuni
non sarà permesso di accedere a tutte le informazioni.
Sarà compito del DBMS garantire un sottosistema per la sicurezza e l’autorizzazione (chiamato regolazione
dei privilegi).
Una caratteristica importante è che il sistema di basi di dati contiene non solo la base di dati (l’insieme di
tutti i dati), ma anche una definizione o una descrizione completa della sua struttura e dei suoi vincoli.
Questa definizione è memorizzata nel catalogo del sistema che contiene informazioni sulla struttura di
ciascun file, il tipo, il formato, ecc.
Le informazioni memorizzate nel catalogo sono dette metadati e descrivono la struttura del database
principale.
I dati gestiti dai DBMS hanno le seguenti caratteristiche:
Sono utilizzabili contemporaneamente da utenti diversi.
Il DBMS offre inoltre opportuni linguaggi per:
Elaborazione
Stipendi
Elaborazione
Rimborso
Archivio
1
Archivio
2
Elaborazione
Stipendi
Elaborazione
Rimborso
Archivio
Unico
I problemi che si affrontano per progettare un database è sapere quali informazioni inserire in un database
e quali legami esistono tra di essi. E’ quindi necessario creare uno schema concettuale di un database, dal
quale è possibile derivare la struttura dei dati secondo il modello logico del DBMS. Uno strumento per
esprimere schemi concettuali sono i diagrammi Entità-Relazione (modello ER).
Nei diagrammi Entità-Relazione ci sono 3 elementi:
laurea, ecc.
numeri di telefono, ha più residenze, quando una macchina ha più
colori, ecc. Si può dedurre facilmente che un attributo strutturato
può essere multivalore. Un attributo multivalore si indica
graficamente in questo modo:
B
attributo
Relazion
e
Attributi
attributo
L’entitàè l’oggetto base del modello ER, questa può essere un oggetto con una consistenza fisica o un
oggetto che esiste a livello concettuale (ad esempio: corsi, aziende, ecc).
Gliattributisono le proprietà particolari che descrivono le entità. Essi possono essere:
Atomici: contengono un solo valore e non sono scomponibili (es. nome).
Strutturati: contengono più valori, quindi sono scomponibili (es. indirizzo).
Esempio di una gerarchia di attributi strutturati
Inoltre gli attributi possono essere :
Semplici(a valore singolo): la maggior parte degli attributi ha un valore singolo: ad esempio età,
B
attributo
RELAZIONE
Indirizzo
Via Città CAP
Via Numero civico Interno
ENTITA’
Infine, un attributo derivato è un attributo il cui valore viene calcolato (derivato) da un altro attributo. Ad
esempio, in un’entità persona il valore di età può essere determinato a partire dalla data di nascita. Un
attributo derivato si indica graficamente in questo modo:
B
attributo
Le relazioni (o associazioni) rappresentano i legami che ci sono tra le varie entità. Praticamente collegano
due o più entità. Una relazione è dotata di due versi, dove ogni verso dell’associazione ha un’entità di arrivo
e un’entità di partenza.
Un’associazione non è altro che una relazione matematica tra due insiemi. Supponiamo di avere due
insiemi X e Y:
terziarie (o di grado 3) e di grado maggiore. Si possono trovare anche più associazioni che collegano 2
entità.
Esempio:
L’intenzione dell’entità è lo schema astratto che accomuna tutto ciò che fa parte di quell’entità (cioè è lo
schema astratto delle proprietà o degli attributi che costituiscono l’entità).
Estensione dell’entità
L’estensione dell’entità è una collezione di unità che appartengono ad una determinata entità (esempio: se
l’entità è studenti, la sua estensione sarà l’insieme degli N studenti che appartengono all’entità stessa).
Dominio dell’entità
Il dominio è un insieme di valori atomici. E’ dato dall’unione di tutti i domini degli attributi che
appartengono all’entità. Un metodo comune per indicare un dominio consiste nello specificare un tipo di
dati, da cui sono tratti i valori dei dati che formano il dominio.
Esempio:
Numeri_Telefono 10 cifre
Nomi L’insieme delle stringhe
N.B. Quando le relazioni sono composte da più associazioni non è possibile esprimere in un’unica tabella, quindi
è preferibile un’unica associazione
Anche i tipi associazione possono avere attributi, analoghi a quelli dei tipi di entità.
Esempio:
Bevitori Birre
Piacciono
Favoriscono
Studente Corsi Segue
N° Ore
Età [0,100]
Tutti questi valori (limiti) vengono introdotti nel database mediante vincoli. Ogni attributo ha un suo
dominio e ad ogni dominio viene assegnato un nome, un tipo di dati e un formato. L’unione di tutti i domini
rappresenta il dominio dell’entità.
E’ lo schema astratto dell’associazione, ovvero le proprietà in astratto che verranno descritte.
E’ una collezione di istanze di associazioni di un entità.
E’ dato dall’unione dei domini delle entità più l’unione delle sue proprietà.
Dati due insiemi X e Y, il prodotto cartesiano tra questi è un insieme di tutte le coppie ordinate possibili
dove il primo valore appartiene a X e il secondo appartiene a Y. Cioè è l’insieme di tutte le coppie possibili
(x,y) con x Є X e y Є Y (in definitiva, il prodotto cartesiano è l’insieme di tutte le n-uple. In BD, l’insieme di
tutte le coppie viene chiamato insieme di istanze.
Si scrive X * Y
Esempio:
Prendendo in considerazione le due entità Studente e Corso, il prodotto cartesiano (Studente, Corso) è
l’insieme delle coppie possibili non reali. Un sottoinsieme di questo prodotto definisce una relazione data
dalle coppie reali (e non dalle coppie possibili).
CHIAVI e SUPERCHIAVI
L’attributo chiave è un identificatore univoco dell’entità. Tutte le entità hanno un attributo chiave. Una
chiave è un insieme di uno o più attributi con due caratteristiche principali:
Univocità. I valori degli attributi identificano univocamente le istanze dell’entità. Ovvero in
un’entità non possono esistere doppioni, non possono quindi esistere 2 o più istanze uguali,
altrimenti la chiave primaria non permetterebbe di distinguerle.
Minimalità. Rimuovendo un qualsiasi attributo dall’insieme perdiamo il requisito di univocità. Ogni
insieme di attributi che verifica la prima proprietà è detta superchiave. Una chiave è quindi una
superchiave minimale.
Una superchiave è, quindi, una chiave caratterizzata da un insieme di attributi che identificano in modo
univoco l’entità (esempio: prendendo come entità studente, possiamo dire che una superchiave potrebbe
essere cognome-matricola).
E’ possibile inoltre che esistano più chiavi per una entità, tali chiavi sono dette chiavi candidate. Tra queste
occorre scegliere la chiave primaria, basandosi su dei criteri di decisione:
Ci sono anche casi in cui non si riesce a trovare una chiave che soddisfa tutti questi requisiti; sarà quindi
possibile introdurre un ulteriore attributo sintetico che serve solo ad identificare le istanze dell’unità,
questo prende il nome di codice.
Ci sarà, inoltre, un’associazione totale.
Mentre la chiave parziale, graficamente, viene rappresentata in questo modo:
Non riuscendo ad identificare una chiave, in questo diagramma ER, creiamo una chiave artificiale (ID
Utente) che non è altro che un contatore a cui viene assegnato un numero progressivo per ogni utente
inserito nel database.
Molte volte può capitare che un’entità non ha una chiave, ma è identificata componendo una propria
chiave parziale con la chiave di un’altra entitàalla quale è associata mediante una relazione. L’entità priva
di chiave viene chiamataentità debole, l’entità associata a questa è dettaentità proprietarioe la relazione
che le lega è dettaidentificante.
L’entità debole, graficamente, viene rappresentata in questo modo:
La relazione identificante viene rappresentata graficamente in questo modo:
Utenti Biblioteca
Nome Cognome Data prestito Data restituz.
ID Utente
Entità debole
Assoc.
Chiave parziale
Esempio 1:
associazione identificante relazione totalizzante entità debole
esiste corso senza corsi integrativi
non esiste corso integrativo senza corso
Esempio 2:
non esiste famiglia a carico senza impiegato
esiste impiegato senza famiglia a carico
Integra Corsi interattivi
Corsi
Codice
Codice N° Stud. Anno
N° Ore
Relazione totalizzante
Ha Famiglia a carico Impiegato
Nome
CF Nome Cognome
Cognome
Relazione totalizzante
I diagrammi EER nascono dalla necessità di ampliare gli schemi di basi di dati e renderli più articolati, per far
fronte all’innovazione della tecnologia delle basi di dati.
Il modello EER comprende tutti i concetti di modellazione propri del modello ER, cui si aggiungono i concetti
di sottoclasse, superclasse, specializzazione e generalizzazione.
Inoltre un altro concetto molto importante dei diagrammi EER è l’ereditarietà di attributi e associazioni
Esempio:
Superclasse: Impiegato.
Sottoclassi: Segretario, Tecnico, Ingegnere, Part Time e Full Time.
Una relazione Classe/Sottoclasse è una relazione fra una superclasse e le sue sottoclassi.
L’associazione di una sottoclasse con la sua superclasse è una relazione IS A, a indicare che un’istanza della
sottoclasse è un’istanza della superclasse.
Le sottoclassi ereditano tutti gli attributi delle proprie superclassi (nel nostro esempio, se Impiegato avrà 2
attributi Nome e Cognome, allora anche la sottoclasse Ingegnere avrà gli stessi attributi, così come tutte le
altre sottoclassi) e tutte le associazioni a cui partecipa la superclasse (nel nostro esempio possiamo, quindi,
trovare Ingegneri Full Time e Ingegneri Part Time).
Specializzazione (di tipo top-down, ovvero si parte dall’entità madre e si individuano le sottoclassi): è il
processo di definizione di un insieme di sottoclassi di un tipo di entità; questo tipo di entità viene detta
superclasse. Riprendendo l’esempio:
(Segretario, Tecnico, Ingegnere) -> specializzazioni della superclasse Impiegato. (Part
Time, Full Time) -> specializzazioni della superclasse Impiegato.
Si possono avere 2 casi:
ci possono essere più sottoclassi riferite alla stessa entità (come nell’esempio dell’impiegato).
Impiegato
Segretario Tecnico Ingegnere Part Time Full Time
Attributi
Esempio:
Superclasse: studente
Sottoclassi: lavoratore, non lavoratore
Essi sono disgiunti in quanto uno Studente può essere o Lavoratore o Non Lavoratore.
Copertura: è la proprietà che indica se le sottoclassi coprono tutta la classe
c’è copertura quando le sottoclassi coprono tutta la classe
Esempio:
Superclasse: studente
Sottoclassi: lavoratore, non lavoratore
Essi sono sottoclassi di copertura in quanto coprono tutta la classe.
non c’è copertura quando le sottoclassi non coprono tutta la classe
Esempio:
Superclasse: studente
Sottoclassi: matricola, laureando
Essi non sono sottoclassi di copertura in quanto non coprono tutta la classe perché non prendono in
considerazione, ad esempio, gli studenti del 2° anno.
Graficamente, la copertura e la disgiunzione si rappresentano in questo modo:
Disgiunzione d o
Copertura || |
Esempio disgiunzione e copertura:
Esempio disgiunzione e copertura:
Generalizzazione (di tipo bottom-up, ovvero si parte dal riconoscimento di attributi o relazioni comuni di
entità, li definisce a un livello superiore attribuendoli ad una nuova entità superclasse e le entità di partenza
Lavoratore
d
Non lavoratore
Studente
Matricola
Guidatore
Studente
diventeranno sottoclassi): si usa il termine generalizzazione di un tipo di entità generalizzato, a partire dai
tipi di entità dati (ad esempio: dai tipi di entità Automobile e Camion possiamo generalizzarli nel tipo di
entità Veicolo [Superclasse generalizzata]).
Vincoli di specializzazione
Si chiama vincolo di specificazione quello che sussiste nel caso in cui le sottoclassi sono definite
sulla base di dati di un attributo (oppure da un insieme di attributi) a valore singolo della
superclasse.
Esempio:
Ogni istanza della superclasse Corrispondenza appartiene o meno ad una delle sottoclassi in base al
valore dell’attributo Tipo Corrispondenza: se per un’istanza della superclasse, il valore di tale
attributo è “Raccomandata”, “Assicurata”, “Fax”, “E-Mail” tale istanza appartiene alla sottoclasse
corrispondente; se è diverso da questi valori o è NULL o non appartiene alle sottoclassi. Cioè la
superclasse ha un discriminatore (nel nostro esempio è “Tipo Corrispondenza”), ogni sua istanza, in
base al valore di esso (nel nostro esempio i possibili valori possono essere
“Raccomandata”, ”Assicurata”, ”Fax”, ”E-Mail”), apparterrà alla sottoclasse corrispondente.
Specializzazione disgiunta: si ha quando gli insiemi delle istanze delle sottoclassi sono disgiunti,
cioè quando non hanno elementi in comune -> Lettera d nel cerchietto
Specializzazione Sovrapposta: si ha quando gli insiemi delle istanze delle sottoclassi non sono
disgiunti, cioè hanno degli elementi in comune -> Lettera o nel cerchietto
Quando però una specializzazione è composta da un’univa sottoclasse non ha senso considerare il
vincolo di disgiunzione. Inoltre possiamo notare che le specializzazioni basate su un discriminatore
sono tutte disgiunte, in quanto il discriminatore è un attributo di valore unico.
“Assicurata” “Fax” “E-Mail” “Raccomandata”
“Tipo Corrispondenza”
Raccomandata
d
Fax
Corrispondenza
Assicurata E-mail
Discriminatore
Valore del discriminatore
Una sottoclasse S è una classe le cui entità devono essere un sottoinsieme delle entità presenti in un’altra
classe -> superclasse C. (cioè S è sottoinsieme di C)
Una specializzazione Z = {S 1
2
n } è un insieme di sottoclassi che hanno la stessa superclasse G -> G/S i
con i = 1,n
Una sottoclasse S di C si dice definita tramite un predicato se si usa un predicato p sugli attributi di C per
specificare quali entità di C sono anche membri di S. Scriveremo quindi S = C[p]dove C[p] è l’insieme di
entità di C che soddisfano p.
La metodologia UML è una metodologia per la progettazione concettuale a oggetti (modello a oggetti) che
consiste nel rappresentare nel modello sia i requisiti dei dati sia i requisiti funzionali (le operazioni che
possono essere eseguite sui dati).
Esistono 13 tipi di diagrammi racchiusi in 3 tipologie principali:
Diagrammi di stato (esempio: diagramma delle classi); molto simile agli EER, viene usato per la
modellazione concettuale e non per la sua evoluzione (sono dunque statici)
Diagrammi di comportamento (esempio: diagramma dei casi d’uso - Use Case)
Diagrammi di sequenza (esempio: diagramma di sequenza)
I costrutti del modello EER corrispondono ad analoghi costrutti di UML (Diagramma delle Classi, che fa parte
della categoria dei diagrammi di stato). Oltre ai propri costrutti specifici, il modello UML si differenzia da
quello EER nella diversa terminologia e nelle diverse convenzioni usate per rappresentare i diagrammi.
Nei diagrammi UML, una classe è rappresentata con un riquadro che comprende 3 sezioni:
Superiore, che fornisce il nome della classe;
Centrale, che contiene gli attributi;
Inferiore, che descrive le operazioni che possono essere eseguite su questi oggetti.
Esempio:
Nome della classe
Stato della classe
Comportamento della classe
Come si può notare, il modello UML consente di specificare i domini degli attributi, facendo seguire al nome
dell’attributo il carattere “:” seguito dal nome della descrizione del dominio. I tipi di associazione sono detti
legami (che, inoltre, possono avere anche dei nomi - opzionale) e le istanze di associazione sono dette
collegamenti. Un attributo di associazione, detto attributo di collegamento, è posto in un riquadro che è
collegato alla linea del legame tramite una linea tratteggiata.
Esempio:
Studente
Nome: string
Cognome: string
Matricola: string
Iscrizione corso
Superamento esame
Le specializzazioni EER classe/sottoclasse sono rappresentate da triangolino con l’aggiunta di un pallino
nero se sono disgiunte.
N.B. Nel contesto dei database non si immettono mai i metodi, lo facciamo solo se ci sono dei vincoli.
Esempio:
Ricordiamo che anche nei diagrammi UML, come in quelli EER esiste il concetto di ereditarietà, quindi
nell’ultimo esempio Studente eredita Nome e Cognome ed aggiorna Matricola, lo stesso vale per Docente.
Nei diagrammi UML è ammessa anche l’ereditarietà multipla.
Esempio:
Libro
Titolo
Genere
Lingua
Operazioni
E’ pubblicato da
Numero copie
pubblicate
Libro
Titolo
Genere
Lingua
Operazioni
Generalizzazione Specializzazione
Nome
Cognome
Matricola
Insegnamento