Progettazione logica
Per avvicinarci alla progettazione fisica il modello ad oggetti va prima trasformato nel modello relazionale.
In questo modello, gli attributi sono solamente primitivi, e vengono introdotti i vincoli di:
-
Chiave
I sottoinsiemi degli attributi che costituiscono possibili chiavi sono dette superchiavi. Solamente quelle minime, i.e. composte da attributi che insieme la rendono unica, possono diventare chiavi primarie.
Per esempio, di
Studenti(Matricola: int, Nome: string, Cognome: string)
le superchiavi sono:
(Matricola, Nome, Cognome)
: l'intera ennupla è sempre superchiave(Matricola, Nome)
: non è minima perchè rimane superchiave senzaNome
, come perCognome
(Matricola)
: è minima e quindi è chiave e può essere chiave primaria
-
Chiave esterna
Quando un attributo punta alla chiave primaria di un ennupla esistente in un'altro oggetto.
-
Valori non nulli
Se un attributo parziale è sconosciuto o senza valore si utilizza
NULL
, mentre sugli attributi totali viene specificato il vincolo non nullo. La chiave primaria invece, dovrà sempre essere non nulla.
Un'istanza dello schema viene detta valida quando rispetta tutti i vincoli e l'integrità è rispettata.
Trasformazione
-
Associazioni
[1:1]
diventa
che specifica
NOT NULL
perchè totale daA
aB
eUNIQUE
perchè per ogniB
c'è un soloA
.La relazione è preferibile inserirla in
A
per non perdere l'informazione di totalità daA
aB
. -
Associazioni
[N:1]
e[1:N]
diventa
-
Associazioni
[N:N]
diventa
perdendo ogni riferimento di totalità.
Nel caso ricorsivo, invece:
diventa
-
Ereditarietà
L'ereditarietà ha diversi modi di essere risolta, infatti
viene semplificata in:
-
Relazione unica, se le sottoclassi hanno pochi attributi:
dove
Discriminatore
specifica seA
assume il ruolo diB
o diC
. -
Partizionamento verticale, se
B
eC
hanno dei vincoli propri: -
Partizionamento orizzontale, se è di disgiunzione (i.e. ) e
S
non è presente:in cui
A
può essere omesso se è di coperatura (i.e. ).
-
-
Chiavi primarie
Viene scelto un attributo che soddisfa il vincolo di chiave, cioè che rende l'ennupla unica. Nel caso non sia presente basterà creare una chiave sintetica con un nuovo attributo.
Se la relazione è una sottoclasse, andrà copiata la chiave primaria della superclasse. Se è una relazione derivante da associazione molti-a-molti invece, andranno concatenate le chiavi esterne coinvolte.
-
Attributi multivalore
diventa
se le sequenze
S
non condividono elementi tra le varie ennuple diA
, altrimenti diventacreando una nuova chiave sintetica su
S
. -
Attributi composti
diventa
Esempio
Data la classe Corsi
contenente una lista di docenti, si passa da:
rimuovendo gli attributi multivalore, a:
ed eliminando gli attributi composti si arriva infine a: