I database (o basi di dati) - Dipartimento di Matematica e Informatica

I database (o basi di dati)
●
●
Un database (DB) è un
insieme organizzato di dati
Un elenco telefonico è un
DB/archivio cartaceo di dati
di abbonati, ma:
–
–
●
la ricerca va effettuata per
cognome/nome, scorrendo
l'elenco
non è possibile cercare per
indirizzo, numero di tel. etc.
Invece un DB digitale di abbonati consente questa (e molta altra)
flessibilità
19/10/10
Database
1
DBMS
●
●
DBMS (DB Management System = Sistema di Gestione
di DB): un'applicazione informatica che permette di
definire, gestire, consultare DB in formato digitale
–
Access è un DBMS parte della suite Microsoft Office
–
alternativa free: il DBMS Base, o OOBase, della suite Open Office
–
ORACLE è il DBMS “proprietario” ( commerciale) dominante
–
MySQL è il DBMS free più diffuso, considerato adatto anche per
applicazioni “mission critical”, “enterprise level” (di livello industriale)
Esempio: DBMS per la gestione di una biblioteca
19/10/10
Database
2
Dati in un DB: le entità
●
In un DB, le informazioni sono organizzate in modo da descrivere
oggetti significativi e riconoscibili, detti entità
–
●
●
p.es., in un DB biblioteca le entità possono essere: libri, autori, editori
In generale, le entità possono essere, tra l'altro:
–
oggetti fisicamente riconoscibili: p.es. libri
–
persone fisiche/giuridiche: p.es. autori, editori
–
eventi: p.es. prestito di un libro
–
concetti astratti: p.es. transazioni, ordini
il termine entità ha due accezioni, che possiamo indicare come:
–
entità-categoria, una sorta di insieme, p.es. quello dei libri
–
entità-individuo, una sorta di elemento dell'“insieme” entità-categoria
●
19/10/10
p.es., per l'entità libro: I promessi sposi, La Bibbia, La Divina Commedia...
Database
3
Entità e attributi
●
Un'entità è caratterizzata da attributi, dei dati che forniscono
informazione sull'entità
–
●
In effetti, un'entità è definita dal complesso dei suoi attributi
–
●
p.es., nel DB il libro è il suo autore, il suo titolo, il suo editore, cioè
è rappresentato e memorizzato come questa terna di dati
Tipicamente, un attributo è un dato elementare,
–
●
p.es., l'entità libro può avere attributi: autore, titolo, editore
p.es. un numero (che eventualmente rappresenti una data, valuta,...),
del testo, un valore sì/no ...
Come l'entità anche l'attributo ha una duplice veste:
–
l'entità-categoria è definita dai nomi degli attributi
●
–
p.es. l'entità libro ha attributi di nome autore, titolo, editore
l'entità-individuo è definita dai valori assunti dagli attributi
●
19/10/10
p.es. uno specifico libro ha attributi:
autore di valore “Zwirner”, titolo di valore “Algebra”, editore di valore “CEDAM”
Database
4
DB relazionali: tabelle
●
Nel modello relazionale dei dati, ogni entità è descritta, nel
duplice senso visto, di entità-categoria e entità-individui,
da una tabella che:
–
–
con la prima riga definisce gli attributi dell'entità-categoria, cioè i
loro nomi
con ogni riga successiva descrive un “individuo” di quell'entità
presente nel DB, specificandone gli attributi, cioè i valori di questi
19/10/10
Database
5
Tabelle, record, campi
●
In OOBase, la prima riga di una tabella, quella con i nomi
degli attributi, appare come intestazione
intestazione
record
record
record
record
campi del record n. 4
●
●
●
Le righe dopo la prima si dicono anche record della tabella
Ogni colonna contiene in prima riga il nome di un attributo e
nelle successive i valori assunti dall'attributo per i vari record
Campo è sinonimo di attributo: le celle che compongono un
record sono i suoi campi, o, appunto, attributi (come valori)
19/10/10
Database
6
Tabelle e relazioni
●
●
Un DB relazionale in generale descrive più entità,
quindi consta di più tabelle
Se due tabelle hanno un campo in comune,
esse vanno presumibilmente messe in relazione
➔
Il DBMS relazionale consente quindi una gestione
complessiva e integrata dei dati, che tiene conto delle
relazioni tra essi
19/10/10
Database
7
Funzioni di un DBMS
●
Definizione dei dati
–
che forma hanno i dati?
➔
➔
–
●
quali sono i dati? → “popolare” le tabelle di record
Manipolazione dei dati
–
–
–
–
●
scelta delle tabelle e loro struttura in campi
definizione di relazioni tra tabelle
visualizzarli
effettuare ricerche
ordinarli
raggrupparli e incrociarli …
Controllo dei dati, in presenza di più utenti e ruoli
–
non è il focus di Access e OOBase (più rivolti a uso personale)
19/10/10
Database
8
cli
cc
ar
e
qu
i
Avvio di OOBase
cambiare nome
19/10/10
Database
9
Interfaccia di OOBase
●
●
Tabelle, Ricerche, Formulari e Rapporti sono gli oggetti che costituiscono
un DB di OOBase
proseguire con “Crea tabella in vista struttura”
19/10/10
Database
10
Vista struttura di una tabella
●
serve a definire la struttura
della tabella, cioè i campi
–
–
–
●
finora abbiamo raffigurato
i nomi dei campi in orizzontale
ma in questa vista
appaiono in verticale
a fianco del nome campo, il tipo
e una descrizione (facoltativa)
Tipi più frequenti
–
–
–
–
Intero, da -231 a 231-1
Data, Ora, Data/Ora
Numeric, scala illimitata
19/10/10
–
–
Database
Decimale, scala illimitata
(spesso per valuta)
Reale, tra 5∙10-324 e 1,8∙10308
Testo, fisso o variabile
11
Esempio: struttura tabella Autori
●
NB: ampia scelta per Tipo campo
●
Descrizione facoltativa
●
Per ogni Tipo Campo vi sono
Proprietà da specificare:
–
si noti Digitazione necessaria
●
19/10/10
Database
Quando si cerca di salvare:
12
Chiave primaria
●
Chiave è un campo che assume un
valore unico per ogni record
–
–
●
●
come detto, OOBase rileva
l'assenza di una chiave e
a richiesta, crea la chiave
–
–
●
p.es. il codice fiscale per gli individui
autore non può esserlo per Autori
la rinominiamo CodAutore
impostiamo Valore Aut. a Sì
Una (e solo una) chiave è
designata come primaria
–
–
cf. chiavetta in 1a colonna
si può cambiare (bottone dx)
19/10/10
Database
13
Vista dati
Salvata la struttura della tabella Autori,
la si riapra con doppio clic:
●
●
●
ecco la Vista Dati o Data View, fatta per
inserire dati (popolare la tabella)
il bottone grigio a sinistra del record
permette di selezionarlo e, con il menu
del mouse dx, di eliminarlo
NB: info e controlli nella riga di stato in
fondo alla finestra:
–
–
NB: il contatore
<Campo automatico>
corrisponde, in Vista Struttura,
al campo CodAutore di tipo
Intero, con Valore automatico
indicatore n. record
bottoni inizio/indietro/avanti/fine/
inserimento
19/10/10
Database
14
Da vista dati a struttura
Per tornare alla vista Struttura Tabella:
●
si chiude la Vista Dati
●
si seleziona la tabella
●
clic su
●
o bottone
destro / Modifica
19/10/10
Database
15
Indici (bottone
●
●
●
)
permette di definire un
indice, associato a un campo
–
accelera ricerche sul campo
–
l'indice è tenuto ordinato in
modo crescente o decrescente
rispetto al campo associato
La chiave primaria ha un
indice automatico e
univoco (perché chiave)
Esempio: aggiungere
indice per Autore
–
eq
r
a
c
clic
ui
non dev'essere univoco
(ammette duplicati)
19/10/10
Database
16
Tabella Libri: I tentativo
●
Conviene avere 2 attributi per descrivere l'editore?
Libri
Titolo
ridondanza: ogni record ripete inutilmente
IndirizzoEditore, da cui:
●
●
●
●
Autore
Argomento
spreco di memoria: quanti “Milano” per “Mondadori”?
inefficienze: cambio indirizzo ripetuto in ogni record!
potenziali incongruenze: IndirizzoEditore potrebbe
(indebitamente) differire per libri dello stesso Editore
Editore
Indirizzo Editore
Titolo
Autore
Argomento
Editore
Indirizzo Editore
I promessi sposi
Manzoni
romanzo
Mondadori
Milano
Dei delitti e delle pene
Beccaria
saggio
Mondadori
Milano
Rime e ritmi
G. Carducci
poesia
A. Mondadori
Verona
La freccia nera
Stevenson
romanzo
Garzanti
MILANO, ITALIA
Soluzione: Editore è concetto distinto da Libro
➔ dev'essere un'entità/tabella distinta
19/10/10
Database
Editori
Nome Editore
Indirizzo Editore
17
Tabella Libri: II tentativo
●
Anche così permangono rischi:
–
–
–
●
Libri
Nome Editore
Titolo
omonimie: più di un editore D'Anna
Indirizzo Editore
incongruenze: A.Mondadori coincide con Mondadori?
inefficienze: la “A.” va inserita (volendo) in molti libri!
Titolo
Autore
Argomento
Nome Editore
I promessi sposi
Manzoni
romanzo
Mondadori
Il mio mondo
Rossi
geografia
D'Anna
Rime e ritmi
G. Carducci
poesia
A. Mondadori
Parlez-vous?
Martin
francese
D'Anna
Autore
Argomento
Nome Editore
Conosciamo già problema e soluzione:
–
–
●
Editori
Editori ha bisogno di una chiave, p.es. CodiceEditore
Libri deve riferire la chiave CodiceEditore, non NomeEditore
Stesse considerazioni per il campo Autore in Libri
19/10/10
Database
18
Chiavi esterne
●
●
●
Ogni tabella ha chiave primaria
Ogni tabella fa riferimento a
un'altra con la chiave di questa
Ciò le pone, in un senso che
preciseremo, in relazione
–
●
●
Autori
Codice Autore
Autore
Nazionalità
Libri
Titolo
Codice Autore
Argomento
Codice Editore
Editori
N.B.: non sempre i campi in
relazione hanno lo stesso nome
Codice Editore
Nome Editore
Indirizzo Editore
Un campo di una tabella si dice chiave esterna se è
chiave primaria di un'altra tabella del DB
Le chiavi esterne sono le soluzioni standard per i
riferimenti incrociati tra tabelle
–
evitano la ridondanza e tutti gli inconvenienti associati
19/10/10
Database
19
Tabelle finali del DB
NB: piccole variazioni rispetto a figure
precedenti, p.es. CodAutore è Testo
19/10/10
Database
20
Relazioni
●
●
●
Le relazioni sono collegamenti tra
(campi di) tabelle
Senza relazioni non si possono fare
ricerche incrociate
Per definire relazioni:
–
–
–
–
menù Strumenti-Relazioni
aggiungere le tabelle (eventualmente
spostarle o ridimensionarle)
porre in relazione i campi con Drag-andDrop
salvare e (eventualmente) chiudere la
finestra
19/10/10
Database
21
Cardinalità delle relazioni
●
Uno a molti (raffigurato come 1:n)
–
tipico nei DB: p.es. a 1 record Editore
corrispondono più record Libro che
hanno quell'editore
●
Uno a uno: esempio DB agenzia auto
●
Molti a molti → meno comune:
–
p.es. se vi fosse una tabella Argomenti:
●
●
–
a un record Autore potrebbero
corrispondere più record Argomento
(argomenti di cui ha scritto un dato autore)
a un record Argomento potrebbero
corrispondere più record Autore (autori che
hanno scritto su un dato argomento)
ma come memorizzare le associazioni
Argomento-Autore?
● complesso: esula da questo corso
19/10/10
Database
Codice
Autore
Argomento
1
Manzoni
Storia
2
Leopardi
Politica
Morale
22
Integrità referenziale
●
In una relazione 1:n tra il campo di una
tabella e quello di un'altra:
–
–
●
tabella primaria: è quella con il
campo chiave primaria (Autori)
tabella secondaria: è quella con il
campo chiave esterna (Libri)
Che succede se:
1. si crea un record Libro con CodAutore
inesistente in Autori? E' vietato
2. si cancella un record Autore il cui
CodAutore sta in Libri. Va regolato
●
In Access ciò si dice integrità refenziale
(= congruenza dei riferimenti)
19/10/10
Database
23
Integrità referenziale: primaria→secondaria
●
●
Se dalla tabella primaria (es. Autori),
si aggiorna/cancella un record con
chiave primaria k...
cosa accade alla tabella secondaria (es.
Libri) sui record corrispondenti,
cioè con chiave esterna k?
–
–
–
–
niente, ma l'integrità referenziale
vieterà l'operazione sulla primaria
aggiornamento a cascata dei campi
(che erano) a k
azzeramento dei campi (che erano) a k
assegnazione del valore predefinito
(default) ai campi (che erano) a k
19/10/10
Database
24
Formulari o form/moduli/maschere
●
Per input dati:
–
–
–
●
●
ordinato
più intuitivo
di lista dati
strumenti
rapidi
Permettono di “popolare”
più tabelle in una volta
Possono riflettere relazioni,
richiamando subform
–
p.es. dal form di un autore,
subform con i suoi libri
19/10/10
Database
25
Form: creazione guidata
➢
scegliere tabella di base
(p.es. Editori)
1. inserire nel form i campi
voluti, (>> per tutti)
2. (e 3,4) non aggiungere,
per ora, form secondario
5. scegliere la disposizione a
colonne
6. impostare le modalità di
immissione dei dati
7. scegliere uno stile
8. impostare un nome per il
form
19/10/10
Database
26
Form: modifica struttura
●
●
La struttura e l'aspetto del form si
possono modificare, con
Il form è strutturato in controlli,
ognuno ha etichetta e campo
–
●
per modificare un controllo, si usa
nella barra Controlli per il formulario
–
–
●
alcuni sono raggruppati e vanno
separati per operarvi singolarmente
es., controllo CodEditore → invisibile
● il campo associato è automatico
si cambi il colore di sfondo a Editore
per lo più i controlli dei form sono
associati a campi di tabelle
19/10/10
Database
27
Form per autori
●
●
●
●
●
●
●
Es.: inserire, per un autore ogni
15, la nazionalità (una sia “USA”)
Ordinare secondo la nazionalità
Cercare gli autori con naz. “USA”
Modificare “USA” in “Stati Uniti”
Inserire due nuovi autori
Andare sul primo record
Eliminare uno dei due nuovi
autori con l'apposito strumento
19/10/10
Database
28
Le Query (Ricerche)
Una query interroga il DB per estrarne informazioni:
● selezionandole in base a criteri dati
● tenendo conto delle relazioni tra le tabelle del DB
● modificando, inserendo, aggiornando il DB
Per esempio:
● quanti libri esistono per ciascun autore?
● quanto si è speso per ciascun autore?
● quali volumi sono in prestito da più di un mese?
Nella finestra iniziale di un DB, nel riquadro Database,
cliccare lo strumento
e...
19/10/10
Database
29
cliccare
qui
Query: avvio
●
Utilizzare procedura
guidata per la
creazione di
interrogazioni
19/10/10
Database
30
Autocomposizione di query
●
Si vuole un quadro dei titoli disponibili con anno di
uscita:
19/10/10
Database
31
Struttura di una query
●
●
●
●
La query si può creare o
modificare (via bottone
destro) in modalità struttura
Si vedranno la (o le) tabelle
da cui provengono i campi
oggetto della ricerca e
una griglia, detta QBE
(Query By Example), di cui
ogni colonna descrive un
campo che entra nella query
(eventualmente invisibile)
la query si esprime anche in
linguaggio SQL
19/10/10
SELECT "Titolo", "Anno" FROM
"Libri"
Database
32
Query incrociate
●
●
●
La modalità struttura è la più
appropriata per gestire query
incrociate (uniscono campi di
più tabelle)
Infatti in modalità struttura
possono aggiungersi tabelle
e, in specie, stabilire relazioni
Nell'esempio, si vuole vedere
(a) ogni libro con l'autore,
ma, senza la relazione, si ha:
(b) ogni libro con ogni autore
(a)SELECT "Autori"."Autore", "Libri"."Titolo" FROM "Libri", "Autori"
WHERE "Libri"."CodAutore" = "Autori"."CodAutore"
(b)SELECT "Autori"."Autore", "Libri"."Titolo" FROM "Autori", "Libri"
19/10/10
Database
33
Importare dati dal foglio elettronico ooCalc
●
●
●
●
●
Selezionare il foglio, p.es. Autori
Selezionare i dati (CTRL+SHIFT+→ e
CTRL+SHIFT+↓) e copiarli (CTRL-C)
Passare alla tabella Autori del DB e
incollarli (via bottone destro)
Nella 1a finestra, scegliere Aggiungi
Dati, Usa la prima riga...
Nella 2a, Collega colonne,
abbinare i campi sorgente
a quelli destinazione
(p.es. Autore-Autore)
19/10/10
Database
34