BASI DATI: modello relazionale - sira.diei.unipg.it Corso di Laurea... · Dallo schema E/R allo...

Post on 16-Feb-2019

215 views 0 download

transcript

BASI DATI: modello relazionale

INFORMATICA

Lezione III - Informatica 1 15/04/2013

Il modello relazionale

Il modello relazionale fu introdotto da Codd

(1970) e si basa su una semplice ed uniforme

struttura dati chiamata relazione, ed ha una

solida base teorica

La relazione del modello relazionale NON è la

relazione degli schemi E/R

Si introduce tale modello in quanto la maggior

parte dei DBMS sono relazionali (e.g. Oracle,

Access, MySQL)

15/04/2013 Lezione III - Informatica 2

Concetti fondamentali

15/04/2013 Lezione III - Informatica 3

Il modello relazionale rappresenta una base di dati come un insieme di

relazioni

Informalmente,

una relazione è (praticamente) una tabella

ciascuna riga della relazione è detta tupla

l’intestazione di una colonna della tabella è chiamata attributo

il tipo di dato che mi specifica ciò che può apparire in ciascuna colonna è detto

dominio

Per semplicità (e per non fare confusione) useremo il termine (improprio)

tabella al posto del termine (corretto) relazione

Algoritmo di conversione E/R in

relazionale

15/04/2013 Lezione III - Informatica 5

Algoritmo per realizzare lo schema relazionale a partire dallo

schema E/R:

1. Per ogni entità E dello schema E/R, crea una

relazione R che include tutti gli attributi di E

Algoritmo di conversione E/R in

relazionale

15/04/2013 Lezione III - Informatica 6

2. Per ogni relazione 1:1 dello schema E/R esistente

fra le due entità E1 ed E2, trasforma le due

relazioni R1 e R2 (di E1 ed E2) in una unica

relazione R12 unendone tutti gli attributi

preferendo una chiave primaria sull’altra

Algoritmo di conversione E/R in

relazionale

15/04/2013 Lezione III - Informatica 7

3. Per ogni relazione 1:n dello schema E/R esistente fra le

due entità E1 ed E2, aggiungi la chiave primaria della

relazione E2 come attributo nella relazione E1 (chiave

esterna)

Algoritmo di conversione E/R in

relazionale

15/04/2013 Lezione III - Informatica 8

4. Per ogni relazione n:m dello schema E/R, crea

una relazione R i cui attributi sono le chiavi

primarie dell’entità in relazione (chiavi

esterne)

Lo schema relazionale del questionario

Sulla base del passo (1) del precedente algoritmo, ottengo le due relazioni

(notate l’uso del plurale)

1. studenti(matricola, sesso, eta)

2. questionari (r1, r2, r3, r4, r5, r6, r7, r8, r9)

Il passo (2) ci impone – siccome le due entità sono in relazione 1:1 – di

unirle in una unica relazione

1. questionari_studenti(matricola, sesso, eta, r1, r2, r3, r4, r5, r6, r7, r8, r9)

15/04/2013 Lezione III - Informatica 9

Lo schema relazionale dello studio

ambientale

Passo (1)

1. patologie(codice,DRG, diagnosi principale)

2. pazienti(numero, eta, sesso)

3. sedi_elettorali (numero, distanza, votanti)

15/04/2013 Lezione III - Informatica 10

Lo schema relazionale dello studio

ambientale

Passo (2) : Non c’è nessuna relazione di tipo 1:1

15/04/2013 Lezione III - Informatica 11

Lo schema relazionale dello studio

ambientale

Passo (3) : C’è una unica relazione di tipo 1:n (e.g. risiede)

1. pazienti(numero, eta, sesso, numero_sede_elettorale)

15/04/2013 Lezione III - Informatica 12

Lo schema relazionale dello studio

ambientale

Passo (4) : C’è una unica relazione di tipo n:m (e.g. soffre)

1. soffre(codice patologia, numero_paziente)

15/04/2013 Lezione III - Informatica 13

Lo schema relazionale dello studio

ambientale

Si ottiene quindi

1. patologie(codice,DRG, diagnosi principale)

2. sedi_elettorali (numero, distanza, votanti)

3. pazienti(numero, età, sesso, numero_sede_elettorale)

4. soffre(codice patologia, numero paziente)

15/04/2013 Lezione III - Informatica 14

Dallo schema E/R allo schema

relazionale

15/04/2013 Lezione III - Informatica 15

A partire dallo schema E/R, è possibile costruire la base di dati sotto forma di tabelle, utilizzando un algoritmo «grafico»

Dallo schema E/R, si creano gruppi di entità e/o relazioni come segue:

A partire da una entità o relazione dello schema E/R, si aggregano nel gruppo tutte le relazioni/entità legate con cardinalità unaria massima

