Introduzione all utilizzo dei database



Похожие документы
Sistemi per la gestione di database: MySQL ( )

DBMS (Data Base Management System)

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

Progettazione di Basi di Dati

Dispensa di database Access

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

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

Database. Si ringrazia Marco Bertini per le slides

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

1. BASI DI DATI: GENERALITÀ

Le Basi di Dati. Le Basi di Dati

Introduzione al data base

Al giorno d oggi, i sistemi per la gestione di database

Il database management system Access

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

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

Organizzazione delle informazioni: Database

Organizzazione degli archivi

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

Le Basi di dati: generalità. Unità di Apprendimento A1 1

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

TEORIA sulle BASI DI DATI

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

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

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

Sistemi Informativi e Basi di Dati

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

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

Corso di Informatica (Basi di Dati)

MODELLO RELAZIONALE. Introduzione

I Sistemi Informativi

Volumi di riferimento

Introduzione ai database relazionali

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

L architettura di un DBMS

BASI DI DATI - : I modelli di database

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

Basi di dati. Corso di Laurea in Ingegneria Informatica Canale di Ingegneria delle Reti e dei Sistemi Informatici - Polo di Rieti

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

Capitolo 13. Interrogare una base di dati

Facoltà di Farmacia - Corso di Informatica

INFORMATICA PER LE APPLICAZIONI ECONOMICHE PROF.SSA BICE CAVALLO

DATABASE.

Introduzione all Architettura del DBMS

Progettazione di un Database

Archivi e Basi di Dati

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

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

I database relazionali (Access)

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

BASE DI DATI: sicurezza. Informatica febbraio ASA

Sistemi centralizzati e distribuiti

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

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

Informatica I per la. Fisica

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS

Database: collezione di fatti, registrabili e con un ben preciso significato, relazionati fra di loro

Database 1 biblioteca universitaria. Testo del quesito

Base di dati e sistemi informativi

Informatica per le discipline umanistiche 2 lezione 10

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

LABORATORIO. 2 Lezioni su Basi di Dati Contatti:

2104 volume III Programmazione

Introduzione alla teoria dei database relazionali. Come progettare un database

Unità 2.1 Comandi sui database

database: modello entityrelationship

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Corso sul linguaggio SQL

19. LA PROGRAMMAZIONE LATO SERVER

Progettaz. e sviluppo Data Base

Le query. Lezione 6 a cura di Maria Novella Mosciatti

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

Progettaz. e sviluppo Data Base

SQL/OLAP. Estensioni OLAP in SQL

Elena Baralis 2013 Politecnico di Torino 1

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

BASE DI DATI: introduzione. Informatica 5BSA Febbraio 2015

PROGRAMMA DI CLASSE 5AI

L ARCHIVIAZIONE E LA GESTIONE DATI ATTRAVERSO L INTERAZIONE TRA MICROSOFT ACCESS ED EXCEL 1 INTRODUZIONE

Esercizio data base "Biblioteca"

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

Gestione ed analisi di base dati nell epidemiologia. delle malattie infettive

CONCETTO DI ANNIDAMENTO

Data Base. Prof. Filippo TROTTA

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

DATABASE. A cura di Massimiliano Buschi

MODULO 5 Appunti ACCESS - Basi di dati

Informatica Documentale

Basi di dati 9 febbraio 2010 Compito A

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

SDD System design document

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

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

Транскрипт:

Introduzione all utilizzo dei database Giuseppe De Nadai AA. 2002/2003 Introduzione ai RDBMS...1 Aspetti importanti di un RDBMS....2 Elementi di un database...5 Tabelle...5 Campi/Attributi...6 Record/Tupla/Riga...6 Chiavi...7 View...7 Relationship...8 Uno a Uno...8 Uno a Molti...8 Molti a Molti....10 Conclusioni...12 Introduzione a SQL...13 Esempi di utilizzo di un RDBMS: MySQL...15 Bibliografia:...24

