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 senza Nome, come per Cognome
    • (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

  1. Associazioni [1:1]

    diventa

    che specifica NOT NULL perchè totale da A a B e UNIQUE perchè per ogni B c'è un solo A.

    La relazione è preferibile inserirla in A per non perdere l'informazione di totalità da A a B.

  2. Associazioni [N:1] e [1:N]

    diventa

  3. Associazioni [N:N]

    diventa

    perdendo ogni riferimento di totalità.

    Nel caso ricorsivo, invece:

    diventa

  4. Ereditarietà

    L'ereditarietà ha diversi modi di essere risolta, infatti

    viene semplificata in:

    • Relazione unica, se le sottoclassi hanno pochi attributi:

      dove Discriminatore specifica se A assume il ruolo di B o di C.

    • Partizionamento verticale, se B e C 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. ).

  5. 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.

  6. Attributi multivalore

    diventa

    se le sequenze S non condividono elementi tra le varie ennuple di A, altrimenti diventa

    creando una nuova chiave sintetica su S.

  7. 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: