Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione alle basi di dati: Differenza tra database e fogli di calcolo, Appunti di Elementi di Informatica

Una introduzione alle basi di dati, spiegando la differenza tra esse e i fogli di calcolo e fornendo risposte a questioni comuni come 'quale differenza c'è fra una base di dati e un foglio di calcolo?'. Viene inoltre presentato il concetto di base di dati relazionale e il modello relazionale, in cui tutti i valori presenti in una colonna appartengono lo stesso tipo di dato e le righe rappresentano specifici oggetti o legami fra oggetti del mondo reale.

Tipologia: Appunti

2020/2021

Caricato il 01/02/2021

michela-manca-8
michela-manca-8 🇮🇹

5 documenti

1 / 54

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Contenuti A0
Branche dell'informatica
Nel sentire comune, l'informatica è vista come una disciplina monolitica. Ogni volta che si pensa ad un
informatico, si immagina un esperto capace di risolvere qualsiasi problema legato all'uso dei
calcolatori. In realtà l'informatica è una disciplina complessa dove si possono riconoscere numerose
specializzazioni. Pertanto è possibile, per non dire frequente, che un esperto sviluppi le proprie
competenze rispetto a un sottoinsieme di specializzazioni.
A titolo esemplificativo, senza alcuna pretesa di completezza, elenchiamo alcune specializzazioni della
disciplina informatica:
Informatica teorica
Teoria dell'informazione
Teoria della computazione
Algoritmi e strutture dati
Teoria dei linguaggi di programmazione
Informatica applicata
Architettura dei calcolatori
Sistemi e architetture (Information Technology - IT)
Reti di calcolatori
Basi di dati
Sicurezza informatica e crittografia
Interazione uomo-macchina
Intelligenza artificiale
Elaborazione digitale dei segnali
Programmazione
Sviluppo software
Sviluppo web
Sviluppo sistemi integrati
Inoltre l'informatica può essere coniugata ad altre discipline per dare vita a branche multidisciplinari
comead esempio bioinformatica, chimica computazionale, robotica, computer grafica e musicologia
computazionale.
Storia dell'informatica e nascita del calcolatore
Perché si possa arrivare all'informatica come la intendiamo oggi è stato necessario sviluppare
parallelamente due diversi aspetti: quello tecnologico e quello filosofico (in particolare logico-
matematico). La serie di eventi, idee e scoperte che culmina con i moderni calcolatori ha quindi una
moltitudine di protagonisti, disseminati in un arco temporale di almeno 4000 anni, con molte storie
parallele. Per quanto il racconto possa essere avvincente e ricco di colpi di scena, non è questa la sede
per una esposizione esaustiva. Ci si limiterà pertanto a citare solo alcuni degli aspetti cruciali: quelli più
funzionali alla comprensione del pensiero informatico e del funzionamento del calcolatore.
Il termine calcolatore designa genericamente un sistema di elaborazione dati, nato in
forma meccanica, sviluppatosi in forma analogica e giunto poi alla forma digitale.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36

Anteprima parziale del testo

Scarica Introduzione alle basi di dati: Differenza tra database e fogli di calcolo e più Appunti in PDF di Elementi di Informatica solo su Docsity!

Contenuti A

Branche dell'informatica

Nel sentire comune, l'informatica è vista come una disciplina monolitica. Ogni volta che si pensa ad un informatico, si immagina un esperto capace di risolvere qualsiasi problema legato all'uso dei calcolatori. In realtà l'informatica è una disciplina complessa dove si possono riconoscere numerose specializzazioni. Pertanto è possibile, per non dire frequente, che un esperto sviluppi le proprie competenze rispetto a un sottoinsieme di specializzazioni. A titolo esemplificativo, senza alcuna pretesa di completezza, elenchiamo alcune specializzazioni della disciplina informatica:

  • Informatica teorica Teoria dell'informazione Teoria della computazione Algoritmi e strutture dati Teoria dei linguaggi di programmazione
  • Informatica applicata Architettura dei calcolatori Sistemi e architetture ( Information Technology - IT) Reti di calcolatori Basi di dati Sicurezza informatica e crittografia Interazione uomo-macchina Intelligenza artificiale Elaborazione digitale dei segnali Programmazione Sviluppo software Sviluppo web Sviluppo sistemi integrati Inoltre l'informatica può essere coniugata ad altre discipline per dare vita a branche multidisciplinari comead esempio bioinformatica , chimica computazionale , robotica , computer grafica e musicologia computazionale.

