Corso Database Relazionali



Documenti analoghi
Il database management system Access

Capitolo 13. Interrogare una base di dati

Progettazione di un Database

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

Progettazione di Basi di Dati

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

Organizzazione degli archivi

Organizzazione delle informazioni: Database

Database. Si ringrazia Marco Bertini per le slides

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Introduzione alla teoria dei database relazionali. Come progettare un database

Le Basi di Dati. Le Basi di Dati

I database relazionali (Access)

Lezione V. Aula Multimediale - sabato 29/03/2008

Dispensa di database Access

UN PROGRAMMA APPLICATIVO: ACCESS Access è un programma del pacchetto Office che permette di realizzare database

Corso di Informatica (Basi di Dati)

DATABASE. A cura di Massimiliano Buschi

Olga Scotti. Basi di Informatica. Excel

database: modello entityrelationship

Introduzione ai database relazionali

TEORIA sulle BASI DI DATI

Introduzione ai Sistemi di Gestione di Basi di Dati XML

INTRODUZIONE I CICLI DI BORSA

MODELLO RELAZIONALE. Introduzione

corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

Esercizio data base "Biblioteca"

LA NORMALIZZAZIONE. Introduzione

Lezioni di Laboratorio sui Data Base

Access. P a r t e p r i m a

Sistemi per la gestione di database: MySQL ( )

Basi di Dati e Microsoft Access

INFORMATICA PER LE APPLICAZIONI ECONOMICHE PROF.SSA BICE CAVALLO

Facoltà di Farmacia - Corso di Informatica

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

BASI DI DATI - : I modelli di database

1. BASI DI DATI: GENERALITÀ


Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Indice. 1 Il monitoraggio del progetto formativo di 6

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

Database 1 biblioteca universitaria. Testo del quesito

DBMS (Data Base Management System)

Informatica I per la. Fisica

Strutturazione logica dei dati: i file

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

Informatica per le discipline umanistiche 2 lezione 10

Guida all uso di Java Diagrammi ER

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

INDICE. Accesso al Portale Pag. 2. Nuovo preventivo - Ricerca articoli. Pag. 4. Nuovo preventivo Ordine. Pag. 6. Modificare il preventivo. Pag.

I DATABASE Database relazionale

Esercizio sui data base "Gestione conti correnti"

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

risulta (x) = 1 se x < 0.

COME SI ENTRA IN POSIZIONE

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Corso di Sistemi di Elaborazione delle informazioni

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Pagina 1 di 10

MODULO 5 Appunti ACCESS - Basi di dati

Capitolo 2. Operazione di limite

Raggruppamenti Conti Movimenti

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

DATABASE.

Nelle Caselle Gialle vanno inserite le date che comprendono il periodo a noi interessato; Es. dal 1 gennaio 2008 al 31 maggio 2008 compreso

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

Sistemi Informativi e Basi di Dati

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Per visualizzare e immettere i dati in una tabella è possibile utilizzare le maschere;

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI

Il seguente esempio ha lo scopo di illustrare i 3 tipi di relazione 1:1,1:N,N:N. Tabella Conto: Tabella Conto:

In questa lezione abbiamo ricevuto in studio il Dott. Augusto Bellon, Dirigente Scolastico presso il Consolato Generale d Italia a São Paulo.

Il concetto di Dare/Avere

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

PROGRAMMA SVOLTO NELLA SESSIONE N.

Database. Appunti di Amaranto Oronzo e Giancane Diego Lezione dell Ing. Lucia Vaira 24/04/2014

Introduzione. Alberto Fortunato Pag. 1 di 137

Software per Helpdesk

Concetti fondamentali dei database database Cos'è un database Principali database

Informatica (Basi di Dati)

INVIO SMS

Convertitori numerici in Excel

LE CARATTERISTICHE DEI PRODOTTI MULTIVARIANTE

Base Dati Introduzione

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

Lezione 8. Motori di Ricerca

Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Buongiorno vi ringrazio nuovamente per avermi invitato sono molto lieto di assistervi nella vendita della vostra casa

