Il modello logico dei dati

Page 1

Il modello relazionale Con il modello ER abbiamo creato un modello della realtà dei dati che vogliamo gestire con il nostro database e messo in evidenza le correlazioni che esistono fra i dati stessi: abbiamo creato un modello concettuale. Ora dobbiamo fare un passo in più verso la realizzazione del nostro database: dobbiamo individuare la struttura logica dei dati dando luogo al modello logico. Per spiegarci meglio possiamo dire che nel primo passo abbiamo individuato quali informazioni ci interessano e come sono legate fra loro, ora decidiamo come queste informazioni verranno viste dall’utente del database, quale organizzazione avranno i dati, di che tipo saranno, quale sarà il loro formato, ecc. Il formato dei dati consiste sostanzialmente nelle regole con cui i dati sono memorizzati come stringhe di bit in un file. La creazione di tale modello deve facilitare: - la manipolazione o il trattamento dei dati (inserimento, modifica e cancellazione) - l’interrogazione, cioè la possibilità di ritrovare i dati. Per creare il modello logico dei dati utilizzeremo uno strumento detto modello relazionale. E’ uno strumento basato su concetti di matematica che andremo ora ad analizzare. Consideriamo un gruppo di nomi di persona, esso costituisce in matematica un insieme

Pasquale Nicola Carmelina

Gioacchino

Adalgisa ….

Insieme dei nomi di persona

Procopio ……… Poi abbiamo un insieme di cognomi

Cecoro Sarnataro Di Martino Schiavone

Gallo ….

…. Procopio ………

Insieme cognomi

dei


Abbiamo poi un insieme di codici

001 002

Insieme dei codici

003 004

005 ….

…. Procopio ………

Poi abbiamo un insieme di città

Aversa Casal di Principe Teverola Giugliano

San Cipriano ….

….

Insieme città

delle

Procopio ……… Abbiamo un insieme di numeri di telefono

338414141 323584778 331478789 3238988989

335478789

Insieme dei numeri di telefono

…. Procopio ………

Costruiamo ora un oggetto prendendo un elemento da ogni insieme


001 002

Insieme dei codici

003 004

005 ….

…. Procopio ………

{002,….} Prendiamo ad esempio uno dei codici, poi un nome, un cognome e così via

Pasquale Nicola Carmelina

Gioacchino

Adalgisa ….

Insieme dei nomi di persona

Procopio ………

{002,Carmelina,….}


Cecoro Sarnataro Di Martino Schiavone

Gallo ….

Insieme cognomi

dei

…. Procopio ………

{002,Carmelina,Schiavone,….}

Aversa Casal di Principe Teverola Giugliano ….

San Cipriano ….

Insieme città

delle

Procopio ………

{002,Carmelina,Schiavone,Teverola,….}


338414141 323584778 331478789 3238988989

335478789

Insieme dei numeri di telefono

…. Procopio ………

{002,Carmelina,Schiavone,Teverola,335478789}

Abbiamo un oggetto composto da 5 elementi perché avevamo cinque insiemi in cui scegliere. In generale avremo n elementi perché dovremo sceglierne i singoli elementi da n insiemi e allora questi oggetti così costruiti si chiamano ennuple o anche tuple. Grazie alla vostra meravigliosa intelligenza vi renderete conto che possiamo costruire un grandissimo numero di queste ennuple combinando a caso elementi di ogni insieme. Soltanto una parte di queste però avrà senso: ad esempio non è detto che esista una Carmelina Schiavone che abita a Teverola, oppure il codice non può essere lo stesso per più persone oppure persone diverse debbono avere numero di telefono diverso e così via. Le ennuple che riterremo valide in base a qualche criterio costituiranno un sottoinsieme di tutte le ennuple. Questo sottoinsieme lo chiameremo relazione sugli n insiemi da cui abbiamo preso gli elementi. Il numero n degli insiemi prende il nome di grado della relazione. Nell’esempio precedente abbiamo creato delle quintuple e costruendo l’insieme delle quinte valide che hanno cioè senso per noi otteniamo una relazione di grado 5 sugli insiemi Nome di persona, Cognome, codice, città, numero di telefono. Un elemento preso da un singolo insieme prende il nome di attributo: sempre nel nostro esempio la relazione avrà un attributo nome, un attributo cognome, un attributo numero di telefono, ecc. Un attributo non può assumere qualsiasi valore: ad esempio, a meno ché non abbiamo a che fare con i marziani non ci potrà essere una persona che si chiama xzxzttl ma una che si chiama Teodolinda si! L’insieme di tutti i valori possibili per un attributo prende il nome di dominio dell’attributo. Il numero complessivo di ennuple valide nella nostra relazione prende invece il nome di cardinalità della relazione. Possiamo rappresentare una relazione mettendo le varie ennuple in una tabella


