• Non ci sono risultati.

(1)RACCOMANDAZIONI Svolgimento parte teorica : scrivete tutto quello che sapete al riguardo(lasciate stare il numero di righe

N/A
N/A
Protected

Academic year: 2021

Condividi "(1)RACCOMANDAZIONI Svolgimento parte teorica : scrivete tutto quello che sapete al riguardo(lasciate stare il numero di righe"

Copied!
6
0
0

Testo completo

(1)

RACCOMANDAZIONI Svolgimento parte teorica :

scrivete tutto quello che sapete al riguardo(lasciate stare il numero di righe...) cercando di restare attinenti alla traccia, ma soprattutto cercate di immaginare i pro e i contro in termini di costi e vantaggi per l'azienda e/o per l'utente.

Commento diagramma E/R :

ricordatevi di commentare e di specificare se le associazioni sono opzionali o obbligatorie... e da quale lato. Inoltre cercate di descrivere le ipotesi fatte.... non sempre l'associazione deve essere di un certo tipo, ma dipende da quali ipotesi sono state fatte

Nomi di Entità(o meglio Tipi di Entità) e Tabelle :

Per i nomi delle Entità è consigliabile utilizzare il singolare es. Cliente, Iscrizione, ecc...

Per i nomi delle tabelle invece se volete potete metterli al plurale es. Clienti,Iscrizioni,... per ricordarvi che dovranno contenere un insieme di dati

Attributi Multipli:

Gli attributi non dovrebbero mai essere al plurale ma sempre al singolare. Es. l'attributo “orari” o

“telefoni” va sostituito con una tabella associata N:1 con l'entità di prima contenente tutti i valori.

Attributi Composti:

Nel caso di attributi come indirizzo vi ho detto più volte che in genere è preferibile scomporli ma solo se si pensa di effettuare ricerche sui singoli campi. La città, ad esempio, è consigliabile in un attributo separato perchè è probabile che verranno effettuate ricerche su di essa.

Descrizione Entità:

Per evitare di utilizzare verbi non appropriati scrivete semplicemente: dati relativi a … Es. Utente: dati anagrafici dell'utente

Corso: dati relativi ai corsi effettuati ecc...

Descrizione degli attributi nella tabella dei metadati:

Come descrizione della chiave primaria o di una chiave esterna va messo: identificativo o codice utente, corso ,ecc...

Per molti attributi il contenuto è ovvio per altri meno... in quest'ultimo caso specificate quali valori possono essere assegnati a tali attributi! es. tipo_test char 1 …. tipologia di Test somministrato('F': finale, 'I':iniziale).

Questo potete farlo a parte o direttamente nella tabella dei metadati (dipende dallo spazio che avete a disposizione).

RISPONDETE A TUTTO anche se parzialmente in quanto il punteggio delle risposte parziali potrebbe essere determinante ai fini del punteggio finale.

(2)

ERRORI PRINCIPALI COMMESSI NELLE SIMULAZIONI:

Errore: mettere le chiavi esterne tra gli attributi del diagramma E/R

Infatti le chiavi esterne riguardano il modello logico relazionale ovvero le tabelle e servono per tradurre le associazioni presenti nel diagramma E/R

Errore: trattare il rombo che contiene il nome di un'associazione N:N alla stregua di un'entità

N o 1 vanno solo a fianco delle entità

Errori commessi nella descrizione tipo di associazione: Priolo,Lucarelli Felicia,Colaneri, ecc...:

La frase :

più istanze delle prima entità possono essere associate con più istanze della seconda entità

non equivale alla frase corretta:

Una istanza della prima entità può essere associate a più istanze della seconda entità, mentre una istanza della seconda entità può essere associata a più istanze della prima.

La prima frase infatti è valida per tutti i 3 tipi di Associazione: 1:1,1:N e N:N, la seconda solo nell'ultimo caso!!

Esempio: Associazione Istruttori – Corsi:

Un istruttore(non più istruttori) può tenere più corsi, mentre uno stesso corso può essere tenuto da più istruttori(in pratica ho due associazioni 1: N, una da istruttore verso corsi e quella reciproca da corsi verso istruttore).

Un istruttore → più corsi Un corso → più istruttori

Esempio : Corso-Attività La frase seguente :

un'attività sportiva può essere svolta in più corsi e più corsi possono riguardare la medesima attività

a prima vista sembrerebbe corretta per motivare l'associazione N:1, in realtà ad un'analisi più approfondita ci accorgiamo che la seconda parte non è altro che la ripetizione della prima,ciò che

ASSOCIAZIONE N : N

ASSOCIAZIONE 1 : N

(3)

dovrebbe essere specificato invece è quante attività possono essere svolte durante un corso . Motivare un'associazione non si traduce nel leggere la formula in un verso ed in quello contrario.

Il ragionamento corretto sarebbe il seguente:

Una attività → più corsi Un corso → Una attività

Quando si definisce una relazione si deve sempre considerare:

1. a quante istanze della seconda entità può essere associata una istanza della prima entità 2. a quante istanze della prima entità può essere associata una istanza della seconda entità Pertanto la frase corretta sarebbe stata la seguente:

una stessa attività sportiva può essere svolta in più corsi mentre in un corso è possibile svolgere solo un ' attività

Può essere utile immaginare le entità come insiemi(insieme dei corsi, insieme delle attività,ecc...) e prendere in considerazione un singolo elemento del primo insieme e un singolo elemento del secondo insieme.

ERRORI TABELLA METADATI E SQL

Errore GRAVE: non confondere la tabella dei metadati con l'istruzione CREATE TABLE

<nome tabella>( ….. );

Sono due cose diverse: se si vuole scrivere la tabella dei metadati utilizzando direttamente i tipi di MySQL non scrivere sopra CREATE TABLE perchè la sintassi non è quella di una CREATE TABLE (PK non ci vuole, mancano le parentesi, PRIMARY KEY(<nome chiave>), ecc...).

E' meglio scrivere la tabella dei metadati in italiano, aggiungere una didascalia per indicare i corrispondenti tipi in MYSQL o scriverli affianco tra parentesi e poi scrivere qualche CREATE rispettando la sintassi corretta e facendo molta attenzione(perchè verrebbe valutata ai fini della conoscenza del linguaggio SQL(che, per inciso, ricordatevi che significa Structured Query Language ovvero linguaggio di interrogazione strutturato....strutturato significa che vi sono le medesime istruzioni di controllo di flusso che avete visto in PASCAL e anche la possibilità di scrivere PROCEDURE cosa che non abbiamo visto per mancanza di tempo).

Errore GRAVE: utilizzare NUMERIC per i numeri di telefono

Ricordare che NUMERIC = DECIMAL (ovvero numero reale) E la sintassi corretta è la seguente:

NUMERIC(5,2) = DECIMAL(5,2) è un numero reale con cinque cifre al max di cui 2 decimali es. 324,12

Un numero di telefono NON può essere NUMERIC semmai INTEGER... tuttavia è bene scegliere come tipo VARCHAR perchè in questo modo posso utilizzare LIKE per effettuare ricerche sul

(4)

prefisso o su parti del numero...

Di seguito è riportata la definizione di una serie di attributi con relativa dimensione

Esempi:

id contatore(INTEGER UNSIGNED AUTO_INCREMENT) 4 (byte) o Intero normale

data_certificato data(DATE) (10*)

nome carattere(VARCHAR) 15

tel carattere(VARCHAR) 15

codice_fisc carattere(CHAR) 16

ora_inizio ora(TIME) (8*)

sesso carattere(CHAR) 1 (M/F) costo valuta(NUMERIC(8,2) o DECIMAL(8,2)) Reale *Nel caso della dimensione della data se si vuole specificare il numero di caratteri immessi/visualizzati questi dovrebbero essere 10 includendo anche i trattini(2009-06-03), 8 al massimo per l'ora(20:10:03).Tuttavia la dimensione nel caso di date e ore non riguarda il modo in cui questi dati vengono memorizzati e NON va specificata NELLA CREATE o se si utilizzano invece dei tipi in italiano direttamente i tipi MYSQL! Ne segue che: Errore: è sbagliato scrivere DATE(10) o TIME(8) NELLA CREATE TABLE o impostare il tipo di una data a numeric nel caso del punteggio di un test possono esservi più opzioni: considerando un valore compreso nell'intervallo [0,100]: punteggio_test reale(NUMERIC(5,2)) Reale punteggio_test intero(TINYINT ) 1 (byte) Per il numero civico contrariamente a quello che si può credere, per alcuni comuni sono alfanumerici(es. Firenze) o particolarmente lunghi(Roma), è opportuno pertanto utilizzare VARCHAR: num_civico VARCHAR 7 esempio di chiave esterna :

id_utente intero(INTEGER UNSIGNED) 4 (bytes) o Intero_normale notare che una chiave esterna NON può essere di tipo CONTATORE in quanto NON può essere AUTO_INCREMENT . Il suo valore è infatti assegnato in maniera tale da associare specifiche istanze delle due entità. Esempio: un libro deve avere come id_autore un valore che corrisponda all'identificativo del suo effettivo autore, tale valore deve pertanto essere impostato manualmente sulla base delle informazioni a disposizione.

Per associare i tipi di dato generici espressi in italiano ai loro corrispondenti utilizzati nella create (in MySQL) è possibile utilizzare una didascalia simile a quella mostrata nello “schema di risoluzione prova scritta”(vedi sito esercizi-esame di stato) oppure fare una tabella a parte come fatto per i compiti in classe in cui ci sono i tipi di dati utilizzati in MySQL.

(5)

Errore: l' Età non è tipo DATE!!! Cirillo,ecc...:

E' un intero poiché è molto piccolo il valore potete specificare formato = Intero dimensione= 1 (byte) e nella create table TINYINT UNSIGNED (0-255)

Errore: Data_nascita non è di tipo Data/Ora (DATETIME) ma semplicemente di tipo data(DATE) Scinocca,ecc...:

Mentre in Access c'è solo il tipo Data/Ora in altri DBMS come MYSQL o OpenOffice BASE vi sono tipi distinti DATE(solo data),TIME(solo ora), DATETIME(data e ora).

Ricordatevi che la data attuale in MySQL si trova con CURDATE() mentre la data e l'ora attuale con NOW()

Errore: dimensione esagerata per chiave primaria o esterna... esempio INTEGER(20) Un numero di cifre pari a 8 sarebbe ampiamente sufficiente per registrare milioni di record...ad ogni modo NON SI DEVE SPECIFICARE LA DIMENSIONE PER LE CHIAVI PRIMARIE O ESTERNE NELLA CREATE:

Specificare la dimensione in MySQL non ha alcun effetto è solo un'informazione aggiuntiva che può essere utilizzata per la visualizzazione del valore ma, contrariamente a quanto si potrebbe pensare, non limita affatto il numero di valori effettivi assegnabili!

Questo vale anche per OpenOffice Base dove non vi viene permesso di assegnare una

dimensione ai tipi di dati interi ma viene visualizzato il numero di cifre disponibili con i tipi di default(10 per INTEGER, 5 per SMALLINT)!

Nella tabella dei metadati si può mettere la dimensione in byte o scrivere semplicemente Intero normale che corrisponde ad una dimensione di 4 byte ovvero oltre 2 miliardi di possibili valori che diventano 4 se si specifica UNSIGNED (ovvero il vincolo che i valori della chiave possono essere solo positivi).

Notare che l'Intero (normale) di MYSQL corrisponde all'Intero lungo di ACCESS

Se voglio sprecare meno memoria è necessario utilizzare tipi di intero più piccoli (vedi libro blu pagina 134,135,136):

MEDIUMINT 3 byte → oltre 8/16 milioni(se UNSIGNED), SMALLINT 2 byte → 32.000/64.000,

TINYINT → 1 byte 127/255

Errore: specificare (PK) o (FK) o espressioni analoghe nella CREATE TABLE accanto alle chiavi primarie ed esterne

Queste indicazioni servono nella tabella dei metadati ma NON nella CREATE in cui rappresentano un errore di sintassi!!

In SQL la chiave primaria va specificata con PRIMARY KEY(<chiave>) mentre quella esterna

(6)

con FOREIGN KEY(<chiave esterna>) REFERENCES <nome tabella>(<nome chiave>) . Se avete troppi dubbi sulle CREATE è meglio che non le scrivete al compito!

Spina.Capra,Cirillo,ecc... : rivedetevi bene la dichiarazione delle chiavi esterne!!!!.

Errore GRAVE: dichiare le chiavi esterne AUTO_INCREMENT. Salvatore,ecc...

Le chiavi esterne a differenza di quelle primarie non possono mai essere dei contatori(vedi sopra) in quanto il valore gli deve essere assegnato dall'utente per stabilire quali sono i record associati tra loro!!!

Errore: scrivere NOT_NULL o AUTOINCREMENT

Le espressioni corrette sono: NOT NULL (senza trattino) e AUTO_INCREMENT (con underscore)

Errore GRAVE: Utilizzare istruzioni con sintassi differenti da quelle di MySQL!

Esempio: DateDiff("d",Iscritti.Data del certificato,Date())>365 è un'istruzione lecita inACCESS ma non in MySQL in cui Datediff ha solo due parametri e invece di Date() c'è Curdate()!

HTML/PHP L'ambiente di lavoro è:

Web Server : Apache (versione 2.2.3) Interprete PHP : Php (versione 5.2) RDBMS : MySQL (versione 5.0.27)

Easy PHP integra tutti e 3 questi software non corrisponde al software PHP 5.2 che costituisce l' Interprete PHP (Migliori)

L' Interprete PHP (NON Internet PHP (Aldo)), è un software che decodifica ed esegue istruzione dopo istruzione il codice PHP(simile al compilatore PASCAL anche se in questo caso viene prima tradotto tutto in binario(file eseguibile) e poi si esegue il codice....il browser ha

qualcosa di simile per linguaggi come il “javascript” che serve per rendere più interattive le pagine web....)