Introduzione ai RDBMS Un DBMS (Data Base Management System) è, letteralmente, un sistema di gestione di basi di dati, o database, che per attuare questa gestione utilizza un software specifico. Queste «basi di dati» sono degli insiemi organizzati di dati, utilizzati per modellare tipi d organizzazioni o di processi organizzativi. I database vengono ad esistere nel momento stesso in cui si raccolgono e si schedano dati per uno scopo specifico. In generale, si distinguono due tipologie di database, quelli Operativi ed i database Analitici. I database operativi sono insiemi di dati continuamente aggiornati. I tipi di dati immagazzinati sono dinamici, questo significa che cambiano costantemente e che riflettono informazioni sempre aggiornate. I database analitici sono insieme di dati storici, nel senso che immagazzinano e tracciano dati storici, legati ad un preciso momento. Esistono vari tipi di modelli database, il Gerarchico, il Reticolare, il Relazionale ed il modello Object-Relational. In questo lavoro si parlerà del modello di database Relazionale. Il database relazionale fu ideato per la prima volta nel 1969 ed il padre del modello Relazionale fu il dr. Edgard F. Codd, ricercatore dell IBM che aveva necessità di ripensare la gestione di grandi quantità di dati. I problemi che Codd voleva risolvere nella gestione dei database erano relativi alla ridondanza, alla scarsa integrazione dei dati ed alla troppa dipendenza della struttura del database dalla sua implementazione fisica. Il Modello Relazionale di Codd, presentato nel 1970 col titolo Un Modello Relazionale di dati per Grandi Banche di dati condivise, si basava su due branche della matematica: la Teoria degli insiemi e la Logica dei Predicati di Primo Grado. Il software utilizzato per la gestione dei Relational DataBase, o Relational DataBase Management System (RDBMS), è stato sviluppato da molte società informatiche quali IBM con il DB2, Oracle Corporation con Oracle, Microsoft con SQL Server ed altre ancora. Secondo il Modello Relazionale, i dati di un database Relazionale sono immagazzinati in relazioni, che all utente appaiono sottoforma di tabelle. Ogni relazione è composta da tuple (record, righe) ed attributi (fields, campi, colonne). 1

Si osservi l'esempio della Figura 1..==============================================================. Indirizzi -------------------------------------------------------------- Cognome Nome Indirizzo Telefono --------------- --------------- --------------- -------------- Pallino Pinco Via Biglie 1 0222,222222 Tizi Tizio Via Tazi 5 0555,555555 Cai Caio Via Caini 1 0888,888888 Semproni Sempronio Via Sempi 7 0999,999999 `==============================================================' Relazione/Tabella Indirizzi(Cognome,Nome,Indirizzo,Telefono). Figura 1 La tabella Indirizzi della Figura 1 contiene dei dati dai quali possono essere tratte delle informazioni. Le colonne della tabella sono i Campi/Attributi/Fields, mentre le righe sono i Record/Tuple. Via Biglie 1 è un dato, mentre l insieme di dati che costituiscono i vari record sono informazioni. Ad esempio, Pinco Pallino abita in Via Biglie 1 ed ha numero di telefono 0222,222222, è un informazione. Aspetti importanti di un RDBMS. Un RDBMS deve fornire le seguenti funzionalità: 1. permettere agli utenti di creare nuovi database e specificarne la struttura logica dei dati; 2. permettere di interrogare e modificare i dati e quindi le informazioni contenute; 3. permettere la memorizzazione di quantità molto grandi di dati tenendo conto degli aspetti di: a. sicurezza b. efficienza 4. controllare che l accesso contemporaneo di più utenti agli stessi dati non li corrompano incidentalmente. 2