Codice

Nome

Cognome

Città

001 002 …

Carmelina Di Martino …

Schiavone procopio …

Aversa San Cipriano …

Numero telefono 338525252 335525252 …

di

Il numero di colonne sarà pari al numero di insiemi su cui abbiamo costruito la relazione e coincide dunque con il grado della relazione. Il numero di righe della tabella darà invece la cardinalità della relazione. Gli elementi presenti in una singola colonna sono sempre dello stesso tipo (si dice che sono omogenei) e provengono dallo stesso dominio. Un attributo o un gruppo di attributi distingue una riga o ennupla dall’altra 8nel nostro esempio l’attributo codice) e prende il nome di chiave della relazione. In maniera sintetica una relazione viene indicata nel seguente modo Nomedellarelazione(chiave, attributo1, attributo2, …attributon) Nel nostro esempio, supponendo che chiamiamo la relazione Allievo scriveremo Allievo(codice, nome, cognome,città,numero_di_telefono) Per indicare un attributo di una relazione si usa anche la dot notation: nome tabella.nomeattributo nel nostro esempio per rappresentare l’attributo città scriveremo Allievo.città. Si noti come la chiave viene sottolineata. E’ evidente il legame con il modello ER: l’entità diventa la tabella, l’attributo dell’entità diventa l’attributo della relazione. Usando il linguaggio di access abbiamo che una riga di una tabella è un record, mentre le varie colonne costituiscono i campi del record. Il modello relazionale deve sottostare alle seguenti regole A- Tutte le righe della tabella debbono avere lo stesso numero di colonne, cioè le tuple di una relazione debbono avere lo stesso numero di attributi (un attributo può essere vuoto ma ci deve stare, ad esempio per l’allievo Carmelina Schiavone non conosco la città e la lascio vuota ma la colonna ci deve stare). B- Gli attributi debbono essere informazioni elementari cioè non ulteriormente scomponibili, in sostanza in una colonna ci deve essere un solo valore, ad esempio non è consentito avere un campo nome e cognome in cui metto sia il nome che il cognome come non è consentito un campo indirizzo ma debbo avere una colonna per il nome della via, una colonna per il numero civico, una colonna per la città, ecc.) C- Un attributo o gruppo di attributi deve distinguere una tupla dall’altra, cioè la tabella non può avere righe identiche, cioè dobbiamo avere necessariamente una chiave primaria D- i valori inseriti nelle varie celle della stessa colonna debbono essere dello stesso tipo


PASSAGGIO DAL MODELLO ER AL MODELLO RELAZIONALE Preparato il modello ER, per passare al modello relazionale basta applicare delle semplici regole di derivazione A- un’entità diventa una tabella B- ogni attributo di un’entità diventa il nome di una colonna C- se vi è una relazione uno a molti la tabella derivante dall’entità che corrisponde a molti va inserito un attributo detto chiave esterna (foreign key) che corrisponde all’attributo chiave primaria del’altra entità

Nell’esempio di figura l’entità Visita diventa la relazione o tabella Visita(IDVisita,Flag,Titolo,Tariffa,DataInizio,Datafine) Mentre l’entità Biglietto diventa Biglietto(ID,DataValidità, CodiceVisita) dove CodiceVisita è la chiave secondaria corrispondente a IDVisita. In ogni riga della tabella nella colonna CodiceVisita ci sarà il valore del codice IDVisita dell’istanza Visita corrispondente a quel biglietto. Talvolta un attributo è assegnato non ad una entità ma alla relazione fra due entità come nel caso seguente

Docente

Materia Codice

IDDocente

{PK}

Cognome

Descrizione

Nome

Note

NumeroOre

{PK}


