Progettazione logica Analisi delle prestazioni su schemi E-R

Slides:



Advertisements
Presentazioni simili
La progettazione concettuale
Advertisements

Informatica II – Basi di Dati (08/09) – Parte 1
IL MODELLO ENTITÀ-RELAZIONE Gli altri costruttori
IL MODELLO ENTITA’ - RELAZIONE I costruttori di base
LA PROGETTAZIONE LOGICA Seconda parte
DOCUMENTAZIONE DI SCHEMI E/R
Progettazione Concettuale: Il modello Entità-Relazioni
4 – Progettazione – Introduzione e Modello E-R
6 – Progettazione Logica
Basi di Dati prof. A. Longheu 4 – Progettazione – Introduzione e Modello E-R Cap. 5 Basi di dati Atzeni – Ceri – Paraboschi - Torlone.
Relazioni Relazione: Associazione o legame logico esistente tra due o più entità Socio Prenota Campo.
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
L’uso dei database in azienda
PROGETTO LOGICO. Progetto logico Lo schema E/R descrive un dominio applicativo ad un dato livello di astrazione Lo schema E/R è molto utile per: –fornire.
Corso di Informatica (Basi di Dati)
Basi di dati. Vantaggi degli archivi digitali Risparmio di spazio: sono facilmente trasferibili e duplicabili Risparmio di tempo: si può accedere ai dati.
LA PROGETTAZIONE LOGICA
LA PROGETTAZIONE DELLE BASI DI DATI
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Metodologie e Modelli di Progetto
Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso.
Modello E-R Generalizzazioni
Progettazione di una base di dati
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
Strategia bottom-up Nella strategia bottom-up le specifiche iniziali sono suddivise in componenti via via sempre più piccole, fino a descrivere frammenti.
Partizionamento/accorpamento di concetti
Modello E-R Generalizzazioni
Basi di dati Claudia Raibulet
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
LA PROGETTAZIONE DELLE BASI DI DATI
Il modello ER Proposto da Peter Chen nel 1976 rappresenta uno standard per la progettazione concettuale (in particolare per le basi di dati) Ha una rappresentazione.
Corso di Laurea in Informatica
Informatica II – Basi di Dati (08/09) – Parte 2 Gianluca Torta Dipartimento di Informatica dellUniversità di Torino
Corso di Basi di Dati Progettazione Logica
Sistemi di Elaborazione delle Informazioni Mod.I.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Basi di dati Progetto Logico per il Modello Relazionale (E
DB- Sistemi Informativi
S. Costantini 06/05/2006 (parte del materiale è tratto da slide del 2001 di Ceri-Atzeni) Normalizzazione di Schemi.
Progettazione di una base di dati Progettazione logica (modello relazionale)
I DBMS BASI DI DATI (DATABASE) Insieme organizzato di dati utilizzati
Progettazione Concettuale:
Informatica Introduzione alle basi di dati Lezione 2 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Progettazione concettuale di basi di dati: introduzione e modello ER
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Progettazione di Database
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Basi di dati e Relazioni Uno schema di relazione R(X) è costituito da un simbolo (nome della relazione) R e da una serie di attributi X={A 1, A 2, …, A.
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Progettazione di basi di dati: metodologie e modelli
S. Costantini 06/05/2006 (parte del materiale è tratto da slide del 2001 di Ceri-Atzeni) Normalizzazione di Schemi.
PROGETTAZIONE DI BASE DI DATI Metodologie e modelli.
Descrizione del modello EA con uno schema (parziale) EA Compito 1 di laboratorio: Progetto e realizzazione di una base dati per gestire la documentazione.
Metodologie e modelli per il progetto. 2 Introduzione alla progettazione Il problema: progettare una base di base di dati a partire dai suoi requisiti.
1 Esami Esame scritto: Tra 21 e 25 domande: 20 domande chiuse (20 punti),  5 domande aperte (10 punti) 1½ ore Esame orale/applicativo: Esercizi usando.
Cloud informatica V anno.
NORMALIZZAZIONE ESERCIZI. INTRODUZIONE La modellazione E-R ci ha consentito di descrivere schemi relazionali Lo strumento base per la modellizzazione.
ICT e Sistemi informativi Aziendali Materiale di supporto alla didattica.
Normalizzazione. Introduzione Nell’organizzazione tradizionale degli archivi, si verificano alcuni problemi, quali: Ridondanza dei dati (gli stessi dati.
Progettazione di Database l Progettazione Concettuale: strutturazione della “realtà” che si vuole rappresentare secondo uno schema concettuale l Dallo.
Basi di dati - 09Marco Maggini1 Forme normali forme normali  Le forme normali verificano la qualità di uno schema di una base di dati relazionale  Presenza.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Partizionamento/accorpamento di concetti
Transcript della presentazione:

Progettazione logica Analisi delle prestazioni su schemi E-R Ristrutturazione di schemi E-R Traduzione verso il modello relazionale Progettazione Logica

requisiti del Sistema informativo progettazione concettuale SCHEMA CONCETTUALE progettazione logica SCHEMA LOGICO progettazione fisica SCHEMA FISICO

Obiettivo della progettazione logica “Tradurre" lo schema concettuale (schema E-R) in uno schema logico (modello relazionale) che rappresenti gli stessi dati in maniera corretta ed efficiente Progettazione Logica

Dati di ingresso e uscita schema concettuale informazioni sul carico applicativo modello logico Uscita: schema logico documentazione associata Progettazione Logica

Non si tratta di una pura e semplice traduzione Lo schema E-R va ristrutturato: Semplificazione della traduzione: alcuni aspetti dello schema concettuale non sono direttamente rappresentabili nel modello logico Ottimizzazione del progetto: è necessario considerare le prestazioni Progettazione Logica

Ristrutturazione dello Schema E-R Carico applicativo Ristrutturazione dello schema E-R Fase 1 Schema E-R ristrutturato Modello logico Traduzione nel modello logico Fase 2 Schema logico

Fase 1: Ristrutturazione schema E-R E' indipendente dal modello logico scelto e si basa sui due principi di: semplificazione ottimizzazione Osservazione: uno schema E-R ristrutturato non è (più) uno schema concettuale nel senso stretto del termine Progettazione Logica

Analisi delle prestazioni su schemi E-R Per ottimizzare il risultato abbiamo bisogno di analizzare le prestazioni a questo livello Le prestazioni non sono valutabili con precisione su uno schema concettuale, dato che dipendono anche da parametri fisici: - dal sistema per la gestione di basi di dati utilizzato - dalle strutture dati utilizzate per memorizzare le tabelle - dai vari modi in cui si possono realizzare le operazioni in SQL Progettazione Logica

Consideriamo degli "indici di prestazione" dei parametri che regolano le prestazioni di uno schema E-R: occupazione di memoria (spazio): spazio di memoria necessario per memorizzare i dati descritti dallo schema dipende dal numero di occorrenze di entità e relazioni previste costo di una operazione (tempo): numero di occorrenze (di entità e relationship) visitate per rispondere a un’operazione sulla base di dati Progettazione Logica

Informazioni necessarie per l’analisi delle prestazioni Per studiare questi parametri abbiamo bisogno di conoscere, oltre allo schema, le seguenti informazioni volume dei dati: numero di occorrenze di ogni entità dello schema numero di occorrenze di ogni relationship dello schema dimensioni di ciascun attributo (di entità o relationship) caratteristiche delle operazioni: tipo di operazione (interattiva o batch) frequenza dell’esecuzione dati coinvolti (entità e/o relationship) Progettazione Logica

Schema di riferimento Cognome Telefono Impiegato Dipartimento Nome Città Indirizzo Telefono Dipartimento Composizione Sede Direzione Afferenza Impiegato Progetto Partecipazione Nome Cognome Budget Data Via CAP (1,1) (0,1) (1,N) (0,N) Codice

Tavola dei volumi vi sono riportati i concetti dello schema col volume previsto a regime

Occorrenze di una relationship Il numero delle occorrenze di una relationship dipende da: Numero di occorrenze delle entità coinvolte nella relationship Numero medio di partecipazioni di una occorrenza di entità all’occorrenza della relationship Esempio: Volume Composizione = Volume Dipartimento Volume Afferenza  Volume Impiegato Volume Direzione = Volume Dipartimento Volume Partecipazione = 3  Volume Impiegato Progettazione Logica

Esempio di valutazione di costo delle operazioni Operazione: assegna un impiegato a un progetto trova tutti i dati di un impiegato, del dipartimento nel quale lavora e dei progetti ai quali partecipa trova i dati di tutti gli impiegati di un certo dipartimento per ogni sede trova i suoi dipartimenti con il cognome del direttore e l’elenco degli impiegati del dipartimento Progettazione Logica

Descrizione delle operazioni L’analisi delle operazioni principali richiede la codifica di: tipo dell’operazione : Interattiva (I) o Batch (B) frequenza: numero medio di esecuzioni in un certo periodo di tempo schema di navigazione: frammento dello schema E/R interessato dall’operazione sul quale viene disegnato (con delle frecce) il “cammino logico” da percorrere per accedere alle informazioni di interesse Progettazione Logica

Tavola delle operazioni Progettazione Logica

Regola 80-20 Regola 80-20: l’80% del carico è generato dal 20% delle operazioni Dunque il carico si può valutare accuratamente basandoci sulle principali operazioni previste Per ogni operazione significativa si costruisce uno schema di navigazione (frammento di di schema E-R interessato all’operazione) Progettazione Logica

Operazione 2: trova tutti i dati di un impiegato, del dipartimento nel quale lavora e dei progetti ai quali partecipa Cognome (0,N) Codice Impiegato Telefono Nome Data (1,N) (0,1) (1,1) Dipartimento Afferenza Nome Budget (1,N) Progetto Partecipazione schema di navigazione

Tavola degli accessi Per ogni operazione significativa si costruisce una tavola degli accessi basata sullo schema di navigazione il campo costrutto specifica il tipo di concetto (entità o associazione) nel campo accessi si conta il numero degli accessi necessario per eseguire una volta l’operazione il campo tipo è riferito al tipo di operazione: le operazioni di scrittura (S) sono più onerose di quelle di lettura (L) il peso degli accessi in scrittura è in genere considerato doppio di quello delle letture Progettazione Logica

Tavola degli accessi Un accesso può essere di tipo L (lettura) o S (scrittura) Il numero delle istanze si ricava dalla tavola dei volumi mediante semplici operazioni es: in media ogni impiegato partecipa a 6000/2000 = 3 progetti Progettazione Logica

Attività della ristrutturazione Analisi delle ridondanze Eliminazione delle generalizzazioni Partizionamento/accorpamento di entità e relationship Scelta degli identificatori primari Progettazione Logica

1. Analisi delle ridondanze Una ridondanza in uno schema E-R è una informazione significativa ma derivabile da altri dati in questa fase si decide se eliminare le ridondanze eventualmente presenti o mantenerle Progettazione Logica

Ridondanze Vantaggi Svantaggi semplificazione delle interrogazioni riduzione del numero degli accessi necessari per calcolare il dato derivato Svantaggi appesantimento degli aggiornamenti maggiore occupazione di spazio Progettazione Logica

Forme di ridondanza in uno schema E-R attributi derivabili: da altri attributi della stessa entità (o relazione) da attributi di altre entità (o relazioni) relazioni derivabili dalla composizione di altre relazioni in presenza di cicli Progettazione Logica

Attributo derivabile Importo netto Fattura IVA Importo lordo Progettazione Logica

Attributo derivabile da altra entità Importo totale Composizione Acquisto Prodotto Prezzo (1,N) Importo totale è ottenibile con operazioni di aggregazione Progettazione Logica

Ridondanza dovuta a ciclo Corso Studente Frequenza (0,N) (1,N) Professore Insegnamento (1,1) Docenza Ridondanza dovuta a ciclo

Mantenere o meno la ridondanza? La decisione di mantenere o eliminare una ridondanza va presa confrontando il costo di una esecuzione delle operazioni che coinvolgono il dato ridondante e l’occupazione di memoria, nei casi di presenza e assenza della ridondanza Progettazione Logica

Analisi di una ridondanza Residenza Persona Città Numero abitanti (1,1) (1,N) L’attributo numero abitanti è derivabile da una operazione di conteggio delle istanze di persona residenti in una città Progettazione Logica

tavola dei volumi Operazione 1: memorizza una nuova persona con la relativa città di residenza (500 volte al giorno) Operazione 2: stampa tutti i dati di una città (incluso il numero di abitanti) (2 volte al giorno) Progettazione Logica

Presenza di ridondanza Operazione 1 Operazione 2 Progettazione Logica

Assenza di ridondanza Operazione 1 Operazione 2 n.persone/n.città = media accessi per calcolare il numero di abitanti di una città Progettazione Logica

Presenza di ridondanza Costi: Operazione 1: 1500 accessi in scrittura e 500 accessi in lettura al giorno Operazione 2: trascurabile. Contiamo doppi gli accessi in scrittura Totale di 3500 accessi al giorno Progettazione Logica

Assenza di ridondanza Costi: Contiamo doppi gli accessi in scrittura Operazione 1: 1000 accessi in scrittura Operazione 2: 10000 accessi in lettura al giorno Contiamo doppi gli accessi in scrittura Totale di 12000 accessi al giorno Conviene dunque mantenere il dato ridondante Progettazione Logica

Ristrutturazione dello schema E-R Analisi delle ridondanze Eliminazione delle generalizzazioni Partizionamento/accorpamento di entità e relazioni Scelta degli identificatori primari Progettazione Logica

2. Eliminazione delle gerarchie il modello relazionale non può rappresentare direttamente le generalizzazioni entità e relazioni sono invece direttamente rappresentabili si eliminano perciò le gerarchie, sostituendole con entità e relazioni Progettazione Logica

Tre possibilità accorpamento delle figlie della generalizzazione nel genitore accorpamento del genitore della generalizzazione nelle figlie sostituzione della generalizzazione con relazioni Progettazione Logica

E0 R1 A01 A02 E3 R2 E4 E2 E1 A11 A21 Schema generale

Accorpamento delle figlie della generalizzazione nel genitore E1 e E2 sono eliminate e le loro proprietà vengono aggiunte al padre E0 A E0 viene aggiunto anche un nuovo attributo, TIPO, che serve a distinguere le occorrenze di E1 da quelle di E2 Gli attributi A11 e A21 possono assumere anche valori nulli su E0 Progettazione Logica

Collasso verso l’alto A01 A02 A11 E0 E3 A21 TIPO E4 (0,1) R1 (0,1) (0,..)

Esempio Dom(Tipo)= {L,D,N} Denom. Studente Matr. Nome Tit.Stage (0,1) Tit.Tesi (0,1) Matr Relatore Azienda (0,1) Tipo (1,n) Studente Laureando Diplomando Matr. Nome Tit.Stage Tit.Tesi Matr Relatore Denom. Azienda (1,1) (p,e) (1,n)

Osservazioni Conveniente quando le operazioni sulla base di dati non fanno molta distinzione tra le occorrenze e tra gli attributi di E0, E1, E2 Vantaggi: numero minore di accessi Svantaggi: spreco di memoria per la presenza di valori nulli Progettazione Logica

E0 R1 A01 A02 E3 R2 E4 E2 E1 A11 A21 totale

Accorpamento del genitore della generalizzazione nelle figlie E0 viene eliminato, i suoi attributi e identificatore vengono assegnati alle figlie R11 e R12 sono le restrizioni di R1 alle occorrenze di E1 e E2 Nota Bene tale trasformazione è possibile solo se la generalizzazione è totale, altrimenti le occorrenze di E0 - (E1 U E2) non sarebbero rappresentate Conviene quando ci sono operazioni che si riferiscono solo a occorrenze di E1, o di E2 e fanno distinzioni tra tali entità

Collasso verso il basso

Esempio Dipendente Impiegato Operaio CF Nome macchine capacità Dirigente n_sottoposti Sindacato Contribuisce 0,1 1,n Dirige Impiegato Operaio macchine capacità Dirigente n_sottoposti Sindacato Contr_I 0,1 0,n 1,n CF Nome Contr_D Contr_O Dir_D Dir_O Dir_I

Quando conviene utilizzare questa alternativa? Quando ci sono operazioni che si riferiscono solo a occorrenze di E1 oppure di E2, e fanno distinzioni tra le 2 entità Gli attributi non assumono mai valori nulli Progettazione Logica

Sostituzione della generalizzazione con relationship La generalizzazione si trasforma in due associazioni uno a uno che legano l’entità padre E0 con E1 e E2 Si pongono dei vincoli per impedire che una occorrenza di E0 partecipi sia a E1 che a E2 Nota bene -conviene se gli accessi alle entità figlie sono separati dagli accessi al padre -è sempre possibile indipendentemente dalla copertura e conserva tutte le entità -le entità vengono mantenute e sono identificate esternamente Progettazione Logica

E0 A01 A02 E2 E1 R2 E4 A11 A21 R1 E3 (0,1) (0,1) RG1 RG2 (1,1) (1,1)

Esempio Progetto Prog_sw Prog_hw Cod Desc N_schede Mesi uomo Comp_hw usa 1,n 0,n Progetto Prog_sw Prog_hw Cod Desc N_schede Mesi uomo Comp_hw usa 1,n 0,n 0,1 1,1

Quando conviene usare questa alternativa? quando la generalizzazione non è totale, quando ci sono operazioni che si riferiscono solo a occorrenze di E1, E2 oppure E0, Risparmio di memoria rispetto alla scelta (1): non si introducono valori nulli Aumento degli accessi per mantenere la consistenza delle occorrenze Progettazione Logica

Attività della ristrutturazione Analisi delle ridondanze Eliminazione delle generalizzazioni Partizionamento/accorpamento di entità e relazioni Scelta degli identificatori primari Progettazione Logica

gli accessi si riducono: entità e associazioni in uno schema E-R possono essere partizionati o accorpati per rendere più efficienti le operazioni, in base a un semplice principio: gli accessi si riducono: separando attributi di un concetto che vengono acceduti separatamente; raggruppando attributi di concetti diversi acceduti insieme; Progettazione Logica

Ristrutturazioni, casi principali partizionamento orizzontale/verticale di entità eliminazione di attributi multivalore accorpamento di entità/ relationship Progettazione Logica

Partizionamento verticale di entità Impiegato Livello Stipendio Ritenute Cognome Indirizzo Data nascita Codice Progettazione Logica

Data nascita Dati anagrafici lavorativi (1,1) Si separano gli attributi in gruppi omogenei Livello Stipendio Ritenute Cognome Indirizzo Data nascita Codice Dati Impiegato Dati anagrafici lavorativi (1,1) Progettazione Logica

Eliminazione di attributi multivalore Agenzia Indirizzo Città Telefono Nome (1,N) Progettazione Logica

Utenza Agenzia Telefono (1,N) (1,1) Si introduce una entità le cui istanze sono identificate dai valori dell’attributo L’associazione può essere uno a molti o molti a molti Numero Indirizzo Nome Utenza Agenzia Telefono (1,N) (1,1) Città Progettazione Logica

Eliminazione di attributi multivalore Agenzia Indirizzo Città Telefono Nome (1,3) Se la cardinalità massima K è nota: è possibile prevedere K repliche degli attributi Tel2 Tel1 Tel3 Nome Agenzia Indirizzo Città Progettazione Logica

Accorpamento di Entità Codice fiscale Cognome Interno Indirizzo (0,1) (1,1) Intestazione Persona Appartamento Data nascita Indirizzo Progettazione Logica

Persona Data nascita Codice fiscale (0,1) Interno Indirizzo Cognome Data nascita Codice fiscale (0,1) Progettazione Logica

Partizionamento orizzontale di associazioni (0,1) Cognome Composizione Giocatore Squadra (1,N) Ruolo Nome Città Data acquisto Data cessione Cognome Comp. passata Giocatore Squadra (0,N) (1,N) Ruolo Nome Città Data acquisto Data cessione attuale (1,1)

Attività della ristrutturazione Analisi delle ridondanze Eliminazione delle generalizzazioni Partizionamento/accorpamento di entità e relationship Scelta degli identificatori primari Progettazione Logica

Scelta degli identificatori principali operazione indispensabile per la traduzione nel modello relazionale perché nel modello relazionale le chiavi vengono usate per stabilire legami tra dati in relazioni diverse; i DBMS richiedono di specificare una chiave primaria; si deve decidere quale degli identificatori utilizzare come chiave principale Progettazione Logica

Criteri Gli attributi con valori nulli non possono essere identificatori principali Gli identificatori con uno o pochi attributi sono preferibili vantaggio in termini di risparmio di memoria nella realizzazione dei legami logici tra le varie relazioni facilita le operazioni di join Un identificatore interno è preferibile Un identificatore utilizzato nelle operazioni più frequenti o importanti è preferibile Progettazione Logica

Se nessuno degli identificatori soddisfa i requisiti visti? Si introducono nuovi attributi (codici) contenenti valori speciali generati appositamente per questo scopo ES. Contatori, Sigle Progettazione Logica

L’identificatore {Interno, Indirizzo} è opzionale, quindi non può essere scelto Tra Codice fiscale e Codice SSN la scelta dipende da quale è più frequentemente usato per accedere a una persona Interno Indirizzo Cognome Data nascita Codice fiscale (0,1) Codice SSN Persona

Fase 2: Traduzione verso il modello relazionale Input: schema concettuale modello logico Output: schema logico Sono possibili altre fasi: Verifiche sulla qualità dello schema Normalizzazione dello schema prodotto Progettazione Logica

Traduzione verso il relazionale idea di base: le entità diventano relazioni sugli stessi attributi e la chiave è l’identificatore principale le relationship (o associazioni) diventano relazioni i cui attributi sono gli identificatori delle entità coinvolte e gli attributi propri dell’associazione Progettazione Logica

Persona(CF, Cognome, Nome, Via, NCivico*,Città,CAP) Ogni entità è tradotta con una relazione con gli stessi attributi La chiave primaria coincide con l’identificatore principale dell’entità Gli attributi composti vengono ricorsivamente suddivisi nelle loro componenti, oppure si mappano in un singolo attributo della relazione, il cui dominio va opportunamente definito Per brevità, usiamo l’asterisco (*) per indicare la possibilità di valori nulli Persona indirizzo via città n.civico (0,1) CAP nome cognome cod_fiscale Persona(CF, Cognome, Nome, Via, NCivico*,Città,CAP)

Entità e relationship molti a molti Partecipazione (0,N) (1,N) Cognome Stipendio Matricola Impiegato Nome Codice Budget Progetto Data inizio Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Matricola, Codice, DataInizio) Progettazione Logica

Impiegato(Matricola, Cognome, Stipendio) Nomi più espressivi per gli attributi della chiave della relazione che rappresenta la relationship Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Matricola, Codice, DataInizio) Progettazione Logica

Impiegato(Matricola, Cognome, Stipendio) Nomi più espressivi per gli attributi della chiave della relazione che rappresenta la relationship Impiegato(Matricola, Cognome, Stipendio) Progetto(Codice, Nome, Budget) Partecipazione(Impiegato, Progetto, DataInizio) Progettazione Logica

Relationship ricorsive Quantità (0,N) Composizione (0,N) Composto Componente Prodotto Costo Nome Codice Prodotto(Codice, Nome, Costo) Composizione(Composto, Componente, Quantità) Progettazione Logica

Relationship n-arie Fornitore(PartitaIVA, Nome) Prodotto Dipartimento Fornitura Partita IVA Genere Codice Quantità Telefono (0,N) (1,N) Fornitore(PartitaIVA, Nome) Prodotto(Codice, Genere) Dipartimento(Nome, Telefono) Fornitura(Fornitore, Prodotto, Dipartimento, Quantità)

Relationship uno a molti Cognome Giocatore Squadra Contratto Data nascita Città Nome Ingaggio (1,1) (0,N) Ruolo Colori sociali Giocatore(Cognome, DataNascita, Ruolo) Squadra(Nome, Città, ColoriSociali) Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio) Progettazione Logica

