BD DBMS e sw per esercitazioni SQL   

Suggerimenti e istruzioni sul sw

 Suggerimenti per esercitazioni in Algebra Relazionale

 0a) Utilizzare gli esercizi sul testo di riferimento del corso e consultare le relative soluzioni disponibili on-line sul sito associato al testo.
0b) Utilizzare l’applicazione web RELAX disponibile a questo url. L’applicazione carica
automaticamente l’istanza del database PROVA descritta più avanti qui nella sezione su SQL. Si segnala che l’applicazione definisce un insieme di operatori di algebra  estesi, ma è sufficiente imparare a svolgere gli esercizi utilizzando gli operatori di base illustrati a lezione. In caso di difficoltà, ciè se l’url non carica il database,  si consiglia di scaricare questo file (è un txt), aprire il pannello GROUP EDITOR, incollarvi tutto il file,
fare la PREVIEW e poi attivarne le definizioni facendo click su “use group in editor”. Qui sono disponibili alcune espressioni di algebra relazionale scritte con RELAX (fanno riferimento allo schema relazionale descritto qui sotto).
0c) (opzionale) Utilizzare il tool Relational, sviluppato in ambito accademico, che implementa gli operatori dell’algebra relazionale (ad eccezione dell’equi-join) in una semplice interfaccia a finestre. E’ disponibile una versione aggiornata per Windows, Linux e MacOS (solo per sistemi basati su x86, non per M1 e M2) sul sito del progetto qui. Dopo aver installato il tool, consultare la documentazione sul sito per la sintassi di algebra implementata. Utilizzare poi come relazioni quelle scaricabili qui (relazionialgebra.zip). Sono file in formato .csv.  Lo schema delle relazioni è quello descritto più avanti qui nella sezione su SQL, al punto 2).

 Suggerimenti per le esercitazioni in SQL

Le esercitazioni su SQL si terranno in tre modalità: aulacloud, sul proprio PC.
Il DBMS di riferimento è MySQL (che è anche installato nelle aule didattiche e che
verrà utilizzato per le sessioni di esame). Tutti gli studenti devono provvedere a installare sul proprio PC lo stesso ambiente presente in aula, seguendo le istruzioni qui sotto.
Al momento opportuno, tutti gli studenti dovranno attivare un account sulla piattaforma
Google Cloud Platform, riscattando un voucher che verrà distribuito dal docente.
Il voucher va riscattato entro una data e ha durata un anno. Su questa piattaforma lo studente dovrà caricare lo stesso database che viene utilizzato in aula e sul proprio PC. E’ obbligo completare l’attivazione su GCP per poter sostenere la parte di esame su SQL.
Consultare anche la pagina Modalità di esame e di registrazione.

Il DBMS da utilizzare

1) Si suggerisce di utilizzare MySQL, che è il DBMS installato sui server delle aule didattiche di Ingegneria e viene usato anche per le prove di esame. Il server MySQL è liberamente scaricabile per le piattaforme Windows, Linux (varie versioni) e Mac OS. Il sito è https://dev.mysql.com/downloads/. Si consiglia la versione MySQL Community  Server 8.0.xx (xx dipende anche dal S.O.)

2) Oltre al server, è necessario scaricare ed installare anche uno strumento integrato di amministrazione e di interazione grafica: si consiglia di scaricare ed utilizzare MySql Workbench.
Per i sistemi Windows, è stato reso disponibile “MySql Installer for Windows”, un programma di installazione che consente di scegliere quali delle componenti di MySQL installare. Lo strumento consente anche di modificare in seguito l’installazione. Se si usa questo strumento, si consiglia di 
a) Server: installare tutto MySql server 8.0.xx
b) Applicazioni: installare solo MySql Workbench CE 8.0.xx
c) Connectors: installare Connector ODBC, Connector/J e Connector/Net
d) Documentation: installare sia MySql Documentation, sia Samples and Examples
Ci sono dei prerequisiti per l’installazione di Workbench, che possono essere letti nella relativa pagina di download; se si usa MySql Installer for Windows, questi pre-requisiti vengono verificati automaticamente, e viene anche segnalato quali packages devono essere installati a mano, per proseguire nel’installazione.
Per i sistemi MacOS, scaricare la versione opportuna (per processori Intel o Apple M1); per il Workbench potrebbe essere necessario utilizzare una versione specifica (non l’ultima) per la piattaforma Apple M1

Esercitazioni in aula.

Le esercitazioni si svolgono utilizzando un DBMS installato presso l’ateneo
e un DBMS istanziato in modalità SaaS sulla piattaforma Google Cloud Platform.

I parametri di connessione al DBMS di ateneo sono pubblicate qui:
IP host:  192.168.5.232 (dall’aula B1)
IP host : 192.168.6.232 (dall’aula B2)
Porta: 52000
User: esame
Password: nessuna password
Schema di default: PROVA (maiuscolo)

Dopo l’esercitazione di attivazione del servizio SQL in modalità
SaaS sulla GCP, gli studenti che vorranno utilizzare il DBMS MySQL
attivato in questa modalità accendendovi dalle reti wifi dell’ateneo
e dalle aule B1 e B2, dovranno autorizzare, sull’istanza in GCP, le seguenti reti:
1) wifi di Ateneo: IP 193.206.71.4
2) eduroam: IP 192.167.87.231
3) aula B1: IP 193.204.36.173
4) aula B2: IP 193.204.36.174
Per la connessione da casa o da altre posizioni, utilizzare l’IP
del router di connessione alla rete pubblica, assegnato dal proprio fornitore
di connettività.

 

