Preparazione prova scritta

Modellazione dati - Modello concettuale


1.  Leggere più volte e attentamente il testo prima di decidere il modello dei dati.

2.  L’ambito del problema non è un’entità, ma spesso è il COMMITTENTE del progetto Informatico. Per esempio: ”In un Istituto scolastico si vogliono gestire con un database le informazioni sui docenti e gli studenti”, l’Istituto non è un’entità.

3.  Alcune regole che valgono (quasi) sempre: i sostantivi corrispondono alle entità e le proprietà, riferite ad un altro sostantivo, corrispondono agli attributi, i verbi alle associazioni.

4.  Rileggere il testo della traccia cerchiando le possibili entità e sottolineando gli attributi.

5.  Leggere completamente la traccia attentamente fino alla fine. Le richieste di output delle query SQL ci aiutano molto per determinare correttamente e in modo completo gli attributi e le entità.

6.   Motivare le scelte fatte, evidenziando ipotesi aggiuntive e vincoli introdotti.

7.  Nella scelta del tipo di associazioni pensare sempre ad un singolo dato e non all’entità astratta (Esempio: per utente pensare a Mario Rossi, per libro pensare ai Promessi Sposi):

      -  1 a 1 L'associazione uno a uno è rara, ma può esistere (spesso ‘capo’ o ‘responsabile’, direttore di reparto, capitale di una nazione);
      -   1 a N L'associazione uno a molti è la più frequente. Spesso sono relazioni contenitore con il verbo ‘avere’ o ‘contenere’ (una scuola ha molti studenti) o di azione (un utente ‘effettua’ molti acquisti/operazioni)
      -   N a N L'associazione molti a molti si trova di frequente e, nel momento in cui si disegna il diagramma, ci si deve ricordare che, tramite le regole di derivazione, la relazione che unisce le due entità molti a molti diventerà una terza tabella, verificare se la relazione ha o meno degli attributi propri. (Esempio: Un attore recita in molti film, un film ha molti attori e nella relazione ‘recita’ potremo inserire l’attributo ‘ruolo’).
      -   Se tra due entità esiste una relazione con il verbo ‘essere’ deve essere impostata una relazione ISA (is a - è un). Si disegna con un triangolo verso l’entità che generalizza. (Esempio: Un dipendente è un contabile o un operaio e hanno attributi e relazioni diversi, a parte quelle comuni da inserire sull’entità dipendente.)

8.   Dopo aver disegnato il modello E/R controllare la correttezza rispetto al problema trattato. Rileggere nuovamente la traccia e verificare che ci siano tutte le entità richieste e le relazioni siano coerenti.

Derivazione delle tabelle - Modello logico

1.  Usare con rigore le regole di derivazione.

2.   Ogni entità diventa una tabella nel modello logico, ogni attributo delle entità diventa un campo della tabella.

3.   Derivare le associazioni:

      -   Ogni associazione 1 a 1 diventa un’unica tabella, oppure viene trattata come 1 a N.
      -   Ogni associazione 1 a N porta una chiave esterna nella tabella dalla parte di N.
      -   Ogni associazione N a N porta due chiavi esterne nella terza tabella derivata.
      -   Decidere per le relazioni ISA decidere se conviene un collasso in alto, si porta solo l’entità che generalizza con tutti gli attributi delle entità figlie. Oppure si effettua un collasso in basso, vengono portare nel modello logico le entità figlie con gli attributi dell’entità padre.

Descrizione dei dati - Modello fisico CREATE TABLE


1.  I campi che non vengono usati in calcoli sono di tipo testo (stringa); per esempio, telefono, partita IVA, CAP, pur essendo composti da cifre, sono di tipo testo.

2.  Ricordare la struttura del comando:


CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype);

CREATE TABLE Persona (
    PersonaID int,
    Nome varchar(255),
    Cognome varchar(255),
    Data_nascita date,
    Mail varchar(255));



Interrogazioni e linguaggio SQL

1.  Le query devono essere ottimizzate in modo da usare il minor numero di tabelle; se la richiesta riguarda solo un codice, non serve usare anche la tabella collegata.

2.  Se si usano funzioni di aggregazione (COUNT, SUM, AVG, ...), quasi sempre c’è un GROUP BY. Quasi sempre, perché le funzioni si possono usare anche per contare le righe che rispettano una condizione, oppure per sommare i valori di un campo numerico per le righe che rispettano una condizione.

3.  Gli attributi scritti vicino a SELECT devono essere scritti vicino a GROUPBY e viceversa, a meno che siano usati come argomento di funzioni di aggregazione.

4.  Se c’è HAVING, ci deve essere GROUPBY, perché HAVING pone condizioni sui gruppi.

5.  Vicino a HAVING c’è sicuramente una condizione con una funzione di aggregazione. Vicino a HAVING non ci può essere una condizione sulle singole righe: questa deve essere messa vicino a WHERE. Quindi vicino a WHERE non ci possono essere condi- zioni con funzioni di aggregazione. Per una più facile lettura e per una gestione più efficiente dei nomi, conviene sempre usare la clausola AS (alias) per assegnare un nome ad un’espressione di calcolo o al valore restituito da una funzione di aggregazione; AS si può usare anche per assegnare nomi più corti ai nomi delle tabelle nelle query complesse.

Pagine Web

Se la richiesta di visualizzazione dei dati riguarda informazioni contenute in un database, occorre sicuramente usare una pagina dinamica (Php).
Le operazioni sul database possono essere principalmente di manipolazione o di interrogazione: le prime restituiscono il numero di righe coinvolte nell’operazione, le seconde un insieme di righe. Le interrogazioni che usano funzioni di calcolo possono restituire anche una sola riga con un solo campo (conteggi, somme, medie, ecc.)
Il cuore della pagina dinamica è sicuramente il codice SQL: per maggiore chiarezza nella presentazione del compito, è opportuno trascrivere il comando o la query in SQL prima della pagina Web.
Se l’utente deve scegliere tra un elenco di descrizioni, è importante che la scelta sia guidata attraverso una casella combinata che presenta all’utente i valori contenuti nella tabella di decodifica.