Soluzione più compatta Giocatore(Cognome, DataNascita, Ruolo) Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio) Squadra(Nome, Città, ColoriSociali) Giocatore e Contratto hanno la stessa chiave: possiamo fonderle in un’unica relazione Giocatore(Cognome, DataNasc, Ruolo, Squadra, Ingaggio) con vincolo di integrità referenziale fra Squadra in Giocatore e la chiave di Squadra Progettazione Logica

Osservazione Cognome Giocatore Squadra Contratto Data nascita Città Nome Ingaggio (0,1) (0,N) Ruolo Colori sociali se la cardinalità minima della relationship è 0, allora Squadra e Ingaggio in Giocatore devono ammettere valore nullo Giocatore(Cognome, DataNasc, Ruolo, Squadra*, Ingaggio*) Squadra(Nome, Città, ColoriSociali) Progettazione Logica

Associazioni ricorsive uno a molti Responsabile Dipendente Qualifica Nome Codice (0,N) (0,1) Dipendenza Impiegato In questo caso è possibile operare una traduzione con 1 o 2 relazioni 1 relazione: Impiegato(Codice, Nome, Qualifica, Responsabile*) FK: Responsabile REFERENCES Impiegato 2 relazioni: Impiegato(Codice, Nome, Qualifica) Dipendenza(Dipendente, Responsabile) FK: Dipendente REFERENCES Impiegato FK: Responsabile REFERENCES Impiegato

