venerdì, settembre 19, 2008

Basi di dati: Progettazione concettuale di una base dati

3 livelli di progettazione:

concettuale (Entity / Relationship): indipendente dal DBMS che verrà scelta. Produce schema concettuale
logica: dipendente dal modello logico scelto (es. Rdbms per relazionale). Produce uno schema logico
fisica: dipendente dal motore di DB scelto (ad esempio se avessi scelto MySQL ci sono caratteristiche diverse da Oracle. Poduce la base di dati vera e propria

  1. Raccolta e analisi dei requisiti -> produce un documento in linguaggio naturale

Modelli concettuali:

Utilizzati nella fase di progettazione, di solito sono grafici.

Il più famoso é Entity-Relationship

Si parte astraendo dalla realtà le caratteristiche
interessate dei dati che sappiamo di dover raccogliere.
Es. se voglio descrivere "studente" sceglierò caratteristiche come anno e matricola e trascurerò altre caratteristiche che, seppure proprie di ogni studente non importano alla figura di studente stesso (es. colore degli occhi).

I tre metodi di astrazione più usati sono:

Classificazione

Definire un concetto come classe degli oggetti che voglio descrivere caratterizzati da proprietà comuni.
Trovo le proprietà comuni tra le informazioni che devo classificare.
Es.= Presi 3 elementi (es. VW Golf, Fiat punto e Audi A3) troviamo le caratteristiche comuni per definire la classe a cui appartengono (es. automobile)

Relazione: is member of

Aggregazione

Vedo le parti (già classi, non caratteristiche!) che compongono gli oggetti che voglio descrivere e aggregando ottengo la classe che le contiene tutte.
Es.: Prendo carrozzeria, motore sono 3 classi con le proprie proprietà e le aggrego nell'unica classe automobile.

Relazione: Part of

Generalizzazione

Ricerca delle proprietà comuni per definire una forma di ereditarietà tra un sottoinsieme di informazioni (base) e un sovrainsieme (derivate)
Es. Prese le classi uomo e donna generalizzo le proprietà comuni nella superclasse individuo e lascio nelle sottoclassi uomo e donna solo quelle specifiche.
Es2. Presa la classe dipendente specifico (che è il contrario di generalizzo!) nelle sottoclassi programmatore e sistemista

Relazione: is a

Nessun commento: