Università Degli Studi di Ferrara Corso di Laurea in Scienze della Comunicazione - A.A. 2017-2018 Fondamenti di Informatica Lez. 03 - Database Fondamenti di Informatica - Docente: Giacomo Piva - giacomo.piva@unife.it
In questa lezione Data base Entità Relazioni
Informazioni Informazione Strutturata Non Strutturata
L informatica Partendo dalla nostra definizione di Infromatica: È la scienza applicata che si occupa del trattamento dell'informazione mediante procedure automatizzate. Arriviamo allo strumento per eccellenza dell organizzazione delle informazioni
Data Base 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 Una base di dati e una collezione di dati immagazzinati in modo permanente su disco che permette di definire delle entità e delle relazioni. Un database è uno strumento che permette di: Inserire Aggiornare Recuperare Cancellare Combinare fra loro i dati (cioè le informazioni)
Data Base Lo scopo di un Data base è quello di rappresentare il mondo reale in termini di entità e relazioni. Le entità sono gli oggetti (ma non solo) del nostro mondo reale: Un film su DVD Un impiegato Un dipartimento Le relazioni invece rappresentano i legami fra le entità (come si relazionano fra loro).
Data Base Prendiamo come esempio un film su DVD Titolo Anno di uscita Durata
Data Base Titolo 1 2003 143 Titolo 2 2006 151 Titolo 3 2007 169
Data Base Se io volessi organizzare la mia videoteca, per ogni film avrei: Titolo: I pirati dei Caraibi: La maledizione della prima luna Anno: 2003 Durata: 143 Titolo: I pirati dei Caraibi: La maledizione del forziere fantasma Anno: 2006 Durata: 151
Data Base: Entità In modo più appropriato Titolo Anno Durata I pirati dei Caraibi: La maledizione della prima luna 2003 143 I pirati dei Caraibi: La maledizione del forziere fantasma 2006 151 I pirati dei Caraibi: Ai confini del mondo 2007 169 e magari, potrei anche dare un nome a questa tabella: Film
Data Base: Entità Una volta che i miei dati sono all interno della mia entità strutturata, posso ricavarne nuove informazioni. Ad esempio posso filtrare la tabella per ottenere Tutte le righe della tabella Film in cui l Anno è dopo il 2003 Titolo Anno Durata I pirati dei Caraibi: La maledizione del forziere fantasma 2006 151 I pirati dei Caraibi: Ai confini del mondo 2007 169
Data Base: Nomi appropriati Titolo Anno Durata I pirati dei Caraibi: La maledizione della prima luna 2003 143 I pirati dei Caraibi: La maledizione del forziere fantasma 2006 151 I pirati dei Caraibi: Ai confini del mondo 2007 169 I pirati dei Caraibi: Oltre i confini del mare 2011 136 The Lone Ranger 2013 149 Entità
Data Base: Nomi appropriati Titolo Anno di uscita Attributi Durata
Data Base: Nomi appropriati Titolo Anno Durata I pirati dei Caraibi: La maledizione della prima luna 2003 143 I pirati dei Caraibi: La maledizione del forziere fantasma 2006 151 I pirati dei Caraibi: Ai confini del mondo 2007 169 I pirati dei Caraibi: Oltre i confini del mare 2011 136 The Lone Ranger 2013 149 Attributi
Data Base: Nomi appropriati Titolo Anno Durata I pirati dei Caraibi: La maledizione della prima luna 2003 143 I pirati dei Caraibi: La maledizione del forziere fantasma 2006 151 I pirati dei Caraibi: Ai confini del mondo 2007 169 I pirati dei Caraibi: Oltre i confini del mare 2011 136 The Lone Ranger 2013 149 Record o Tupla
Data Base: Nomi appropriati Titolo Anno Durata I pirati dei Caraibi: La maledizione della prima luna 2003 143 I pirati dei Caraibi: La maledizione del forziere fantasma 2006 151 I pirati dei Caraibi: Ai confini del mondo 2007 169 I pirati dei Caraibi: Oltre i confini del mare 2011 136 The Lone Ranger 2013 149 Campo
Data Base: Nomi appropriati Titolo Anno Durata I pirati dei Caraibi: La maledizione della prima luna 2003 143 I pirati dei Caraibi: La maledizione del forziere fantasma 2006 151 I pirati dei Caraibi: Ai confini del mondo 2007 169 I pirati dei Caraibi: Oltre i confini del mare 2011 136 The Lone Ranger 2013 149 Valore dell attributo
Data Base: Entità Facciamo un altro esempio tipico, pensiamo alla rubrica Nome Cognome Numero di telefono Email Bob
Data Base: Entità Organizzato meglio Nome Cognome Telefono Email Alan Menegatti 347 6523024 alanp@libero.it Alberto Marchi 339 5640234 alby92@gmail.com Alessandro Menegatti 328 4555432 meneale@tim.it Alessandro De Cesare 339 098334 decalb@unife.it Tabella: Persone
Chiave primaria Perchè una base di dati funzioni al meglio, deve essere strutturata in modo che ogni riga sia identificabile univocamente attraverso il valore di un suo attributo. In altre parole, deve esistere una colonna per cui non è possibile che esistano due righe in cui ci sia lo stesso valore.
Chiave primaria Nome Cognome Telefono Email Alan Menegatti 347 6523024 alanp@libero.it Alberto Marchi 339 5640234 alby92@gmail.com Alessandro Menegatti 328 4555432 meneale@tim.it Alessandro De Cesare 339 098334 decalb@unife.it
Chiave primaria Nome Cognome Telefono Email Alan Menegatti 347 6523024 alanp@libero.it Alberto Marchi 339 5640234 alby92@gmail.com Alessandro Menegatti 328 4555432 meneale@tim.it Alessandro De Cesare 339 098334 decalb@unife.it
Chiave primaria La colonna, o meglio l attributo che identifica univocamente una riga prende il nome di Chiave Primaria o Primary Key (PK) Ogni entità può avere una ed una sola chiave primaria. La Chiave primaria viene definita durante la fase di creazione dell entità e deve sempre avere un valore.
Chiave primaria Utilizzare come chiave primaria il numero di telefono o l indirizzo email, può andare bene se stiamo lavorando con una piccola rubrica personale, ma non possiamo fare affidamento su questi valori in casi più complessi. Pensiamo al caso in cui la tabella Persone faccia parte di una rubrica più grande, magari gli impiegati di una grande azienda suddivisa in reparti in cui: Il numero di telefono -> di un ufficio con più persone. Email -> di un reparto con più persone.
Chiave primaria Nome Cognome Telefono Email Alan Menegatti 0532 345677 uff_acquisti@mgd.it Alberto Marchi 0532 345676 uff_acquisti@mgd.it Alessandro Menegatti 0532 345678 meneale@mgd.it Alessandro De Cesare 0532 345677 decalb@mgd.it Appaiono in più righe, non possono essere chiave primaria
Chiave primaria Nome Cognome Telefono Email Codice Fiscale Alan Menegatti 0532 345677 uff_acquisti@mgd.it XXYY Alberto Marchi 0532 345676 uff_acquisti@mgd.it YYXX Alessandro Menegatti 0532 345677 meneale@mgd.it XYXY Alessandro De Cesare 0532 345678 decalb@mgd.it YXYX
Chiave primaria In tutti quei casi in cui è possibile identificare una caratteristica o proprietà davvero univoca per ogni oggetto, parliamo di chiave primaria naturale. Ma esistono tantissimi casi in cui non è possibile identificare una chiave primaria naturale. In questi casi, le possibilità sono 2: O ci affidiamo a chiavi naturali e imponiamo a priori che non è possibile inserire 2 record (righe) con quello stesso valore di attributo (ad esempio l indirizzo email) Oppure, inventiamo una chiave primaria sicuramente univoca.
Chiave primaria Se, la nostra entità non ha una chiave primaria naturale, è possibile crearne una artificiale Id Titolo Anno Durata 1 I pirati dei Caraibi: La maledizione della prima luna 2003 143 2 I pirati dei Caraibi: La maledizione del forziere fantasma 2006 151 3 I pirati dei Caraibi: Ai confini del mondo 2007 169
Chiave primaria I database offrono la possibilità di gestire automaticamente le chiavi primarie in maniera sicura garantendo l univocità delle stesse.
Data base Pensiamo ora di espandere la nostra tabella film aggiungendo altri attributi, ad esempio riguardo al Regista: Nome del Regista Premi vinti dal Regista Perchè dovremmo aggiungere attributi? Per poter aumentare le possibilità di estrarre informazioni Selezionare dalla tabella Film tutte le righe in cui Anno è > 2003 AND il Regista ha vinto almeno un Premio
Data base Pensiamo ora di espandere la nostra tabella film aggiungendo altri attributi, ad esempio riguardo al Regista: Nome del Regista Fate attenzione a questo dettaglio. Premi vinti dal Regista Parleremo dei premi vinti dal Regista, non dal Film. Perchè dovremmo aggiungere attributi? Per poter aumentare le possibilità di estrarre informazioni Selezionare dalla tabella Film tutte le righe in cui Anno è > 2003 AND il Regista ha vinto almeno un Premio
Data base: Relazioni Pensiamo di allungare l elenco di attributi della nostra relazione 1 2 3 4 Id Titolo Anno Durata Regista Premi I pirati dei Caraibi: La maledizione della prima luna I pirati dei Caraibi: La maledizione del forziere fantasma I pirati dei Caraibi: Ai confini del mondo I pirati dei Caraibi: Oltre i confini del mare 2003 143 Gregor Verbinski 4 2006 151 Gregor Verbinski 4 2007 169 Gregor Verbinski 4 2011 136 Rob Marshall 3 5 The Lone Ranger 2013 149 Gregor Verbinski 4 Tabella: Film
Data base Ora che abbiamo più informazioni all interno della nostra entità, possiamo immaginare di ottenere nuove informazioni Possiamo ad esempio Selezionare dalla tabella Film (tutte le righe) in cui il Regista = Rob Marshall AND Durata <= 150 Oppure Select From Film Where Anno > 2003 AND Premi > 3
Il linguaggio SQL Complimenti! Avete appena compreso le vostre prime righe di codice: Select From Film Where Anno > 2003 AND Premi > 3 Il linguaggio SQL (Structured Query Language) è lo strumento utilizzato per estrarre le informazioni da una base di dati.
Il linguaggio SQL Il risultato di una Query di interrogazione SQL è sempre una Entità Il linguaggio SQL consente, oltre ad interrogare la base di dati anche di creare le entità e di Inserire le informazioni in una entità Aggiornare le informazioni in una entità Cancellare le informazioni in una entità
Data base Tornando alla nostra entità Film, cosa possiamo notare? 1 2 3 4 Id Titolo Anno Durata Regista Premi* I pirati dei Caraibi: La maledizione della prima luna I pirati dei Caraibi: La maledizione del forziere fantasma I pirati dei Caraibi: Ai confini del mondo I pirati dei Caraibi: Oltre i confini del mare 2003 143 Gregor Verbinski 4 2006 151 Gregor Verbinski 4 2007 169 Gregor Verbinski 4 2011 136 Rob Marshall 3 5 The Lone Ranger 2013 149 Gregor Verbinski 4 Tabella: Film *Premi vinti dal Regista!
Data base Questa informazione, in un certo senso è fuori posto 1 2 3 4 Id Titolo Anno Durata Regista Premi* I pirati dei Caraibi: La maledizione della prima luna I pirati dei Caraibi: La maledizione del forziere fantasma I pirati dei Caraibi: Ai confini del mondo I pirati dei Caraibi: Oltre i confini del mare 2003 143 Gregor Verbinski 4 2006 151 Gregor Verbinski 4 2007 169 Gregor Verbinski 4 2011 136 Rob Marshall 3 5 The Lone Ranger 2013 149 Gregor Verbinski 4 Tabella: Film *Premi vinti dal Regista!
Data base Ha senso separare le informazioni riguardo ai Registi in una seconda Entità Id Nome Anno Esordio Premi 1 Gregor Verbinski 1964 1997 4 2 Rob Marshall 1960 2002 4 Tabella: Registi
Data base Separate le informazioni nelle due entità, abbiamo bisogno di mantenerle comunque collegate per poter associare ad ogni film il proprio Regista Film 1 2 Id Titolo Anno Durata I pirati dei Caraibi: La maledizione della prima luna I pirati dei Caraibi: La maledizione del forziere fantasma 2003 143 2006 151 3 I pirati dei Caraibi: Ai confini del mondo 2007 169 4 I pirati dei Caraibi: Oltre i confini del mare 2011 136 Registi Id Nome Anno Esordio Premi 1 2 Gregor Verbinski Rob Marshall 1964 1997 4 1960 2002 4 5 The Lone Ranger 2013 149
Data base Registi Id Nome Anno Esordio Premi 1 Gregor Verbinski 1964 1997 4 2 Rob Marshall 1960 2002 4 Abbiamo creato la nuova entità con un riferimento che identifica sicuramente una singola riga all interno dell entità stessa. Possiamo sfruttarlo?
Data base Aggiungendo una colonna id Regista nell Entità Film possiamo tenere traccia di quale Regista ha diretto il film Registi Id Nome Anno Esordio Premi Film 1 Gregor Verbinski 1964 1997 4 1 2 Id Titolo Anno Durata id Regista I pirati dei Caraibi: La maledizione della prima luna I pirati dei Caraibi: La maledizione del forziere fantasma 2003 143 1 2006 151 1 2 Rob Marshall 1960 2002 4 3 I pirati dei Caraibi: Ai confini del mondo 2007 169 1 4 I pirati dei Caraibi: Oltre i confini del mare 2011 136 2 5 The Lone Ranger 2013 149 1
Data base: Relazioni Id Titolo Anno Durata id Regista 1 2 I pirati dei Caraibi: La maledizione della prima luna I pirati dei Caraibi: La maledizione del forziere fantasma 2003 143 1 2006 151 1 3 I pirati dei Caraibi: Ai confini del mondo 2007 169 1 4 I pirati dei Caraibi: Oltre i confini del mare 2011 136 2 5 The Lone Ranger 2013 149 1 Tabella: Film Aggiungendo una colonna con l id del regista, abbiamo creato la una relazione fra film e registi
Data base: Relazioni Il riporto della chiave primaria di una entità all interno di una seconda entità prende il nome di Chiave Esterna o Foreign Key (FK). A differenza delle Chiave Primaria, una relazione può avere più Chiavi Esterne, una per ogni relazione. Registi Id Nome Anno Esordio Premi Film 1 Gregor Verbinski 1964 1997 4 1 2 Id Titolo Anno Durata id Regista I pirati dei Caraibi: La maledizione della prima luna I pirati dei Caraibi: La maledizione del forziere fantasma 2003 143 1 2006 151 1 2 Rob Marshall PK dell entità Registi 1960 2002 4 3 I pirati dei Caraibi: Ai confini del mondo 2007 169 1 4 I pirati dei Caraibi: Oltre i confini del mare 2011 136 2 5 The Lone Ranger 2013 149 1 PK dell entità Film FK dell entità Registi in Film
Relazione 1:N Aggiungendo una colonna con l id del regista, abbiamo creato la una relazione fra film e registi Registi 1 : N Film Questo tipo di relazione si indica con 1 : N e si legge Uno a N ( Uno a molti ) Ovvero, UN regista ha diretto N film.
Relazione N:M La relazione N:M è una relazione che associa a più record di una entità più record di una seconda entità Attori N : M Film Si legge N a M ( Molti a molti ) Un esempio potrebbe essere la relazione Ha recitato in che collega la nostra entità Film con una entità Attori
Relazione 1:1 La relazione 1:1 è una relazione che associa ad una entry di una entità una sola entry di una seconda entità Dipartimenti 1 : 1 Direttori Si legge Uno a Uno Un esempio potrebbe essere la relazione Dirige/È diretto che collega una ipotetica entità Dipartimenti con una entità Direttori. Un secondo esempio è la relazione che c è fra Stati e Presidenti. Uno Stato ha un solo Presidente ed un Presidente lo è di un solo Stato.
Lo schema ER Lo schema ER (entità relazione) è una rappresentazione grafica dei dati in cui le entità sono rappresentate da rettangoli e le relazioni da rombi. Gli attributi di una entità sono rappresentati da un ovale Attributo Entità Relazione Gli elementi sono uniti con delle linee
Entità e Attributi Una entità possiede uno o più attributi Attributo Attributo Entità Attributo
Relazioni Due entità possono essere legate da una relazione Entità Relazione Entità
Cardinalità delle relazioni La cardinalità della relazione è rappresentata da una coppia di numeri naturali che specificano il numero minimo e massimo di occorrenze in cui un entità partecipa alla relazione. Entità (1, 1) Relazione 1,1: Ogni record dell entità deve essere presente una sola volta nella relazione 1,N: Ogni record dell entità deve essere presente nella relazione e può esserlo più volte 0,1: Ogni record dell entità può non essere presente e può essere presente una sola volta 0,N: Ogni record dell entità può non essere presente e può essere presente più volte
Cardinalità delle relazioni Persone (0, 1) conseguito (1, 1) Patente* 1 : 1 Persone (1, N) conseguito (0, M) Titolo di studio** N : M * Numero di patente, non la tipologia (A, B, C ) ** Tipologia del titolo (Licenza media, Diploma, Laurea )
Lo schema ER Cominciamo dalla nostra entità Film Titolo Anno Film Durata
Lo schema ER Continuiamo con la nostra entità Registi Titolo Nome Anno Film Registi Anno Durata Esordio Premi
Lo schema ER Completiamo con la nostra relazione Titolo Nome Anno Film Dirige Registi Anno Durata Esordio Premi
Lo schema ER Riguardiamo i nostri collegamenti Registi Id Nome Anno Esordio Premi Film 1 Gregor Verbinski 1964 1997 4 1 2 Id Titolo Anno Durata id Regista I pirati dei Caraibi: La maledizione della prima luna I pirati dei Caraibi: La maledizione del forziere fantasma 2003 143 1 2006 151 1 2 Rob Marshall 1960 2002 4 3 I pirati dei Caraibi: Ai confini del mondo 2007 169 1 4 I pirati dei Caraibi: Oltre i confini del mare 2011 136 2 5 The Lone Ranger 2013 149 1
Lo schema ER Quale è la cardinalità della nostra relazione? Titolo Nome Anno Film Dirige Registi Anno Durata (?,?) (?,?) Esordio Premi
Lo schema ER Quale è la cardinalità della nostra relazione? Titolo Nome Anno Film Dirige Registi Anno Durata (1, 1) (?,?) Esordio Premi
Lo schema ER Quale è la cardinalità della nostra relazione? Titolo Nome Anno Film Dirige Registi Anno Durata (1, 1) (1, N) Esordio Premi
Lo schema ER Quale è la cardinalità della nostra relazione? Titolo Nome Anno Film Dirige Registi Anno Durata (1, 1) (1, N) Esordio 1 : N Premi
Lo schema ER Aggiungiamo qualcosa? Nome Registi Anno Titolo Dirige 1 : N Esordio Premi Anno Film Nome Durata Recitano N : N Attori Anno Esordio Premi
Domande?
Quali nuovi termini possiamo aggiungere al nostro dizionario?