Entità con identificazione esterna Nel caso di entità identificata esternamente, si “importa” l’identificatore della/e entità identificante/i. L’associazione relativa risulta automaticamente tradotta Iscrizione Studente Università Cognome Matricola AnnoDiCorso Nome Indirizzo (1,1) (1,N) Città Studente(Matricola, Università, Cognome, AnnoDiCorso) Università(Nome, Città, Indirizzo)

Relationship uno a uno (1,1) – (1,1) Direttore Dipartimento Direzione Cognome Codice Sede Nome Data inizio (1,1) Stipendio Telefono Direttore (Codice, Cognome, Stipendio) Dipartimento (Nome, Sede, Telefono, Direttore, InizioD) Direttore (Codice, Cognome, Stipendio, InizioD, Dipartimento) Dipartimento (Nome, Sede, Telefono)

Relationship uno a uno (0,1) – (1,1) Impiegato Dipartimento Direzione Cognome Codice Sede Nome Data inizio (0,1) (1,1) Stipendio Telefono tradurre l’associazione Direzione inglobandola in Impiegato non è in generale una buona scelta (dipende dai volumi dei dati in gioco): troppi valori nulli! Progettazione Logica

Relationship uno a uno (0,1) – (1,1) Impiegato Dipartimento Direzione Cognome Codice Sede Nome Data inizio (0,1) (1,1) Stipendio Telefono Impiegato(Codice, Cognome, Stipendio, Dipartimento*, DataInizio*) Dipartimento(Nome, Sede, Telefono) Progettazione Logica

