TEORIA
INTRODUZIONE DATABASE
Un dato è un valore alfanumerico privo di contesto, ovvero per cui non è noto un contesto che
permetta di associare un significato al dato stesso.
Un’informazione è un dato contestualizzato, ovvero fornito di un contesto che permette di
associargli un significato e che quindi trasforma il dato in una fonte di conoscenza.
Un sistema organizzativo è un insieme di risorse utilizzate da un’organizzazione (es. comune,
scuole, aziende ecc..) per lo svolgimento delle proprie attività.
Un sistema informativo è un sottosistema del sistema organizzativo che si occupa della gestione
dei dati (inserimento, modifica/aggiornamento, cancellazione, consultazione, politiche
di sicurezza/riservatezza).
Un sistema informatico è un sottosistema del sistema informativo che usa dispositivi elettronici
di elaborazione.
100
Dato
Informazione
Contesto
100
I DATABASE
Un database è una raccolta di dati strutturata in modo tale da agevolare il loro utilizzo da
parte di un’organizzazione (es. comune, scuole, aziende ecc..) con riferimento a caratteristiche
quali:
1. Consistenza/coerenza (non esistono dati che si contraddicono).
2. Riservatezza/autenticazione (accesso ai dati consentito solo alle persone autorizzate).
3. Permanenza dei dati (operazioni di backup ripristino che garantiscono la conversazione dei
dati da fattori distruttivi che possono essere interni ed esterni).
4. Efficienza (utilizzo ottimale delle risorse e ottimizzazione delle tempistiche di uso del
database).
La creazione di un database prevede 4 fas in cui l’output finale di ogni fase è input della fase
successiva:
SISTEMA INFORMATICO
SISTEMA INFORMATIVO
SISTEMA
ORGANIZZATIVO
ORGANIZZAZIONE
1. Analisi dei requisiti: in questa fase il progettista analizza le richieste del committente.
2. Progettazione concettuale: in questa fase il progettista compie un lavoro di astrazione e
generalizzazione dei concetti che formano la realtà in esame (la realtà in esame viene chiamata
minimondo) e ha come risultato finale la creazione di uno schema grafico che rappresenta la
realtà di cui si vogliono memorizzare i dati. Questo schema grafico si chiama modello
concettuale. Generalmente alla fine di questa fase il progettista illustra il modello concettuale al
committente. Il modello concettuale è indipendente dal tipo di database utilizzato.
3. Traduzione dal modello concettuale in modello logico: in questa fase il progettista traduce il
modello concettuale in uno schema che adotta le strutture previste dal tipo di database
utilizzato. Tale schema prende il nome di modello logico ed è il risultato finale di questa fase. Il
modello logico è indipendente dall'implementazione fisica del database, ovvero dalle modalità
con cui intendiamo memorizzare fisicamente i dati nei dispositivi di elaborazione.
4. Creazione del modello fisico: in questa fase il progettista si occupa della
memorizzazione nelle memorie di massa di dati. Si parla di implementazione fisica del
database e ha come risultato la creazione dello schema fisico.
Riassunto di tutto ciò:
E-R MODELLO CONCETTUALE
Il modello concettuale che noi useremo è il modello E-R (Entity-Relationship). Entity sta per
entità, relationship sta per relazione ma in realtà si parla spesso di associazione e di modello
entità-associazione. Il modello E-R si basa su 4 costrutti:
1.
Entità: l'entità è un'astrazione che rappresenta una categoria di oggetti della realtà che
hanno caratteristiche comuni (attributi). Essa ha un nome(inizia con la lettera maiuscola
ed è un nome singolare) e ha un'esistenza autonoma.
2. Attributo: Caratteristica dell’entità. Un attributo è caratterizzato da:
2a) nome
2b) tipo (numerico,stringa, data/ora)
2c) dimensione (numero di caratteri o cifre)
2d) opzionalità (ovvero se è necessario o meno che l’attributo
abbia un valore).
3. Associazione: Il legame logico tra entità. L’associazione ha un nome e può avere
attributi.
Esempi di entità: studente, classe, docente, auto, libro…
Noi usiamo la convenzione grafica per cui:
Indichiamo l’entità con un rettangolo al cui interno vi è il nome dell’entità
Indichiamo l’associazione tra due entità con un rombo al cui interno vi è il nome
dell’associazione collegato all’entità che lega tramite segmenti.
Indichiamo un attributo di un entità, mediante un segmento che ha inizio dal
rettangolo che rappresenta l’entità e che termina con un pallino e con il nome
dell’entità.
L’attributo (o l’insieme degli attributi) che identifica univocamente un’istanza
dell’entità si chiama identificatore e graficamente viene identificato con un
pallino pieno .
Un’istanza di un’entità è un oggetto concreto della realtà che si ottiene dando dei
valori ai suoi attributi. Un'istanza dell’entità studente ad esempio è Marco Rossi
M3567. L’identificatore di un’entità è tale che non esistono due istanze diverse
che hanno identificatore con lo stesso valore.
Un’entità si dice debole se non esiste attributo o insieme di attributi che costituiscono un
identificatore dell’entità.
Lo studente è un'entità debole ed il suo identificatore si ottiene considerando matricola e nome
(dell’entità università).
L’entità Posizione è un'entità debole ed il suo identificatore si ottiene considerando numero
ripiano numero scaffale e nome (dell’entità biblioteca).
Quando un'entità presenta uno o più attributi che sono valorizzabili solo in un sottoinsieme
proprio delle istanze dell’entità, è preferibile considerare una sottoentità che contenga solo le
istanze valorizzabili.
In questo caso si parla di generalizzazione(o entità padre) e specializzazione(o entità figlia).
Consideriamo un’entità Socio di un circolo sportivo che può partecipare al circolo come
tennista (con attributi specifici numero tornei vinti e colpo ) e/o come calciatore ( con attributi
specifici numero goal e ruolo) . In un modello concettuale di questo tipo vi sono istanze (soci
del circolo) che hanno attributi non valorizzabili( tennista non ha né ruolo né numero goal
valorizzabili).In questo caso è preferibile dividere l’entità in due sottoentià, la sottoentità
tennista e la sottoentità calciatore. Socio verrà chiamata generalizzazione o entità padre. Le
sottoentità tennista e calciatore verranno chiamate specializzazioni o entità figlie.
Le entità figlie ereditano associazioni e attributi dell’entità padre ma hanno attributi
propri e possono avere associazioni proprie.
Le entità figlie ereditano tutti gli attributi dell’entità padre (compreso l’identificatore) e le
relative associazioni.
La copertura di una generalizzazione è una coppia (t/p, e/s), ove il primo elemento della coppia
fa riferimento all’unione delle istanze delle entità figlie ed è totale o parziale (totale se l’unione
di tutte le istanze delle entità figlie è l’insieme di tutte le istanze dell’entità padre: nell’esempio è
totale se si fa l’ipotesi che un socio debba essere tennista e/o calciatore, parziale se si fa l’ipotesi
che esistano soci che non sono né calciatori né tennisti) , il secondo elemento fa riferimento
all’intersezione ed è esclusiva o sovrapposta (nell’esempio è sovrapposta se si fa l’ipotesi che
esistono calciatori che sono anche tennisti ed è esclusiva se si fa l’ipotesi che non esistano
calciatori che sono tennisti).
(t,s)
copertura
Altro esempio di generalizzazione:
Quando c’è una sola sottoentità figlia, si parla di sottoinsieme (quindi il sottoinsieme è l’unica
sottoentità figlia di una generalizzazione)
L’associazione ricorsiva è un’associazione tra istanze della stessa entità e si usa generalmente
quando c’è una gerarchia.
PERSONA
PADRE DI
FIGLIO DI
L
Un’associazione si dice associazione binaria se collega logicamente due entità.
Esempio:
Un’associazione si dice ternaria se lega logicamente tre entità
esempio:
(0,n)
Genitore
(0,1
In una associazione ternaria un’istanza di un’entità è legata ad una coppia formata da istanze
delle altre due entità esempio: il venditore V1 è legato alla coppia (Amministratore, Samsung
S1009) nel senso che il venditore V1 fornisce la stampante Samsung S100 al dipartimento
Amministrazione.
In generale un’associazione si dice n-aria se collega n entità.
Le cardinalità di un’associazione binaria sono due coppie , ognuna delle quali legate ad una
entità (la prima coppia indica il numero minimo ed il numero massimo di istanze della seconda
entità legate ad un’istanza della prima entità ed è posta accanto alla prima entità ; la seconda
coppia indica il numero minimo ed il numero massimo di istanze della prima entità legate ad
un’istanza della seconda entità ed è posta accanto alla seconda entità)
In riferimento alle cardinalità le associazioni possono essere:
1. Uno a uno (si scrive 1:1)
In questo tipo di associazione ogni istanza della prima entità è legata al più ad un’istanza
della seconda entità.
Fornitura
L’entità stato ha una partecipazione non obbligatoria all’associazione Presidenza: ci possono
essere istanze dell’entità Stato che non sono associate ad alcuna istanza dell’entità Presidente ( le
monarchie non hanno un presidente)
Altro esempio:
2) Associazione uno a molti (si scrive 1: n): in questo tipo di associazione ogni istanza della
prima entità è collegata al più ad un’istanza della seconda entità ed esiste almeno un’istanza
della seconda entità che è collegata a più istanze della seconda entità.
3) Un'associazione molti a molti (si scrive n:m) è un’associazione in cui esiste
almeno un’istanza della prima entità collegata a più istanze della seconda entità e
viceversa.
Le associazioni non hanno mai un identificatore…
…ma possono avere attributi.
Un attributo si dice composto se può essere scomposto in più attributi
che hanno un significato autonomo nel minimondo considerato. Un
attributo si dice atomico se non è composto.
Per gli attributi composti si usa la seguente notazione:
Un attributo si dice multivalore se può assumere più valori riferiti alla stessa istanza dell'entità.
Un attributo multivalore ha una cardinalità, ovvero una coppia di numeri che indicano il numero
minimo e massimo di valori che l’attributo può avere.
In generale la cardinalità di un attributo è la coppia di numeri che indicano il numero minimo e
massimo di valori che l’attributo può avere. Nel caso di un attributo non multivalore (un
attributo che non è multivalore si chiama attributo singolo) la cardinalità è sottintesa e può
essere non indicata.
IL DOMINIO
Il dominio di un attributo è l’insieme di tutti i possibili valori di un attributo.
IL MODELLO LOGICO
Il modello
logico
è uno
schema,
non
grafico,
che
rappresenta
un
database
utilizzando
le
strutture previste dal tipo di database utilizzato. Noi utilizziamo il database relazionale,
ideato dal signore E.R. Codd (ricercatore IBM) nel 1970 (54 anni fa) e basato sul concetto
matematico di relazione. Parliamo in questo caso di modello logico relazionale.
Si
definisce
relazione
tra
i domini
D1, D2,....DN, un
qualunque
sottoinsieme
del
prodotto
cartesiano D1 x D2x….x DN=(X1, X2….XNn): X1∈D1,X2∈D2….XN∈DN.
ESEMPIO:
D1=(FIAT, FORD, OPEL)
D2=(TIPO,PUMA,CORSA)
D1XD2={(FIAT,TIPO),(FIAT,PUMA),(FIAT,CORSA),(FORD,TIPO),(FORD,PUMA),
(FORD,CORSA),(OPEL,TIPO),(OPEL,PUMA),(OPEL,CORSA),(OPEL,TIPO), (OPEL,PUMA),
(OPEL,CORSA)}
R={(x1,x2): x2 è un modello di x1} = {(FIAT,TIPO),(FORD,PUMA),(OPEL,CORSA)}
Le relazioni spesso vengono scritte in forma tabellare.
ESEMPIO:
MARCA(D1)
MODELLO(D2)
Fiat
Tipo
Ford
Puma
Opel
Corsa
Si
definisce
istanza
di
una
relazione
un
elemento
della
relazione,
ovvero
se
rappresentiamo
la
relazione
nella
sua
forma
tabellare,
una
riga
della
tabella.
Si definisce cardinalità di una relazione il numero di righe della tabella che rappresenta la
relazione.
Si definisce grado di una relazione il numero delle colonne della tabella che rappresenta la
relazione
Si definisce superchiave di una relazione un insieme di attributi che identificano univocamente
un’istanza della relazione; l’insieme di tutti gli attributi è certamente una SUPERCHIAVE.
Si definisce chiave candidata una superchiave minimale, ovvero una superchiave che non ha un
sottoinsieme proprio di attributi che è ancora superchiave. Un’entità può avere più chiavi
candidate: ad esempio codice fiscale e telefono sono due chiavi candidate del’entità Dipendente.
La chiave primaria di un’entità è la chiave candidata scelta dal progettista per identificare ogni
istanza dell’entità considerata.
Un attributo di una relazione scritta in forma tabellare è l’intestazione di una colonna.
In una tabella che rappresenta una relazione l’ordine delle colonne e delle righe non ha
importanza. i valori all’interno di una colonna sono tutte dello stesso tipo e non ci sono due righe
della tabella uguali.
Si definisce chiave esterna di una relazione (tabella A)l’attributo (o l’insieme di attributi) della tabella A
che è (sono) chiave primaria di una tabella B. La chiave esterna permette di collegare 2 tabelle.
Nell’esempio sotto, Classe nella tabella Studente è una chiave esterna perché fa riferimento alla
chiave primaria nome della tabella Classe
Studente
Matricola
Nome
Cognome
Classe
M103
Mario
Rossi
3D
M104
Giulia
Bianchi
4H
M105
Lino
Lini
3D
M106
Anna
Rosi
5F
M107
Mino
Mei
3T
Classe
Nome
Aula
NumeroAlunni
3D
53
20
5F
81
24
4H
12
18
Osserviamo che i valori della chiave primaria non possono ripetersi all’interno di una tabella. I
valori della chiave esterna possono ripetersi ma a differenza dell’esempio (la classe 3T non è
presente nella tabella classe ) non dovrebbero esserci valori della chiave esterna che non sono
presenti tra i valori della chiave primaria della tabella collegata.
Per evitare questo problema si pone un vincolo per ci non è possibile inserire una riga che
presenta un valore della chiave esterna che non è presente tra i valori della chiave primaria della
tabella collegata. Questo vincolo si chiama vincolo di integrità referenziale.
La tabella che contiene la chiave esterna viene chiamata tabella referenziale(o slave) mentre la
tabella collegata viene chiamata tabella referenziata(o master).
Esistono due tipi di vincolo:
Vincolo interrelazionale (vincolo che riguarda più tabelle; esempio vincolo di integrità
referenziale);
Vincolo intrarelazionale (vincolo che riguarda solo una tabella); Il vincolo interrelazionale può
essere di due tipi:
Vincolo di dominio (vincolo che riguarda un solo attributo);
Vincolo di tupla(vincolo che riguarda 2 o più attributi)
Esame
IdEsa
me
Data
Vo
to
Lo
de
NumeroEsame
Matricola
E104
10/11/
2023
26
No
3
M105
E106
10/04/
2024
25
No
4
M105
E107
10/11/
2024
30
Si
2
M102
E108
10/10/
2023
32
No
6
M104
E109
20/09/
2022
28
Si
5
M104
E110
23/12/
2023
26
No
72
M103
Osserviamo che la tabella presenta:
-
Errore 1: riga 4 (Voto: 32)
-
Errore 2: riga 5(Voto: 28 and Lode=Si)
Il vincolo di dominio voto<31 eviterebbe l’errore 1 (Il vincolo di dominio riguarda un attributo il
voto) .
Il vincolo di tupla voto=30 OR lode=”NO” eviterebbe l’ errore 2 (il vincolo di tupla riguarda gli
attributi VOTO e LODE).
Nel modello logico relazionale le tabelle vengono scritte nella forma:
-
Esame (IdMatricola(PK), data, voto, lode, numeroEsame, Matricola(FK))
dove PK indica l’attributo chiave primaria e si FK la chiave esterna.
Per tradurre il modello E-R in modello logico relazionale si devono seguire le seguenti
regole:
-
Regola 1: Eliminazione dei costrutti del modello E-R non presenti nel modello logico
(attributo composto; attributo multivalore; generalizzazione;)
Nell’applicare questa regola si ristruttura il modello E-R in modo tale da eliminare i
costrutti non presenti nel modello logico (in questa fase generalmente si ottimizza pure il
modello E-R per renderlo più efficiente in relazione allo spazio occupato dai dati, alla
ridondanza dei dati e al tempo di accesso ai dati).
Vediamo qualche esempio:
-
Eliminazione dell’attributo composto (si elimina l’attributo
composto sostituendo con gli attributi atomici che lo compongono):
-
Eliminazione dell’attributo multivalore (si sostituisce l’attributo multivalore
con un’entità che è collegata all’entità che lo conteneva con un’associazione 1:n
o n:n)
-
Eliminazione generalizzazioni: per eliminare le generalizzazioni durante la
creazione del modello E-R si possono seguire tre metodi alternativi:
1. Eliminazione dell’entità padre; questa è possibile solo quando la copertura è
totale ed è preferibile quando la copertura è esclusiva (per evitare la ridondanza
dei dati). Le associazioni dell’entità padre vanno ripetute per ogni entità figlia.
Questo metodo rispetto al metodo 2 ha il vantaggio di ridurre i dati nulli ma ha lo
svantaggio di una maggiore complessità.
Esempio:
2. Eliminazione delle entità figlie: questo metodo è sempre possibile. Ha lo
svantaggio di aumentare il numero dei dati nulli e il vantaggio della
semplicità del modello che però spesso rende più difficile la consultazione del
database, cioè la scrittura della query.
Esempio:
Quando, durante la ristrutturazione del modello E-R si decide di incorporare le entità figlie
nell’entità padre, può essere utile aggiungere un attributo che permetta di stabilire l’appartenenza
di un’istanza dell’entità ad una delle entità figlie.
Nell’esempio sottostante tale attributo è l’attributo razza (che può essere cane o gatto)
3- Sostituire la generalizzazione con un’associazione 1:1 che lega entità padre
ed entità figlia per ogni entità figlia
nomeClasse numeroAula
-
Regola 2: Con questa regola stabiliamo i principi che ci permetteranno di rappresentare
le associazioni nel modello logico.
Ci sono tre casi:
Caso 1: Associazione 1:n . In questo caso l’associazione è rappresentata dalla chiave
esterna inserita nella tabella referenziante (la tabella (1,1))
Esempio
Il modello logico associato al modello E-R soprastante
Studente (Matricola(PK), Nome, Cognome, nomeClasse(FK))
(chiave esterna
nomeClasse)
Classe (nomeClasse(PK), numeroAula)
Caso 2: Associazioni n:n . In questo caso l’associazione è formata da una nuova tabella che ha
per nome il nome dell’associazione, per chiave primaria l’attributo composta dalle 2 chiavi
primarie delle 2 entità collegate e per attributi gli eventuali attributi dell’associazione (occorre
aggiungere però sempre la specificazione del fatto che i due attributi che compongono la
chiave primaria sono chiavi esterne).
Esempio:
Il modello logico associato al modello E-R soprastante è:
Studente (Matricola(PK), Nome, Cognome)
Esame (IdEsame(PK), Nome)
Svolgimento (PK(Matricola, IdEsame), FK(Matricola), FK(IdEsame),voto, data)
Caso 3: Associazione 1:1
Nella traduzione da modello E-R a modello logico di un’associazione 1:1, si possono seguire
diverse strategie:
La prima strategia consiste nel considerare in luogo delle due entità, un’unica entità che contiene
gli attributi di entrambe (non è consigliabile quando questa scelta comporterebbe la presenza di
attributi non valorizzabili):
Esempio
Il modello logico associato al modello E-R soprastante è, usando la prima strategia:
Persona (Telefono(PK), Nome, Cognome, CF, DataScadenza)
La seconda strategia consiste nel rappresentare l’associazione con la chiave esterna. Si inserisce
la chiave esterna nella tabella che presenta un numero minore di attributi non valorizzabili
Il modello logico associato al modello soprastante usando la strategia 2 è:
Stato(Nome(PK), NumAbitanti)
Presidente (PK(Nome, Cognome), NomeStato(FK))
Nel caso di associazione ricorsiva si ottiene il modello logico considerando due entità , le due entità
individuabili dall’associazione e l’associazione tra le 2 entità.