digilander.iol.it/airone82/
1/7
Appunti sui database
Realizzati da Ligo
On line al sito digilander.iol.it/airone82/
1] DATABASE
1.1) Definizione
Insieme di dati rivolti alla rappresentazione di uno specifico sistema informativo di tipo aziendale,
informatico, …
Il DB deve rappresentare i diversi aspetti della realtà, e in particolare:
 La struttura dei dati: questi vengono descritti come aggregazione di elementi base e
classificati secondo la loro struttura comune.
 Le relazioni tra dati: il DB deve contenere non solo le informazioni strutturali relative a
ciascuna categoria di dati, ma anche rappresentare le eventuali relazioni logiche presenti tra
le varie categorie.
NB.:
1. non bisogna creare copie di dati
2. DB deve essere utilizzabile da più utenti (quando parlo di utenti mi riferisco a persone
fisiche ma anche a programmi che operano sul DB)
3. I dati devono essere permanenti
1.2) Tipi di Database
1) Gerarchico: anche chiamato ad albero si sviluppa partendo da una radice, che sarà l’entità
principale ampliandosi poi verso il basso. Esempio:
Livello 1 (root o radice)
Livello 2
Livello 3
2) Reticolare: le entità rappresentano i nodi e le associazioni rappresentano gli archi di uno
schema grafo orientato: si tratta cioè di una estensione del modello di albero gerarchico,
essendo consentite anche associazioni tra entità che stanno in basso, e non solo dall’alto
verso il basso
I rettangoli in giallo sono le entità, mentre quelli in verde rappresentano le relazioni descritte
come record, in cui in un campo c’è il elemento della tabella A e nell’altro campo un
Ligo
digilander.iol.it/airone82/
2/7
elemento della tabella B, e questi due elementi sono quelli su cui si basa la relazione
indicata dalla freccia tra la tabella A e la tabella B
3) Relazionale (quello in uso ora in tutto il mondo): si basa su alcuni concetti fondamentali
tipicamente matematici e assegna grande importanza all’uso rigoroso del linguaggio
matematico, con due obbiettivi importanti:
 utilizzare un linguaggio conosciuto a livello universale, quale è quello matematico
 eliminare i problemi di ambiguità nella terminologia e nella simbologia
Il modello relazionare ha preso questo nome poiché si basa sul concetto matematico di
relazione tra insiemi di oggetti.
Dal punto di vista matematico, dati n insiemi A1, A2, A3, …, An, si dice relazione
l’insieme delle n-uple a1, a2, a3, …, an che si possono costruire prendendo nell’ordine un
elemento a1, dal primo insieme A1, a2 dal secondo insieme A2, e così via.
Il numero n si chiama grado della relazione, gli insiemi Ai si chiamano domini della
relazione, e il numero delle n-uple si chiama cardinalità della relazione.
A1
A2
…..
An
relazione
a1
a2
….
n-upla (o tupla)
an
Cardinalità
Grado
La relazione viene rappresentata con una tabella, avente tante colonne quanti sono i domini
e tante righe quante sono le n-uple
I nomi dei domini sono i nomi delle colonne
La chiave della relazione è una combinazione di attributi (elementi) che identificano
univocamente le n-uple all’interno della relazione
Requisiti fondamentali che caratterizzano il modello relazionale:
 tutte le righe della tabella contengono lo stesso numero di colonne, corrispondenti
agli attributi
 gli attributi rappresentano informazioni elementari, non scomponibili
ulteriormente, cioè non ci sono campi di gruppo che contengono per ogni riga un
insieme di valori anziché un solo valore.
 I valori assunti dai campi, all’incrocio tra una riga e una colonna, appartengono al
dominio dei valori possibili per quel campo, e quindi sono valori omogenei tra loro,
cioè sono dello stesso tipo
 In una relazione, ogni riga è diversa da tutte le altre, cioè non ci possono essere due
righe con gli stessi valori dei campi. Per fare questo esiste un attributo o una
combinazione di attributi che identificano univocamente la n-upla, e che assumono
perciò la funzione di chiave primaria della relazione
 Le n-uple compaiono nella tabella secondo un ordine non prefissato