I primi DBMS (non ancora relazionali) hanno interessato essenzialmente i sistemi di prenotazione aerea, i sistemi bancari e la registrazione di dati aziendali Ogni RDBMS ha una sua architettura che si può sintetizzare nei seguenti aspetti: 1. dati, metadati ed indici. I dati sono valori alfanumerici inseriti nel database e riflettono particolari attributi degli elementi in esso presenti. I metadati sono informazioni sulla struttura dei dati; ad esempio i nomi delle relazioni, dei loro attributi e dei tipi di dati di tali attributi (interi o stringhe di caratteri). Un indice è una struttura dati che permette di ritrovare velocemente un particolare dato, a partire da un informazione parziale sul suo valore; 2. input del RDBMS. Un primo importante input dei RDBMS sono le interrogazioni, le Query poste al database per ottenere delle informazioni dai dati in esso inseriti. Queste possono avvenire tramite un interfaccia generica per interrogazioni (SQL) o attraverso un interfaccia per programmi applicativi (ad esempio QBE di Access). Un secondo input del DBMS riguarda le modifiche, le alterazioni dei dati inseriti in esso. Infine, un terzo input, è relativo alle modifiche dello schema del database: ad esempio una tabella è identificata da un nome, dal numero di attributi/campi, dalle etichette/nomi degli attributi/campi, dal formato ecc.; la modifica di questi elementi comporta la modifica parziale o complessiva dello schema del database; 3. gestore della memoria. Nel caso più semplice è il file system del sistema operativo sottostante, quindi si tratta della struttura di memorizzazione dei dati sul supporto fisico e quindi si parla di un gestore dei file (gestisce l allocazione dei file/dati su disco) e di un gestore del buffer (gestisce l allocazione dei file/dati nella memoria RAM); 4. elaboratore delle interrogazioni. L elaboratore delle interrogazioni trasforma le query o le manipolazioni del database, che possono essere espresse a livello molto alto (SQL), in una sequenza di richieste di dati memorizzati. Si pone a questo livello il problema dell ottimizzazione dell interrogazione; 5. gestore delle transazioni. Una transazione è un insieme di una o più query e/o modifiche, informalmente corrispondenti ad un insieme di operazioni che devono essere eseguite insieme e sequenzialmente come se rappresentassero una singola operazione unitaria. Un esempio è la comune operazione di prelievo di contanti da uno sportello Bancomat. 3

Le transazioni devono soddisfare cinque proprietà: a. atomicità. La transazione deve essere eseguita come operazione unitaria, le singole fasi non portano alla conclusione della transazione, ma solo la realizzazione dell ultima fase e la verifica delle precedenti conclude l intera operazione; b. consistenza. Il database deve soddisfare tutti i vincoli di consistenza specificati dopo che le diverse transazioni siano state completate; c. isolamento. Un esecuzione simultanea di due transazioni deve portare gli stessi effetti di quelli causati da un esecuzione sequenziale delle stesse; d. persistenza: gli effetti di una transazione portata a termine non dovrebbero essere alterati da un guasto del sistema (sicurezza). 4

Elementi di un database Gli elementi principali di qualsiasi database sono le tabelle, i record, i campi, le chiavi, le view e le relationship. Tabelle Le tabelle sono le strutture principali di un database; ciascuna tabella rappresenta sempre un soggetto unico e specifico: 1. l ordine logico delle tuple/record e dei campi all interno di una tabella/relazione non ha assolutamente importanza. 2. Ogni tabella deve contenere almeno un campo conosciuto come Chiave Primaria - che identifica ogni record in modo univoco. Nella precedente tabella Indirizzi della figura 1 la Chiave Primaria non è presente e questo crea un problema di indicizzazione e quindi di ricerca delle informazioni all interno della tabella. Una soluzione potrebbe essere quella di inserire il campo FriendsID costituito da un numero intero progressivo. Grazie a queste due caratteristiche, i dati di un database Relazionale possono esistere indipendentemente dal modo in cui sono stati fisicamente immagazzinati nel computer. Il soggetto rappresentato da una data tabella può essere sia un oggetto che un evento. Nel primo caso, la tabella rappresenta qualcosa di tangibile, come una persona, un luogo o una cosa. Nel secondo caso, quando il soggetto di una tabella è un evento, la tabella rappresenta qualcosa che avviene in un momento preciso e presenta delle caratteristiche che si vorrebbero registrare. Ad esempio, una tabella evento è la registrazione della temperatura ambientale giornaliera in cui risulta una data che identifica il momento della rilevazione. 5