Registratori di Cassa

PROMUOVERSI MEDIANTE INTERNET di Riccardo Polesel. 1. Promuovere il vostro business: scrivere e gestire i contenuti online» 15

Master in Evidence-Based Practice e Metodologia della Ricerca Clinico Assistenziale Mita Parenti. Introduzione ai Database Relazionali

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

MAGAZZINO FISCALE (agg. alla rel )

Transcript:

Corso Database Relazionali Versione 1.2 del 01.10.2011 1

Autore: Stefano Lampredi Prima edizione: 2011 Edizione elettronica VastaCom: 2011 VastaCom è un associazione culturale non lucrativa con l obiettivo di diffondere informazione e servizi di interesse sociale e culturale tramite canali telematici e in particolare il web (www.vastacom.org). Questo/a opera è pubblicato sotto una Licenza Creative Commons Copyright 2009 VastaCom Associazione Culturale - Some Rights Reserved. 2

Indice generale Lezione 1.1 - Introduzione - Corso Database Relazionali...4 Lezione 1.2 - Cos'è un database - 1^ parte...4 Lezione 1.2 - Cos'è un database - 2^ parte...5 Lezione 1.2 - Cos'è un database - 2^ parte...5 Lezione 1.2 - Cos'è un database - 3^ parte...7 Lezione 1.3 - RDBMS: i database relazionali - 1^ parte...8 Lezione 1.3 - RDBMS: i database relazionali - 2^ parte...9 Lezione 2 - RDBMS: Prima, seconda e terza forma normale...11 3

Lezione 1.1 - Introduzione - Corso Database Relazionali Di questi tempi fare un corso sui database relazionali è un po come parlare del sesso degli angeli. Se ne è scritto e parlato in tutte le salse e probabilmente non si dirà di più (ma forse qualcosa di meno) di tanti libri, articoli, siti internet. Le motivazioni sono quindi prevalentemente personali. La modalità di espressione e l'approccio all'argomento è sicuramente all'acqua di rose. Quindi non me ne vogliate e non sparate troppo sulla croce rossa... che in questo caso sarei io. Va bene ho messo le mani avanti possiamo cominciare. Volendo iniziare il corso con una definizione un po' teorica possiamo considerare il Database come quel software che permette l'inserimento, la manipolazione e l'estrazione dei dati su un supporto informatico. Il database oggi è un software che troviamo in una miriade di applicazioni informatiche e multimediali. Possiamo dire che siamo circondati da database. Se pensiamo all'oggetto che l'uomo di oggi porta sempre con se, il cellulare, la prima cosa che mi viene in mente è che la rubrica del cellulare è un database. Piccolo ma pur sempre un database. La rubrica infatti ci permette di inserire nomi, cognomi, numeri di telefono (alcune volte anche altre informazioni). La rubrica ci permette di manipolare queste informazioni cioè di modificarle. La rubrica ci permette di estrarre queste informazioni e di utilizzarle per indirizzare una telefonata. Quindi: 1) inserimento 2) manipolazione 3) estrazione. Lezione 1.2 - Cos'è un database - 1^ parte Ragionando sull'esempio della rubrica telefonica presentatovi nell'introduzione ecco

però sorgere qualche interrogativo. Ma cosa è la rubrica? L'applicazione "Rubrica del cellulare" è un database? Direi di no! O meglio non precisamente. Infatti l'applicazione (o software) della Rubrica può essere vista su strati differenti. Il 1 strato rappresenta la tabella della rubrica composta da tante colonne quanti sono i dettagli che vogliamo memorizzare in rubrica (nome, cognome, cell, tel. fisso, cell lavoro...) e tante righe quante sono le persone registrate. Il 2 strato è l'interfaccia e la logica di gestione dell'inserimento, della visualizzazione e della modifica dei dati della rubrica. Quindi il software con il quale si inseriscono si vedono e si modificano i nomi, i numeri in rubrica. Per dirla semplice da un lato abbiamo il contenitore delle informazioni e dall'altro abbiamo il motore di gestione del contenitore stesso. A questo punto possiamo dire che la rubrica sia un software che permette la gestione delle informazioni in un database. Questo database, nel nostro esempio, è formato da una tabella che chiameremo "tab_rubrica". Cerchiamo quindi di esprimere un po meglio la prima definizione e spacchiamola in due: Data Base "Rubrica": contenitore di informazioni. Applicazione "Rubrica": software che permette l'inserimento, la manipolazione e l'estrazione dei dati contenuti nel Data Base "Rubrica". Lezione 1.2 - Cos'è un database - 2^ parte