Ligo
digilander.iol.it/airone82/
3/7
La chiave (formata da uno o più attributi) identifica la n-upla all’interno della tabella: ogni
dato elementare contenuto nel modello relazionale deve essere accessibile attraverso la
combinazione di nome della tabella, nome e valore della chiave, nome della colonna
contenente il dato. Per questo motivo il modello relazionale fissa una regola di integrità sui
dati, detta integrità sull’entità, secondo la quale nessuna componente della chiave primaria
può avere valore nullo.
Dal modello concettuale al modello logico
1. Ogni entità diventa una tabella
2. Ogni attributo di un’entità diventa un attributo della relazione, cioè il nome di una
colonna della tabella
3. Ogni attributo della relazione eredità le caratteristiche dell’attributo dell’entità
(tabella) da cui deriva
4. L’identificatore univoco di un’entità diventa chiave primaria della relazione derivata
5. L’associazione uno a uno diventa un’unica relazione che contiene gli attributi della
prima e della seconda entità
6. L’identificatore univoco dell’entità di partenza nell’associazione uno a molti diventa
chiave esterna dell’entità di arrivo associata, cioè i suoi attributi identificatori
univoci diventano attributi della seconda relazione. (Riprenderò meglio più avanti
questo concetto)
7. La relazione con grado molti a molti diventa una nuova relazione composta dagli
identificatori univoci delle due entità e dagli eventuali attributi dell’associazione
Esempi per specificare meglio i punti 5, 6 ,7
Uno-uno (5)
Esempio di relazione uno a uno è il rapporto tra codice fiscale e cittadino, infatti a ogni
cittadino corrisponde un unico codice fiscale, e ogni codice fiscale identifica uno e un
solo cittadino.
Rappresentiamo ora questa relazione con uno schema E/R (Entity Relationship)
Codice Fiscale 1
1
Cittadino
Secondo quanto detto nel punto 5 si può creare un’unica entità che contenga gli attributi
di entrambe le entità.
Chiamo questa entità somma AnagrafeTributaria, e sarà così formata
Anagrafe
Tributaria
AnagrafeTributaria (CodiceFiscale, Cognome, Nome, DataNascita)
(CodiceFiscale era l’attributo di Codice Fiscale e Cognome, Nome, DataNascita erano gli
attributi di Cittadino.)
NB.: Con questa scrittura si indicano gli attributi dell’entità indicata fuori dalle tonde.
L’attributo con doppia sottolineatura è l’attributo chiave primaria, quello con singola
sottolineatura è l’attributo chiave esterna.
Ligo
digilander.iol.it/airone82/
4/7
Uno-Molti (6)
Un esempio di relazione uno a molti è la relazione tra contratto e dipendente, infatti un
tipo di contratto può essere adottato per più dipendenti e più dipendenti possono avere lo
stesso tipo di contratto.
Contratto
1
N
Dipendenti
Con lo schema E/R per indicare la relazione uno-molti si usa la freccia orientata verso
l’entità a cui si riferisce molti e si indica con 1 (per indicare uno) e N (per indicare molti)
Secondo quanto detto nel punto 6 bisogna aggiungere una chiave esterna alla tabella
Dipendente (quella a molti), costituita dall’insieme degli attributi che formano la chiave
primaria della relazione Contratto
Nell’esempio fatto si avrà:
Contratto (Codice, Descrizione, StipendioBase, DataScadenza)
Dipendente (Matricola, Cognome, Nome, Indirizzo, Qualifica, CodiceContratto)
Quindi agli attributi dell’entità Dipendente (a molti) è stata aggiunta come chiave esterna
CodiceContratto, cioè la chiave dell’entità Contratto (a uno)
Regola Generale
Dal modello concettuale vengono derivate le tabelle che rappresentano le entità e
l’associazione uno a molti viene tradotta aggiungendo agli attributi dell’entità a
molti la chiave dell’entità a uno.
Molti a Molti (7)
Esempio di relazione molti a molti è la relazione tra docente e classe, infatti un docente
può avere più classi e una classe può avere più docenti.
Tradotto nello schema E/R si ha:
Docente
N
N
Classe
Come detto nel punto 7 accanto alle tabelle Docente e Classe viene aggiunta una nuova
tabella che ha come chiave primaria, la combinazione delle chiavi primarie delle due
entità, e come attributi gli elementi comuni alle due tabelle. Le due entità si legano con
la nuova con la relazione uno a molti.
Nell’esempio precedente si ha:
Docente
1
N
Insegna
Docente (Codice, Nome, Qualifica, Materia)
Classe (Sigla, NumeroAlunni, Aula)
Ligo
N
1
Classe
digilander.iol.it/airone82/
5/7
Insegna (CodiceDocente, SiglaClasse, NumeroOre)
1.3) Regole Di Normalizzazione
La normalizzazione è un processo formalizzato con il quale le tabelle vengono trasformate in modo
tale che ogni tabella corrisponda a un singolo oggetto della realtà rappresentata con il modello di
database: le regole della normalizzazione sono definite per evitare inconsistenza dei dati e anomalie
nelle operazioni di aggiornamento.
In sostanza la normalizzazione consente di creare tabelle ben definite, che facilitino le operazioni di
aggiunta, modifica e cancellazione delle informazioni, e che rendono possibili i cambiamenti nella
struttura del modello con l’evolvere delle esigenze aziendali e degli utenti del database.
1.3.1) Prima Forma Normale
Una relazione è in prima forma normale (1FN) quando rispetta i requisiti fondamentali del modello
relazionale che sono:
 tutte le righe della tabella contengono lo stesso numero di colonne, corrispondenti agli
attributi
 gli attributi rappresentano informazioni elementari, non scomponibili ulteriormente, cioè
