UdA 6
Il linguaggio SQL
lezione
4
MYSQL E HEIDISQL
X AUTORE: MANCANO
i testi
In questa lezione impareremo...
• TESTO TESTO TESTO TESTO
• TESTO TESTO TESTO TESTO
• TESTO TESTO TESTO TESTO
• TESTO TESTO TESTO TESTO
■■ Architettura di MySQL
MySQL è un database relazionale con architettura di rete; infatti possiede una versione sever e una client.
◀ Un DBMS server
è un programma
riceve le
Architettura
dei database
clientche
e server
richieste da parte di un DBMS client e accede
conseguentemente ai contenuti del database per fornire ai client che ne abbiano l’autorizzazione le
informazioni che essi richiedono. Con il termine DBMS client si indicano i programmi che si connettono
a uno o più DBMS server per inviare richieste da restituire all’utente. ▶
Il ◀ DBMS ▶ server MySQL si comporta come un tradizionale server di servizi TCP, accettando
connessioni da applicazioni client. Una volta stabilita la connessione, il client può interrogare i database tramite query. Il server è in grado di accettare più connessioni contemporaneamente.
Per motivi di sicurezza l’accettazione delle connessioni può essere limitata secondo vari criteri:
◗◗ solo da localhost: i client sono localizzati sulla stessa macchina del server;
◗◗ solo dall’interno del dominio: i client sono localizzati anche su macchine connesse al dominio di
rete del server stesso;
◗◗ dall’esterno del dominio: i client sono localizzati anche su macchine esterne rispetto alla rete di
dominio (situazione molto pericolosa perché espone il sistema a intrusioni).
Una volta ottenuta la connessione al server, l’accesso ai database gestiti dal server DBMS è
limitato dal fatto che ogni database è accessibile solo dagli utenti autorizzati.
Esistono in commercio numerosissimi strumenti di manutenzione sia integrati nel pacchetto
MySQL sia diffusi nel Web. Questi strumenti possono essere suddivisi nelle tre categorie seguenti:
◗◗ client a riga di comando (CUI, Character User Interface): sono comandi utili all’amministratore
di DBMS per effettuare una manutenzione in locale;
2
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
MySQL e HeidiSQL
Lezione 5
◗◗ client visuali (GUI, Graphics User Interface): sono applicazioni visuali che consentono una ricca
manutenzione interattiva; inoltre, rendono possibile una connessione remota al DBMS che consente l’accesso previa autenticazione;
◗◗ client web online: sono pagine attive scritte con linguaggi di scripting lato server in grado di connettersi al DBMS per effettuare interrogazioni.
Client a riga di comando
I client a riga di comando vengono eseguiti dal sistema operativo che ospita il DBMS; MySQL possiede un client a riga di comando sia per Windows sia per Linux. In Windows possiamo utilizzare il
client a riga di comando attivando il programma dal menu di Avvio.
Applicazioni client visuali
In commercio esistono molte applicazioni client visuali, alcune open source, altre shareware e altre
ancora proprietarie. In generale si tratta di software che integrano all’interno di un’unica finestra
tutte le funzioni disponibili anche a riga di comando. I principali soft­ware sono i seguenti:
◗◗ heidiSQL: semplice client per win32 e win64;
◗◗ SQLWave e Navicat: client visuale multipiattaforma;
◗◗ dbdesigner: ambiente multipiattaforma di sviluppo visuale dello schema. Può collegarsi anche ad
altri DBMS oltre a MySQL (via ODBC) e consente non solo la progettazione ma anche l’analisi
visuale dello schema.
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
3
UdA 6
Inserire TITOLO
Client web online
Esistono molte applicazioni web online che integrano in un sito web attivo tutte le funzioni a riga di
comando. Nella suite easyphp è presente un’applicazione (phpMyAdmin) sia nella versione per Windows sia in quella per Linux che permette la connessione per l’amministrazione remota del DBMS e
la manipolazione dei database attraverso un’interfaccia grafica intuitiva disponibile sul Web, come
illustrato nella figura che segue.
Sicurezza e utenti di MySQL
Poiché gli utenti del database non coincidono con gli utenti del sistema operativo, quando si crea un
nuovo database devono essere definiti gli utenti che hanno i diritti di accesso e di manutenzione al
database stesso. Tutti i database del DBMS MySQL sono di proprietà di un particolare ◀ utente ▶
di tipo ◀ amministratore ▶ chiamato root in grado di concedere diritti di lettura, inserimento, cancellazione, modifica, concessione ad altri utenti eventualmente identificati da password.
◀ L’utente amministratore della base di dati o Administrator (DBA) è responsabile della
struttura, dello schema e della gestione della base di dati; decide e assegna i privilegi ad altri
utenti chiamati “convenzionali” che solitamente modificano i dati e formulano le interrogazioni. Infatti, solo gli utenti che possiedono un database possono interrogarlo nei limiti dei diritti
che sono stati loro concessi. ▶
Tipi di campo
Prima di tutto vediamo da quali dati è composto un database di MySQL. I tipi di dati o domini della
tabella possono essere dichiarati mediante query di creazione tabella, oppure mediante ambiente
GUI (Graphics User Interface) offerto dai DBMS visuali quale, per esempio, HeidiSQL che verrà
trattato più avanti. Innanzitutto occorre ricordare che MySQL è un database di tipo relazionale e
permette quindi di creare relazioni tra tabelle diverse. Come la maggior parte dei DBMS è formato
da database e ciascun database da tabelle. Le tabelle sono formate da campi (colonne) e record (righe), seguendo lo schema di qualsiasi altro database. I campi possiedono un nome (attributo) e un
tipo (dominio), che devono essere decisi durante la fase di creazione delle tabelle. Durante la fase di
progettazione della tabella è necessario tenere conto della dimensione e del tipo di campi riassunti
nella tabella che segue.
4
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
MySQL e HeidiSQL
tipo
Descrizione
BIGINT
INTEGER
SMALLINT
TINYINT
DOUBLE
FLOAT
DECIMAL
DATE
TIME
DATETIME
YEAR
CHARACTER
VARCHAR
TEXT
MEDIUMTEXT
BLOB
MEDIUM BLOB
LONG BLOB
DATETIME
intero lunghissimo
intero lungo
intero
intero ridotto
reale a doppia precisione
reale a singola precisione
decimale memorizzato come stringa
una data in formato US (aaaa-mm-gg)
un orario
una data con ora
un anno
stringa a lunghezza fissa
stringa a lunghezza variabile
campo testo a lunghezza fissa
campo testo (memo)
immagini jpeg, bmp, gif (Binary Large
Object), oppure file binary
in esadecimale o di testo
Data e ora
IMAGE
oggetti (OLE - Object Linked
and Embedded - Microsoft)
Lezione 5
Dimensione massima/
formato
INTERI
REALI
DATA
STRINGA
OGGETTI
DATA
OGGETTI
da –263 a 263–1
da –231 a 231–1
da –32768 a 32767
da –128 a +127
da ±2.225*10308 a ± 1.798*10308
da ±1.176*10-38 a ± 3.403*1038
da ±2.225*10-308 a ± 1.798*10308
dal clic ’1000-01-01’ a ’9999-12-31
formato HH:MM:SS
aaaa-mm-gg hh:mm:ss
formato AAAA
da 0 a 255 caratteri
da 0 a 255 caratteri
da 0 a 65535 caratteri
16 MB di caratteri –1
fino a 64 KB
fino a 16 MB
circa 4 GB
un valore di data o di ora
compreso tra 100 e 9999
da 0 a clic 2,14 GigaByte
Zoom su...
tIpI DI CAMpo MySQL
◗ Le stringhe sono delimitate da apice singolo oppure doppio indifferentemente, quindi “ciao”
e ’ciao’ sono equivalenti.
◗ Il valore null è differente da 0 per i dati numerici e anche da "" (stringa vuota) per le stringhe;
attesta che il campo è effettivamente vuoto.
◗ Le costanti numeriche possono essere precedute o meno dal segno (+ o –).
◗ Nei confronti tra dati di tipo numerico, i valori vengono confrontati in accordo con il loro valore
algebrico, e non con quanto viene visualizzato quando si utilizzano dei formati particolari di
visualizzazione (per esempio 10% vale 0,1).
◗ I confronti con dati di tipo DATE sono ammessi solo se dello stesso tipo, per esempio il tipo
TIMESTAMP non è compatibile con il tipo DATE, così come il tipo DATETIME.
◗ Le costanti di tipo data e ora vengono considerate come stringhe, quindi sempre racchiuse
tra apici singoli o doppi.
◗ Per avere il formato data compatibile con quello europeo (giorno-mese-anno) anziché quello
americano (anno-mese-giorno) è sufficiente intervenire nel file My.ini modificando la variabile
date_format come segue:
date_format=%d-%m-%y
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
5
UdA 6
Inserire TITOLO
■■ L’ambiente HeidiSQL
HeidiSQL
Navicat
SQL Wave
DB Designer
…
Recentemente sono apparsi moltissimi client per MySQL. In
Client GUI
Client non GUI
generale, il compito del DBMS
MySQL admin
Administrator
client è quello di consentire la
connessione remota al database,
oltre a fornire un ambiente DBMS
MySQL - DBMS
con interfaccia spesso di tipo
grafico (GUI) e alcune volte addirittura con supporto di creazioDatabase 1
Database 2
Database n
…
ni automatiche di query (QBE).
HeidiSQL si colloca tra i DBMS
client di tipo GUI ma senza una
QBE specifica. L’unica QBE disponibile riguarda la definizione dei dati, mentre per l’interrogazione
delle tabelle si deve ricorrere al linguaggio SQL. L’immagine sopra specifica la collocazione di questi
strumenti:
L’installazione di MySQL e HeidiSQL
In questo paragrafo affrontiamo l’installazione dei DBMS MySQL client e server in ambiente Windows. Prima di tutto occorre installare MySQL server.
Installare MySQL server
Per fare questo è necessario andare al sito: http://dev.mysql.com/downloads/ e quindi seguire le indicazioni per il download di MySQL server. Una
volta terminato il download del file, si deve passare all’esecuzione dell’installazione sul PC facendo doppio clic sull’icona
Dopo aver seguito le istruzioni, a ogni avvio di Windows il programma verrà automaticamente eseguito e in tal modo il server resterà sempre attivo.
L’installazione e l’avvio di HeidiSQL
Può essere scaricato gratuitamente dal sito www.heidisql.com nella sezione download. La procedura seguente spiega come effettuare l’installazione.
Dopo aver scaricato il programma fai doppio clic sull’icona che lo raffigura.
2 Appare la finestra a lato nella quale devi fare clic su Next. ▼
6
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
MySQL e HeidiSQL
Lezione 5
3 Seleziona I accept the agreement (figura a lato) dopo aver letto il contratto di licenza, quindi fai clic su
Next. ▶
4 A questo punto viene mostrata la cartella (sotto)
nella quale verrà installato il programma. Fai clic
su Next per proseguire. ▼
5 Fai clic su Next per completare l’installazione. ▼
6 Ora, facendo clic su Install, si passa alla fase di
installazione vera e propria nella quale verranno
copiati i file. ▼
7 Fai clic su Finish per terminare l’installazione.
Essendo un software di tipo “free”, il produttore non
richiede alcun compenso in denaro ma solo una donazione attivabile facendo clic sul pulsante Donate.
8 Una volta completata l’installazione, quando si avvia il programma appare la finestra denominata
Session manager che consente la connessione remota al database. Trattandosi della prima connessione al database fai clic su New (figura a lato) per
creare una nuova ◀ sessione di connessione ▶.
◀ È necessario ricordare che MySQL è un DBMS
server che consente a utenti diversi di connettersi
allo stesso database anche nel medesimo istante.
Questo comporta che per ogni connessione si attivi
una sessione che al termine del lavoro deve necessariamente essere chiusa per non tenere occupato
inutilmente il server. ▶
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
7
UdA 6
Inserire TITOLO
9 In questo caso abbiamo creato una nuova sessione denominata Prova. Per accedere al database
è necessario autenticarsi indicando l’◀ indirizzo IP ▶ oppure il nome dell’host che ospita il DBMS
server al quale connettersi (Hostname/IP), il nome dell’utente (User) e la password.
◀ In questo caso la password deve essere quella impostata dall’amministratore, mentre l’indirizzo IP dell’host è 127.0.0.1 che rappresenta un indirizzo di loopback usato per identificare
la macchina in uso. In sostanza è l’indirizzo da usare per le prove in locale. ▶
 La finestra a lato mostra l’ambiente GUI di
