Proge0azione logica relazionale Il modello relazionale A. Ferrari • La proge0azione logica relazionale consiste nella conversione di un diagramma E/R in un insieme di relazioni (o tabelle), che cos@tuisce lo schema logico relazionale della base da@ • Esistono altri modelli logici (modello gerarchico, modello re@colare) anche se oggi il modello relazionale è sicuramente il più diffuso Storia • Introdo0o nel 1970 dal matema@co inglese Edgar Frank Codd • Negli anni ’60 e ’70 lavora in IMB ed elabora le sue teorie sulla ges@one dei da@, pubblica “A Rela@onal Model of Data for Large Shared Data Banks” (un modello relazionale per i da@ in grandi basi da@ condivise) • Le prime implementazioni del modello si hanno solo alla fine degli anni '70 (ritardo dovuto alla difficile implementazione del modello matema@co) • Dagli anni '80 ampia diffusione di DBMS relazionali anche per sistemi di piccole dimensioni Teoria • La teoria si basa sul concetto di relazione tra insiemi • Una relazione R su una sequenza di insiemi D1, D2, D3 … DN (non necessariamente distinti) è un sottoinsieme finito del prodotto cartesiano D1 x D 2 x D 3 … x D N che è possibile esprimere con: R ⊆ D1 x D 2 x D 3 … x D N • N (N ≥ 1) è detto grado della relazione • Gli insiemi D sono detti domini della relazione e ciascuno di essi può essere un insieme composto da dati di tipo elementare (carattere, booleano, numerico …) • A ogni dominio è associato un attributo, che lo identifica univocamente all’interno della relazione Significato intensionale • Il nome della relazione e la lista dei suoi a0ribu@ rappresenta il significato intensionale e cos@tuisce lo schema della relazione • <NomeRelazione> (<Attributo1>:<Tipo1>, <Attributo2>:<Tipo2>, <Attributo3>:<Tipo3> … <AttributoN>:<TipoN>) • Computer (CodiceProgressivo: Intero, Marca: Stringa(40), Modello: Stringa(40), NumeroDiSerie: Stringa(20)) Rappresentazione come elenco • • • • Relazione di grado 4 Cardinalità 3 (numero di tuple) A0ribu@: CodiceProgressivo, Marca, Modello Valori a0ribu@ (estensione) • Gli elemen@ dell’insieme R sono de[ ennuple (o tuple) 1 Rappresentazione come tabella Rappresentazione come insieme Un esempio di relazione Regole di derivazione • Grado della relazione = 3 (Libre0o, Nome, Data_Nascita) • Cardinalità della relazione = 1200 (numero di tuple = numero di studen@) • Libre0o è campo chiave • Passaggio da uno schema conce0uale (Diagramma E/R) a uno schema relazionale (insieme di relazioni) equivalente DiagrammaE/R Le en@tà • Ogni en@tà viene rappresentata da una relazione • L’a0ributo chiave primaria dell’en@tà diventa a0ributo chiave primaria della relazione e viene rappresentato con cara0ere so0olineato • Gli a0ribu@ compos@ vengono svol@ nella relazione, dove saranno presen@ gli a0ribu@ cos@tu@vi dell’a0ributo composto • Gli a0ribu@ mul@pli richiedono la normalizzazione (discussa più avan@) Schema relazionale Associazioni 1:1 • Le associazioni 1:1 vengono trasformate in un’unica relazione 2 Rappresentazione alterna@va di associazioni 1:1 • Si opera come nel caso di associazioni 1:n Associazioni 1:N • Le associazioni binarie 1:N tra le en@tà A e B sono trado0e in due relazioni: – relazione Ra che ha gli a0ribu@ di A – relazione Rb che ha gli a0ribu@ di B e gli a0ribu@ chiave Ka di A (chiave esterna) Esempio 1:N Associazioni N:N C odice Denominazione 1 C lasse • Per tradurre nel modello relazionale una associazione N:N tra due en@tà è necessario introdurre tre relazioni • Per la relazione N:N tra le en@tà A e B si rappresenta con: L ibretto S pecializzazione Nome C omposta da N S tudente Chiave esterna – una relazione RA che ha gli a0ribu@ di A – una relazione RB che ha gli a0ribu@ di B – una relazione RS con gli a0ribu@ chiave KA di RA e gli a0ribu@ chiave KB di RB Esempio associazione N:N Codice Nome 001 Rossi 002 Verdi 003 Bianchi Libre1o Nome AA100 Associazione unaria Aldo Libre1o Nome KstudA KstudB Kdoc KStud Materia AA101 Giovanni AA100 Aldo AA100 AA101 001 AA100 Informa@ca BB100 Giacomo AA101 Giovanni BB100 BB101 001 BB100 Informa@ca BB100 Giacomo 003 AA100 Storia BB101 Jack 002 AA100 Inglese 3 Associazione ternaria Gli a0ribu@ delle associazioni C odice Nome L ibretto Materia D ocente Nome N Ins egna M S tudente K C odice D es criz ione Libre1o Nome AA100 Aldo Informa@ca AA101 Giovanni Verdi Storia BB100 Giacomo Bianchi Inglese Codice Nome Materia 001 Rossi 002 003 Aula Kdoc Kstud Kaula 001 AA100 A01 001 BB100 LInf 003 AA100 A02 002 AA100 A02 Codice Descrizione A01 A1 nuovo A02 A2 nuovo LInf L. Informa@ca Associazioni di generalizzazione (ISA) • Gli a0ribu@ delle associazioni 1:1 vanno inseri@ in una qualunque delle relazioni risultan@ (o nell’unica relazione o0enuta) • Gli a0ribu@ delle associazioni 1:N vanno inseri@ nell’associazione che conterrà la chiave esterna • Gli a0ribu@ delle associazioni N:N vanno inseri@ nella relazione che rappresenta l’associazione ISA (esempio) • Si consideri l’en@tà padre P e le en@tà figlie F1, F2, F3 … FN • Per modellare queste relazioni è possibile u@lizzare tre approcci diversi: – accorpamento delle figlie nel padre – inclusione del padre nelle figlie – sos@tuzione della generalizzazione con associazioni 1:1 • Nel primo caso le figlie vengono eliminate dal modello e i loro a0ribu@ e associazioni vengono riporta@ nell’en@tà padre. A questo viene aggiunto anche un a0ributo per indicare il @po di tupla che con@ene, in modo da capire quale figlia riguarda ISA (accorpamento) • Si o[ene un’unica relazione: Computer (Marca, Modello, NumeroDiSerie, Tipo, VersioneWindows, VersioneMacOSX) • Si no@ l’aggiunta dell’a0ributo Tipo, che consente di dis@nguere se la tupla con@ene una istanze dell’en@tà PC, oppure dell’en@tà Macintosh • In Computer sono sta@ aggiun@ gli a0ribu@ presen@ nelle en@tà figlie ISA (inclusione del padre nelle figlie) • L’inclusione del padre nelle figlie prevede l’eliminazione del padre P e il rela@vo riposizionamento degli a0ribu@ e associazioni nelle en@tà figlie. Questo @po di traduzione è a0uabile solo nel caso di generalizzazioni totali. PC (Marca, Modello, NumeroDiSerie, VersioneWindows) Macintosh (Marca, Modello, NumeroDiSerie, VersioneMacOSX) 4 ISA (diventa associazione 1:1) Associazioni di aggregazione (HASA) • Comporta l’uso di relazioni di @po 1:1, una per ciascuna en@tà figlia • Con questa modalità non ci sono accorpamen@ di en@tà. • Le figlie vengono iden@ficate u@lizzando la chiave dell’en@tà padre come chiave primaria ed esterna delle figlie • L’associazione per aggregazione si traduce nel modello relazionale u@lizzando una relazione per ciascuna en@tà componente e una per l’en@tà aggregata HASA (esempio) Esempio (tennis) Computer(Marca, Modello, NumeroDiSerie) Processore(CodiceProcessore,Velocità,NumeroSerieComputer) Memoria(CodiceMemoria, Dimensione, NumeroSerieComputer) DiscoFisso(CodiceDisco, Dimensione, NumeroSerieComputer) 5