SlideShare a Scribd company logo
1 of 32
Introduzione alle
Basi Dati Relazionali
DATA SCIENCE AND COMPLEXITY
walter.quattrociocchi@uniroma1.it
Contenuti della lezione
● Perché studiamo le basi di dati relazionali
● Un primo sguardo a SQL
● La relazione (tabella) come elemento centrale del modello
● Database schema
● I tipi: vincolare i dati
● Progettare basi di dati: il diagramma entità/relazione
○ Entità e attributi
○ Relazioni
○ Molteplicità
Il ruolo delle basi di dati
Lo studio delle basi di dati viene tradizionalmente associato a temi noiosi
come la gestione di informazioni su impiegati, conti bancari e così via, ma
oggi i dati stanno assumendo un ruolo sempre più importante nelle
organizzazioni:
● Data Mining e Big Data analysis
● Ricerche su web
● Deep Learning e Intelligenza Artificiale
● Studio e gestione dei Social Network
● ERP e CRM
La necessità di un formalismo
Perché i dati possano essere gestiti è fondamentale che siano archiviati e
gestiti con metodi che rispondono ad una formalizzazione valida in base alle
operazioni che si vogliono svolgere.
Se volete trovare il mio indirizzo di mail è più utile fare una ricerca su Google
o accedere ad un file che contenga l'elenco di tutti i docenti di Ca' Foscari ? E
per mandare una mail a tutti i docenti ? E ai soli docenti che tengono corsi
triennali ?
In questo corso impareremo due formalismi chiave:
● Il modello Relazionale per la rappresentazione dei dati
● L'Algebra Relazionale (e SQL) per l'interrogazione dei dati
Una piccola anticipazione...
Modello relazionale e SQL sono progettati per essere facili da comprendere !
a b
5 20
10 30
20 40
R
SELECT b FROM R WHERE a<10 OR a>=10;
SELECT b FROM R;
SELECT a FROM R, S WHERE R.b = S.b;
SELECT a FROM R WHERE b IN (SELECT b FROM S);
Senza neppure aver completato il corso, siete già in grado di intuire cosa accada con
queste query SQL sulla tabella R ?
Cos'è un formalismo per una Base di Dati ?
Sono tre gli ingredienti necessari per definire un modello formale per
rappresentare e gestire una Base di Dati:
● Una rappresentazione matematica dei dati
○ Modello relazionale -> tabelle
○ XML -> alberi gerarchici
○ Servizi web -> Oggetto JSON
● Una serie di operatori che agiscono sui dati
○ Tramite la definizione di un'algebra
● Una serie di vincoli fra i dati stessi
○ Che garantiscono l'integrità dei dati
Il modello relazionale: tabelle
Il modello relazionale usa la tabella (relazione) per rappresentare i dati
Perchè ?
● Siamo abituati a ragionare per tabelle
● E' facile "vedere" i dati a colpo d'occhio
● I computer sono bravi a gestire dati ordinati
● E' facile definire operazioni su tabelle
● E' facile trasmettere dati regolari in rete
● E' facile eseguire ricerche
● Si possono creare indici
Anatomia di una tabella
Etichetta Produttore
Moretti Heineken
Dreher Heineken
Nastro Azzurro Asahi
Birre
Attributi (colonne, campi)
Tuple (righe, entries,
ennuple)
Nome tabella (relazione)
Un formalismo (compatto) per le tabelle
Non ha senso rappresentare sempre le tabelle graficamente, specialmente
se si ragiona su una base di dati.
Si usa un formalismo compatto, detto "Schema di relazione" o "Relation
Schema":
Nome Tabella ( Nome Attributo 1, Nome Attributo 2, …. )
esempio:
Birre ( Etichetta, Produttore )
Uno schema di database (Database Schema) è un insieme di "Relation
Schema"
Vincoli: i tipi
Uno schema di relazione specifica nome tabella e attributi, ma le righe
possono contenere qualsiasi cosa ?
● E' desiderabile modellare dati che possono avere qualsiasi valore ?
● Come facciamo a garantire che tutto funzioni ?
Per risolvere questi problemi vengono definiti degli insiemi di valori possibili
(tipi):
int, float, text, date, position... (e molti altri, dipendono dal DB software)
E' possibile specificare i tipi nello schema:
Birre ( Etichetta: text, Produttore: text )
Vincoli: chiavi primarie
Quando nel mondo reale voglio indicare qualcosa senza ambiguità cosa faccio
?
● Per identificare uno studente, un cittadino ?
● Una parte di ricambio, un prodotto ?
Definisco un attributo che è univoco in tutto l'insieme degli elementi e
garantisco che tale proprietà sia mantenuta (ad esempio con un'anagrafe).
La chiave primaria è un attributo (o insieme di attributi) che vincolo ad essere
univoco:
Birre ( Etichetta: text, Produttore: text )
Un esempio completo di database schema
Birre ( Etichetta: text, Produttore: text )
Bar ( Insegna: text, Indirizzo: text, Alcolici: boolean )
Clienti ( Nome: text, Telefono: phone )
Beve ( NomeCliente: text, EtichettaBirra: text )
Frequenta ( NomeCliente: text, InsegnaBar: text )
Vende ( InsegnaBar: text, EtichettaBirra: text, Prezzo: float )
Chiavi esterne !
Alcune tabelle (parziali) al lavoro
Etichetta Produttore
Moretti Heineken
Dreher Heineken
Nastro Azzurro Asahi
Birre
Insegna Indirizzo Alcolici
Moe via Verdi, 1 False
Roxy via Roma, 3 True
Rick's corso Italia, 5 True
Bar
InsegnaBar EtichettaBirra Prezzo
Moe Moretti 2
Moe Dreher 2.5
Roxy Moretti 2.5
Vend
e
Chiavi esterne
Chiave esterna (foreign key): campo/i una tabella R che è chiave primaria di
un’altra tabella S (permette di stabilire relazioni fra tabelle).
● Per ogni tupla r di R esiste una tupla s di S tale che il valore della foreign
key di r coincide con la chiave primaria di s (integrità referenziale)
Quali sono le chiavi esterne nella tabella Vende ?
InsegnaBar EtichettaBirra Prezzo
Moe Moretti 2
Moe Dreher 2.5
Roxy Moretti 2.5
Vend
e
Schema e istanze di una base di dati
● Lo schema, sostanzialmente invariante nel tempo, ne descrive la
struttura (aspetto intensionale);
● L’istanza, costituita dai valori attuali, che possono cambiare molto e
molto rapidamente (aspetto estensionale); nell’esempio, il “corpo” di
ciascuna tabella.
● Ogni tabella contiene un certo numero di record ennuple, che definisce
la sua cardinalità
Tabelle e relazioni
Una tabella rappresenta una relazione se
● i valori di ciascuna colonna sono fra loro omogenei (dello stesso
dominio)
● le righe sono diverse fra loro
● le intestazioni delle colonne sono diverse tra loro
Inoltre, in una tabella che rappresenta una relazione
● l’ordinamento tra le righe è irrilevante
● l’ordinamento tra le colonne è irrilevante
Il ruolo del diagramma E/R (entità/relazione)
Ma come fare per scegliere quali tabelle creare e come relazionarle ?
Il diagramma E/R è un valido strumento che permette di:
● Progettare visualmente la base dati
● Utilizzare una sintassi grafica standard
● Convertire facilmente il progetto in tabelle
● Verificare la funzionalità del progetto
● Ragionare sui dati con gli "stakeholder"
● Dialogare con gli informatici
● Utilizzare software generici
Elementi di un diagramma E/R
Un diagramma E/R si compone di due soli elementi:
● Entity Set: corrispondono a fatti concreti, ovvero a entità, fisiche o
astratte che esistono di per sè (uno studente, una materia, un bar, una
birra, un esame, un dipartimento)
● Relationship: corrispondono a rapporti che intercorrono fra entity set,
ma che non hanno motivo di esistere in assenza degli entity set che
collegano (aver sostenuto un esame, vendere una birra, avere una
materia in piano di studi)
Le relationship si indicano spesso con il termine "relazione", ma non vanno
confuse col concetto di tabella ! In inglese i termini sono appunto diversi fra
loro (relation vs relationship) !
Entity Set
● Ogni entity set viene rappresentato con un rettangolo contenente il suo
nome
● Ogni informazione relativa all'entity set (attributo) viene rappresentata
con un ovale collegato ad esso con una linea retta
Esempi:
Gli attributi che costituiscono chiave primaria vanno sottolineati
Birre
Etichetta Produttore
Studenti
Matricola Nome
Indirizzo
Relationship
● Una relationship connette diversi entity set che sono in qualche
rapporto e viene rappresentata con un rombo
Esempio:
Birre
Etichetta Produttore
Clienti
Nome Telefono
Beve
Attributi su relationship
Una relationship può prevedere degli attributi che la qualificano, se presenti
vengono rappresentati come ovali
Esempio:
Birre
Etichetta Produttore
Bar
Insegna Indirizzo
Vend
e
Alcolici
Prezzo
Diagramma E/R e dati
E' importante capire che un diagramma E/R rappresenta lo schema di come
sono organizzati i dati e come si relazionano fra loro, non costituisce i dati
stessi !
I dati sono mantenuti nella base dati e cambiano nel tempo, ma rispettano
sempre lo schema imposto dal diagramma E/R
Insegna Indirizzo Alcolici
Moe via Verdi, 1 False
Roxy via Roma, 3 True
Rick's corso Italia, 5 True
Bar
Bar
Insegna Indirizzo
Alcolici
Modello E/R
Dati
Relationship ternarie (quaternarie, etc…)
Una relationship non collega necessariamente solo due entity set, ma può
essere utilizzata per collegarne di più per mettere in rapporto tre o quattro
entity set fra i quali insista un fatto che ha senso solo coinvolgendoli tutti.
Esempio:
● Immaginiamo che vogliamo modellare il fatto che un cliente preferisca
bere una birra in uno specifico bar (magari perché il prezzo è migliore o
perché viene spillata meglio), come possiamo modellarlo ?
Relationship ternarie (quaternarie, etc…)
Birre
Etichetta Produttore
Bar
Insegna Indirizzo
Preferisc
e bere da
Alcolici
Clienti
Nome Telefono
Molteplicità delle relationship
Abbiamo visto che le relationship possono connettere un numero variabile di
entity set, mettendo in relazione elementi collegati da un fatto, ma esistono
dei vincoli ?
● E' sempre possibile collegare un elemento di un entity set con elementi
diversi di un altro (un marito può avere più mogli oppure una moglie più
mariti) ?
● Ci sono relazioni di natura non esclusiva (un cliente può bere più birre,
ma la stessa birra può essere bevuta da più clienti) ?
● Ci sono relazioni asimmetriche (un padre può avere più figli, ma un figlio
può avere più padri ?)
Alla necessità di imporre vincoli su queste questioni rispondono le
molteplicità delle relationship
Relationship many-to-many
Nelle relationship di tipo many-to-many non esistono vincoli e qualsiasi
elemento di un entity set può essere messo in relazione con uno o più
elementi dell'altro e viceversa
● La relationship Vende fra Bar e Birre
● La relationship Beve fra Clienti e Birre
● La relationship Frequenta fra Studenti e Corsi
● La relationship Conosce fra Studenti e Studenti
Aspetto grafico delle relationship many-to-many
Le relationship many-to-many vengono rappresentate con semplici segmenti
senza segni grafici particolari
Corso
Codice Titolo
Studente
Matricola Nome
Frequent
a
Corso di
laurea
Relationship many-to-one (o one-to-many)
Nelle relationship di tipo many-to-one un elemento di un entity set può
essere collegato ad (al più) un solo elemento del secondo, ma non viceversa
● La relationship Produce fra Produttori e Birre
● La relationship Favorita fra Clienti e Birre
● La relationship Padre fra Cittadini e Cittadini
● La relationship Appartiene fra Docenti e Dipartimenti
Aspetto grafico delle relationship many-to-one
Le relationship many-to-one vengono rappresentate con una freccia nel lato
"one", piena nel caso di al più uno, vuota nel caso di esattamente uno.
Dipartimen
ti
Nome Indirizzo
Docenti
Codice
Fiscale
Nome
Appartien
e
Birre
Etichetta Produttore
Clienti
Nome Telefono
Favorita
Relationship one-to-one
Nelle relationship di tipo one-to-one un elemento di un entity set può essere
collegato ad (al più) un solo elemento del secondo, e viceversa
● La relationship BestSeller fra Produttori e Birre
● La relationship Capitano fra Giocatori e Squadre
● La relationship Coniuge fra Cittadini e Cittadini
● La relationship Rettore fra Docenti e Atenei
Aspetto grafico delle relationship many-to-one
Le relationship one-to-one vengono rappresentate con le stesse regole delle
many-to-one, ma con due lati "one".
Atenei
Nome Indirizzo
Docenti
Codice
Fiscale
Nome
Rettore
Birre
Etichetta Produttore
Produttor
i
Partita Iva
Ragione
sociale
BestSelle
r
Relationship fra elementi del medesimo entity set
E' perfettamente lecito avere relationship interne ad un entity set, nel qual
caso è necessario etichettare dei "ruoli".
Esempi:
Studenti
Matricola Nome
Cittadini
Codice
Fiscale
Nome
Conosc
e
S1 S2
Coniug
e
Marit
o
Mogli
e

More Related Content

Similar to LEZ_10_IntroDB.pptx

Data modelling for Power BI
Data modelling for Power BIData modelling for Power BI
Data modelling for Power BIMarco Pozzan
 
Progettazione database relazionali
Progettazione database relazionaliProgettazione database relazionali
Progettazione database relazionaliRoberto Belmonte
 
Database, concetti di base
Database, concetti di baseDatabase, concetti di base
Database, concetti di baseantmng
 
SlideModellingDataSat.pdf
SlideModellingDataSat.pdfSlideModellingDataSat.pdf
SlideModellingDataSat.pdfMarco Pozzan
 
Linked data parliamo di semantica del web - v0
Linked data   parliamo di semantica del web - v0Linked data   parliamo di semantica del web - v0
Linked data parliamo di semantica del web - v0Riccardo Grosso
 
TellMeQuality
TellMeQualityTellMeQuality
TellMeQualitySynapta
 
Lezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RLezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RGiuseppe Cramarossa
 
Linked data parliamo di semantica del web - v3
Linked data   parliamo di semantica del web - v3Linked data   parliamo di semantica del web - v3
Linked data parliamo di semantica del web - v3Riccardo Grosso
 
Progettazione concettuale per le basi di dati - Introduzione e il modello ER
Progettazione concettuale per le basi di dati - Introduzione e il modello ERProgettazione concettuale per le basi di dati - Introduzione e il modello ER
Progettazione concettuale per le basi di dati - Introduzione e il modello ERMarco Brambilla
 
Access parte prima
Access parte primaAccess parte prima
Access parte primaMatekanc
 
Progettazione n
Progettazione nProgettazione n
Progettazione nimartini
 
Modello ER
Modello ERModello ER
Modello ERethelm18
 
Linked data parliamo di semantica del web - v2
Linked data   parliamo di semantica del web - v2Linked data   parliamo di semantica del web - v2
Linked data parliamo di semantica del web - v2Riccardo Grosso
 
Database - Appunti teorici
Database - Appunti teoriciDatabase - Appunti teorici
Database - Appunti teoriciLuca Santoro
 
Data profiling
Data profilingData profiling
Data profilingdodo_91
 
Open web programming
Open web programmingOpen web programming
Open web programmingnois3lab
 

Similar to LEZ_10_IntroDB.pptx (20)

Data modelling for Power BI
Data modelling for Power BIData modelling for Power BI
Data modelling for Power BI
 
Progettazione database relazionali
Progettazione database relazionaliProgettazione database relazionali
Progettazione database relazionali
 
Database, concetti di base
Database, concetti di baseDatabase, concetti di base
Database, concetti di base
 
SlideModellingDataSat.pdf
SlideModellingDataSat.pdfSlideModellingDataSat.pdf
SlideModellingDataSat.pdf
 
Linked data parliamo di semantica del web - v0
Linked data   parliamo di semantica del web - v0Linked data   parliamo di semantica del web - v0
Linked data parliamo di semantica del web - v0
 
TellMeQuality
TellMeQualityTellMeQuality
TellMeQuality
 
Lezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RLezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-R
 
Linked data parliamo di semantica del web - v3
Linked data   parliamo di semantica del web - v3Linked data   parliamo di semantica del web - v3
Linked data parliamo di semantica del web - v3
 
ORM - Introduzione
ORM - IntroduzioneORM - Introduzione
ORM - Introduzione
 
Progettazione concettuale per le basi di dati - Introduzione e il modello ER
Progettazione concettuale per le basi di dati - Introduzione e il modello ERProgettazione concettuale per le basi di dati - Introduzione e il modello ER
Progettazione concettuale per le basi di dati - Introduzione e il modello ER
 
Access parte prima
Access parte primaAccess parte prima
Access parte prima
 
Corso access 2010
Corso access 2010Corso access 2010
Corso access 2010
 
Progettazione n
Progettazione nProgettazione n
Progettazione n
 
Modello ER
Modello ERModello ER
Modello ER
 
Linked data parliamo di semantica del web - v2
Linked data   parliamo di semantica del web - v2Linked data   parliamo di semantica del web - v2
Linked data parliamo di semantica del web - v2
 
A ciascuno il suo: archi, frecce e interfacce per servizi editoriali B2B e B2...
A ciascuno il suo: archi, frecce e interfacce per servizi editoriali B2B e B2...A ciascuno il suo: archi, frecce e interfacce per servizi editoriali B2B e B2...
A ciascuno il suo: archi, frecce e interfacce per servizi editoriali B2B e B2...
 
Database - Appunti teorici
Database - Appunti teoriciDatabase - Appunti teorici
Database - Appunti teorici
 
4 progettazione DB
4 progettazione DB4 progettazione DB
4 progettazione DB
 
Data profiling
Data profilingData profiling
Data profiling
 
Open web programming
Open web programmingOpen web programming
Open web programming
 

LEZ_10_IntroDB.pptx

  • 1. Introduzione alle Basi Dati Relazionali DATA SCIENCE AND COMPLEXITY walter.quattrociocchi@uniroma1.it
  • 2. Contenuti della lezione ● Perché studiamo le basi di dati relazionali ● Un primo sguardo a SQL ● La relazione (tabella) come elemento centrale del modello ● Database schema ● I tipi: vincolare i dati ● Progettare basi di dati: il diagramma entità/relazione ○ Entità e attributi ○ Relazioni ○ Molteplicità
  • 3. Il ruolo delle basi di dati Lo studio delle basi di dati viene tradizionalmente associato a temi noiosi come la gestione di informazioni su impiegati, conti bancari e così via, ma oggi i dati stanno assumendo un ruolo sempre più importante nelle organizzazioni: ● Data Mining e Big Data analysis ● Ricerche su web ● Deep Learning e Intelligenza Artificiale ● Studio e gestione dei Social Network ● ERP e CRM
  • 4. La necessità di un formalismo Perché i dati possano essere gestiti è fondamentale che siano archiviati e gestiti con metodi che rispondono ad una formalizzazione valida in base alle operazioni che si vogliono svolgere. Se volete trovare il mio indirizzo di mail è più utile fare una ricerca su Google o accedere ad un file che contenga l'elenco di tutti i docenti di Ca' Foscari ? E per mandare una mail a tutti i docenti ? E ai soli docenti che tengono corsi triennali ? In questo corso impareremo due formalismi chiave: ● Il modello Relazionale per la rappresentazione dei dati ● L'Algebra Relazionale (e SQL) per l'interrogazione dei dati
  • 5. Una piccola anticipazione... Modello relazionale e SQL sono progettati per essere facili da comprendere ! a b 5 20 10 30 20 40 R SELECT b FROM R WHERE a<10 OR a>=10; SELECT b FROM R; SELECT a FROM R, S WHERE R.b = S.b; SELECT a FROM R WHERE b IN (SELECT b FROM S); Senza neppure aver completato il corso, siete già in grado di intuire cosa accada con queste query SQL sulla tabella R ?
  • 6. Cos'è un formalismo per una Base di Dati ? Sono tre gli ingredienti necessari per definire un modello formale per rappresentare e gestire una Base di Dati: ● Una rappresentazione matematica dei dati ○ Modello relazionale -> tabelle ○ XML -> alberi gerarchici ○ Servizi web -> Oggetto JSON ● Una serie di operatori che agiscono sui dati ○ Tramite la definizione di un'algebra ● Una serie di vincoli fra i dati stessi ○ Che garantiscono l'integrità dei dati
  • 7. Il modello relazionale: tabelle Il modello relazionale usa la tabella (relazione) per rappresentare i dati Perchè ? ● Siamo abituati a ragionare per tabelle ● E' facile "vedere" i dati a colpo d'occhio ● I computer sono bravi a gestire dati ordinati ● E' facile definire operazioni su tabelle ● E' facile trasmettere dati regolari in rete ● E' facile eseguire ricerche ● Si possono creare indici
  • 8. Anatomia di una tabella Etichetta Produttore Moretti Heineken Dreher Heineken Nastro Azzurro Asahi Birre Attributi (colonne, campi) Tuple (righe, entries, ennuple) Nome tabella (relazione)
  • 9. Un formalismo (compatto) per le tabelle Non ha senso rappresentare sempre le tabelle graficamente, specialmente se si ragiona su una base di dati. Si usa un formalismo compatto, detto "Schema di relazione" o "Relation Schema": Nome Tabella ( Nome Attributo 1, Nome Attributo 2, …. ) esempio: Birre ( Etichetta, Produttore ) Uno schema di database (Database Schema) è un insieme di "Relation Schema"
  • 10. Vincoli: i tipi Uno schema di relazione specifica nome tabella e attributi, ma le righe possono contenere qualsiasi cosa ? ● E' desiderabile modellare dati che possono avere qualsiasi valore ? ● Come facciamo a garantire che tutto funzioni ? Per risolvere questi problemi vengono definiti degli insiemi di valori possibili (tipi): int, float, text, date, position... (e molti altri, dipendono dal DB software) E' possibile specificare i tipi nello schema: Birre ( Etichetta: text, Produttore: text )
  • 11. Vincoli: chiavi primarie Quando nel mondo reale voglio indicare qualcosa senza ambiguità cosa faccio ? ● Per identificare uno studente, un cittadino ? ● Una parte di ricambio, un prodotto ? Definisco un attributo che è univoco in tutto l'insieme degli elementi e garantisco che tale proprietà sia mantenuta (ad esempio con un'anagrafe). La chiave primaria è un attributo (o insieme di attributi) che vincolo ad essere univoco: Birre ( Etichetta: text, Produttore: text )
  • 12. Un esempio completo di database schema Birre ( Etichetta: text, Produttore: text ) Bar ( Insegna: text, Indirizzo: text, Alcolici: boolean ) Clienti ( Nome: text, Telefono: phone ) Beve ( NomeCliente: text, EtichettaBirra: text ) Frequenta ( NomeCliente: text, InsegnaBar: text ) Vende ( InsegnaBar: text, EtichettaBirra: text, Prezzo: float ) Chiavi esterne !
  • 13. Alcune tabelle (parziali) al lavoro Etichetta Produttore Moretti Heineken Dreher Heineken Nastro Azzurro Asahi Birre Insegna Indirizzo Alcolici Moe via Verdi, 1 False Roxy via Roma, 3 True Rick's corso Italia, 5 True Bar InsegnaBar EtichettaBirra Prezzo Moe Moretti 2 Moe Dreher 2.5 Roxy Moretti 2.5 Vend e
  • 14. Chiavi esterne Chiave esterna (foreign key): campo/i una tabella R che è chiave primaria di un’altra tabella S (permette di stabilire relazioni fra tabelle). ● Per ogni tupla r di R esiste una tupla s di S tale che il valore della foreign key di r coincide con la chiave primaria di s (integrità referenziale) Quali sono le chiavi esterne nella tabella Vende ? InsegnaBar EtichettaBirra Prezzo Moe Moretti 2 Moe Dreher 2.5 Roxy Moretti 2.5 Vend e
  • 15. Schema e istanze di una base di dati ● Lo schema, sostanzialmente invariante nel tempo, ne descrive la struttura (aspetto intensionale); ● L’istanza, costituita dai valori attuali, che possono cambiare molto e molto rapidamente (aspetto estensionale); nell’esempio, il “corpo” di ciascuna tabella. ● Ogni tabella contiene un certo numero di record ennuple, che definisce la sua cardinalità
  • 16. Tabelle e relazioni Una tabella rappresenta una relazione se ● i valori di ciascuna colonna sono fra loro omogenei (dello stesso dominio) ● le righe sono diverse fra loro ● le intestazioni delle colonne sono diverse tra loro Inoltre, in una tabella che rappresenta una relazione ● l’ordinamento tra le righe è irrilevante ● l’ordinamento tra le colonne è irrilevante
  • 17. Il ruolo del diagramma E/R (entità/relazione) Ma come fare per scegliere quali tabelle creare e come relazionarle ? Il diagramma E/R è un valido strumento che permette di: ● Progettare visualmente la base dati ● Utilizzare una sintassi grafica standard ● Convertire facilmente il progetto in tabelle ● Verificare la funzionalità del progetto ● Ragionare sui dati con gli "stakeholder" ● Dialogare con gli informatici ● Utilizzare software generici
  • 18. Elementi di un diagramma E/R Un diagramma E/R si compone di due soli elementi: ● Entity Set: corrispondono a fatti concreti, ovvero a entità, fisiche o astratte che esistono di per sè (uno studente, una materia, un bar, una birra, un esame, un dipartimento) ● Relationship: corrispondono a rapporti che intercorrono fra entity set, ma che non hanno motivo di esistere in assenza degli entity set che collegano (aver sostenuto un esame, vendere una birra, avere una materia in piano di studi) Le relationship si indicano spesso con il termine "relazione", ma non vanno confuse col concetto di tabella ! In inglese i termini sono appunto diversi fra loro (relation vs relationship) !
  • 19. Entity Set ● Ogni entity set viene rappresentato con un rettangolo contenente il suo nome ● Ogni informazione relativa all'entity set (attributo) viene rappresentata con un ovale collegato ad esso con una linea retta Esempi: Gli attributi che costituiscono chiave primaria vanno sottolineati Birre Etichetta Produttore Studenti Matricola Nome Indirizzo
  • 20. Relationship ● Una relationship connette diversi entity set che sono in qualche rapporto e viene rappresentata con un rombo Esempio: Birre Etichetta Produttore Clienti Nome Telefono Beve
  • 21. Attributi su relationship Una relationship può prevedere degli attributi che la qualificano, se presenti vengono rappresentati come ovali Esempio: Birre Etichetta Produttore Bar Insegna Indirizzo Vend e Alcolici Prezzo
  • 22. Diagramma E/R e dati E' importante capire che un diagramma E/R rappresenta lo schema di come sono organizzati i dati e come si relazionano fra loro, non costituisce i dati stessi ! I dati sono mantenuti nella base dati e cambiano nel tempo, ma rispettano sempre lo schema imposto dal diagramma E/R Insegna Indirizzo Alcolici Moe via Verdi, 1 False Roxy via Roma, 3 True Rick's corso Italia, 5 True Bar Bar Insegna Indirizzo Alcolici Modello E/R Dati
  • 23. Relationship ternarie (quaternarie, etc…) Una relationship non collega necessariamente solo due entity set, ma può essere utilizzata per collegarne di più per mettere in rapporto tre o quattro entity set fra i quali insista un fatto che ha senso solo coinvolgendoli tutti. Esempio: ● Immaginiamo che vogliamo modellare il fatto che un cliente preferisca bere una birra in uno specifico bar (magari perché il prezzo è migliore o perché viene spillata meglio), come possiamo modellarlo ?
  • 24. Relationship ternarie (quaternarie, etc…) Birre Etichetta Produttore Bar Insegna Indirizzo Preferisc e bere da Alcolici Clienti Nome Telefono
  • 25. Molteplicità delle relationship Abbiamo visto che le relationship possono connettere un numero variabile di entity set, mettendo in relazione elementi collegati da un fatto, ma esistono dei vincoli ? ● E' sempre possibile collegare un elemento di un entity set con elementi diversi di un altro (un marito può avere più mogli oppure una moglie più mariti) ? ● Ci sono relazioni di natura non esclusiva (un cliente può bere più birre, ma la stessa birra può essere bevuta da più clienti) ? ● Ci sono relazioni asimmetriche (un padre può avere più figli, ma un figlio può avere più padri ?) Alla necessità di imporre vincoli su queste questioni rispondono le molteplicità delle relationship
  • 26. Relationship many-to-many Nelle relationship di tipo many-to-many non esistono vincoli e qualsiasi elemento di un entity set può essere messo in relazione con uno o più elementi dell'altro e viceversa ● La relationship Vende fra Bar e Birre ● La relationship Beve fra Clienti e Birre ● La relationship Frequenta fra Studenti e Corsi ● La relationship Conosce fra Studenti e Studenti
  • 27. Aspetto grafico delle relationship many-to-many Le relationship many-to-many vengono rappresentate con semplici segmenti senza segni grafici particolari Corso Codice Titolo Studente Matricola Nome Frequent a Corso di laurea
  • 28. Relationship many-to-one (o one-to-many) Nelle relationship di tipo many-to-one un elemento di un entity set può essere collegato ad (al più) un solo elemento del secondo, ma non viceversa ● La relationship Produce fra Produttori e Birre ● La relationship Favorita fra Clienti e Birre ● La relationship Padre fra Cittadini e Cittadini ● La relationship Appartiene fra Docenti e Dipartimenti
  • 29. Aspetto grafico delle relationship many-to-one Le relationship many-to-one vengono rappresentate con una freccia nel lato "one", piena nel caso di al più uno, vuota nel caso di esattamente uno. Dipartimen ti Nome Indirizzo Docenti Codice Fiscale Nome Appartien e Birre Etichetta Produttore Clienti Nome Telefono Favorita
  • 30. Relationship one-to-one Nelle relationship di tipo one-to-one un elemento di un entity set può essere collegato ad (al più) un solo elemento del secondo, e viceversa ● La relationship BestSeller fra Produttori e Birre ● La relationship Capitano fra Giocatori e Squadre ● La relationship Coniuge fra Cittadini e Cittadini ● La relationship Rettore fra Docenti e Atenei
  • 31. Aspetto grafico delle relationship many-to-one Le relationship one-to-one vengono rappresentate con le stesse regole delle many-to-one, ma con due lati "one". Atenei Nome Indirizzo Docenti Codice Fiscale Nome Rettore Birre Etichetta Produttore Produttor i Partita Iva Ragione sociale BestSelle r
  • 32. Relationship fra elementi del medesimo entity set E' perfettamente lecito avere relationship interne ad un entity set, nel qual caso è necessario etichettare dei "ruoli". Esempi: Studenti Matricola Nome Cittadini Codice Fiscale Nome Conosc e S1 S2 Coniug e Marit o Mogli e

Editor's Notes

  1. Enterprise resource planning (ERP) is business process management software that allows an organization to use a system of integrated applications to manage the business and automate many back office functions related to technology, services and human resources. Customer relationship management (CRM) is an approach to managing a company's interaction with current and potential future customers that tries to analyze data about customers' history with a company and to improve business relationships with customers, specifically focusing on customer retention and ultimately driving sales growth.