03. Regole di derivazione

Esistono delle regole per tradurre uno schema E-R in uno schema logico relazionale equivalente, cioè in uno schema che rappresenta le stesse informazioni in un differente modello.

Il risultato rappresenta una organizzazione dei dati nel rispetto del modello dei dati scelto (nel nostro caso il modello relazionale).

Ristrutturazione dello schema E-R

Prima di procedere nella traduzione è necessario ristrutturare lo schema E-R eliminando le generalizzazioni come mostrano i seguenti esempi:

Attributi composti

Gli attributi composti devono essere trasformati in normali attributi dell'entità come mostrato in figura.

Attributi multivalore

Ogni attributo multivalore dà luogo ad una nuova entità che partecipa con una nuova associazione, come mostrato in figura.

A seconda dei casi la ristrutturazione può richiedere una associazione 1:N o M:N.

Regole di traduzione

Ogni regola si applica ad un frammento di schema E-R ed ha come risultato un insieme di schemi di relazione corrispondenti al frammento E-R in ingresso.

Entità

Una entità viene tradotta in una relazione con lo stesso nome, gli stessi attributi e la stessa chiave dell'entità.

Esempio:

Schema di relazione corrispondente:

    • Utente(CodiceFiscale, Nome, Cognome, DataDiNascita, Età)

Per gli attributi calcolati va aggiunto un vincolo di integrità che specifica il metodo di calcolo: nel caso di età, il vincolo afferma che il valore di tale attributo si ottiene come differenza tra la data odierna e la data di nascita di una persona.

Associazione molti a molti

In una associazione molti a molti è necessario aggiungere alle due relazioni derivate dalle due entità, una nuova relazione i cui attributi sono chiavi esterne, collegate alle chiavi primarie delle prime due relazioni.

Inoltre, la nuova relazione, deve avere una chiave primaria composta dalle chiavi esterne.

Anche eventuali attributi dell'associazione vanno aggiunti a quest'ultima relazione. A seconda dei vincoli riportati dalla documentazione aggiuntiva, gli attributi dell'associazione potrebbero dover essere inclusi nella composizione della chiave primaria.

Esempio:

Schemi di relazione corrispondenti:

    • Dipendente(CodiceFiscale, Nome, Cognome)

    • Teatro(Denominazione, Città)

    • Lavorare(Dipendente↑, Teatro↑, DataDiAssunzione, Ruolo)

        • Dipendente FK(Dipendente.CodiceFiscale)

        • Teatro FK(Teatro.Denominazione)

Nel caso in cui dai vincoli si comprende che il dipendente può essere assunto più volte e deve essere mantenuto lo storico delle assunzioni, la data di assunzione deve rientrare nella composizione della chiave primaria della relazione Lavorare. Il ragionamento si estende in modo analogo anche al Ruolo.

Associazione uno a molti

In una associazione uno a molti è necessario aggiungere, alla relazione che partecipa con molteplicità N, un nuovo attributo, detto chiave esterna, collegato alla chiave primaria dell'altra relazione (a molteplicità 1).

Eventuali attributi dell'associazione vanno aggiunti alla relazione che partecipa con molteplicità N. A seconda dei vincoli riportati dalla documentazione aggiuntiva, gli attributi dell'associazione potrebbero dover essere inclusi nella composizione della chiave primaria.

Esempio:

Schemi di relazione corrispondenti:

    • Teatro(Denominazione, Città)

    • Spettacolo(CodiceSpettacolo, Denominazione, Teatro↑, Data)

        • Teatro FK(Teatro.Denominazione)

Nel caso in cui dai vincoli si comprende che uno spettacolo può essere riprogrammato nello stesso teatro e che deve essere mantenuto lo storico delle programmazioni, la data di programmazione deve rientrare nella composizione della chiave primaria della relazione Spettacolo.

Associazione uno a uno

Da un punto di vista metodologico l'associazione uno a uno va tradotta aggiungendo nella prima entità un nuovo attributo corrispondente alla chiave primaria della seconda entità e gli eventuali attributi dell'associazione.

Data la simmetricità della relazione, è possibile invertire i ruoli della prima e della seconda entità.

L'associazione uno ad uno, tecnicamente può essere anche tradotta con un'unica relazione, i cui attributi corrispondono agli attributi delle due entità.

Esempio:

Schemi di relazione corrispondenti:

    • Stato(Denominazione, Sigla)

    • Presidente(CodiceFiscale, Nome, Cognome, Stato↑)

        • Stato FK(Stato.Denominazione)

Entità debole

Una entità debole viene tradotta in una relazione con lo stesso nome. La chiave primaria della relazione è costituita dagli attributi che costituiscono la chiave parziale dell'entità debole e dall'attributo chiave dell'entità proprietaria. L'attributo corrispondente all'entità proprietaria è una chiave esterna per la relazione.

Eventuali attributi dell'associazione vanno aggiunti alla relazione derivata dall'entità debole. A seconda dei vincoli riportati dalla documentazione aggiuntiva, gli attributi dell'associazione potrebbero dover essere inclusi nella composizione della chiave primaria.

Esempio:

Schemi di relazione corrispondenti:

    • Libro(CodiceLibro, Titolo)

    • Capitolo(Numero, CodiceLibro↑, Titolo)

        • CodiceLibro FK(Libro.CodiceLibro)

Partecipazione totale alle associazioni

La partecipazione totale di una entità ad una associazione determina un vincolo che deve essere riportato nella documentazione a corredo.

Esempi:

Dalla partecipazione totale dell'entità Docente all'associazione Abilitare di tipo molti a molti, discende un vincolo di tipo transazionale tra la tabella associativa Abilitare e la tabella Docente: contestualmente all'inserimento di un docente nella tabella Docente, occorre inserire almeno un record nella tabella Abilitare che afferisce allo stesso docente.

Dalla partecipazione totale dell'entità Provincia all'associazione Appartenere di tipo uno a molti, discende un vincolo di chiave esterna non nulla per la tabella Provincia: l'inserimento di un record nella tabella Provincia, richiede di referenziare una regione già presente nella tabella Regione.