IDUL 2012 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 7 Sex M Floruit E/L IX Dates 813 (n.) / 886 (ob.) PmbZ No. 832 Variant Names Basileios Ethnicity Macedonian;Armenian Locations: 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 Farmer Titles 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 tramite una “maschera” Ritrovare questi dati anche combinandoli con altri Visualizzare/stampare 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 Progetto dello SCHEMA MODELLAZIONE Scelta CONCETTUALE LOGICA della rappresentazione: TABELLE, ALBERI, etc PROGETTAZIONE Utilizzando FISICA 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 di: gli OGGETTI che si vogliono rappresentare i loro ATTRIBUTI le RELAZIONI tra questi oggetti UN SEMPLICE MODELLO CONCETTUALE STUDENTE Matricola Cognome, Nome Data di Nascita RISULTATI_ESAMI Matricola Materia Data Voto 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 dati specifici, ma loro proprietà e/o relazioni) Esprimibile tramite diagrammi SCHEMA LOGICO (FILM) Entità Relazioni tra entità Diagramma Entità-Relazione (Chen 1970) 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 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 SCHEMA della RELAZ. ATTRIBUTO VALORE (o CAMPO) RECORD risultato_esame(IDUL,4/2/2010,112233,29) 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 STUDENTE VALORI CHIAVE MULTIPLI A volte la chiave è definita da più campi insieme. VALORI CHIAVE ARTIFICIALI RISULTATO_ESAME Tipicamente, numeri consecutivi, uno per record VALORI NULLI 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 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) 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_nascita FROM persona WHERE nazione = ‘Italia’; CREARE UNA TABELLE CON SQL CREATE TABLE persona ( Codice Titolo Anno Durata Nazione ); integer PRIMARY KEY, varchar(50), NOT NULL, varchar(4), integer, varchar(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 Clausole FROM di interrogazione: SELECT piu’ usate: (specifica la tabella) WHERE (specifica restrizioni) INTERROGAZIONE SELECT Materia, Data, Matricola FROM Esami; SQL: ESEMPIO DI USO DI ATTRIBUTI SELECT Nome, Cognome FROM Studenti WHERE 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.Cognome FROM Studenti INNER JOIN Esami ON Studenti.Matricola=Esami.Matricola WHERE 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/