Heidisql. ▶
■■ La creazione del database e
delle tabelle con HeidiSQL
Prendiamo ora in esame la procedura per la creazione di un database con HeidiSql. In questo
esempio faremo uso dell’ambiente GUI, anche se
è possibile effettuare le medesime operazioni
mediante il linguaggio SQL in modalità “linea di
comando”. La procedura seguente illustra come
creare un database di nome prova e una tabella
di nome Rubrica.
1Per prima cosa devi fare clic con il tasto destro
sull’icona che raffigura la connessione, che in questo esempio è stata creata precedentemente con il
nome Prova, quindi scegliere la voce Create new
e poi Database. ▶
2 A questo punto scrivi il nome del database da creare nell’apposita casella di testo accanto all’etichetta Name, quindi fai clic su OK per confermare. ▶
Come puoi notare nella casella di testo posta in
basso nella figura a lato (SQL preview for CREATE
DATABASE) appaiono le righe di codice scritte in
linguaggio SQL generate dal comando che è stato
impartito utilizzando la finestra GUI.
3 Il database prova è stato creato. Passa quindi alla
creazione della tabella: fai clic con il tasto destro
del mouse sul nome del database scegliendo la voce
Create new e quindi Table. ▶
8
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
MySQL e HeidiSQL
Lezione 5
4 Ora scrivi il nome della tabella da creare (in questo caso Rubrica) accanto all’etichetta Name. ▼
nome della tabella
pulsante che consente di aggiungere nuovi campi
per ogni campo si aggiunge una nuova riga
pulsante per il salvataggio della struttura della tabella
5 In questa finestra puoi aggiungere i campi che formano la struttura della tabella semplicemente
utilizzando il pulsante Add. Facendo clic su Add appare una riga nuova che deve essere completata per aggiungere nuovi campi alla tabella. Per ogni campo viene richiesto il nome (Name) e il
tipo (Datatype), oltre ad altre caratteristiche come la lunghezza (Length/Set) e le proprietà illustrate di seguito:
◗◗ Default Value: determina quale valore o stringa
◀ Auto increment è un campo
deve contenere il campo, che può anche essere di
numerico il cui valore viene intipo ◀ auto increment ▶, prima che avvenga l’imcrementato di uno a ogni nuovo
missione di un nuovo dato da parte dell’utente.
record; a differenza di Access, il
◗◗ Unsigned: per valori numerici senza segno.
valore può essere reinserito se il
◗◗ Zerofill: il campo viene riempito di zeri per tutrecord viene eliminato. ▶
ta la lunghezza ed è utilizzato soprattutto per i
codici.
◗◗ Allow NULL: determina se il campo può essere lasciato anche vuoto (Null).
nome del campo
finestra di aiuto
tipo del campo,
in questo caso INT
6 Passa ora alla creazione della
◀ chiave primaria ▶. Fai clic
con il tasto destro del mouse
sul campo e seleziona la voce
Create new index, quindi PRIMARY.
◀ La chiave primaria di una tabella è un campo che
consente di identificare ciascun record in modo univoco. Un campo chiave primaria possiede dati tutti
diversi (non può cioè contenere ripetizioni). Per esempio il codice fiscale oppure la partita IVA sono tipici
campi adatti a essere usati come chiavi primarie. ▶
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
9
UdA 6
Inserire TITOLO
In tal modo il campo ID_persona rappresenterà la chiave primaria della tabella. ▼
7 Per creare un campo auto increment, cioè che si incrementa da solo durante l’inserimento dei dati, fai
clic all’interno della colonna Default. Come puoi notare, appare la tendina a lato nella quale spuntare il
campo AUTO_INCREMENT. In tal modo a ogni nuovo record inserito il valore verrà incrementato automaticamente di una unità.
8 Completiamo quindi la
tabella aggiungendo altri
campi come illustrato nella
finestra che segue. Puoi notare che accanto al campo
di tipo chiave primaria appare un’icona con un simbolo che lo identifica, analogamente a quanto accade in Access. ▼
9 Dopo aver fatto clic su Save, la tabella viene memorizzata e appare nel
riquadro di sinistra. ▶
 Passa adesso all’inserimento dei record. Per fare questo, attiva la scheda Data e fai clic con il tasto destro, quindi seleziona Insert row. ▼
 Inserisci i dati nelle colonne utilizzando il mouse oppure il tasto tab per spostarsi da una colonna all’altra. Al termine, per salvare fai clic al di fuori della tabella:
