TESINA ESAME DI STATO 2009/10

 

Alunno : Capasso Domenico

 

"Sviluppo ed innovazioni tecnologiche : dalla seconda rivoluzione industriale ai giorni nostri"

 

Home

Storia

Italiano

Sistemi

Informatica

Elettronica

Inglese

Matematica

INFORMATICA



I database : dagli archivi cartacei del secolo scorso agli attuali DBMS






  I Database




Per aprire il database in MySQL clicca qui
Per aprire il database in Access clicca qui
I Database

Introduzione
Senza dubbio, l’informatica ha cambiato drasticamente la vita a coloro che hanno avuto modo di approcciarsi all’utilizzo del calcolatore elettronico. Non a caso, i primi che ebbero il piacere di iniziare ad utilizzare il “computer” sono oggi le persone che hanno reso il mondo dell’informatica un mondo multimediale, sconfinato, incredibilmente avanzato e anche ormai alla portata di tutti, senza la necessità di possedere una qualifica o una laurea in informatica. Nomi come Bill Gates, fondatore della Microsoft Corporation, Steve Job, co-fondatore della Apple Computer Inc., o ancora Linus Torvalds, ideatore del sistema operativo Linux, sono oggi le icone dell’informatica moderna, ed è grazie a loro se oggi ci troviamo ad utilizzare il personal computer a scopi una volta impensabili.



Ma non è solo la multimedialità, l’hobby o il vero lavoro della programmazione o qualsiasi altra funzione che ha reso il computer un mezzo attraverso la quale con gli anni le persone hanno iniziato a lavorare e rendersi la vita meno faticosa e più veloce.

Lo sviluppo informatico nel campo lavorativo ha avuto una grande importanza soprattutto nelle aziende, in cui il problema principale era la gestione e la manutenzione degli archivi, sempre più grandi loro e sempre meno spazio a disposizione per la loro sistemazione. E così l’informatica ha contribuito tanto anche qui, nel mondo degli archivi e dei Database.

Torna su...