Ogni entità o relazione non aggregata deve diventare un nuovo gruppo

I gruppi individuati corrispondono alle tabelle da creare

Gli attributi di ciascuna tabella variano a seconda del «contenuto» del gruppo

Algoritmo «grafico» (1)

Partiamo da una qualunque entità e incorporiamo le

relazioni/entità quando la cardinalità è di tipo (1,1)

15/04/2013 Lezione III - Informatica 16

Algoritmo «grafico» (2)

Anche l’altra entità e la relazione stessa è stata

“inglobata” ottenendo un’unica relazione

1. questionari_studenti(matricola, sesso, eta, r1, r2, r3, r4,

r5, r6, r7, r8, r9)

15/04/2013 Lezione III - Informatica 17

Algoritmo «grafico» (3)

15/04/2013 Lezione III - Informatica 18

Per completare questo passo, è inoltre

importante specificare il tipo di dato che verrà

usato per memorizzare le istanze dei vari

attributi

questionari_studenti(matricola; sesso; eta; r1;

r2; r3; r4; r5; r6; r7; r8; r9)

matricola: int

sesso: char(1)

eta: int

r1 ... r9: int

Algoritmo «grafico»: analisi geografica

Partiamo dall’entità «paziente» e procediamo con le

relazioni...

15/04/2013 Lezione III - Informatica 19

Algoritmo «grafico» analisi geografica

La relazione «risiede» è stata aggregata all’entità

«paziente» in un gruppo 15/04/2013 Lezione III - Informatica 20

Primo blocco

Entità patologia

Relazione patologie(codice, drg, diagnosi_principale)

15/04/2013 Lezione III - Informatica 21

Secondo blocco

Entità sede_elettorale

Relazione: sedi_elettorali (numero, distanza, votanti)

15/04/2013 Lezione III - Informatica 22

Quarto blocco

Relazione soffre

soffre(numero_paziente,codice_patologia)

15/04/2013 Lezione III - Informatica 23

Conversioni delle entità singole

Per le entità singole patologia e sede elettorale, si creano due relazioni

1. patologie(codice, drg, diagnosi principale)

2. sedi_elettorali (numero, distanza, votanti)

15/04/2013 Lezione III - Informatica 24

Conversioni dei gruppi

Per l’entità paziente e la relazione risiede, si crea una

relazione

1. pazienti(numero, sesso, eta, numero_sede_elettorale)

dove numero_sede_elettorale è una chiave esterna 15/04/2013 Lezione III - Informatica 25

Conversioni delle relazioni singole

Per la relazione singola soffre, si crea una relazione

1. soffre(codice patologia, numero paziente) dove la coppia_codice

patologia e numero_paziente è la chiave primaria

15/04/2013 Lezione III - Informatica 26

Lo schema relazionale

15/04/2013 Lezione III - Informatica 27

Abbiamo identificato quindi quattro tabelle:

1. patologie(codice; drg; diagnosi principale) codice: int

drg: char(3)

diagnosi_principale: char(50)

2. sedi_elettorali (numero; distanza; votanti) numero: int

distanza: float

votanti: int

3. pazienti(numero; sesso; eta; numero_sede_elettorale) numero: int

sesso: char(1)

eta: int

numero_sede_elettorale: int (stesso tipo di sedi_elettorali.numero)

4. soffre(codice patologia; numero paziente) codice patologia: int (stesso tipo di patologie.codice)

numero paziente: int (stesso tipo di pazienti.numero)

Lo schema relazionale

Abbiamo identificato quindi quattro relazioni:

1. patologie(codice, drg, diagnosi principale)

2. sedi_elettorali (numero, distanza, votanti)

3. soffre(codice patologia, numero paziente)

4. pazienti(numero, sesso, eta, numero sede elettorale)

Sono ovviamente le stesse che abbiamo trovato

utilizzando l’algoritmo non grafico.

15/04/2013 Lezione III - Informatica 28

Esercizio

15/04/2013 Lezione III - Informatica 29

Si progetti lo schema Entità-Relazione e lo schema relazionale di una base di dati in cui si vogliono memorizzare le seguenti informazioni relative ad un archivio di informazioni su campionati:

un insieme di squadre, ove per ciascun anno siano individuati i giocatori in organico e l'allenatore;

un insieme di partite, con la data, l'arbitro, le squadra ospitante e quella ospitata.

le partite in cui hanno giocato i singoli giocatori, i goal realizzati, le ammonizioni e le espulsioni accumulate, le giornate di squalifica

dei giocatori si vogliono registrare gli infortuni subiti durante le partite, il tipo di infortunio e il tempo di fermo a seguito dell’infortunio stesso