Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2007/8 database: modello entityrelationship Prof.Valle –D.ssaFolgieri Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 1 Fasi di sviluppo di un database • Quando si sviluppa un database si passa per tre fasi successive: • Analizzare le esigenze degli utenti ed individuare i dati necessari per soddisfare tali esigenze • Disegnare un modello dal database • Tradurre il modello in strutture fisiche per utilizzare al meglio i dati • Si suole utilizzare l’architettura standard ANSI/SPARC a tre livelli per i DBMS (Database Management System) Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 2 1 Architettura standard (ANSI/SPARC) a tre livelli per DBMS • Tre livelli di descrizione del database: • Schema esterno:descrizione del database dal punto di vista degli utenti • Schema logico:descrive la base di dati nel DBMS • Schema fisico (interno):rappresentazione dello schema logico con strutture fisiche di memorizzazione Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 3 Architettura standard (ANSI/SPARC) a tre livelli per DBMS Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 4 2 Modello concettuale per DBMS relazionali • • • • • • • • • Si usa il modello Entity-relationship (entità-relazione). E’ un modello concettuale Mette a disposizione costrutti per descrivere la realtà Semplice e indipendente dalla gestione dei dati all’interno diun DBMS Si deve a P. Chen (1977) Dall’analisi del caso si passa al diagramma E/R Successivamente: Traduzione del diagramma E/R in tabelle non ottimizzate Normalizzazione delle tabelle (grazie a teoria relazionale di Codd) Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 5 Peter Chen • Nel 1976 propone la tecnica EntityRelationship • Insieme alla tecnica, ne propose una notazione grafica (che useremo nelle prossime slide), detta diagramma E/R (ERD) • Oggi il diagramma E/R è il più utilizzato per immediatezza e semplicità Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 6 3 Fasi del disegno di una base di dati • Si procede per fasi successive, come mostrato in figura: Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 7 Elementi principali del modello E/R • Il modello si basa su tre elementi principali: • entità:classi di oggetti con proprietà comuni che li identificano come soggetti a sè • relazione:legame (logico) tra due o più entità • attributi:proprietà elementari di un’entità o di una relazione • Es. se dobbiamo creare un database di libri, avremo l’entità libro, con attributi come anno di pubblicazione, editore, autore, ma avremo anche l’entità autore, con anno di nascita e biografia. Queste due entità sono legate dalla relazione “autore ha scritto libri”(ogni autore ha scritto più libri) Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 8 4 Altri elementi del modello E/R • Molto importanti sono i vincoli di integrità che riguardano i dati: • se vi è qualche variazione negli attributi, nelle entità o nelle relazioni, queste variazioni devono rispecchiarsi in tutte le entità coinvolte nella relazione. • Es. se un autore cambia nome (es. assume uno pseudonimo), non devo andare a cambiarne il nome per ogni libro, ma lo cambierò una sola vota, nell’entità che lo descrive e la variazione sarà riportata automaticamente in tutti i libri che ha scritto • Abbiamo poi altri concetti importanti: • Cardinalità delle Relazioni (che vedremo nel seguito) • identificatori delle entità(chiavi) Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 9 Un esempio concreto • Per comprendere il modello E/R partiamo da un esempio concreto: • dobbiamo creare un database per un agente di vendita che si serve di diversi concessionario di automobili che vendono a lorovolta macchine di marche diverse • Avremo le entità, sottolineate (ed i corrispondenti attributi, riportati sotto ognuna): Automobile Produttore Concessionario Nome modello denominazione Indirizzo produttore indirizzo Città colore città Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 10 5 Quante entità? • Perché abbiamo individuato le entità viste prima? • In modo che ciascuna rappresenti una categoria a sé:non possiamo “mischiare”macchine e concessionari perché hanno attributi diversi! • In tal modo ci garantiamo che: – i dati siano integri – la memoria sia occupata il meno possibile Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 11 Il concetto di chiave primaria • Tra i vari attributi ce ne deve essere uno che identifica l’entitàin modo univoco. Tra gli attributi che abbiamo segnato, non ve ne sono. • Aggiungiamo in grassetto le chiavi primarie: Concessionario Automobile Produttore P.IVA targa P.IVA Nome modello denominazione Indirizzo produttore indirizzo Città colore città • Se non vi fosse un attributo che identifica un’entitàin modo univoco, si può aggiungere un “codice”identificativo inventato (es. per i prodotti di un magazzino si ha il codice di inventario) Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 12 6 Le relazioni tra le entità Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 13 Il concetto di relazione • Le relazioni servono dunque ad evidenziare i rapporti esistenti tra le entità. • In tal modo i dati (attributi) che descrivono le entitàpotranno essere utilizzate (inserite, aggiornate, interrogate) in modo corretto. • Se le relazioni sono impostate correttamente, il database èben disegnato. • Abbiamo visto che a livello intuitivo èpiuttosto semplice enunciare una relazione. Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 14 7 Le relazioni tra le entità Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 15 Il concetto di cardinalità • La cardinalità quantifica i rapporti (relazioni) tra le entità. • Abbiamo tre casi di cardinalità: • 1 a 1: a un’occorrenza di un’entità corrisponde una sola occorrenza di un’altra entità • Un poliziotto specifico (Mario) ha un solo grado (tenente) • 1 a molti: a una occorrenza di un’entità corrispondono più occorrenze di un’altra entità, ma non viceversa • Es. un concessionario vende più macchine, ma non si può dire che una macchina specifica (fiat uno, rossa, targa 1234) sia venduta da più concessionari! • Molti a molti: ad un’occorrenza di un’entità corrispondono più occorrenze di un’altra entità e viceversa • Es. un concessionario ha a che fare con molti produttori e viceversa un produttore tratta con più concessionari Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 16 8 Lo schema E/R Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 17 Lo schema E/R (ERD –Chen) Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 18 9 Riassumendo • • • • • • • In un modello entity-relationship si considerano: Entità Attributi Relazioni Le relazioni sono espresse: qualitativamente, attraverso il loro significato (rapporto tra le entità) quantitativamente: quante istanze di ciascuna entità sono coinvolte nella relazione • Per identificare in modo univoco un’entità, occorre individuarne la chiave primaria (attributo univoco) • Per collegare tra loro le entità occorre riportare, ove opportuno, un attributo come chiave esterna • NOTA: un’entità può essere coinvolta in più relazioni! Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 19 Traduzione del modello E/R in struttura fisica del database • Le entità diventano le tabelle • Gli attributi diventano i campi (colonne) delle tabelle • Le relazioni sono indicate tramite le chiavi (primarie ed esterne) • Vedremo un esempio con Microsoft Access, prima, però, faremo qualche cenno (nella prossima lezione) al linguaggio SQL, che serve per inserire, aggiornare ed accedere ai dati (interrogare) presenti in un database. • Non ci soffermeremo, invece sulla normalizzazione (processo cui abbiamo accennato all’inizio, che consiste nel creare una base di dati senza dati inutili, ripetuti o ridondanti, perché è un concetto più complesso che implica formulazioni matematiche rigorose. Lez7 25.10.07 Trattamento dati. Database: modello entity-relationship 20 10