Il triangolino rosso posto nell‘angolo in alto a sinistra indica che è in corso l’immissione di
nuovi valori all'interno dei campi.
10
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
MySQL e HeidiSQL
Lezione 5
• Creare un database con HeidiSQL
• Creare la struttura delle tabelle
• Immettere i dati nei record
Prova adesso!
CREA IL FILE esempio1
Crea un database di nome Scuole.
Crea la tabella Esami (riportata sotto), scegliendo opportunamente il tipo, la dimensione e il
formato dei campi:
Esame (testo)
Complementare (Sì/No)
Numero (int)
id_docente (int)
Sessione (char)
Anno (year)
Anno_accademico (year)
Aule (char)
Giorno (char)
Crea la tabella Docenti, scegliendo opportunamente il tipo, la dimensione e il formato dei
campi:
ID_docente (int)
Cognome nome (char)
N_telefono (char)
Facoltà (char)
Apri la tabella Esami e inserisci i record riportati di seguito.
Esame
Grandi opere
Teoria della
termodinamica
Progettazione
di database
Applicazione
macchine utensili
Sistemi
operativi
Storia
medievale
Analisi 1
Analisi 2
Geometria
Storia
della matematica
Glottologia
Sistemi e modelli
Fisica
Sistemi 1
Compl.
no
id_
docente
no
no
1
2
102
106
no
3
no
Sessione
Anno
Anno_
clic
Aule
autunnale
autunnale
3
3
11
11
300-120
100
Lunedì
Martedì
101
autunnale
3
12
101
Lunedì
2
106
primaverile
4
12
106-110
Mercoledì
no
1
101
autunnale
4
12
109-198
Giovedì
no
1
102
autunnale
1
11
401
Giovedì
no
no
no
sì
5
5
6
2
107
101
101
107
primaverile
autunnale
invernale
invernale
2
3
1
4
10
11
11
10
510-511
524
434
100
Giovedì
Martedì
Martedì
Mercoledì
sì
sì
no
sì
4
5
2
6
108
107
106
101
estiva
estiva
autunnale
invernale
3
2
1
2
10
09
09
10
402-404
601
235
236
Mercoledì
Giovedì
Venerdì
Giovedì
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
Giorno
11
UdA 6
Inserire TITOLO
Apri la tabella Docenti e inserisci i record riportati di seguito.
ID_docente
Cognome nome
n_telefono
Facoltà
101
102
103
104
105
106
107
108
Michael Datton
Otto Reisen
Cleo McNamara
Sally Colombo
Dan Jackson
John Grandom
Astolf McMillan
Robert Kelly
3105551234
3105556543
3105554321
3105550088
3105554567
3104332234
3124356564
3210854212
Informatica
Lingue
Storia
Storia
Informatica
Ingegneria
Informatica
Lingue
■■ La creazione di un vincolo relazionale
Per comprendere come creare una struttura relazionale mediante HeidiSQL vediamo come realizzare una rubrica multimediale. Il problema riguarda, quindi, la gestione di una struttura in grado di
memorizzare i dati delle associazioni tra individui e i relativi recapiti, che possono essere telefonici,
di posta elettronica, oppure sotto forma di sito web o, ancora, di numero di fax. Si vuole creare un
database che permetta di registrare per ogni “individuo” più recapiti multimediali. Per fare questo,
è necessario quindi creare un’associazione tra l’entità Individuo e l’entità Recapito; un individuo
può avere più recapiti, mentre lo stesso recapito non può appartenere a individui diversi. Tra le due
entità si deve quindi instaurare una relazione 1 a N come illustrato dalla figura seguente.
Entità 1
Relazione 1 a N
Entità 2
Le entità che possono essere individuate nel problema sono le seguenti:
◗■ Individuo, per rappresentare i dati anagrafici di tutte le persone da contattare;
◗■ Recapito, per memorizzare i recapiti multimediali.
Gli attributi per Individuo sono: il codice fiscale per rappresentarlo in modo univoco, il cognome, il
nome, la data di nascita.
Gli attributi per Recapito sono: il codice fiscale riferito all’individuo, il numero di telefono, il numero di fax, l’indirizzo e-mail, l’indirizzo del sito web.
Si può verificare anche il caso in cui un individuo non possieda alcun recapito telefonico, e per questa ragione è stato inserito nel modello E-R il tratteggio sul lato sinistro dello schema.
Individuo
COD_FISC
cognome
nome
data di nascita
12
rintracciabile con
appartiene a
Recapito
cod_fisc
telefono
email
fax
sito
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
MySQL e HeidiSQL
Lezione 5
La procedura seguente illustra come realizzare la struttura di queste tabelle. Per prima cosa si crea
il database rubrica_multimediale, quindi si fa clic sulle tabelle individui e recapiti.
1 Innanzitutto devi creare la tabella individui, con particolare riferimento al campo COD_FISC, di
tipo PRIMARY KEY.
2 Dopo avere fatto clic su Save passa alla creazione della seconda tabella, chiamata recapiti, con
particolare attenzione al campo cod_fisc che in questo caso non è di tipo chiave primaria.
3 Fai clic su Save e passa alla definizione della chiave esterna riguardante il campo cod_fisc della
tabella recapiti. Dopo aver selezionato la scheda denominata Foreign keys, fai clic all’interno
della colonna Columns e seleziona il campo chiave esterna, in questo caso il campo cod_fisc,
come illustrato nella figura che segue.
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
13
UdA 6
Inserire TITOLO
4 Dopo aver confermato facendo clic su OK, puoi individuare nella scheda relativa il nome della
chiave esterna.
5 A questo puoi notare che nella struttura della tabella recapiti è stata associata al campo cod_fisc
un’icona raffigurante la chiave esterna.
6 Adesso passa all’inserimento dei dati, partendo dagli individui. In questo caso vengono inseriti
due nuovi record.
7 Per verificare l’associazione tra le due tabelle inserisci alcuni recapiti. Appare una casella a tendina per la scelta del codice fiscale: si tratta dei codici fiscali inseriti nella tabella individui.
14
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
MySQL e HeidiSQL
Lezione 5
• Creare un database con HeidiSQL
• Creare la struttura delle tabelle
• Creare relazioni usando chiavi
primarie ed esterne
Prova adesso!
CREA IL FILE esempio2
Crea un database docenti per gestire i dati dei docenti e alunni di una scuola impegnati nel
recupero scolastico.
Crea le seguenti tabelle:
◗ Studenti, che rappresenta i dati anagrafici degli alunni della scuola;
◗ Materie, che contiene il nome esteso di tutte le materie di studio;
◗ Professori, che contiene i dati anagrafici di ogni singolo docente;
◗ Frequenze, che contiene le materie di studio che ogni singolo allievo deve recuperare.
I campi della tabella Studente sono: matricola (chiave primaria) e dati angrafici (cognome,
nome, telefono ecc.).
I campi della tabella Materia sono: codice materia (chiave primaria), cod_corso (foreign key)
e descrizione materia.
I campi della tabella Professore sono: codice del docente (chiave primaria) e dati anagrafici
(cognome, nome ecc.).
I campi della tabella Frequenza sono: cod_materia (foreign key), cord_corso (foreign key) e
matricola dell’alunno (foreign key).
Crea le relazioni tra le tabelle secondo lo schema che segue.
Professore
codice
cognome
nome
telefono
…
Materia
insegna
insegnata da
cod_materia
cod_corso
cod_prof
materia
relativa a
Studente
matricola
cognome
nome
telefono
…
segue
corso seguito da
Frequenza
cod_materia
cod_corso
matricola
P. Camagni, R. Nikolassy, Progettare i database, Nuova Edizione OPENSCHOOL, © Ulrico Hoepli Editore S.p.A. 2014
15