Campi/Attributi Un campo è la struttura più piccola di un database e rappresenta una delle caratteristiche del soggetto della tabella alla quale appartiene. Ogni campo di un database ben progettato contiene un unico valore e il suo nome identifica il tipo di valore che rappresenta. Questo rende l immissione dei dati in un campo un operazione facile ed intuitiva. Record/Tupla/Riga Un record rappresenta un unica istanza del soggetto della tabella. A causa del modo in cui le tabelle sono definite, ogni record viene identificato in tutto il database attraverso un unico valore nel campo Chiave Primaria di quel record. Ad esempio, il record Vitoni spa Via ferri 2 0123, 45678, della tabella Fornitori nella Figura 2 è identificato in modo univoco all interno del database dal numero 122 dell unica Chiave Primaria: CodFor..=====================================================. Fornitori ----------------------------------------------------- CodFor Ditta Indirizzo Telefono ------ --------------- --------------- -------------- 122 Vitoni spa Via Ferri 2 0123,45678 123 Ferroni spa Via Metalli 34 0234,5678 124 Nuova Metal Via Industrie 0345,6789 125 Viti e Bulloni Via di sopra 7 0567,9875 `=====================================================' Figura 2 Nella tabella Fornitori, ogni registrazione rappresenta un unico fornitore all interno della tabella e il campo CodFor identifica un fornitore in tutto il database. A sua volta, ogni record comprende tutti i campi all interno della tabella e ogni campo descrive gli aspetti del fornitore rappresentati dal record. I record sono un fattore chiave per capire le relazioni tra tabelle perché bisogna sapere come un record di una tabella si collega al record di un altra tabella. 6

Chiavi Le chiavi sono dei campi speciali all interno di una tabella. Il tipo di chiave determina il proprio scopo all interno della tabella. I tipi di chiavi principali sono due: la Chiave Primaria e la Foreign Key o Chiave Esterna. La chiave primaria è un campo o un gruppo di campi che identifica in modo univoco ogni record all interno della tabella. Quando una Chiave Primaria è composta da due o più campi, viene denominata Chiave Primaria Composta. Il valore di una Chiave Primaria identifica un record specifico nell intero database, mentre il suo campo identifica una tabella nell intero database. Inoltre, le Chiavi Primarie rafforzano l integrità dei dati a livello di tabella ed aiutano a stabilire delle relazioni con le altre tabelle. Per integrità dei dati a livello di tabella si intende assicurare che non esistano record duplicati. Qualora si noti che un paio di tabelle possono avere una relazione (associazione/relationship), normalmente si stabilisce quest ultima inserendo in una delle due tabelle (secondo una precisa logica relazionale) una copia della Chiave Primaria da una all altra, dove diviene Chiave Esterna o Foreign Key. Le Foreign key sono importanti per due motivi: 1) permettono di stabilire delle relazioni tra tabelle; 2) aiutano ad assicurare l integrità a livello di relazione; 3) aiutano ad evitare i record orfani, un classico esempio è la presenza di un record d ordine di un bene senza la contemporanea presenza di un record cliente. View Una View è una tabella virtuale costituita da campi che appartengono a una o più tabelle del database; le tabelle da cui provengono i campi della View sono chiamate Tabelle base. L attributo di virtualità della View deriva dal fatto che i dati in essa contenuti non sono memorizzati ma derivano dalle tabelle di origine, questo significa che non vi è una duplicazione dei dati sul supporto fisico di memorizzazione. In molti RDBMS, una View è comunemente realizzata ed indicata come una query salvata, o più semplicemente come Query. La differenza tra una View ed una Query intesa nel suo significato specifico è, molte volte, solamente la sua denominazione. 7

Relationship Il termine indica l associazione tra i record di una tabella con quelli di un altra tabella. Esso viene tradotto usando la parola Relazione, anche se nel Modello Relazionale la Relazione è la stessa tabella. Tra coppie di tabelle possono esistere tre tipi di relazioni/associazioni: 1. Uno a Uno 2. Uno a Molti 3. Molti a Molti Uno a Uno Una relazione/associazione Uno a Uno si realizza quando tra due tabelle un unico record della prima tabella è legato ad un unico record della seconda tabella ed un solo record della seconda tabella è legato ad un unico record della prima tabella. Utilizzando termini specifici si tratta di una corrispondenza biunivoca tra le due tabelle. In questo tipo di relazione, una tabella viene detta tabella principale, mentre l altra viene detta tabella secondaria. La relazione avviene prendendo la Chiave Primaria della tabella principale ed inserendola nella seconda tabella dove diviene Chiave Esterna. Le relazioni Uno a Uno vengono di solito utilizzate nei casi in cui una tabella è stata divisa in due parti per elencare nella seconda delle informazioni più dettagliate e non direttamente necessarie per il database. Uno a Molti Una relazione/associazione Uno a Molti tra due tabelle si realizza quando un singolo record della prima tabella può essere legato a molti record della seconda tabella, ma un singolo record della seconda tabella può essere legato con un unico record della prima tabella..============================================. Articoli -------------------------------------------- CodArt Descrizione Fornitore1 Fornitore2 ------ --------------- ---------- ---------- vite30 Vite 3 mm 123 125 8

vite40 Vite 4 mm 124 125 dado30 Dado 3 mm 122 123 dado40 Dado 4 mm 124 125 rond50 Rondella 5 mm 123 125 `============================================'.==============================================. Movimenti ---------------------------------------------- CodArt Data Carico Scarico CodFor CodCli ------ ---------- ------ ------- ------ ------ vite40 01/01/1999 1200 124 vite30 01/01/1999 800 825 vite30 02/01/1999 1000 925 vite30 03/01/1999 2000 125 rond50 03/01/1999 500 925 `=============================================='.=====================================================. Fornitori ----------------------------------------------------- CodFor Ditta Indirizzo Telefono ------ --------------- --------------- -------------- 122 Vitoni spa Via Ferri 2 0123,45678 123 Ferroni spa Via Metalli 34 0234,5678 124 Nuova Metal Via Industrie 0345,6789 125 Viti e Bulloni Via di sopra 7 0567,9875 `====================================================='.=====================================================. Clienti ----------------------------------------------------- CodCli Ditta Indirizzo Telefono ------ --------------- --------------- -------------- 825 Tendoni Max Via di sotto 2 0113,44578 925 Arti Plus Via di lato 45 0765,23456 `======================================================= Figura 3 9

