idul 2010 basi di dati. uso di strumenti informatici per la gestione di informazioni forse la piu...
TRANSCRIPT
IDUL 2010
BASI DI DATI
USO DI STRUMENTI INFORMATICI PER LA GESTIONE DI INFORMAZIONI
Forse la piu’ importante applicazione di metodi informatici nelle materie umanistiche è per gestire grandi quantita’ di dati
STRUTTURATI (in basi di dati) NON STRUTTURATI (in archivi di testi)
PROSOPOGRAFIA DELL’IMPERO BIZANTINO
Basilios 7Sex MFloruit E/L IXDates 813 (n.) / 886 (ob.)PmbZ No. 832Variant Names BasileiosEthnicity Macedonian;ArmenianLocations: Kepoi (Thrakesioi); Macedonia (property); Peloponnesos; Hagios Diomedes (Monastery of, Constantinople) (topographical);Constantinople (officeplace); Adrianoupolis (Macedonia) (residence); Bulgaria (residence); Constantinople (residence);
Adrianoupolis (Macedonia); Bulgaria; Constantinople; Adrianoupolis (Macedonia) (birthplace)Occupation FarmerTitles Patrikios (dignity); Augustus (office); Basilikos protostrator (office); Basilikos strator (office); Emperor (office);
Parakoimomenos (office); Protostrator (office)Textual SourcesBar Hebraeus, Chronographia, tr. E. A. W. Budge, The Chronography of Abu 'l-Faraj (London, 1932; repr. Amsterdam, 1976) (history);
Chronicon Anonymi ad annum 1234 pertinens, ed. and tr. J.-B. Chabot, I = CSCO 81-82 (Paris, 1916-20), II = CSCO 109 (Louvain, 1937) (chronicle);Genesii, Josephi, Regum Libri Quattuor, eds. A. Lesmüller-Werner and I. Thurn, CFHB 14 (Berlin, 1978) (history);Georgius Monachus Continuatus, in Theophanes Continuatus, ed I Bekker (Bonn, 1839), pp. 761-924 (history);Leo Grammaticus, Chronographia, ed. I. Bekker (Bonn, 1842) (chronicle);Pseudo-Symeon, Chronographia, ed. I. Bekker (Bonn, 1838), pp. 603-760 (history);Theophanes Continuatus, ed. I. Bekker (Bonn, 1838) (history);Vita Ignatii Patriarchae, by Nicetas (BHG 817), PG 105.488-574) (hagiography);Vita Irenae Chrysobalanton, The Life of St Irene Abbess of Chrysobalanton, ed. with introd., tr., notes and indices, J. O. Rosenqvist, Acta Universitatis Upsaliensis (hagiography);Vita Nicolai Studitae (BHG 1365), PG 105. 863-925 (hagiography);Zonaras = Ioannis Zonarae Epitome Historiarum, libri XIII-XVIII, ed. Th. Büttner-Wobst, (Bonn, 1897) (history)
Basilios 7 is the emperor Basil I (867-886). The history of his life and reign was written by his grandson, the emperor Constantine VII Porphyrogenitus (= Theophanes Continuatus, Book V); Constantine described him as of great benefit to the empire and composed his history in order to inform posterity of the origins of the ruling dynasty and to provide a model of conduct to be followed by future descendants of Basilios 7 (in particular, no doubt, Constantine's own son, the future emperor Romanos II): Theoph. Cont. V 1.
DATABASE STORICI:PROSOPOGRAPHY OF THE BIZANTYNE EMPIRE
Prosopografia: un registro di tutti gli individui vissuti in un certo periodo
In questo caso: tutti gli individui vissuti a Bisanzio tra il 641 ed il 1261
Costruita a partire dalle loro menzioni in documenti dell’epoca
Informazioni su 8500 individui, dimensioni equivalenti a 11 000 pagine di testo
STRUTTURE DATI TEMPORANEE E PERMANENTI
Per potere rappresentare informazioni in modo duraturo occorre sviluppare delle tecniche per mantenerle in memoria secondaria e poterle consultare in modo pratico
Lo strumento informatico utilizzato per questo scopo sono le BASI DI DATI (Data-Base)
BASI DI DATI
Una base di dati e’ una collezione di dati immagazzinati in modo PERMANENTE su disco
Una base di dati permette di Definire degli oggetti (‘concetti’) e delle relazioni Inserire nuovi dati Ritrovare questi dati anche combinandoli con altri Visualizzare i dati in modi particolari
Il tipo di base di dati più comune sono le basi di dati RELAZIONALI
PROGETTAZIONE DI UNA BASE DATI
MODELLAZIONE CONCETTUALE Progetto dello SCHEMA
MODELLAZIONE LOGICA Scelta della rappresentazione: TABELLE,
ALBERI, etc PROGETTAZIONE FISICA
Utilizzando il DBMS scelto
MODELLI CONCETTUALI
Un modello concettuale e’ un’analisi del tipo di dati che si vogliono rappresentare, che prescinde dalla realizzazione fisica dei dati particolari
Tipicamente, questa analisi si articola attorno ad una definizione de Gli OGGETTI che si vogliono rappresentare I loro ATTRIBUTI Le RELAZIONI tra questi oggetti
UN SEMPLICE MODELLO CONCETTUALE
RISULTATI_ESAMI
MatricolaMateriaDataVoto
STUDENTE
MatricolaCognome, NomeData di Nascita
MODELLAZIONE LOGICA
Una volta decisi quali sono i concetti importanti da rappresentare e quali sono i loro attributi, occorre pensare come e’ possibile rappresentare questa informazione usando una base di dati
Questo è il compito della modellazione logica(attenzione: questa non esprime ancora proprietà di dati specifici, ma delle loro proprietà e/o relazioni)
Esprimibile in diagrammi
SCHEMA LOGICO (FILM)
Diagramma Entità-Relazione (Chen 1970)
Entità
Relazioni tra entità
Attributi di entità
SCHEMA LOGICO (FILM)Con cardinalità delle relazioni (MIN,MAX)
SCHEMA LOGICO (GERARCHIE)
SCHEMA LOGICO (GERARCHIE)
SCHEMA LOGICO (COMPLETO)
MODELLI DI RAPPRESENTAZIONE DATI
A partire dagli anni Settanta il modello dominante è stato il quello RELAZIONALE, proposto da Edgard F. Codd nel 1970
Per certi tipi di applicazioni (in particolare per basi di dati accessibili via Web) si fa molto uso di XML (vedi prossime lezioni)
IL MODELLO RELAZIONALE
L’informazione e’ rappresentata nelle basi di dati sotto forma di RELAZIONI
r(x,y,z,w) Due tipi di relazioni rappresentate
Relazioni rappresentate con TABELLE che rappresentano un OGGETTO ed i suoi attributi
risultato_esame(IUB,4/2/2008,112233,29) Relazioni tra le tabelle
Per esempio, tra tabella studente e tabella risultato_esame
TABELLE CHE RAPPRESENTANO RELAZIONI
RECORD
ATTRIBUTO
RECORDS
I records sono strutture dati usate per rappresentare oggetti che hanno ATTRIBUTI
ESEMPIO: RISULTATO ESAME
Materia Data Matr. Voto Lode?
IDUL 4/2/10 112233 29 no
IUC 4/2/10 114422 30 si
RECORD
ATTRIBUTO
risultato_esame(IDUL,4/2/2010,112233,29)
VALORE (o CAMPO)SCHEMA della RELAZ.
UN ALTRO ESEMPIO
MATRICOLA COGNOME NOME DATA NASCITA
….
112233 Rossi Mario 11/11/1973
….
STUDENTE
studente(112233,Rossi,Mario,11/11/1973)
VALORI CHIAVE
Ogni riga di ogni tabella (cioe’ ogni rappresentazione di un oggetto) deve avere almeno un campo che permetta di identificare quella riga in modo univoco
non deve dunque esserci un altro record con lo stesso valore per quell’attributo, anche se il valore può apparire in altri attributi
Tale attributo è chiamato CHIAVE
VALORI CHIAVE
MATRICOLA COGNOME NOME DATA NASCITA
….
112233 Rossi Mario 11/11/1973
….
STUDENTE
VALORI CHIAVE MULTIPLI
NOME COGNOME ESAME APPROVATO?
Carlo Rossi IUB si
Mario Rossi IUB no
Carlo Bianchi IUC si
A volte la chiave è definita da più campi insieme.
VALORI CHIAVE ARTIFICIALI
ID MATERIA DATA MATRICOLA VOTO
1 ….
2 IUB 4/2/2008 112233 29
3 ….
RISULTATO_ESAME
Tipicamente, numeri consecutivi, uno per record
VALORI NULLI
NOME Età PADRE
Matusalemme 968 Enoch
Eva NULL NULL
….
PERSONAGGI BIBLICI
Il valore NULL può essere dato a campi il cui valore non si conosce, o per casi in cui il valore non è definito (a volte i due casi sono distinti in un DB)
RELAZIONI TRA TABELLE
Una base di dati relazionale permette di specificare, oltre che informazioni su attributi di oggetti, informazioni sulle relazioni tra oggetti
Per esempio, che un particolare risultato di esame e’ stato ottenuto dallo studente Mario Rossi
RELAZIONI TRA TABELLE
ID MATERIA DATA MATRICOLA VOTO
….
456789 IUB 4/2/2008 112233 29
….
MATRICOLA COGNOME NOME DATA NASCITA
….
112233 Rossi Mario 11/11/1973
….
DATABASE MANAGEMENT SYSTEMS RELAZIONALI
Praticamente tutti i DATABASE MANAGEMENT SYSTEMS (DBMS) moderni sono basati sul modello relazionale E.g., Oracle, Access, MySQL, PostgreSLQ (open
source) Disponibili per i principali sistemi operativi
(Windows, UNIX)
UNA TABELLA IN ACCESS
RELAZIONI TRA TABELLE
OPERAZIONI SU UN DATABASE RELAZIONALE
Operazioni tipiche su un database relazionale RITROVARE un sottoinsieme delle righe
Possibilmente restringendo il ritrovamento ad un sottoinsieme delle colonne
AGGIUNGERE dati DEFINIRE nuove tabelle e nuove relazioni VISUALIZZARE un sottoinsieme dei dati per
scopi particolari
PROIEZIONE E SELEZIONE
PROIEZIONE (πtest): estrazione di una serie di colonne (attributi) da un DB
SELEZIONE (σtest): estrazione di una serie di righe (record) Dove test è un test che, se ha successo, aggiunge la colonna/riga sotto esame alla proiezione/selezione (rispettivamente)
ESEMPIO: DATABASE FILM
Selezione su titolo ed anno
Proiezione su selezione per valore dell’attributo “nazione”
ESEMPIO: DATABASE FILM
Intersezione (⋂) tra gli attori di film diversi
attori NON presenti in un film (differenza, - )
DA ER AL DB RELAZIONALE
La progettazione nello schema ER contiene costrutti che vanno “tradotti” nel sistema relazionale. Ciò comporta: La eliminazione delle gerarchie, riportando le
informazioni su nodo padre. La traduzione delle entità come tabelle, i cui valori
saranno i valori dei singoli individui appartenenti a quella entità
La connessione tra le tabelle così stabilite
Gerarchie come relazioni
Gerarchie come relazioni
“Distribuzione o Produzione"
ENTITA’ COME RELAZIONI
In un diagramma ER, le entità sono collezioni di individui, ciascuno dotato di attributi con valori. Rese come tabelle:
EDIZIONE(codice, titolo, nazione, durata, lingua, vietato)
FILM(codice, titolo, durata, anno, nazione)
COLLEGARE TABELLE
EDIZIONE(codice, titolo, nazione, durata, lingua, vietato)
FILM(codice, titolo, durata, anno, nazione)
Come specificare che una edizione è l’edizione di un certo film? Aggiungendo alla tabella EDIZIONE una chiave esterna (qui, il numero di
codice del film). La chiave si specifica aggiungendo ai valori di EDIZIONE il nome della
relazione che contiene la chiave:
EDIZIONE(codice, titolo, nazione, durata, lingua, vietato, film)
Impossibile fare il contrario, visto che un film ha tipicamente molte edizioni: un campo può contenere un solo valore!
FILM(codice, titolo, durata, anno, nazione, edizione)
COLLEGARE TABELLE CON RELAZIONI N-a-N
Come specificare che un film ha la relazione di CAST con molti attori, ed una PERSONA ha spesso recitato in molti FILM?
E’ necessario indicarlo in maniera indiretta, tramite una nuova relazione (qui, CAST), che conterrà DUE chiavi esterne:
PERSONA(nome, nazione, data_di_nascita)
FILM(codice, titolo, durata, anno, nazione)
CAST(persona, film, personaggio)
RITROVAMENTO INFORMAZIONI CON SQL
Le informazioni in una base di dati possono essere ritrovate mediante INTERROGAZIONI
In un database relazionale moderno le interrogazioni sono fatte utilizzando un linguaggio di interrogazione chiamato SQL (Simple Query Language)
SINTASSI DI SQL
Diversi tipi di comandi: DDL (Data Definition Language: comandi per la
creazione e l’update del DB) DML (Data Manipulation Language: comandi per
la interrogazione del DB)
Create TABLE persona ( Nome varchar(50) PRIMARY KEY, Nazione varchar(50),Data_Nascita date);
SELECT nome, nazione, data_nascitaFROM personaWHERE nazione = ‘Italia’;
CREARE UNA TABELLE CON SQL
CREATE TABLE persona (Codice integer PRIMARY KEY,
Titolo varchar(50), NOT NULL,
Anno varchar(4),
Durata integer,
Nazionevarchar(50), DEFAULT ‘Italia’
);
CREARE UNA ASSOCIAZIONE TRA TABELLE CON SQL CREATE TABLE cast (
persona varchar(50), REFERENCES persona(nome),
film integer, REFERENCES film(codice)
personaggio varchar(50)
PRIMARY KEY (persona, film)
);
POPOLAMENTO DI UN DB
Comandi INSERT, UPDATE, DELETE
1. INSERT INTO film VALUES (5, ‘Il sesto senso’, 1999, 107, ‘USA’);
2. INSERT INTO film(codice, titolo, anno) VALUES (5, ‘Il sesto senso’, 1999);
3. UPDATE film SET durata = 130 WHERE titolo = ‘Il senso senso’;
4. DELETE FROM persona WHERE nazione = ‘Italia’;
2 inserisce valori NULL per gli attributi non specificati; 4 distrugge un’intera tupla (record) della tabella persona se sono verificate le condizioni
INTERROGAZIONI DI UN DB
Comando di interrogazione: SELECT Clausole piu’ usate:
FROM (specifica la tabella) WHERE (specifica restrizioni)
INTERROGAZIONESELECT Materia, Data, Matricola
FROM Esami;
SQL: ESEMPIO DI USO DI ATTRIBUTI
SELECT Nome, CognomeFROM StudentiWHERE Matricola=‘112233’;
INTERROGAZIONI CHE COINVOLGONO PIU’ TABELLE
AGGIUNGERE TABELLE
INTERROGAZIONE A TABELLE MULTIPLE
SQL VIEW
SQL: ESEMPIO DI INTERROGAZIONE DA TABELLE LINKATE
SELECT Studenti.Nome, Studenti.CognomeFROM Studenti INNER JOIN Esami ON Studenti.Matricola=Esami.MatricolaWHERE Esami.Materia='IUB' And Esami.Voto>25;
CREARE UNA BASE DATI
Creare una base di dati realizza un modello concettuale
Richiede tradurre oggetti e relazioni in tabelle e legami tra tabelle
CREARE UNA BASE DI DATI IN ACCESS
1. Creare le tabelle usando ‘Create Table in Design View’
2. Salvare
3. Cambiare a Datasheet view per inserire i dati
4. Continuare a creare altre tabelle
5. Linkare le tabelle
1. TABLE DESIGN VIEW
1. TABLE DESIGN VIEW
2. DATASHEET VIEW
LETTURE
Tomasi, capitolo 3 Wikipedia:
http://it.wikipedia.org/wiki/Database http://it.wikipedia.org/wiki/Modello_relazionale
ACCESS: http://office.microsoft.com/