Il database per le esercitazioni

Le esercitazioni e le prove di esame utilizzano un database di nome PROVA che simula le seguenti relazioni (in grassetto le chiavi primarie, in corsivo le chiavi esterne che non sono a loro volta chiavi):
DIPART(NUM_DIPART,NOME_DIPART,CITTA)
DIPENDENTI(MATRICOLA,NOME_IMP,MANSIONE,SUP,DATA_ASS,STIPENDIO,COMMISS,NUM_DIPART)
     dove SUP è chiave esterna di DIPENDENTI(MATRICOLA) e NUM_DIPART d DIPART(NUM_DIPART)

PARTI(COD,NOME,COLORE,PESO,CITTA)
PRODOTTI(COD,NOME,CITTA)
FORNITORI(COD,NOME,CITTA)
FORNITURE(FCOD,PCOD,PRCOD,QUANTITA)
      dove FCOD è chiave esterna sullo stesso dominio di FORNITORI(COD) e
      analogamente per PCOD con PARTI(COD) e PRCOD con PRODOTTI(COD)
SPEDIZIONI(SPCOD,DATASP,CITTAPART,CITTADEST,QTA_TOT)
SPED_DETTAGLI(SPCOD,FCOD,PCOD,PRCOD)
    dove SPCOD è chiave esterna di SPEDIZIONI(SPCOD)
    e (FCOD,PCOD,PRCOD) è chiave esterna di
    FORNITURE(FCOD,PCOD,PRCOD)

Gli script per creare il database

Sono disponibili due versioni degli script che generano e popolano le tabelle che simulano le relazioni, per MySQL ver. 8.0.2.

Nella prima versione, il database va denominato PROVA_NO_INT. Le tabelle DIPART e DIPENDENTI sono create usando i vincoli di chiave primaria e (parzialmente) i vincoli di integrità referenziale; le altre tabelle invece non utilizzano né il vincolo di chiave primaria né i vincoli di integrità referenziale (possono quindi esistere righe duplicate e e valori in chiavi esterne che non si trovano nella tabella principale). Questa versione è da usarsi proprio per esercitarsi anche nella verifica dei vincoli. 
Nella seconda versione il database va denominato PROVA e lo script crea tutte le tabelle nel rispetto dei vincoli di chiave primaria e di tutti i vincoli di integrità referenziale e pertanto le righe di questa versione non coincidono del tutto con quelle della prima versione. Si studi con attenzione lo script di questa versione e lo si confronti con il primo. Il database sul server degli esami è istanziato con questa versione.

Per caricare le tabelle del database, usando MySQL Workbench, i passi da compiere sono i seguenti:
   – mandare in esecuzione il Workbench
   – connettersi utilizzando le credenziali generate al momento dell’installazione;
   – creare lo schema “PROVA”  (oppure lo schema “PROVA_NO_INT”) usando
     l’opportuna icona sotto la riga dei menu, senza modificare i parametri
    di default; alla fine dovrebbe comparire “PROVA” (“PROVA_NO_INT)
    nel tab “Object Browser
  – selezionare (doppio click) lo schema prescelto;
   – eseguire lo script  precedentemente salvato su una directory locale
     (usare la seconda icona sotto la riga dei menu)

Parametri di configurazione del server MySQL

            Dei molti parametri che consentono di configurare un’istanza di server MySQL e il
            funzionamento del client MySQL Workbench, l’unico utile per gli scopi
            del corso è quello che regola la posizione (directory) dalla quale è
            lecito caricare file esterni negli schemi delle istanze sul server.
            Esso ha effetto quando si esegue il comando
            LOAD DATA [LOCAL] INFILE
            ed è associato alla variabile di sistema LOCAL_INFILE.
            A) 
            Per consentire all’istanza di caricare un file su una directory diversa da quella
            nella quale
è caricata l’istanza stessa, la variabile deve essere posta ad 1.
            Ciò può essere ottenuto o modificando opportunamente il file di
            configurazione “my.ini” o settando la variabile usando un comando,
            ad esempio in Workbench:
            set global local_infile=1;

            B)
            Inoltre, sul client Workbench, si deve settare una variabile della connessione:
            –local_infile=1
            usando il tab ADVANCED e digitando nel frame “Others” quanto segue:
            OPT_LOCAL_INFILE=

Nota sulla sintassi SQL in MySQL

La sintassi di SQL adottata da MySQL non è del tutto aderente allo standard SQL-2. Fra le varie difformità, nei tipi dati ci sono differenze e si segnala, in particolare, l’introduzione dei tipi DATE e TIME come varianti semplificate del tipo DATETIME. Inoltre esistono varianti di alcuni comandi DDL, ad esempio la clausola IF EXISTS associata allo statement DROP TABLE, che consente di verificare se una table esiste, prima di tentare di eliminarla.

5) JDBC e Java.
    a) Si utilizza un IDE (ex Netbeans) utilizzata nel corso di Programmazione ad Oggetti.
    I dettagli dell’utilizzo di JDBC nell’ambiente IDE verranno dati nel corso della relativa esercitazione. 

    b) Alcuni tutorial su JDBC:
        dal sito della SUN: http://java.sun.com/docs/books/tutorial/jdbc/basics/index.html
        oppure http://www.jdbc-tutorial.com/ 

  6) SQLite. Una libreria molto leggera che consente di implementare un database con API SQL in sistemi 
    minimi (tipicamente sui cellulari). Public domain, compilabile anche in soli 500KB.