Nella Figura 3 1 esiste una relazione Uno a Molti tra le tabelle Fornitori e Clienti con la tabella Movimenti. Si può notare che le Chiavi Primarie delle due tabelle sono presenti nella tabella Movimenti. Nell esempio un singolo record della tabella Movimenti può essere legato ad un unico record della tabella Clienti/Fornitori, mentre un singolo record della tabella Clienti/Fornitori può essere legato a più record della tabella Movimenti. Molti a Molti. Una relazione/associazione Molti a Molti si realizza quando un singolo record della prima tabella è legato con molti record della seconda e viceversa. Per realizzare propriamente questa relazione si deve utilizzare un ulteriore tabella detta tabella di collegamento, la quale viene definita prendendo una copia delle Chiavi Primarie di ciascuna tabella della relazione ed utilizzandole per formare la struttura della nuova tabella. Nell esempio precedente esiste una relazione Molti a Molti tra la tabella degli Articoli e quella dei Fornitori. Questa relazione può essere esplicitata nel seguente modo:.======================. Articoli ---------------------- CodArt Descrizione ------ --------------- vite30 Vite 3 mm vite40 Vite 4 mm dado30 Dado 3 mm dado40 Dado 4 mm rond50 Rondella 5 mm `======================'.=========================. Articoli_Fornitori (tabella di collegamento) ------------------------- ---CodArt--- ---CodFor--- ------------ ------------ vite30 123 1 La prima tabella, Articoli, rappresenta l'anagrafica del magazzino di un grossista di ferramenta. Ogni articolo di magazzino viene codificato e descritto, inoltre vengono annotati i riferimenti ai codici di possibili fornitori. La seconda tabella, Movimenti, elenca le operazioni di carico e di scarico degli articoli di magazzino, specificando solo il codice dell'articolo, la data, la quantità caricata o scaricata e il codice del fornitore o del cliente da cui è stato acquistato o a cui è stato venduto l'articolo. Infine seguono le tabelle che descrivono i codici dei fornitori e quelli dei clienti. Si può intendere che una sola tabella non avrebbe potuto essere utilizzata utilmente per esprimere tutte queste informazioni. 10

vite30 125 vite40 124 vite40 125 dado30 122 dado30 123 dado40 124 dado40 125 rond50 123 rond50 125.=========================..=====================================================. Fornitori ----------------------------------------------------- CodFor Ditta Indirizzo Telefono ------ --------------- --------------- -------------- 122 Vitoni spa Via Ferri 2 0123,45678 123 Ferroni spa Via Metalli 34 0234,5678 124 Nuova Metal Via Industrie 0345,6789 125 Viti e Bulloni Via di sopra 7 0567,9875 `======================================================= Figura 4 Tale soluzione permette di lavorare in modo più semplice con i dati correlati, garantendo anche l integrità degli stessi. 11