Storia dei database : dal cartaceo al digitale
Probabilmente il più celebre (ed ancora tutt' oggi utilizzato) antenato dei database relazionali odierni può essere identificato con la sana e vecchia agenda telefonica. In effetti se guardiamo come e' fatta un’agenda scopriremo una notevole affinità con i sui parenti moderni più tecnologici. Infatti è organizzata tramite un indice (la serie di linguette sul fianco che ci permette di accedere più rapidamente a tutti i nominativi che iniziano con una certa lettera) che gestisce una tabella composta da colonne che identificano il tipo di dato sotto riportato (nome, numero di telefono, a volte indirizzo) all' interno delle registrazioni (chiamate anche con il termine inglese "record") che , pur differendo l' una dall' altra per i dati riportati al loro interno hanno tutti la stessa “struttura", cioè riportano le stesse informazioni nello stesso modo.

Il primo tentativo informatico per riversare questo tipo di oggetti in un qualcosa che potesse essere trattato dalle loro “grosse calcolatrici” corrisponde al nome di CSV (Comma Separated Value), cioè un semplicissimo file di testo dove ogni informazione è separata dalle altre tramite un carattere particolare, ad esempio una virgola, ed ogni record è separato dagli altri tramite un' altro carattere, normalmente il carattere di "a capo". Ovviamente questo sistema era decisamente progettuale, in quanto comunque per trovare all'interno di un file del genere una informazione specifica era spesso necessario scorrerselo quasi tutto ed in modo poco pratico per trovare quanto si ricercava.



La logica evoluzione del CSV fu l'ISAM (Indexed Sequential Access Method), che differiva dal CSV solo per il fatto che i record non erano inseriti casualmente (cioè in ordine di inserimento), bensì veniva definito un ordinamento, come nel caso della nostra agenda l'ordine alfabetico sui cognomi, che veniva sfruttato sia in scrittura sia in lettura, permettendo in questo modo di abbreviare incredibilmente i tempi di ricerca di una data informazione. Per riuscire poi a gestire ancora meglio il tutto si crearono anche delle specie di "archivi sussidiari", detti indici, in cui veniva registrato solo l'ordine dei vari record senza tutte le altre informazioni, il che permetteva di andare a svolgere le proprie ricerche in questo "riassunto" in modo molto più veloce, per poi ricercare nel database completo per leggere tutto il record una volta che si veniva a conoscenza della sua posizione.

A questo punto parecchi matematici di notevole ingegno si misero a cercare metodi per rendere ancora più veloce l'accesso alle informazioni che ci servivano sfornando sistemi di ricerca, sviluppando così tutti quei sistemi oggi definiti "Database non relazionali".

Con l'evoluzione di questi ultimi i database ebbero una notevole diffusione e quindi iniziarono a nascere richieste di affidabilità e di prestazioni sempre maggiori, con uno sviluppo teorico notevole dietro ad essi, che permetteva a questo punto di affrontare diversi problemi, come la ridondanza dei dati, l’indipendenza della piattaforma, la sicurezza delle transazioni e la possibilità di gestire correttamente un ambiente multiutente . Alcuni di questi problemi venivano egregiamente affrontati dai database non relazionali, ma raramente tutti insieme ed in maniera affidabile.

Si pensò allora ad un modo per far sì che questi problemi potessero essere “abbattuti” tutti insieme e nello stesso modo. Si passò così dai “Database non relazionali”, ovvero archivi senza nessi logici fra di loro, ai “Database relazionali”, cioè dei database in cui i dati vengono memorizzati in una serie di tabelle e le informazioni sono collegati le une alle altre mediante alcuni identificatori unici (o chiavi).

Ed è stata proprio questa la nuova frontiera dei Database per l’informatica, un insieme di dati appartenenti a più archivi collegati tra di loro in un modo logico. Il mondo dei Database informatici conosce così un nuovo tipo di DBMS (Data Base Management System), chiamato RDBMS, dove la “R” sta per Relational, ovvero “Relazionale”.

Torna su...

Struttura di un database
Con il termine “basi di dati” (in inglese database), si indicano in informatica collezioni di archivi di dati ben organizzati e ben strutturati, in modo che possano costituire una base di lavoro per diversi utenti con diversi programmi. Affinché un database sia considerato ben organizzato e ben strutturato, deve essere garantita la consistenza degli archivi al suo interno, cioè i dati presenti negli archivi devono essere significativi ed effettivamente utilizzabili nelle varie applicazioni; si deve inoltre garantire la sicurezza di un database, e quindi impedire che utenti non autorizzati danneggino gli archivi e quindi l’intero sistema di dati in modo volontario o anche non volontario.

Negli archivi dei database, vanno quindi inserite delle informazioni, ovvero dei record: i record sono in pratica le righe di una tabella, dette anche “tuple”, ed ogni record è composto da più campi; ogni campo contiene un’informazione, detta “attributo”. Ogni attributo ha tre caratteristiche, che sono: formato, ovvero il tipo di valori che assume (carattere, numerico, data/ora); dimensione, ovvero la quantità massima di caratteri o cifre inseribili; infine, l’opzionalità, che indica se l’inserimento di un valore è obbligatorio o meno. Infine, bisogna definire altri due parametri importanti: “entità” e “associazione”. Il primo è un soggetto reale che si vuole rappresentare da un punto di vista concettuale, avente un significato anche quando viene considerato in modo isolato, ed ogni elemento appartenente all’entità è detto “istanza”; il secondo è un legame che stabilisce un’interazione tra le entità.



Al fine di creare un database consistente e ben organizzato, si devono tener conto di alcune regole, che sono i “requisiti fondamentali” che caratterizzano un modello relazionale (cioè a tabelle), che sono: tutti i record (riga) devono avere lo stesso numero di colonne; gli attributi devono rappresentare informazioni elementari e quindi non ulteriormente scomponibili; i vari valori assunti dai campi devono essere omogenei tra loro, e quindi in ogni colonna non si possono trovare valori non omogenei tra loro; ogni riga è diversa dalle altre, e quindi si devono differenziare di almeno un attributo che identifica univocamente il record, che svolge quindi la funzione di “chiave primaria”; infine, le righe sono presenti nella tabella secondo un ordine non prefissato, e quindi non è importante l’ordine secondo cui le righe sono sistemate nella tabella.

Oltre al modello relazionale, esistono altri due modelli con cui si può definire un database, che sono: “modello gerarchico” e “modello reticolare”. Il modello gerarchico prevede che i dati siano organizzati secondo una struttura ad albero, mentre il modello reticolare è uno schema a grafo orientato, dove sono consentite anche associazioni tra entità che stanno in basso, e non solo dall’alto verso il basso come avviene per il modello gerarchico.

Come già detto, il database è un modello della realtà considerata; nel rappresentare gli aspetti significativi della porzione di mondo reale che si vuole modellare devono essere identificate le entità interessate, la loro articolazione e le associazioni tra le entità considerate. Questo modello, costruito indipendentemente dalle modalità con cui verrà realizzata la base di dati, è detto “modello concettuale”, che è quindi il modello iniziale, reale e senza un vero legame con gli archivi elettronici. Per la progettazione concettuale, il modello più diffuso è il “modello Entità/Associazioni”, indicato anche come modello E/R dall’inglese Entity/Relationship; per costruire questo modello E/R occorre individuare gli oggetti che compongono una realtà considerata, che sono le “entità”, gli “attributi” di un’entità, ed infine le “associazioni” che sono le correlazioni logiche delle entità. Tutti e tre questi oggetti vengono messi insieme e rappresentati nel diagramma E/R.

Vi possono esistere diversi tipi di associazione, ovvero di legami tra due entità; si parla di “molteplicità di un’associazione” per indicare il numero di possibili istanze di un’entità che viene messo in corrispondenza con un’istanza dell’altra entità che partecipa all’associazione. Il numero minimo e massimo di possibili istanze è rappresentato da una coppia di valori separati da punti, come ad esempio 1..1, 0..1, 1..N. Il primo valore della coppia assume in genere o il valore 0 o il valore 1; lo 0 indica che la partecipazione è “facoltativa”, mentre il valore 1 indica che la partecipazione è “obbligatoria”. Il secondo valore della coppia, che definisce la “cardinalità”della partecipazione all’associazione, assume in genere o il valore 1 o il valore N; il valore 1 indica una sola partecipazione all’associazione, mentre il valore N ne indica molte.

La cardinalità può quindi essere “a uno” o “a molti”, e quindi le associazioni tra due entità si classificano nei tipi: associazione “uno a uno” (biunivoca) indicata con “1 : 1”; associazione “uno a molti” (semplice) indicata con “1 : N”; associazione “molti a molti” (complessa) indicata con “N : N”. L’associazione “1 : 1” si dice tale quando ogni istanza della prima entità si deve associare ad una sola istanza della seconda e viceversa. L’associazione “1 : N”, invece, si dice tale quando ogni istanza della prima entità si può associare a una o più istanze della seconda entità, mentre ad ogni istanza della seconda entità si deve associare una sola istanza della prima. L’associazione “N : N”, infine, si dice tale se ad ogni istanza della prima entità si possono associare una o più istanze della seconda entità e ad ogni istanza della seconda entità si possono associare una o più istanze della prima.



Definito il “modello concettuale”, ovvero il modello che rappresenta la realtà dei dati e le relazioni tra essi attraverso uno schema (diagramma E/R), si può passare a definire il “modello logico”, cioè il modello che rappresenta il modo attraverso il quale i dati sono organizzati negli archivi elettronici; in altre parole si può definire la struttura degli archivi adatti per organizzare i dati. Per ricavare quindi le tabelle del modello logico dei dati, bisogna applicare al modello E/R alcune regole, dette “regole di derivazione”, che sono:

1. ogni entità diventa una relazione;
2. ogni attributo di un’entità diventa un attributo della relazione, ovvero il nome di una colonna di una tabella;
3. ogni attributo della relazione eredita le caratteristiche dell’attributo dell’entità da cui deriva;
4. l’identificatore univoco di un’entità diventa la chiave primaria della relazione derivata;
5. l’associazione uno a uno del modello concettuale viene tradotta in un’unica relazione che contiene gli attributi della prima e della seconda entità;
6. l’associazione uno a molti del modello concettuale viene tradotta aggiungendo agli attributi dell’entità a molti la chiave dell’entità a uno e gli eventuali attributi dell’associazione;
7. l’associazione molti a molti del modello concettuale viene tradotta creando una terza relazione contenente le chiavi delle due entità e gli eventuali attributi dell’associazione.

Le “chiavi esterne”, ovvero le chiavi primarie di una tabella che passano in un’altra tabella per le regole di derivazione, sono dette anche “foreign key”.



Una volta applicate le varie regole di derivazione, si ottiene il modello logico dei dati. Una volta creato questo modello, si può passare alle “operazioni relazionali”, che in sostanza sono le operazioni che consentono di effettuare le “interrogazioni” (query) alla base di dati per ottenere le informazioni desiderate estraendo dalla tabella principale una nuova sottotabella, oppure combinando tra loro due o più tabelle e generandone così delle nuove. Le operazioni principali del modello relazionale sono: “selezione”, “proiezione” e “congiunzione”.



La selezione genera una nuova relazione costituita solo dalle righe della relazione di partenza che soddisfano una determinata condizione; vengono cioè selezionate le righe con i valori degli attributi corrispondenti alla condizione prefissata. La tabella che ne deriva possiede tutte le colonne della tabella di partenza, e quindi ha lo stesso “grado”; essa però ha un numero di righe minore della tabella di partenza, e quindi la “cardinalità” è minore.



La proiezione genera una nuova tabella estraendo dalla tabella iniziale solo alcune colonne. La nuova tabella avrà quindi un grado minore della tabella di partenza, ma una cardinalità uguale.



La congiunzione (join), infine, combina due tabelle aventi uno o più attributi in comune, generando così una nuova tabella le cui righe contengono sia gli attributi della prima che della seconda tabella. E’ questo il caso del “join interno”. Il grado della nuova tabella sarà uguale alla somma dei gradi delle due tabelle meno il numero degli attributi in comune, dato che essi compaiono una sola volta. La cardinalità, invece, della nuova tabella non è prevedibile a priori.

Ma esiste anche un join che restituisce le righe dell’una e dell’altra tabella anche se non sono presenti valori uguali; è questo il caso del “join esterno”. Vi sono tre tipi di join esterno: il “left join”, il “right join” ed il “full join”. Il left join si ha quando nella nuova tabella vi sono comunque tutte le righe della prima tabella congiunte alle righe della seconda solo dove si trovano valori corrispondenti per gli attributi comuni. Il right join si ha quando vi sono tutte le righe della seconda tabella congiunte con le righe della prima solo dove si trovano valori corrispondenti per gli attributi comuni. Il full join, invece, combina il left join con il right join includendo le righe di entrambe le tabelle ma senza ripeterle più volte.

 


Un qualcosa che all’interno dei database và sempre evitata è la “ridondanza”, non solo perché viene sprecato spazio su disco inutilmente, ma soprattutto per le possibili “anomalie” che si possono verificare durante il trattamento dei file. Vi sono vari tipi di anomalie, che sono: “anomalia di aggiornamento”, che si ha quando l’aggiornamento avviene solo in alcune delle righe interessate, rendendo i dati memorizzati inconsistenti; “anomalia di cancellazione”, che si ha quando, cancellando alcuni dati, se ne cancellano altri involontariamente dalla volontà dell’utente; “anomalia di inserimento”, quando inserendo un nuovo dato possono venire a mancare determinate informazioni che lo riguardano.

Per evitare queste ridondanze ed anomalie che tendono a rendere inconsistente un database, si attua la “normalizzazione” dei dati. I principali tipi di normalizzazione sono tre, e sono: prima, seconda e terza forma normale, abbreviati in 1FN, 2FN e 3FN.

Una relazione è in prima forma normale (1FN) quando rispetta i requisiti fondamentali del modello relazionale, ovvero quando tutte le righe della tabella hanno lo stesso numero di colonne, quando gli attributi rappresentano informazioni elementari, quando i valori di una colonna sono dello stesso tipo, quando ogni riga è diversa da tutte le altre e quando l’ordine con il quale le righe sono inserite risulta irrilevante.

Una relazione è in seconda forma normale (2FN) quando è in prima forma normale e tutti i suoi attributi non-chiave, cioè gli attributi che non fanno parte della chiave primaria, dipendono dall’intera chiave; in pratica, non vi devono essere attributi che dipendono solo da una parte della chiave.

Una relazione è, infine, in terza forma normale (3FN) quando è in seconda forma normale e tutti gli attributi non-chiave dipendono direttamente dalla chiave primaria; in pratica, non vi devono essere attributi non-chiave che dipendono da altri attributi non-chiave.

Applicando quindi questi tipi di normalizzazione si rende un qualsiasi database non ridondante e senza anomalie. Il database risulterà, pertanto, “normalizzato”.

Torna su...

I Database Management System – DBMS
Per gestire quantità sempre maggiori di dati, tabelle e relazioni sono nati e si sono sviluppati nel campo dell’informatica i Database Management System, conosciuti anche come DBMS; un DBMS è il software che consente di costruire e gestire una base di dati, realizzandola su memoria di massa a partire da un progetto definito a livello concettuale e tradotto poi in un modello logico dei dati.

Il DBMS è quindi il “gestore” dei database, e deve essere in grado di soddisfare alcune richieste degli utenti, che sono:

1. Permettere la creazione di una nuova base di dati, definendo gli archivi che la compongono, la loro struttura, le relazioni esistenti tra essi ed i limiti di accesso ai dati; questo processo prende il nome di “linguaggio di definizione dei dati”, in inglese DDL (Data Definition Language).
2. Facilitare gli utenti nell’inserimento, nella cancellazione e nella modifica dei dati all’interno di un database; questo processo prende il nome di “linguaggio di manipolazione dei dati, in inglese DML (Data Manipulation Language).
3. Fare in modo che si possano estrarre informazioni dal database, interrogando la base di dati in base alle richieste dell’utente; questo processo prende il nome di “linguaggio di interrogazione”, in inglese QL (Query Language).

Oltre ad avere queste funzioni di linguaggio DDL, DML e QL, un DBMS deve anche fare in modo che non si verifichino problemi con l’utilizzo degli archivi; in pratica un DBMS per essere efficiente deve:

1. rendere semplice l’accesso ai dati,in modo che un utente non sprechi grandi quantità di tempo per il ritrovamento di un dato, e questo deve valere per tutte le basi di dati, indipendentemente dalla loro grandezza;
2. eliminare la ridondanza dei dati, cioè fare in modo che i dati contenuti negli archivi non compaiano più volte in modo superfluo;
3. eliminare l’inconsistenza dei dati, cioè un database non deve presentare campi uguali con valori diversi in archivi diversi;
4. garantire l’integrità dei dati, cioè i dati di un database devono essere sottoposti a controlli al fine di evitare anomalie causate dai programmi o dagli utenti;
5. fare in modo che più utenti possano utilizzare i dati di un database, rendendolo quindi un database multi-utente;
6. controllare che le operazioni svolte da utenti diversi in modo concorrente non interferiscano tra di loro;
7. garantire la sicurezza dei dati, tramite procedure di controllo poste sia a bloccare intrusioni o accessi non autorizzati ai dati contenuti nel database e sia per la protezione da guasti accidentali.

Un buon DBMS è in grado di soddisfare tutte queste richieste. Di seguito verranno illustrati due tra i più famosi DBMS, che sono MySQL e Microsoft Access.



Torna su...

MySQL
MySQL è un Relational Database Management System (RDBMS), cioè un sistema software DBMS per la gestione di basi di dati relazionali, ed utilizza come linguaggio l’SQL (Structured Query Language), ovvero linguaggio di interrogazioni strutturato.

Chiamato principalmente con il nome SEQUEL, questo linguaggio non procedurale fu sviluppato per la prima volta da IBM negli anni settanta, e nacque con l’intento di interrogare e gestire basi di dati mediante l'utilizzo di costrutti di programmazione denominati query.



Come per qualsiasi altro DBMS, anche MySQL mette a disposizione dell’utente specifici linguaggi che possano permettere di definire e creare un database, effettuare le varie operazioni di gestione dei dati, come l’inserimento, la cancellazione e la variazione dei record in una tabella ed infine di interrogare un database mediante le query. Quindi il software MySQL rispecchia questo requisito, mettendo a disposizione degli utenti le funzioni di DDL, DML e QL già definite in precedenza.

Per iniziare a creare e gestire database nel linguaggio SLQ bisogna per prima cosa “creare” il database; quindi, una volta avviato il programma MySQL ed inserita l’eventuale password, rendendo il client su cui si opera un server in locale (localhost), si inserisce il comando “CREATE DATABASE” seguito dal nome che si intende dare al nuovo database e dal simbolo “;”, utilizzato alla fine della stringa di codice per quasi tutti i comandi del linguaggio SQL. Per visualizzare l’insieme dei database già creati in precedenza bisogna inserire il comando “SHOW DATABASES;”, e verranno così visualizzati i nomi dei database. Per eliminare un database, basta inserire “DROP DATABASE” seguito dal nome del database che si intende cancellare, più il simbolo “;”.

Una volta definito il database, per utilizzarlo, bisogna inserire il comando “USE “ seguito dal nome del database ed il simbolo punto e virgola. Selezionato il database, si passa ora a definire le tabelle ed i campi, e per fare ciò si usa il comando “CREATE TABLE” seguito dal nome della tabella che si intende creare; ora bisogna inserire, fra parentesi tonde, i campi. Per ogni campo bisogna inserire il nome, il tipo (int, char, date, time, decimal ecc…), se necessario l’obbligatorietà e l’attributo di chiave primaria (PRIMARY KEY) o chiave esterna (con la clausola REFERENCES).

Una volta definite le tabelle, si passa alla fase di DML, ovvero di manipolazione dei dati; per inserire un nuovo record in una tabella si usa il comando “INSERT” seguito dal nome della tabella e dalla clausola “VALUES”. Dopodiché, fra parentesi tonde, di inseriscono in ordine di posizione i dati ai corrispondenti campi, divisi da una virgola e se di tipo “CHAR” scritti tra apici. Per modificare un record si usa il comando “UPDATE”, seguito dal nome della tabella, poi dalla clausola “SET nomecampo = ‘nuovo’”, dove ‘nuovo’ sarà il valore del campo da modificare, seguito infine da “WHERE nomecampo2 = ‘predefinito’”. Per cancellare infine un record da una tabella si usa il comando “DELETE”, seguito da “FROM nometabella WHERE campo = ‘predefinito’”.

 


Definite le tabelle e caricati i record, si passa ora all’estrazione dei dati dal database in base alle informazioni che si intende ottenere; queste operazioni di interrogazione, dette “query”, sono fornite dal comando “SELECT”, che è molto semplice da usare ma allo stesso tempo molto potente. La sintassi classica del comando SELECT è: “SELECT colonne FROM tabelle WHERE condizione ;”. All’interno della clausola WHERE si possono inoltre utilizzare gli operatori di confronto AND, OR o NOT; altre due clausole importanti possedute dal comando SELECT sono ALL e DISTINCT, dove la prima indica la richiesta di avere come risultato di un’interrogazione tutte le righe che soddisfano le condizioni contenute nel comando, mentre la seconda non visualizza le righe duplicate, ma ogni campo ripetuto una sola volta.

All’interno del comando SELECT possono essere usate funzioni predefinite del linguaggio SQL che agiscono sui valori contenuti in un insieme di righe della tabella, e che proprio per questo motivo si chiamano “funzioni di aggregazioni”. Queste funzioni agiscono sui valori di una singola colonna e restituiscono un solo valore; questo valore univoco può essere il numero delle righe selezionate (COUNT), la somma di tutti i valori contenuti in una colonna specifica (SUM), la media dei valori di una determinata colonna (AVG) ed infine il minimo o il massimo valore tra i valori di una colonna (MIN e MAX).

Altri comandi utilizzabili all’interno del comando SELECT sono “ORDER BY”, che ordina i risultati di un’interrogazione in modo ascendente (ASC) di default o discendente (DESC), e “GROUP BY”, che raggruppa un insieme di righe aventi lo stesso valore nelle colonne indicate dalla clausola. Il comando “GROUP BY” viene spesso anche usato insieme alle funzioni di aggregazione.

 


Vi sono infine altre funzioni, dette “condizioni di ricerca”, che vengono usate per determinare i criteri di selezione delle righe; l’operatore “BETWEEN”, ad esempio, controlla se un valore è compreso all’interno di un intervallo di valori, inclusi gli estremi; il comando “IN” controlla invece se un valore appartiene a uno dei valori di una lista che viene precisata dopo la parola IN all’interno di una condizione. L’operatore “LIKE” confronta il valore di un attributo di tipo CHAR con un modello di stringa che può contenere caratteri jolly, come l’underline (_ = un solo carattere) o il simbolo di percentuale (% = zero o più caratteri). Tutti questi comandi possono contenere anche gli operatori logici e si trovano dopo la clausola WHERE.

Vi sono anche due clausole che fanno in modo che non tutti gli utenti che si apprestano ad utilizzare un database possano avere tutti i permessi per usufruire della base di dati; infatti, l’amministratore della base di dati, o comunque colui che la crea e la gestisce, può concedere o annullare alcuni permessi per diversi comandi. Il comando “GRANT” concede i permessi, specificando il tipo di accesso, le tabelle su cui è consentito e gli utenti che possono accedervi. Il comando, invece, usato per revocare i diritti di accesso è il comando “REVOKE”, che ha una sintassi simile a quella del comando GRANT, che è : GRANT/REVOKE UPDATE ON nome tabella TO user1, user2; .

Utilizzando questi, ed altri comandi del linguaggio SQL, si possono soddisfare con il software MySQL le richieste degli utenti, che sono creare, modificare ed interrogare un database.

Torna su...

Microsoft Access
Il software Microsoft Access, incluso nel pacchetto Microsoft Office, è un relational database management system che unisce il motore relazionale “Microsoft Jet Database Engine” (motore di database relazionale con limitate capacità, se paragonato a grossi sistemi come Oracle o MySQL) con una interfaccia “grafica”, a differenza di MySQL che utilizza un’interfaccia testuale.



L'utilizzo più diffuso e con il migliore rapporto prestazioni/costi corrisponde ad un impiego desktop, indirizzato ad applicazioni concepite per LAN con meno di dieci utenti. Microsoft Access può essere inoltre utilizzato a differenti livelli sia da sviluppatori software esperti, sia da programmatori alle prime armi per sviluppare applicativi anche molto complessi.

Il programma si presenta con la stessa interfaccia grafica dei prodotti per Windows, con barra del titolo, barra dei menù, icone sulla barra degli strumenti ed altro ancora. All’interno di un database gestito da Access possono essere definite sette categorie di oggetti diversi, che sono: le tabelle, le query, le maschere, i report, le pagine, le macro e i moduli.

Le “tabelle” sono i “contenitori” dove vengono memorizzati i dati; è disponibile un’interfaccia grafica elementare per la definizione o la modifica delle proprietà dei campi, inclusa la definizione degli indici e della chiave primaria. Come nel caso di database professionali, il controllo della sintassi esercitato da Access può consistere in soli messaggi di avvertimento nei casi in cui la modifica dei campi può comportare perdita irreparabile dei dati; questo non è necessariamente visto come un difetto di Access, proprio per il fatto che gli utenti meno esperti che si apprestano ad utilizzare il programma possono essere avvertiti prima di arrecare danni al database.

 


Le “query” sono gli strumenti idonei all'interrogazione ed alla manipolazione dei dati; Access dispone sin dall'origine di un ambiente grafico per la definizione delle query (detto Query By Example o QBE) che permette anche ad utenti poco esperti la loro costruzione, con un minimo di controllo della correttezza sintattica; questa facilità, però, può comportare situazioni di blocco del sistema come conseguenza di errori concettuali che comportino ricorsioni, mandando in “loop” l’intero sistema. Il linguaggio utilizzato nella definizione delle query è una versione leggermente semplificata di T-SQL (Transact-SQL); in alternativa all'ambiente QBE è possibile utilizzare direttamente questo, anche per ottenere query non altrimenti costruibili con QBE.



Le “maschere” (o form) consistono negli elementi grafici utili alla interazione da parte degli utenti con i dati delle tabelle o delle query. Le maschere possono contenere gli elementi standard di Access ed elementi aggiuntivi; esse possono inoltre includere codice VBA (Visual Basic for Applications).

 


I “report” consentono la visualizzazione in anteprima della pagina destinata alla stampa dei risultati basati sui dati, tabelle e query. L'ambiente grafico destinato alla costruzione della struttura dei report ricalca quello delle maschere, pur conservando le differenze dovute alla diversa destinazione.

Le “macro” possono contenere semplici sequenze di istruzioni in Access raccolte in un’unica operazione che libera l’utente da lavori ripetitivi.

Le “pagine” permettono la pubblicazione dei dati attraverso un server web. Sono state introdotte a partire dalla versione 2000 di Access.

I “moduli”, infine, possono contenere codice VBA che si intende rendere globali, ovvero richiamabili da uno qualsiasi degli altri elementi dell'applicazione.

Una funzionalità presente in tutte le versioni di Access consente di accedere a dati residenti in file di database esterni, sotto forma di tabelle collegate. Database strutturati in questo modo facilitano la distribuzione e la manutenzione della medesima applicazione a più utenti, fermo restando le limitazioni riguardo il numero massimo di accessi simultanei da parte degli utenti; occorre però sottolineare che queste soluzioni non possono essere definite "client/server" in quanto il carico di lavoro per la elaborazione dati è sempre locale. Le tabelle collegate sono utilizzabili allo stesso modo delle tabelle residenti, con l'unica limitazione data dalla non modificabilità della loro struttura.

Verranno ora descritte le principali differenze fra i due DBMS appena trattati, ovvero MySQL e Microsoft Access.

Torna su...

Differenze tra MySQL e Access
Le differenze esistenti tra MySQL ed Access sono molteplici e fanno in modo che MySQL sia “preferito” da molti al posto di Access; alcuni motivi, infatti, per cui scegliere di utilizzare MySQL può rilevarsi la scelta migliore sono:

1. MySQL è gratuito: sebbene Access sia ormai sufficientemente diffuso da essere presente quasi su ogni computer poiché fa parte della suite Office, non è scaricabile gratuitamente ed è necessario acquistare una licenza per poterlo utilizzare. Questo non accade invece per MySQL, scaricabile senza problemi da Internet.
2. MySQL è Open Source: è possibile, infatti, agire direttamente se lo si desidera sul codice sorgente, cosa che non accade invece per Access.
3. MySQL è nato per il Web: Access è nato come “desktop database”, ovvero un database studiato per strutturare applicazioni legate all'uso su computer in locale e non orientate alla rete; MySQL, invece, integra il supporto a numerosissime funzioni in più rispetto ad Access, tra cui ad esempio l'accesso remoto e migliore bilanciamento delle elaborazioni. Ciò consente a MySQL di essere utilizzato anche in rete.
4. MySQL è più “leggero”: come detto prima, Access è nato sul desktop, e proprio per questo si porta dietro, come una lumaca, il suo prezioso guscio, rappresentato dall'intera consolle grafica che contraddistingue il programma. Se da una parte questa interfaccia facilita la gestione, dall'altra inevitabilmente ha un costo, in termini di risorse e soprattutto riguardanti il peso finale del database.

La differenza principale e più “evidente” tra i due DBMS è legata all’interfaccia del software: Access è nato, come già detto, per un uso desktop e fornisce quindi un ambiente visuale semplice e maneggevole per gestire comodamente query, tabelle e relazioni. MySQL, invece, è un database nato per ambienti web e come tale focalizza le sue potenzialità sull'efficienza del software, tralasciando l'aspetto visivo. Ciò significa che MySQL è un DBMS che và gestito tramite codice, mentre Access utilizza una veste grafica che rende l’interazione utente-database più intuitiva e semplice, a discapito però di velocità ed efficienza.

Torna su...