Storia dell'informatica e nascita del calcolatore

Perché si possa arrivare all'informatica come la intendiamo oggi è stato necessario sviluppare parallelamente due diversi aspetti: quello tecnologico e quello filosofico (in particolare logico- matematico). La serie di eventi, idee e scoperte che culmina con i moderni calcolatori ha quindi una moltitudine di protagonisti, disseminati in un arco temporale di almeno 4000 anni, con molte storie parallele. Per quanto il racconto possa essere avvincente e ricco di colpi di scena, non è questa la sede per una esposizione esaustiva. Ci si limiterà pertanto a citare solo alcuni degli aspetti cruciali: quelli più funzionali alla comprensione del pensiero informatico e del funzionamento del calcolatore. Il termine calcolatore designa genericamente un sistema di elaborazione dati, nato in forma meccanica, sviluppatosi in forma analogica e giunto poi alla forma digitale.

Generazione 0: I calcolatori meccanici Il più antico strumento di calcolo fu l’abaco, in uso già 4000 anni fa in Cina. Dopo di esso molte furono le scoperte in questo ambito, ma la maggior parte di esse (come ad esempio la pascalina ideata nel 1642 da Blaise Pascal) non vennero mai realizzate. Nel 1702, Gottfried Wilhelm Leibniz sviluppò la logica come disciplina matematica e formale, con i suoi scritti sul sistema numerico binario. Nel suo sistema, l'uno e lo zero rappresentano i valori vero e falso. Questo non ebbe un effetto immediato, ma fu decisivo nel secolo successivo. I primi veri progenitori dell’elaboratore moderno videro la luce agli inizi del XIX secolo. Nel 1804 Joseph Marie Jacquard introdusse una nuova tecnologia per i telai in grado di controllare il movimento di aghi, filo e tessuto attraverso schede perforate, automatizzando così la procedura di tessitura. A metà del XIX secolo, Charles Babbage elaborò una macchina di calcolo in grado di compiere operazioni aritmetiche, ma non fu mai realizzata. Fu Ada Lovelace (considerata oggi la prima programmatrice della storia), ad accorgersi delle vere potenzialità della macchina di Babbage: sebbene fosse stata progettata per svolgere solo calcoli matematici, Ada riconobbe la possibilità di programmare la macchina per altri fini. In questa versatilità risiede la principale differenza tra una calcolatrice tradizionale e un calcolatore. Nel 1854, le idee di Leibniz vennero riprese da George Boole, che pubblica la propria algebra booleana , creando un sistema nel quale è possibile trattare ogni relazione logica attraverso l'utilizzo di formule algebriche. Le operazioni (come l'addizione, la sottrazione e la moltiplicazione) vengono sostituite da operazioni logiche con valori di congiunzione, disgiunzione e negazione utilizzando solamente numeri binari (ossia costituiti dalle sole cifre 0 e 1). Alla fine del XIX secolo, Herman Hollerith, un funzionario statunitense dell’ufficio per il censimento, sviluppò una macchina tabulatrice, sempre a schede perforate, per automatizzare le operazioni di censimento. Il successo e la richiesta di queste macchine fu tale che nel 1896 Hollerith fondò la Tabulating Machine Company, che nel 1924 divenne la International Business Machine (IBM). Tra gli antenati degli anni '30 del calcolatore, figura il Memex, macchina immaginaria progettata da Vannevar Bush. L’idea era quella di un sistema di archiviazione di dati utilizzato a scopi personali. Il dispositivo era descritto come una scrivania dotata di schermi traslucidi, una tastiera, un set di pulsanti e delle leve. Il Memex avrebbe reso possibile la creazione da parte dell'utente di collegamenti tra foto e documenti, e per questo motivo viene oggi ricordato come primo supporto per l'approccio all' ipertesto. Sempre nella prima metà degli anni '30, Kurt Gödel enunciò i suoi famosi teoremi di incompletezza. Oltre a rappresentare un caposaldo nel campo della logica matematica, con importanti implicazioni di ordine filosofico, questi fecero da base per il lavoro di Alan Turing, matematico, logico e crittoanalista inglese. Egli formalizzò un modello di calcolatore universale (la Macchina di Turing, mai costruita realmente), dimostrò come ogni funzione calcolabile si possa eseguire attraverso un algoritmo installato su una Macchina di Turing, ma dimostrò anche come per alcuni algoritmi non sia possibile sapere a priori se siano eseguibili in un tempo finito o infinito. Tra le implicazioni più importanti della Macchina di Turing si sottolinea come essa introduca una netta separazione tra la macchina fisica da una parte , e i dati e gli algoritmi astratti dall'altra. Le basi teoriche per lo sviluppo dei moderni calcolatori sono ora mature.

L'evoluzione del calcolatore

Generazione 1: I tubi a vuoto (valvole) Nel 1939, fu la volta del matematico e fisico John Vincent Atanasoff e del suo allievo Clifford Berry i quali costruirono l’Atanasoff Berry Computer, meglio noto come ABC. Si tratta del primo calcolatore digitale totalmente elettronico, ma mai brevettato.

Nella sua accezione più ampia, è possibile includere nella categoria degli algoritmi anche una semplice ricetta di cucina oppure il libretto di istruzioni di un elettrodomestico. Entrambi infatti sono una successione di istruzioni precise per la realizzazione di un risultato. Il termine algoritmo deriva dal nome del matematico Muhammad ibn Musa al-Khuwarizmi. Le proprietà fondamentali di un algoritmo sono:

  • finitezza delle operazioni da svolgere;
  • non ambiguità del linguaggio in cui sono scritte le operazioni da effettuare. Questo significa che le istruzioni devono essere scritte in un linguaggio codificato e formale;
  • universalità della procedura algoritmica, nel senso che essa deve valere per tutti i problemi dello stesso genere;
  • completezza delle operazioni, nel senso che ogni operazione necessaria allo svolgimento del compito deve essere explicitamente dichiarata. Nonostante sia più semplice affrontare algoritmicamente calcoli matematici, o geometrici, è possibile affrontare nello stesso modo qualsiasi problema, a patto che se ne possa fornirne una definizione formalmente corretta e non ambigua. Questo esercizio di formalizzazione trascende l'uso del computer e aiuta gli individui ad affrontare i problemi in modo astratto. Va notato che ogni problema può essere affrontato e descritto in molti modi diversi; quindi non esiste un unico algoritmo per la risoluzione di un problema. Questo significa che lo sviluppo di algoritmi è un'attività che richiede, tra le altre cose, creatività e ingegno. A tal proposito, vale la pena citare una famosa battuta di Bill Gates (co-fondatore della Microsoft): " Sceglierò sempre un pigro per fare un lavoro difficile perché troverà il modo più facile per farlo ". Si sottolinea inoltre come l'efficacia e la complessità di un algoritmo dipendano anche dall'organizzazione dei dati a disposizione dell'algoritmo per la risoluzione del problema. Esistono molti modi di organizzare i dati, ognuno dei quali ha pregi e difetti. In genere gli aspetti più rilevanti di cui tenere conto sono:
  • la quantità di spazio occupato;
  • la velocità con cui è possibile reperire un determinato dato;
  • la facilità con cui si possono aggiungere, modificare o eliminare dati. Infine, un programma può essere definito come un algoritmo scritto in un linguaggio comprensibile al calcolatore, che utilizza dati organizzati secondo una determinata strategia ed è vincolato alle risorse disponibili e alle condizioni al contorno del calcolatore sul quale il programma viene eseguito.

Contenuti B

Introduzione alla gestione dell’informazione e dei dati

Il reperimento e la gestione di dati sono processi comuni, presenti in numerose attività che svolgiamo quotidianamente, come ad esempio, la consultazione del catalogo di una biblioteca, l’esplorazione di un portale web cinematografico contenente recensioni di pellicole, la stampa degli esami attraverso il sistema informativo di un ateneo, o ancora il versamento di una somma su un conto corrente. In tutte queste attività, siamo interessati a reperire le informazioni che soddisfano le nostre specifiche esigenze in un preciso momento. Ad esempio, possiamo essere interessati a reperire le informazioni disponibili su uno specifico libro di cui conosciamo l’autore, oppure le informazioni sui film realizzati da un certo regista. In un ulteriore scenario di esempio, quando ci presentiamo allo sportello bancario per effettuare un’operazione di versamento, l’operatore della filiale inserisce il nostro numero di conto corrente ed è

così in grado di reperire i dati relativi al nostro credito e registrare l’avvenuta operazione di versamento all’interno del sistema informativo della banca aggiornando il nostro saldo in tempo reale. È chiaro che in tutti questi scenari, c’è un sistema informatico in grado di memorizzare e gestire le informazioni di interesse (trasformandole in dati), rendendo possibile le operazioni di reperimento e gestione (inserimento, aggiornamento, cancellazione) delle informazioni di interesse in un dato momento.

Dato e informazione

Nella precedente scheda, abbiamo utilizzato sia il termine dato sia il termine informazione. Per dato si intende la descrizione di una caratteristica della realtà costituita da simboli che ne garantiscano la comprensione e registrata su un supporto che ne garantisca la conservazione. Se prendiamo in considerazione il valore 2005 scritto su un foglio, questo è un dato. Siamo infatti in grado di leggere e comprendere il valore 2005 e il foglio ne garantisce la conservazione. Tuttavia, non siamo in grado di comprendere il significato del valore 2005, ovvero che cosa rappresenti questo insieme di simboli. Per informazione si intende l’interpretazione di un dato, in grado di arricchire la nostra conoscenza. Se il valore 2005 è associato a una descrizione del tipo “Titolo: Be Cool – anno di produzione: 2005”, allora siamo in presenza di una informazione, ovvero di un dato interpretato. Al dato è associato un contesto interpretativo che consente di comprendere il significato del dato rispetto alla sua funzione descrittiva di una certa realtà. Nel nostro caso, il dato rappresenta l’anno di produzione di un certo film. I sistemi informatici per la gestione dei dati normalmente sono in grado di memorizzare i dati nel tempo e di fornire un contesto interpretativo ai dati facendoli diventare informazioni utili per gli utenti.

Organizzare i dati in fogli di calcolo

Gli strumenti di gestione delle informazioni consentono di organizzare e memorizzare i dati in modo efficace rispetto all’impiego che se ne deve fare. L’esempio di uno strumento software tipicamente usato dagli utenti per l’organizzazione dei dati è il foglio di calcolo, di cui Microsoft Office Excel è un esempio molto diffuso. Si consideri un insieme di dati relativi a film, ciascuno descritto mediante le proprie caratteristiche come ad esempio il titolo, il regista e l’anno di produzione. Tipicamente, il foglio di calcolo che memorizza questo insieme di dati è organizzato in modo tale da presentare le caratteristiche dei film nelle colonne e i valori associati alle caratteristiche nelle righe. Leggendo i valori colonna per colonna su una specifica riga si osserva la descrizione di un certo film attraverso le sue caratteristiche (vedi Figura B1.1). Figura 1.1: Foglio di calcolo contenente un insieme di film

avere il dubbio di quale sia la nazionalità corretta del nostro regista quando il medesimo nominativo è associato a individui diversi e cioè compare in righe diverse. Questa assunzione è evidentemente molto pericolosa perché i casi di omonimia fra individui sono tutt’altro che rari e questo rischia di compromettere la correttezza delle informazioni reperite dovuta a un errato collegamento fra le righe appartenenti ai fogli di calcolo diversi.

I vantaggi delle basi di dati

Una base di dati è una soluzione pensata per organizzare e gestire dati in modo strutturato offrendo soluzioni appropriate per superare i limiti che tipicamente affliggono i dati memorizzati nei fogli di calcolo. Spesso, gli utenti che si avvicinano per la prima volta al mondo delle basi di dati si pongono alcuni interrogativi: “quale differenza c'è fra una base di dati e un foglio di calcolo?”, “quando è opportuno utilizzare una base di dati per memorizzare le informazioni di interesse?” e ancora “quando è meglio impiegare un foglio di calcolo?”. In verità il confronto fra basi di dati e fogli di calcolo è improprio: si tratta di due software con finalità molto diverse, accomunati soltanto dal fatto che entrambi memorizzano dati in strutture di forma tabellare. I fogli di calcolo consentono la memorizzazione dei dati in una griglia di celle in cui non esiste alcuna distinzione fra schema e istanza: l'organizzazione dei dati dipende dall'utente che predispone il foglio di calcolo in base alle sue necessità. La scelta di avere serie di dati omogenei disposti per riga o per colonna è una convenzione che facilita la lettura del foglio e l'inserimento di formule, ma non è obbligatoria e neppure suggerita in qualche modo dagli strumenti. Inoltre, i fogli di calcolo sono concepiti come strumenti di elaborazione e analisi dei dati, predisposti per l'inserimento di formule e funzioni di calcolo eventualmente complesse. La possibilità di correlare dati appartenenti a fogli di calcolo diversi esiste ma è scarsamente impiegata e di non facile utilizzo. Al contrario, in una base di dati, l'organizzazione dei dati è basata sul concetto di tabella nella quale sono ben distinte le nozioni di schema e istanza come caratteristiche essenziali e distintive, così come la possibilità di correlare fra loro i dati appartenenti a tabelle diverse. Questo favorisce la memorizzazione dei dati in modo da minimizzare le ridondanze e facilitare la gestione degli aggiornamenti nel corso del tempo.

Introduzione alle basi di dati

Consideriamo nuovamente gli esempi di consultazione del catalogo di una biblioteca, esplorazione di un portale web cinematografico, stampa degli esami universitari, e versamento di una somma su un conto corrente. In tutte queste attività, i dati di interesse (ovvero i dati relativi a libri, film, esami e conti correnti) sono reperiti all’occorrenza estraendoli da un archivio elettronico dove sono memorizzati e conservati nel tempo. Una base di dati (o database in lingua Inglese) è una collezione di dati coerenti creata allo scopo specifico di rappresentare e memorizzare adeguatamente le informazioni di una realtà d’interesse. Come anticipato nella precedente scheda, un database memorizza i dati in modo strutturato, cioè organizzati secondo schemi e tabelle dotati di una precisa e rigida definizione. Ad esempio, la base di dati relativa al portale web cinematografico conterrà tabelle per memorizzare dati su film, attori, registi e così via. Analogamente, la base di dati relativa al sistema informativo universitario conterrà tabelle con dati su studenti, corsi di laurea, esami, docenti e così via.

Un’ulteriore caratteristica fondamentale delle basi di dati è quella di semplificare il continuo aggiornamento dei dati memorizzati, al fine di fornire dati sempre attuali agli utenti e alle applicazioni che ne hanno necessità per lo svolgimento delle loro specifiche attività. Ad esempio, ogni volta che uno studente supera un esame, questa nuova informazione viene registrata nella base di dati universitaria. In questo modo, i certificati rilasciati allo studente conterranno l’elenco aggiornato degli esami sostenuti fino a quel momento. Per eseguire il reperimento dei dati di interesse da una base di dati, è possibile fare uso di appositi programmi software che mettono a disposizione strumenti, spesso di tipo visuale, per guidare l’utente nella corretta formulazione delle sue specifiche richieste.

CoI sistemi di gestione di basi di dati (DBMS)

Un sistema di gestione di basi di dati ( DBMS , database management system ) è un sistema software realizzato per supportare la definizione e la manipolazione della base di dati da parte di differenti tipologie di utenti, specialistici e non. Di conseguenza ogni utente può accedere al DBMS, a patto che abbia gli opportuni diritti di lettura ed eventualmente scrittura (cioè modifica) sul database. In particolare, un DBMS offre le seguenti funzionalità:

  • Fornisce agli utenti una visione di alto livello dei dati contenuti nella base di dati attraverso l’uso di un modello dei dati, nascondendo i dettagli di basso livello relativi alla memorizzazione fisica dei dati.
  • Fornisce supporto per la condivisione della base di dati da parte di molteplici utenti e applicazioni diverse, garantendo la corretta gestione degli accessi anche contemporanei ai dati da parte di utenti diversi.
  • Garantisce la sicurezza dei dati, ovvero che solamente utenti autorizzati abbiano accesso alla base di dati, compiendo operazioni autorizzate.
  • Fornisce la possibilità di definire una visione personalizzata dei dati per le diverse tipologie di utenti/applicazioni, contenente il sottoinsieme di dati di utilità per quell’utente/applicazione.
  • Può integrare le funzionalità di salvataggio e ripristino (backup e recovery) dei dati contenuti nella base di dati, per garantire che non ci siano perdite di dati anche in caso di guasti e malfunzionamenti del software o dei dispositivi hardware del sistema di elaborazione.
  • È in grado di assicurare la consistenza dei dati contenuti nella base di dati, facendo in modo che vengano rispettati i vincoli di integrità sui dati stessi. Negli anni ‘80/90 si assiste all'affermazione della tecnologia dei DBMS relazionali, che sono diventati uno standard di mercato e una componente essenziale per la gestione delle informazioni nell’ambito di organizzazioni pubbliche e private. Esistono numerosi esempi di DBMS relazionali, tra i quali vale la pena menzionare Oracle, MySQL, Microsoft SQL Server, PostgreSQL, MariaDB.

Il modello relazionale

Come esempio di modello dei dati per basi di dati, consideriamo il modello relazionale introdotto nel 1970 da Ted Codd, che rappresenta il modello dei dati sul quale si basa la maggior parte dei DBMS oggi disponibili. In un modello relazionale i dati sono memorizzati in tabelle , dette relazioni , composte da un certo numero di colonne, dette attributi , e da un certo numero di righe, dette tuple. Ad esempio, la tabella seguente, denominata regista, rappresenta un insieme di registi di film. Figura 3.1 : Tabella dei registi Ogni riga della tabella rappresenta un singolo regista. Osserviamo inoltre che in una tabella di una base di dati relazionale, tutti i valori presenti in una colonna appartengono allo stesso tipo di dato o dominio. Ad esempio, il nome di un regista è un valore di tipo testuale, come anche il cognome e la nazione. In generale, le righe di una tabella di una base di dati relazionale rappresentano specifici oggetti o legami fra oggetti del mondo reale; gli attributi definiti per la tabella forniscono l’interpretazione dei dati che compaiono nelle varie righe.

Basi di dati relazionali

Una base di dati relazionale è quindi una collezione di tabelle che rappresentano gli oggetti e le associazioni fra oggetti che caratterizzano la realtà di interesse. Osserviamo che i legami fra i dati di tabelle diverse vengono espressi per mezzo di valori comuni presenti nelle tuple di tali tabelle. Questi valori dovranno per forza essere univoci in entrambe le tabelle. Un esempio, è costituito dalla seguente base di dati che descrive registi e film e l'associazione che sussiste fra i film e i corrispondenti registi. Figura 3.2: Esempio di base di dati relazionale Come si può vedere dalla Figura 4.2 , nella relazione film, un film fa riferimento al relativo regista attraverso il valore dell'attributo id_regista, che è il codice del regista del film e che corrisponde a uno dei codici contenuti nella tabella regista.

Schema di una base di dati relazionale

Vediamo ora come è definito lo schema di una base di dati relazionale. Per prima cosa, introduciamo la nozione di schema di relazione , che è costituito dal nome r della relazione e dall'insieme degli attributi che costituiscono la relazione. Ad esempio, lo schema di relazione della relazione "regista" è definito come segue

Figura 3.5: Esempio di istanza di una base di dati relazionale

Vincoli del modello relazionale

Gli attributi di una base di dati possono avere differenti vincoli che possono essere inseriti in fase di progettazione. Questi vincoli obbligano a seguire un determinato criterio di inserimento o forniscono delle regole di inserimento per i valori degli attributi. Alcuni esempi di vincoli sono:

  • Not null : richiede di inserire un valore per l’attributo sul quale è impostato il vincolo. Ad esempio, nel caso della relazione regista, specificare un vincolo not null sull’attributo cognome significa che non sarà possibile memorizzare una tupla nella relazione qualora essa sia priva di valore sull’attributo cognome.
  • Default : comporta l’inserimento di un valore predefinito nel caso in cui non sia stato specificato alcun valore per l’attributo in fase di inserimento o modifica. Ad esempio, nel caso della relazione attore, impostare il valore di default “USA” per l’attributo nazione significa che qualora si intenda memorizzare una tupla in questa relazione e qualora essa sia priva di valore sull’attributo nazione, il valore USA sarà inserito come valore dell’attributo per quella tupla.
  • Unique : richiede di inserire un valore univoco per l’attributo sul quale è impostato il vincolo. Questo significa che non sarà possibile avere due tuple della relazione con il medesimo valore per l’attributo definito unique. As esempio, nel caso della relazione film, specificare un vincolo unique sull’attributo titolo significa che non potranno essere memorizzate due pellicole distinte con il medesimo valore sull’attributo titolo.

Chiave primarie

Un concetto di fondamentale importanza nelle basi di dati relazionali è la nozione di chiave primaria ( primary key ) utilizzata per identificare in modo univoco ogni tupla di una tabella. Una chiave primaria può essere costituita da un singolo attributo oppure può essere composta da più attributi. Ogni tabella possiede una chiave primaria; in questo modo ogni tupla della tabella è univocamente riconoscibile. Facendo riferimento alla tabella regista del nostro esempio, id_regista è la chiave primaria della tabella, ovvero non possono essere memorizzate nella tabella regista due tuple distinte

con il medesimo valore per l’attributo id_regista. Un ulteriore esempio di chiave primaria è la coppia di attributi titolo, id_attore della tabella partecipazione. Questo significa che non possono essere memorizzate tuple distinte aventi la medesima coppia di valori per titolo e attore. Se un utente tentasse di inserire una tupla con un valore di chiave primaria già presente in una certa tabella, il sistema di gestione della base di dati, cioè il DBMS, impedirebbe l’inserimento e segnalerebbe un errore. L’utente dovrà modificare il valore della chiave primaria per poter concludere con successo l’inserimento della nuova tupla. In genere, la chiave primaria di una tabella è indicata sottolineando i nomi degli attributi che la costituiscono. Figura 3.6: Esempio di base di dati relazionale cinematografica con le relative chiavi primarie per ciascuna tabella

Chiavi esterne

Nel nostro esempio, le tuple delle tabelle film e regista sono legate fra loro tramite l'attributo id_regista, ovvero ogni singolo film fa riferimento per mezzo dell'attributo id_regista, alla tupla del suo corrispondente regista. Affinché la base di dati sia corretta, l'identificatore di regista presente all'interno di una tupla di film deve essere un valore già presente come valore di chiave primaria nella tabella dei registi. Se ciò non avvenisse, non sarebbe possibile associare ciascun film con il corrispondente regista qualora un utente volesse conoscere questa informazione relativamente a una pellicola di interesse. In altri termini, il regista di ciascun film deve essere presente nella base di dati. Per garantire che questo controllo sia effettuato dal DBMS, nelle basi di dati relazionali l'attributo id_regista viene dichiarato come chiave esterna nella tabella film, ovvero si richiede che i valori di questo attributo siano presenti come valori dell’attributo id_regista nella tabella regista.

utente. Ad esempio, nel nostro caso abbiamo la vista relativa agli attori americani e quella relativa agli attori francesi, rispettivamente. Alcuni DBMS, come ad esempio quelli mono- utente per la gestione di basi dati personali, possono non supportare il livello esterno, che è invece molto importante nel caso di DBMS che operano in ambienti multi-utente, tipici delle organizzazioni pubbliche e private. L'aspetto importante di questa architettura è che gli utenti formulano le loro richieste facendo riferimento allo schema logico oppure agli schemi esterni, quindi facendo riferimento a descrizioni di alto livello dei dati contenuti nella base di dati e non a una descrizione di basso livello in termini di file memorizzati su disco. Il DBMS tradurrà internamente le richieste di accesso formulate sugli schemi esterni oppure sullo schema logico in opportune richieste di accesso a file nelle strutture di memorizzazione per reperire i dati di interesse. Figura 3.8: Esempio dei diversi livelli di astrazione dei dati in un DBMS relazionale

Linguaggi per le basi di dati

I DBMS mettono a disposizione i seguenti linguaggi per definire e manipolare una base di dati:

  • Linguaggio di definizione dei dati o DDL (Data Definition Language), ovvero un linguaggio per la definizione dello schema logico e degli eventuali schemi esterni.
  • Linguaggio di manipolazione dei dati o DML (Data Manipulation Language), cioè un linguaggio per formulare estrazioni e modifiche sui dati (cioè, inserimenti, cancellazioni, modifiche) della base di dati. Spesso si indica con linguaggio di interrogazione (query language) il sottoinsieme delle istruzioni DML per l’estrazione di dati da una base di dati. Nei DBMS relazionali le funzionalità DDL e DML confluiscono in un unico linguaggio denominato SQL (Structured Query Language),, che è uno standard per i DBMS relazionali. Analizzando i prodotti DBMS sul mercato, si notano differenze, a volte anche sostanziali, tra lo standard e le implementazioni del linguaggio SQL offerte dai diversi DBMS. Molto spesso, l’aderenza allo standard è garantita solo per i costrutti consolidati del linguaggio, mentre ogni sistema realizza le funzioni evolute di SQL in modo fortemente dipendente dall’implementazione.

Creazione di una base di dati

Vogliamo ora illustrare il procedimento che consente la creazione di una base di dati relazionale (db) con l’ausilio di LibreOffice Base .Pur non essendo un vero e proprio DBMS e pur non offrendo tutte le funzionalità tipiche di un DBMS, LibreOffice Base consente la creazione di una base di dati relazionale e mette a disposizione funzionalità per l'inserimento di tuple e la loro conseguente estrazione in base ai criteri di selezione di volta in volta definiti dall’utente. Quindi, si tratta di uno strumento valido e facile da reperire per un’esperienza pratica di lavoro con le basi di dati relazionali. LibreOffice Base è uno strumento software libero e open source appartenente alla suite per ufficio LibreOffice. Analogamente agli altri pacchetti della suite LibreOffice, Base è supportato su più piattaforme tra cui Microsoft Windows, macOS e Linux. Di seguito mostreremo la fase di definizione della base di dati cinematografica di Figura 3.x. Una volta avviato il programma, andiamo nel menù File > Nuovo e selezioniamo la voce Database. Chiamiamo la nostra base di dati db_cinema. A questo punto compare una finestra che rappresenta la nostra base di dati per mezzo della quale sarà possibile agire sulla base di dati db_cinema creando, modificando o cancellando tabelle ( Figura 4.1 ).

poi a creare le tabelle film(utilizzando l’attributo titolo come chiave primaria), attore (id_attore chiave primaria) e partecipazione (la coppia titolo, id_attore è utilizzata come chiave primaria). Figura 4.2 : Struttura di una tabella

Definizione delle associazioni

Creata la struttura delle tabelle, si può procedere a stabilire le associazioni che intercorrono tra loro, ricordando che le associazioni nelle basi di dati relazionali vengono espresse mediante valori di attributi opportuni. Andiamo quindi a selezionare la voce Relazioni nel menù Strumenti. Scegliamo ora le tabelle da collegare ed eseguiamo fisicamente l’associazione cliccando sull’attributo della nostra prima tabella e trascinandolo fin sopra l’attributo corrispondente della seconda tabella.

Figura 4.3 : Associazioni tra le tabelle del database db_cinema

Popolamento della base di dati – 1

Una volta stabiliti i collegamenti tra le tabelle, si può procedere con l’inserimento dei dati, ovvero con il popolamento della base di dati. Per fare ciò, torniamo nella finestra che rappresenta la nostra base di dati (quella con intestazione db_cinema) e clicchiamo su una delle tabelle precedentemente create. Comparirà una struttura in cui ogni colonna rappresenta uno degli attributi definiti per la tabella, mentre ogni riga dovrà contenere i dati che andremo ora a inserire. A partire dalla prima riga della tabella andremo ad inserire i nostri dati in ogni colonna e al termine dell’operazione ci sposteremo sulla riga successiva iterando il processo fino a quando non avremo completato la fase di inserimento dati. Il risultato finale sarà analogo a quello mostrato in Figura 4.4.