Conclusioni È importante stabilire che, nel modello relazionale, il collegamento tra le tuple delle varie relazioni avviene attraverso dei valori e non tramite dei puntatori. Questo si evince dal fatto che, nella tabella Articoli della Figura 3, l'attributo Fornitore1 contiene il valore 123, ciò significa solo che i dati di quel fornitore sono rappresentati dal quel valore. Nella tabella Fornitori della Figura 4 la tupla, il cui attributo CodFor contiene il valore 123, è quella che contiene i dati di quel particolare fornitore. In conseguenza di tale fatto, «123» non rappresenta un puntatore, ma solo una tupla che contiene quel valore nell'attributo «giusto». In questo senso si ribadisce l'indifferenza della posizione delle tuple nelle relazioni/tabelle. Aspetti che in questa dispensa non sono stati affrontati in modo esplicito sono relativi all integrità referenziale ed alla normalizzazione di un database, proprietà che permettono di costruire delle basi dati che siano affidabili, efficaci ed efficienti e che sintetizzano in modo particolare due processi importanti quali il disegno delle tabelle e dell interfaccia utente. 12

Introduzione a SQL SQL è l'acronimo di Structured Query Language e identifica un linguaggio strutturato per le interrogazioni, è l insieme di comandi che possono essere usati per accedere ai database relazionali. Le sue origini risalgono alla fine degli anni 70 e questo giustifica la sua sintassi prolissa e verbale tipica dei linguaggi dell'epoca. L ANSI (American National Standard Institute) ha adottato lo SQL come il linguaggio standard per i database relazionali e questo è uno dei motivi perché, allo stato attuale, rappresenta un riferimento fondamentale per la gestione di una base di dati relazionale. A parte il significato originale dell'acronimo, SQL è un linguaggio completo per la gestione di una base di dati relazionale, includendo le funzionalità di un DDL (Data Description Language, linguaggio di definizione dei dati), di un DML (Data Manipulation Language, linguaggio di manipolazione dei dati) e di un DCL (Data Control Language, linguaggio di controllo dei dati). I comandi DDL permettono di creare, modificare ed eliminare oggetti e modificare la struttura fisica del DataBase. I più rilevanti sono: ALTER, modifica strutture/parametri; CREATE, crea tabelle/indici/database; DROP, elimina tabelle/indici/database. Questi comandi, vista la loro potenza e pericolosità, sono spesso resi eseguibili a pochi utenti, tra cui il "Data Base Administrator" (DBA), che si occupa di installare il software del database, di creare e attivare il DB, di farne periodicamente il backup, di migliorare le performance del DB, di creare e gestire gli utenti che vi accedono e, in generale, di supervisionare l'andamento della base dati. I comandi DML permettono di manipolare i dati nel database. I comandi più importanti sono: SELECT, seleziona dati da una o più tabelle; DELETE, elimina i dati da una tabella secondo alcune condizioni; INSERT, inserisce nuovi dati in una tabella; UPDATE, aggiorna modificando i dati di una o più righe di una tabella I comandi DCL sono relativi al controllo della sicurezza e permettono di gestire gli accessi al DB ed i più importanti sono: GRANT, fornisce privilegi, REVOKE, toglie i privilegi ad uno o più utenti. Il linguaggio si è evoluto nel tempo secondo diversi standard. I più importanti sono SQL89 e SQL92, noti anche come SQL1 e SQL2. Il livello SQL3 è ancora in corso di definizione. L'aderenza dei vari sistemi DBMS allo standard SQL2 non è mai completa e perfetta, per questo sono stati definiti dei sottolivelli di questo standard per definire il grado di compatibilità di un DBMS. Si tratta di: entry SQL, intermediate SQL e full SQL. È evidente che il primo sia il livello di compatibilità minima e l'ultimo rappresenti la compatibilità totale. In realtà, lo standard più diffuso 13