Come abbiamo visto nella 1^ parte abbiamo suddiviso l'applicazione Rubrica in due strati. Nel primo abbiamo solo il contenitore delle informazioni ed è quindi rappresentato da oggetti come tabelle (nel nostro caso la tabella tab_rubrica). Nel secondo abbiamo raggruppato le parti applicative e funzionali del software Rubrica. Io però voglio spaccare il pelo in tre. Il mio obiettivo è suddividere in parti ben definite il software Rubrica. Mi fermerò comunque alle tre parti principali e non vi tedierò ulteriormente. Infatti il secondo strato può essere suddiviso ulteriormente in due parti ben definite: 1) Il motore del database. Questo rappresenta tutti quei metodi pubblici che possono essere utilizzati per inserire, modificare e interrogare il dato immaganizzato nel contenitore. 2) il software che usa questo motore. Questa è la parte che usa questi metodi per permettere ad un utente di inserire, modificare e visualizzare il dato immagazzinato nel contenitore. Per fare un esempio pratico un utente medio del cellulare quando inserisce un nome in rubbrica usa una interfaccia grafica di inserimento (secondo strato). L'interfaccia grafica sotto di se traduce quello che è inserito nella casella della rubrica in un linguaggio particolare (SQL che poi vedremo), lo trasferisce al motore (primo strato). Il motore interpreta questo linguaggio e inserisce il dato nella tabella. Quindi riassumendo gli strati partendo dal livello più vicino all'utente:

1) Maschera Utente: che ha in se una interfaccia grafica e la logica di trasformazione delle azioni impartite dall'utente in un linguaggio comprensibile al motore del database (SQL). 2) Motore del database (DBMS). Inserisce, modifica, interroga il database in base ai comandi che gli vengono impartiti dalla Maschera Utente. 3) Data Base o contenitore dei dati che accoglie le informazione passategli dai livelli superiori e le organizza in tabelle (DB). Vediamo ora gli acronimi: SQL = Structured Query Lamguage ossia linguaggio strutturato per fare interrogazioni e modifiche al database. DB = Data Base ossia Base di Dati. DBMS = Data Base Management System ossia Sistema per gestire un Data Base. Lezione 1.2 - Cos'è un database - 3^ parte Con il ragionamento fatto in questo paragrafo ho voluto semplicemente farvi entrare dentro la definizione del Database. Ho cercato di portare allo scoperto le sue caratteristiche che possono ai nostri occhi apparire nascoste vedendo un software molto semplice come la nostra rubrica dell'esempio. Con questo voglio anche dire che le definizioni del database che si possono trovare in giro o che si possono ascoltare nel linguaggio "tecnichese" spesso tendono ad incorporare nel termine "Database" un insieme di concetti differenti che poi sono gli strati / livello che vi ho mostrato. Dal mio, modesto, punto di vista di apprendista-artigiano del software, a me preme fissare il concetto della differenziazione del motore che opera su una base dati rispetto all'organizzazione delle informazioni contenute nella base dati stessa. Continuando con l'esempio della rubrica e paragonandolo ad una rubrica di carta dei