In questo caso l’attributo della relazioen viene assegnato alla tabella relativa all’entità che corrisponde alla cardinalità molti. Nell’esempio Materia(Codice, Descrizione, Note) Docente(IDDocente,Cognome, Nome, CodiceMateria, NumeroOre) Nel caso di relazione molti a molti abbiamo già detto, nel caso del modello Er che andava risolta in due relazioni uno a molti mediante l’introduzione di una nuova entità intermedia, per cui ci riconduciamo al caso precedente. Le tabelle L’ultimo passo per l’implementazione del modello in un database è l’individuazione del tipo dei dati e delle dimensioni dei vari campi delle tabelle. Per la definizione del tipo di dati possiamo far riferimento a quelli previsti da Access. Testo: può contenere caratteri o combinazioni di numeri e caratteri, il massimo numero di caratteri consentiti è 255 Memo: è come il tipo testo ma consente di inserire da un minimo di 256 ad un massimo di 65536 caratteri Numerico: contiene dati numerici ad esso si possono applicare le seguenti dimensioni 1 byte

Da 0 a 255

Intero

2 byte

Da -32.768 a 32.767

Intero lungo

4 byte

Da -2.147.483.648 a 2.147.483.6477

Precisione singola

4 byte

Da -3,402823X1038 a -1,401298X10-45 per valori negativi;

Byte

da 1,401298X10-45 a 3,402823X1038 per valori positivi (per chi ha problemi con la matematica 1038 significa 1 seguito da 38

zeri cioè 100 miliardi di miliardi di miliardi di miliardi di miliardi mentre 10-45 1 diviso un numero costituito da 1 seguito da 45 zeri)


Precisione doppia

8 byte

Da -1,79769313486232X10308 a -4,94065645841247X10-324 per valori negativi; da 4,94065645841247 X10-324 a 1,79769313486232 X10308 per valori positivi.

Decimal

14 byte

+/-79.228.162.514.264.337.593.543.950.335 senza virgola; +/-7,9228162514264337593543950335 con 28 decimali; il numero minore diverso da zero è +/-0,0000000000000000000000000001

Valuta serve per memorizzare dati numerici relativi quantitĂ di denaro, occupa 8 byte Da -922.337.203.685.477,5808 a 922.337.203.685.477,5807 Data/ora occupa 8 byte contiene date dall'1 gennaio 100 al 31 dicembre 9999 Si/No serve a contenere un valore vero/flaso ed occupa un solo bit Campo OLE: serve a contenere un file di qualsiasi natura grande fino ad 1 gigabyte Facciamo un esempi completo con il modello ER visto nella lezione precedente


Avremo Modello relazionale Studente(Matricola, Nome, Cognome, Telefono_fisso, Cellulare, E-mail, Via, Numero_civico, città, Provincia, CAP, IDClasse) Classe(IDClasse, Anno, sezione, CodIndirizzo) Indirizzo(Codice, denominazione) Ritardo(Chiave, Data, Motivazione, Accompagnato, MatricolaStudente, CodTipologia) Tipologia_Ritardo(CodiceTipologia, Gravità) Genitore(CodiceGenitore, Nome, Cognome, Telefono_fisso, cellulare, E-mail, Via, Numero_civico, Città. Provincia, CAP) Patria_podestà(IDpadriapodestà, Matricola, CodiceGenitore) Tabelle Tabella

Campo

Chiave

Formato,

Dimensione

Studente

Matricola Nome Cognome Telefono_fisso Cellulare E-mail

Primary key

Numerico testo testo testo testo collegamento ipertestuale Numerico Testo Testo Testo Numerico Numerico Numerico Carattere carattere Carattere carattere Numerico Data/ora Testo Si/No Numerico Numerico Numerico Testo

Intero 20 20 12 10

Via Città Provincia CAP IDClasse IDClasse Classe Anno Sezione CodIndirizzo Codice Indirizzo Denominazione Chiave Ritardo Data Motivazione Accompagnato MatricolaStudente CodTipologia Tipologia_ritardo CodiceTipologia Gravità

Foreign key Primary key

Foreign key Primary key Primary key

Foreign key Foreign key Primary key

Byte 10 4 5 byte Byte Byte 1 3 3 20 Intero 20 Intero byte Byte 10

Cifre decimali


Genitore

CodiceGenitore Nome Cognome Telefono_fisso Cellulare E-mail Via CittĂ Provincia CAP

Primary key

Numerico testo testo testo testo collegamento ipertestuale Numerico Testo Testo Testo Numerico

Intero 20 20 12 10

Byte 10 4 5 byte


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.