è rappresentato dal primo livello, che coincide fondamentalmente con lo standard precedente, SQL89 o SQL1. Convenzionalmente, le istruzioni di questo linguaggio sono scritte con tutte le lettere maiuscole. SQL non distingue tra lettere minuscole e maiuscole nelle parole chiave delle istruzioni e nemmeno nei nomi di tabelle, colonne e altri oggetti. Solo quando si tratta di definire il contenuto di una variabile, allora le differenze contano ed il linguaggio diventa case sensitive. 14

Esempi d utilizzo di un RDBMS: MySQL In questa breve dispensa tralasciamo tutti gli aspetti relativi alla creazione, gestione e manutenzione di un database, ponendoci dal lato degli utilizzatori finali, vale a dire di quelli che interrogano il database, in altre parole si utilizza l istruzione SELECT. L istruzione SELECT prevede alcune clausole: select è la prima clausola dell istruzione SELECT (indispensabile). É usata per specificare le colonne che si vogliono utilizzare nella query; from è la seconda clausola in ordine d importanza nell istruzione SELECT (indispensabile). La clausola from è usata per specificare quali sono le tabelle da cui trarre le colonne elencate nella clausola select; where è una clausola opzionale che si usa per filtrare le righe provenienti dalla clausola from. Where è seguita da un espressione, nota come Predicato, che valuta se un informazione è Vera, Falsa o Sconosciuta. Tale condizione si può testare usando operatori di confronto standard, operatori booleani oppure operatori speciali. group by questa clausola permette di suddividere le informazioni in gruppi distinti, non sarà utilizzata in questo corso; having è possibile associare alla clausola group by la clausola having che si usa per filtrare le informazioni raggruppate. Nemmeno questa clausola sarà introdotta in questo corso. Il software utilizzato in questo corso per la gestione di un database è MySQL, un RDBMS: Sistema di Gestione di un Database Relazionale. MySQL è anche un RDBMS open source, vale a dire i sorgenti per lo sviluppo di tale software sono disponibili, consultabili e modificabili da tutti. Esso è scaricabile gratuitamente dal sito www.mysql.com, ed è disponibile sia per sistemi operativi Like Unix (Solaris, HP UX, Linux, BSD ed altri) sia per Microsoft. 15

Per collegarsi al server su cui è installato il programma di database, si deve essere connessi ad internet e digitare il seguente comando: telnet <nome server> Si ricordi che quando si digita il comando si deve sostituire <nome server> con la parola contenuta tra i due simboli <>. Successivamente s inseriscono la login e la password: La password non compare mentre si digita. 16