tempi andati possiamo dire che: 1) la maschera utente corrisponde all'involucro, la rilegatura alle paginette, alla loro suddivisione ed ergonomia; 2) il motore DBMS corrisponde a noi stessi che cerchiamo, modifichiamo e inseriamo con la penna sulla carta le informazioni di rubrica; 3) il Data Base corrisponde a: dettaglio e informazioni predefinite che la rubrica cartacea ci permette di inserire: Nome, cognome, indirizzo, telefono, cellulare, etc.. etc.. (salute!!!) il dato vero e proprio che corrisponde alle informazioni inserite: ste, lampi, via le mani di qua 38, 555-*****, 335-879*****, etc.. etc.. (ri-salute!!!). Lezione 1.3 - RDBMS: i database relazionali - 1^ parte Finora abbiamo usato sigle come DB, DBMS che rappresentano in maniera più o meno estesa delle tipologie di database generici. Dico questo poichè la struttura con cui può essere disegnata una base di dati non è univoca. Dipende dalle nostre capacità di "architetti" ma anche dalle modalità con cui il DBMS ci permette di costruire le tabelle e le relazioni fra loro. Tra le architetture che troviamo sul mercato possiamo annoverare i database di tipo gerarchico, relazionale, multidimensionale, object-oriented e, se ne parla da poco tempo, column-based. Come avrete intuito dal titolo della pubblicazione proveremo ad addentrarci nei database relazionali. Il pioniere del modello relazionale fu un certo Edgar F. Codd che elenco ben 12 regole

per definire un vero e puro database relazionale. Non ve le elencherò tutte ma solo quelle che per me sembrano importanti e adatte all'approfondimento di questo libro: 1) Il dato deve essere memorizzato in tabelle in maniera univoca (quindi una sola volta) sulle righe specificando nelle colonne i suoi diversi attributi. 2) Dotato di funzionalità relazionali di "parentela" fra le tabelle. 3) Vincoli di integrità tra le entità rappresentate in tabelle e relazioni. Per quel che riguarda il primo punto abbiamo già parlato di tabelle nell'esempio della RUBRICA. Quel che rimane da dire che in un database relazionale dobbiamo limitare la ripetizione delle informazioni e cercare di unicizzare i dati in tabella. Questo significa che la riga in cui registriamo il signor Mario Rossi in rubrica sarà una sola in modo tale che io non abbia dubbi quando estraggo il dato che l'informazione che mi viene fornita sia unica. Il sistema RDBMS mi viene incontro evitando di farmi inserire dati duplicati fornendo all'architetto del DB dei controlli che imposti sulle colonne riescono a evitare tale problema, i vincoli di unicità, che vedremo successivamente. Lezione 1.3 - RDBMS: i database relazionali - 2^ parte Se io prendo un documento tipo la fattura di una azienda emessa da un fornitore a fronte di una vendita di un prodotto abbiamo degli elementi, delle entità in relazione fra loro. Queste entità sono il cliente, il fornitore, i prodotti, la fattura e mi fermo a questo livello di dettaglio. Se io voglio registrare queste informazioni in un database posso costruire delle tabelle che tengono memorizzati i dati in questione. Quindi costruirò una tabella clienti, una tabella fornitori, una tabella prodotti e una

tabella fatture. Queste tabelle come le entità rappresentate hanno delle relazioni fra di loro che permettono di tenere legate le informazioni cliente-fattura-prodotto-fornitore garantendo una buona organizzazione del database stesso. Infatti il fornitore sarà legato al prodotto, la fattura sarà legata sia ai clienti, sia ai prodotti e sia ai fornitori, nel senso che per avere un senso informativo ha bisogno delle informazioni presenti nelle altre tabelle elencate. Questa è la funzionalità relazionale che si costruisce fra le tabelle. Ossia il secondo punto della lista. Possiamo immaginare i legami in questo modo: ( Lista dei Fornitori ) ( Fatture ) ( Lista dei Prodotti ) ( Lista dei Clienti ) Il terzo punto si collega molto ai precedenti poiché ne è il completamento. Questo perché un insieme di tabelle non possono dirsi appartenenti ad un modello relazionale se non utilizzano i vincoli di integrità fra di loro. I vincoli di integrità sono dei controlli che garantiscono che la fattura numero 9 sia relativa alla merce z del fornitore gamma. Questo significa che legano i dati di tabelle differenti fra di loro in modo coerente senza mischiare la fattura 9 con il fornitore beta che magari fornisce la merce xy. Tornando allo schema di prima: ( Fornitore Gamma )