MySQL si scrive senza spazi intermedi (altrimenti è come se scriveste Win dows)

Errore: scrivere codice PHP senza adeguarlo al problema in esame (vedi Salvatore,ecc...) Quando scrivete codice PHP dovete farlo in riferimento al problema in esame, alla query richiesta dall'esercizio( ad esempio per visualizzare corsi e orari) .E cercate di commentare quello che scrivete!!! non scrivete codice a caso....

Ripassatevi HTML e fate qualche esercizio perchè vi permetterà di avere un punteggio più elevato.

Se vi consultate con qualche compagno per la parte SQL o altro abbiate quantomeno l'accortezza di controllare se gli attributi e il diagramma E/R corrispondono a quelli che avete definito voi!

Riferimenti

Documenti correlati

(a) Stabilisci se le seguenti funzioni sono

[r]

Sperimentalmente : il numero totale di battiti cardiaci nel corso della vita di tutti gli animali è costante ( ~ 6 x 10 8 ). (durata di vita) x (frequenza cardiaca) = (numero

NOTA: −1 per ogni risposta errata; +1 e +1.5 risp... Determinare un’equazione cartesiana del piano π che

il corpo umano reagisce alle accelerazioni (accelerometro) non alle velocità (non è un tachimetro) esempio: macchina 90 km/h.. aereo 900 km/h non sento la

dell’equazione differenziale del moto armonico semplice , ma anche che sono le

Discutere quali dipendenze vengono risolte impiegando il forwarding (indicando se il dato viene prelevato dal reg EX/ME o ME/WB) o il register file speciale.. E’ possibile modificare

Il “problema” può anche presentare altri punti di vista...... Il “problema” può anche presentare altri punti