Impiegato (Codice, Cognome, Stipendio) Soluzione: Impiegato (Codice, Cognome, Stipendio) Dipartimento (Nome, Sede, Telefono, Direttore, InizioD) con vincolo di integrità referenziale, senza valori nulli Progettazione Logica

Relationship uno a uno (0,1) – (0,1) Data inizio Cognome Sede Nome Codice (0,1) (0,1) Direzione Impiegato Dipartimento Stipendio Telefono Per evitare la presenza di valori nulli nelle chiavi esterne: Impiegato (Codice, Cognome, Stipendio) Dipartimento (Nome, Sede, Telefono, Direttore) Direzione (Direttore, Dipartimento, DataInizio)

Un esempio particolare Marito Moglie Nome CF (0,1) Matrimonio Persona 2 relazioni: Persona(CF, Nome) Matrimonio(Marito, Moglie) Progettazione Logica

Indirizzo Dipartimento Sede Impiegato Progetto (1,1) (0,1) (1,N) (0,N) Città Indirizzo Telefono Dipartimento Composizione Sede Direzione Afferenza Impiegato Progetto Partecipazione Nome Cognome Budget Data Via CAP Codice

Progetto(Nome, Budget) Per le entità E che partecipano ad associazioni sempre con max-card(E,R) = n la traduzione è immediata: Sede(Città, Via, CAP) Progetto(Nome, Budget) Anche l’associazione Partecipazione si traduce immediatamente: Partecipazione(Impiegato, Progetto) L’entità Dipartimento si traduce importando l’identificatore di Sede e inglobando l’associazione Direzione Dipartimento(Nome, Città, Telefono, Direttore) Per tradurre l’associazione Afferenza, assumendo che siano pochi gli impiegati che non afferiscono a nessun dipartimento, si opta per una rappresentazione compatta Impiegato(Codice, Cognome, Dipart*,CittàDip* Data*)

Esercizio 1 AA ciclo nome (1,1) (0,n) responsabilità cognome Corso_AA Docente data_nascita cod_doc (1,1) attivato nome (0,n) data FA_VISITA (1, 1) (0, N) IN_VISITA MEDICO VISITA PAZIENTE esito cognome cod_corso telefono cod_med nome Corso nome cognome data_nascita cod_paziente Progettazione Logica

Esercizio 2 Trovare lo schema ER che dà luogo al seguente schema relazionale:   GIOCATORI(n_giocatore, cognome, iniziali, data_nascita, sesso, iscritto_dal, indirizzo, numero, cap, citta, telefono, n_socio) SQUADRE(n_squadra, n_giocatore, categoria) PARTITE(n_partita, n_squadra, n_giocatore, vittorie, sconfitte) PENALITA(n_pagamento, n_giocatore, data_pagamento, importo) MEMBRI_COMMISSIONE(n_giocatore, data_inizio, data_fine, carica) Progettazione Logica