non ci sono campi di gruppo che contengono per ogni riga un insieme di valori anziché un
solo valore.
 I valori assunti dai campi, all’incrocio tra una riga e una colonna, appartengono al dominio
dei valori possibili per quel campo, e quindi sono valori omogenei tra loro, cioè sono dello
stesso tipo
 In una relazione, ogni riga è diversa da tutte le altre, cioè non ci possono essere due righe
con gli stessi valori dei campi. Per fare questo esiste un attributo o una combinazione di
attributi che identificano univocamente la n-upla, e che assumono perciò la funzione di
chiave primaria della relazione
 Le n-uple compaiono nella tabella secondo un ordine non prefissato
1.3.2) Seconda Forma Normale
Una relazione è in Seconda Forma Normale (2FN) quando è in prima forma normale e tutti i suoi
attributi non-chiave dipendono dall’intera chiave, cioè non possiede attributi che dipendono soltanto
da una parte della chiave. La seconda forma normale eliminala dipendenza parziale degli attributi
dalla chiave e riguarda il caso di relazioni con chiavi composte, cioè formate da più attributi
1.3.3) Terza Forma Normale
Una relazione è in terza forma normale (3FN) quando è in seconda forma normale e tutti gli
attributi non-chiave dipendono direttamente dalla chiave, cioè non possiede attributi non-chiave che
dipendono da altri attributi non-chiave. La terza forma normale elimina la dipendenza transitiva
degli attributi della chiave
N.B.: dipendenza transitiva: si ha quando un attributo a2 dipende da un attributo a1 e l’attributo
a3 dipende dall’attributo a2; allora a3 dipende da a1
a1  a2
a2a3
a1 a3 in modo transitivo
Ligo
digilander.iol.it/airone82/
6/7
1.3.4) Forma Normale di Boyce-Codd
Una relazione è in forma normale di Boyce-Codd (BCNF) quando è in seconda forma normale e in
essa ogni determinante è una chiave candidata, cioè ogni attributo dal quale dipendono altri attributi
può svolgere la funzione di chiave primaria.
Esempio:
Ho la tabella anagrafe così formata:
Anagrafe (ID_CodFisc, Cognome, Nome, CodiceFiscale)
Ho come chiave primaria ID_CodFisc che mi identifica CodiceFiscale, e ho CodiceFiscale che è
chiave candidata cioè CodiceFiscale può svolgere la funzione di chiave primaria, e che mi identifica
Cognome e Nome.
Per mettere Anagrafe in forma normale di Boyce-Codd introduco una seconda entità
Anagrafe (ID_CodFisc, Cod_CodiceFiscale)
Cittadini (CodiceFiscale, Cognome, Nome)
N.B.: in questo caso la soluzione migliore sarebbe stata modificare Anagrafe togliendo l’attributo
ID_CodFisc e mettendo CodiceFiscale come chiave primaria.
1.4) Integrità Referenziale
L’integrità Referenziale è un insieme di regole del modello relazionale che garantiscono l’integrità
dei dati quando si hanno relazioni associate tra loro attraverso la chiave esterna: queste regole
servono per rendere valide le associazioni tra le tabelle e per eliminare gli errori di inserimento,
cancellazione o modifica di dati collegati tra loro
DBMS (Data Base Management System)
Il DBMS è un software che permette una facile gestione del Database.
Senza DBMS:
App1
App2
App3
App1, App2, App3,… accedono direttamente agli archivi di dati, quindi ognuna di esse deve
caricare la struttura interna degli archivi dei dati e quindi deve soddisfare i requisiti di:
1. non bisogna creare copie di dati
2. DB deve essere utilizzabile da più utenti (quando parlo di utenti mi riferisco a persone
fisiche ma anche a programmi che operano sul DB)
3. I dati devono essere permanenti
Con i DBMS:
App1
App2
App3
Ligo
DB
digilander.iol.it/airone82/
7/7
Il DBMS fa la sua comparsa grazie alla comparsa della programmazione modulare. Il DBMS non è
altro che un modulo che ha lo scopo di gestire i dati svincolando da tale dovere le varie applicazioni
(composte da moduli che richiamano il DBMS).
Con l’uso del DBMS si ha:
 indipendenza dei dati dall’applicazione
 riservatezza nell’accesso ai dati
 gestione dell’integrità fisica dei dati
 gestione dell’integrità logica dei dati
 sicurezza e ottimizzazione nell’uso dei dati
Conseguenze dell’introduzione del DBMS
1. L’applicazione non deve più fare riferimento alla struttura fisica dei dati, poiché i dati hanno
una struttura che prescinde dall’applicazione.
2. Il DBMS crea automaticamente copie parziali dei dati per consentire l’uso contemporaneo
dei dati da parte di più utenti.
3. Protegge i collegamenti logici tra le diverse tabelle.
Il DBMS applica quindi tutte le regole viste nell’integrità referenziale
Ligo