( Fattura n 9 ) ( Prodotto Z ) ( Cliente Pippo ) Lezione 2 - RDBMS: Prima, seconda e terza forma normale Introduciamo il concetto principe dei database relazionali: la normalizzazione dei dati. Con questo concetto si intente fondamentalmente l'organizzazione efficiente ed efficace dei dati. Efficiente per consentire un risparmio di spazio e di tempi nella memorizzazione dei dati e nel loro recupero. Efficace è inteso qui nel senso di mantenere la coerenza del dato nella sua rappresentazione della realtà, ossia senza la distorsione del risultato ottenuto nella sua memorizzazione. Vengono quindi presentate le cosiddette forme normali del dato. Esistono almeno cinque forme normali a cui una Base Dati può essere ricondotta. Noi per semplicità ci fermeremo alla terza forma normale. L'obiettivo che ci si pone è quello di scomporre la nostra base dati in maniera tale da migliorarne la qualità. Se prendiamo il nostro esempio potremo scomporre la tabella Fornitore in diverse tabelle senza perdere coerenza di significato e, anzi, guadagnando in termini di spazio occupato e mantenendo livelli di performance accettabili. Ma andiamo al sodo! La 1^ forma normale è rispettata se: non esistono righe che contengono gruppi di dati uguali nella stessa tabella, eventuali righe che abbiano gruppi di dati ripetuti devono essere esternalizzati su un'altra tabella legata alla precedente da una relazione di parentela. L'esempio più semplice è quella per cui si ripete il nome e cognome di un voce della rubbrica per inserire più righe per memorizzare più numeri di telefono:

questi numeri di telefono devono essere esternalizzati in altra tabella figlia della tabella da cui siamo partiti. ogni tabella ha una sua chiave o colonna univoca (primary key) che rappresenta la riga in questione senza ambiguità. La 2^ forma normale riguarda quelle tabelle che hanno una chiave primaria composta ossia rappresentata da più colonnd. Con questa considerazione la 2^ forma normale è rispettata se: la 1^ forma normale è rispettata; ogni colonna che non sia chiave primaria dipende funzionalmente dall'intera primary key. Ad esempio nel nostro caso della tabella rubrica, l'indirizzo della persona memorizzata è riferito alla chiave primaria del cognome + nome e non solo alla chiave parziale del campo cognome. Questo perchè potrebbero esserci dei nomi propri di persona differenti per lo stesso cognome e se l'indirizzo dipendesse solo dal cognome non sarebbe più un informazione riconducibile al cognome + nome esatto. La 3^ forma normale è rispettata se: la 2^ forma normale è rispettata; non esistono attributi non chiave che dipendono da altri attributi non-chiave, ad esempio: il codice dell'area geografica di appartenenza del fornitore la descrizione di tale area. In questo caso bisogna esternalizzare la descrizione in un'altra tabella in cui portiamo il dominio di valori e le chiavi primarie degli stessi. Sulla tabella originaria rimarrà il campo chiave corrispondente alla chiave primaria presente sulla tabella creata. Esistono poi ulteriori livelli di normalizzazione come il 4 e il 5 che regolano i legami di tipo molti a molti fra due tabelle. Spesso però la normalizzazione fino a 5 livello può generare problemi di performance nella lettura/scrittura dei dati e quindi la tralasciamo poiché va oltre gli obiettivi di questo manuale.

Bisogna dire che l'obiettivo che un architetto di Base Dati si propone è quello di rispettate almeno le tre forme normali che ho indicato, ma è anche vero che spesso nei progetti bisogna mediare fra esigenze di performance ed esigenze di leggibilità del dato e in alcuni casi particolari rispettare pedissequamente le tre forme normali può risultare un utopia inutile da raggiungere. Nella mia esperienza di vita lavorativa non ho mai trovato e non ho mai creato una Base Dati normalizzata in maniera perfetta.