Database: come individuare le entità in una traccia d'esame di stato di informatica
Individuare le
entità in un sistema reale( analisi della realtà) è complesso, è
inutile nasconderlo ma esistono i modi per farlo senza farsi prendere
dal panico o entrare in paranoia.
Gli studenti di quinta (Sia dell’Istituto Tecnico Economico ex Mercurio e Itis informatica), hanno le conoscenze teoriche e pratiche per realizzare un sistema informativo (database) partendo già da uno schema E/R (entità / relazione). Sono in grado di definire gli attributi di una tabella (entità) e le associazioni (relazioni) tra le entità (tabelle) motivando le scelte effettuate , conoscono le regole dell’algebra relazione.
Conoscono il concetto di archivio sequenziale e la differenza tra un archivio e una tabella di un database. Conoscono le regole di derivazione e sanno descrivere le caratteristiche di ciascuna entità con uno schema del tipo: tabella | campo | chiave | formato | dimensione.
Gli studenti di quinta (Sia dell’Istituto Tecnico Economico ex Mercurio e Itis informatica), hanno le conoscenze teoriche e pratiche per realizzare un sistema informativo (database) partendo già da uno schema E/R (entità / relazione). Sono in grado di definire gli attributi di una tabella (entità) e le associazioni (relazioni) tra le entità (tabelle) motivando le scelte effettuate , conoscono le regole dell’algebra relazione.
Conoscono il concetto di archivio sequenziale e la differenza tra un archivio e una tabella di un database. Conoscono le regole di derivazione e sanno descrivere le caratteristiche di ciascuna entità con uno schema del tipo: tabella | campo | chiave | formato | dimensione.
Sono in grado di costruire fisicamente con il linguaggio SQL il database, creando le tabelle, popolando i records, definendo le relazioni tra le tabelle e con le queries ricercare gli elementi richiesti secondo quanto richiesto da un cliente o dalla traccia della seconda prova d’informatica di un esame di stato.
Spesso gli stessi studenti, davanti ad una traccia (senza aiuto da parte del capo progetto o dell'insegnante di informatica) non sono in grado di individuare le entità o trovano molte difficoltà.
Ecco alcuni consigli
per possono essere utili nell’esecuzione della seconda prova
d’informatica:
La
prima cosa da fare con grande tranquillità e senza ansia è:
1) Leggere più volte e attentamente il testo della traccia (del problema) prima di decidere il modello dei dati.
2. L’ambito del problema non è un’entità (per esempio in un problema come il seguente: “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à, gli aggettivi e le proprietà corrispondono agli attributi, i verbi alle associazioni.
4. Leggere attentamente anche le richieste di output e il testo delle interrogazioni, per determinare correttamente e in modo completo gli attributi delle entità.
5. Gli attributi descrittivi che si ripeteranno con valori uguali per istanze diverse della stessa entità, per esigenze di normalizzazione, devono diventare entità (per esempio, Comuni, causali, tipologie, ecc.) legate da un’associazione 1:N con l’entità che devono descrivere. Esse saranno poi derivate in tabelle di decodifica (codice, descrizione).
6. Motivare, se necessario, le scelte fatte, evidenziando ipotesi aggiuntive e vincoli introdotti.
7. Nella scelta del tipo di associazioni:
1:1 molto rara,
probabilmente si risolve con una sola entità con gli attributi
opportuni; se poi nel modello E/R deve esserci per forza, si ricordi
la regola di derivazione che risolve l’associazione in un’unica
tabella con gli attributi della prima e della seconda entità
1:N è la più frequente; di solito la parte statica (o anagrafica) sta vicino a 1 e la parte dinamica (o movimenti) sta vicino a N
N:N si può spezzare già nella fase di modellazione in due associazioni 1:N; in questo caso le due entità di partenza vanno vicino a 1 e l’entità “di legame” va vicino a N. In caso contrario, dal modello E/R con associazione N:N, la regola di derivazione crea tre tabelle: la terza tabella contiene la chiave della prima entità, la chiave della seconda e gli eventuali attributi dell’associazione.
8. Le entità di tipo dinamico (o movimenti) hanno sicuramente una data di registrazione; inoltre possono essere opportunamente caratterizzate da una chiave autoincrementale (ID di tipo contatore), numerico progressivo (numero di registrazione).
9. Dopo aver disegnato il modello E/R utilizzare le regole di lettura per controllare la correttezza delle frasi in linguaggio comune rispetto al problema trattato.
Derivazione
delle tabelle
1. Usare con rigore
le regole di derivazione.
2. Ogni associazione
1:1 diventa un’unica tabella.
3. Ogni associazione
1:N porta una chiave esterna nella tabella dalla parte di N.
4. Ogni associazione
N:N porta due chiavi esterne nella terza tabella derivata.
Descrizioni
dei dati
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. Per facilitare la
comprensione a se stessi e al docente, si possono esplicitare alcuni
dati di esempio per ciascuna delle tabelle.
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 GROUP BY e
viceversa, a meno che siano usati come argomento di funzioni di
aggregazione.
4. Se c’è HAVING,
ci deve essere GROUP BY, perché HAVING pone condizioni sui gruppi.
5. Vicino a HAVING
c’è sicuramente una condizione con una funzione di aggregazione.
6. 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 condizioni con funzioni di aggregazione.
Per
un promemoria sui database ecco una breve sintesi:
Cos'è un
Database
I database o
banche dati o base dati sono collezioni di dati, tra loro correlati,
utilizzati per rappresentare una porzione del mondo reale.
Sono strutturati
in modo tale da consentire la gestione dei dati stessi in termini di
inserimento, aggiornamento, ricerca e cancellazione delle
informazioni.
Esempi di
utilizzo del database... - Anagrafe degli studenti di Roma3 con
curriculum - Archivio di una biblioteca con gestione dei prestiti -
CRM - La discoteca di casa
DBMS (Data Base
Management System)
È il software
per la creazione e la manipolazione di un database.
DBMS personali e
professionali: Access, MySql, Oracle, DB2.
Definisce gli
utenti e gli amministratori di un database
Fornisce
meccanismi di sicurezza, protezione e controllo dell’integrità dei
dati
Progettare e
realizzare un Database
Le basi di dati
servono a modellare concetti del mondo reale
La metodologia
di progettazione e sviluppo di una base di dati separa le decisioni
su cosa rappresentare (1) e come farlo (2 e 3):
1) Modello
concettuale dei dati: la descrizione formale e completa della realtà
di interesse. Modello E-R: schema delle Entità, dei suoi
Attributi, delle Associazioni tra esse con definizione della
Cardinalità.
2) Modello
logico: la traduzione dallo schema concettuale al modello di
rappresentazione dei dati adottato dal DBMS a disposizione. Modello
relazionale: le tabelle come relazioni.
3) Modello
fisico: lo schema logico viene completato con l’organizzazione
dei file, a cura del DBMS (si crea fisicamente il database con il
linguaggio SQL)
Popolamento del
database: il data entry
Le transazioni
Utenti
e amministratori del DB
DBA, Database
Administrator: gestisce gli accessi, predispone tabelle, indici,
viste, ottimizza lo spazio disco, effettua i backup e i restore.
Programmatori:
scrivono applicazioni che utilizzano i dati del DB
Utenti finali
del DB : utilizzano le applicazioni che permettono di interrogare il
DB
Sistemisti :
verificano il corretto funzionamento dei sistemi hw e sw su cui gira
il DBMS
Database
Relazionali
Ideati dalla IBM
negli anni ’70: da allora sono il modello più diffuso.
Si basa su
alcuni concetti fondamentali tipicamente matematici (Algebra
relazionale)
Concetto di
dato, informazione, tabella e relazione.
Modelli
alternativi: gerarchico, reticolare, ad oggetti
L’organizzazione
in Tabelle
La tabella è la
struttura dati fondamentale di un database relazionale.
Con le tabelle
si rappresentano le entità e le relazioni dello schema concettuale.
E’ composta da
record (righe o tuple) e da campi (colonne o attributi): - Ogni
record rappresenta una istanza (o occorrenza o tupla)
dell’entità/relazione - Ogni campo rappresenta un attributo
dell’entità/ relazione
Per ogni campo
viene individuato un suo dominio (tipo di dati): alfanumerico,
numerico, data, booleano, etc.
Campi
chiave e relazioni
L’insieme dei
campi i cui valori identificano univocamente un record all’interno
di una tabella è detto Chiave Primaria. Quando la chiave primaria è
composta da un solo campo, si parla di campo chiave.
Esempi di campo
chiave: matricola, codice fiscale, etc.
Quando non è
possibile trovare un campo chiave tra gli attributi di una entità,
si definisce un campo di tipo ID numerico che si autoincrementa
(contatore) 8 Vincoli di integrità
L’integrità
referenziale (referential integrity) è un insieme di regole del
modello relazionale che garantiscono l’integrità dei dati quando
si hanno relazioni associate tra loro attraverso la chiave esterna:
queste regole servono per rendere valide le associazioni tra le
tabelle e per eliminare gli errori di inserimento, cancellazione o
modifica di dati collegati tra loro.
Gli
indici
Un indice è una
struttura dati realizzata per migliorare i tempi di ricerca dei dati.
I campi di una
tabella per cui è necessario effettuare ricerche o operazioni di
join possono essere “indicizzati”.
In assenza di
indice, la ricerca del valore di un campo avviene in maniera
sequenziale sui record della tabella.
Livello fisico:
gli indici sono strutture dati fisiche gestite dal db, dipendono dal
DBMS utilizzato . Indici vengono generati automaticamente dal db
per i campi definiti come chiave.
Esempio
di tabelle correlate
La normalizzazione delle
relazioni
Nella definizione della
struttura di una relazione occorre evitare la ripetizione e la
ridondanza dei dati per non creare problemi nella fase di
manipolazione della tabella con operazioni di modifica o
cancellazione di righe.
La normalizzazione è un
processo con il quale le tabelle vengono trasformate in modo tale che
ogni tabella corrisponda a un singolo oggetto della realtà
rappresentata con il modello di database: le regole della
normalizzazione sono definite per evitare l’inconsistenza dei dati
e le anomalie nelle operazioni di aggiornamento.
Il linguaggio SQL
•SQL (Structured Query
Language) è il linguaggio che permette di effettuare le operazioni
per estrarre e manipolare i dati da un database.
•E’ lo standard tra i
sistemi relazionali : viene usato in tutti i prodotti DBMS come set
di comandi per l’utente della base di dati 13 Tipi di istruzioni
SQL
DDL: permette di definire
la struttura delle relazioni del database
DML: permette di
modificare i dati contenuti nel db, con le operazioni di inserimento,
variazione e cancellazione
DCL: permette di gestire
il controllo degli accessi e i permessi per gli utenti
Query Language: permette
di porre interrogazioni al db
Istruzioni di DDL
Il Data Definition Language
(DDL) permette di creare e cancellare intere tabelle, di definire
degli indici, specificare vincoli e integrità referenziali
Esempi:
CREATE TABLE : crea una
nuova tabella nel DB
ALTER TABLE : modifica la
struttura di una tabella
DROP TABLE : cancella una
tabella dal DB CREATE INDEX : crea un indice su una certa tabella
DROP INDEX : elimina
l’indice specificato
DML : manipolazione di tabelle
Inserimento:
INSERT INTO Tabella
VALUES (value1, value2,....)
INSERT INTO Tabella
VALUES (value1, value2,....)
Cancellazione:
DELETE FROM Tabella
WHERE column_name = some_value
Aggiornamento:
UPDATE Tabella SET column_name = new_value
WHERE column_name = some_value
Query language :
L’istruzione SELECT SELECT
[DISTINCT]
(*|Espr [[AS] Nuovo Nome ] {,
Espr [[AS] Nuovo Nome]})
FROM Tabella [Ide] {,
Tabella[Ide]}
[WHERE Condizione]
[GROUP By Attributo {,
Attributo}]
[HAVING Condizione]
Il join di tabelle
La relazione tra tabelle
si realizza sfruttando le chiavi esterne (foreign key) nelle
operazioni di join (collegamento tra tabelle).
Il join combina più
tabelle in una tabella unica con tutte le possibili combinazioni di
valori (in matematica viene chiamato Prodotto Cartesiano) e su questa
filtra le righe per produrre i risultati desiderati
Il Join naturale
Es. Lista di studenti e degli
strumenti che stanno studiando
SELECT s.class, s.name, s.id,
m.type
FROM student s, music m
WHERE s.id=m.id ORDER BY
class, name
fonte: http://host.uniroma3.it/laboratori/infoeco/idoneita/Materiali/database.pdf
Commenti
Posta un commento