Dopo l avvenuto accesso alla macchina sulla quale è installato il programma si digita il comando mysql -u <nome utente> -p (seguito da Invio): e, dopo aver inserito la password, compare lo schermo sottostante: 17

digitando il comando \h compare la seguente visualizzazione: per uscire dal programma è sufficiente digitare \q e premere Invio. A questo punto si deve individuare il database già creato dal DBA e dire al programma quale tra quelli presenti sarà utilizzato: 18

Se si vuole interrogare il database prova, il comando è il seguente: use prova Per vedere le tabelle del database prova, si digita il comando SHOW TABLES seguito dal punto e virgola. Inoltre, per descrivere il contenuto della tabella ricavi, si digita il comando desc ricavi o, in generale, DESCRIBE <nome tabella>. Si ricordi che in MySQL ogni comando deve essere concluso con il punto e virgola. 19

A questo punto, dopo aver caricato i dati nel database, lo si può interrogare con il seguente comando SELECT * from RICAVI; Analizziamo l istruzione SELECT eseguita: select * from ricavi; dice al database: mostrami tutte le colonne della tabella ricavi contenuta nel database prova. L asterisco funge da wildcard o carattere jolly: esso indica tutte le colonne della tabella. Le colonne, ricavi1 e ricavi2, contengono i ricavi di due aziende distinte. 20

Si può trovare il valore massimo dei ricavi della prima azienda: il range dei ricavi della prima azienda: Esaminiamo l istruzione: select max(ricavi1)-min(ricavi1) as RANGE from ricavi; dice al database mostrami la differenza tra il valore più alto e quello più basso dei ricavi della prima azienda, mettigli nome (AS) RANGE, dai dati contenuti nella tabella ricavi È possibile verificare se in media i ricavi della prima azienda sono superiori a quelli della seconda: Evidentemente se il risultato è un valore positivo significa che la media relativa ai ricavi della prima azienda è maggiore di quella della seconda. 21

Si può verificare quante volte i ricavi della prima azienda sono superiori a quelli della seconda: L istruzione select count(ricavi1-ricavi2) from ricavi where ricavi1-ricavi2>0; introduce la funzione count che conteggia le volte in cui è possibile avere una differenza, mentre la clausola where indica quale dei valori conteggiati deve essere visualizzato. Inoltre è possibile calcolare quante volte i ricavi della prima azienda sono superiori a quelli della seconda per più del 50%: Ancora, si può individuare il momento temporale iniziale in cui i ricavi della prima azienda superano quelli della seconda. 22

Infine, si può estrarre il valore del fatturato per la prima azienda ad un determinato istante temporale: L istruzione select ricavi1 from ricavi where tempo=96; dice al database mostrami il fatturato dell azienda 1 dalla tabella ricavi alla data 96. O tra due istanti temporali: L istruzione select ricavi1 from ricavi where tempo>1 and tempo<10; dice al database mostrami il fatturato medio dell azienda 1 dalla tabella ricavi nel periodo 2-9. In quest istruzione è stato introdotto l operatore booleano and. Nel caso l interrogazione preveda l utilizzo di una stringa, quale potrebbe essere una data, e non di un valore numerico, l istruzione SQL deve essere la seguente: select ricavi1 from ricavi where tempo> 1995-01-01 and tempo< 1996-10-01. Per uscire dal programma è sufficiente digitare il comando \q: si digita exit per disconnettersi dal server. 23

Bibliografia: Giacomini D., Appunti di Informatica Libera. url:a2.swlibero.org, 2002. Hernandez M. J., Viescas J. L., SQL. Ed. Mondadori Informatica, Trento Giugno 2002. Ullman J. D., Widom J., Introduzione ai Database: Progettazione-Programmazione-Applicazioni. Ed. Jackson Libri UNIVERSITÁ, Milano 2000. 24