Estratto del documento

Traduzione in schema relazionale

Traduzione di un'associazione multipla

In caso di associazione multipla, l’entità centrale può presentare più chiavi esterne, che puntano a chiavi primarie di tabelle diverse.

Traduzione di un'associazione ricorsiva

Un’associazione ricorsiva è un’associazione che non unisce due entità ma ritorna in se stessa. In un’associazione di questo genere la chiave esterna punta alla chiave primaria dell’entità stessa da cui proviene.

Traduzione di più associazioni ricorsive

In una stessa tabella possono essere presenti più associazioni ricorsive. Esse si traducono indipendentemente, con tante chiavi esterne quante sono le associazioni e ciascuna che punta alla chiave primaria dell’entità stessa da cui proviene.

Traduzione di attributi strutturati

Se ci sono attributi strutturati si procede creando per ogni attributo un campo separato (perché creando un singolo campo per l’attributo strutturato dopo saremmo limitati nel caso in cui dovessimo aggiornare o ricercare singole parti di esso).

Traduzione di attributi multivalore

Se ci sono attributi multivalore si procede creando una nuova tabella con la chiave esterna che fa riferimento alla chiave primaria della tabella madre e l’attributo in questione.

Traduzione di attributi strutturati multivalore

Se ci sono attributi strutturati multivalore si procede creando una nuova tabella con chiave esterna che fa riferimento alla chiave primaria della tabella madre e accanto ad essa saranno presenti i vari attributi composti.

Traduzione dei vincoli

Una chiave esterna, al contrario di una chiave primaria, può assumere valori nulli e valori ripetuti. Il programmatore, però, può imporre dei vincoli su di essa.

La differenza tra i due esempi è che nel primo [Madre, ha, Figlio] è presente la totalità da entrambi i lati in quanto una madre, per essere tale deve necessariamente avere un figlio, e un figlio, per essere tale, deve avere necessariamente una madre; mentre nel secondo [Donna, ha, Figlio] manca la totalità dal lato dell’entità Donna in quanto non è detto che una donna debba necessariamente avere un figlio per essere tale, mentre la totalità dal lato dell’entità Figlio è presente per il motivo di cui sopra.

Vincolo di obbligatorietà

Per esprimere il vincolo di obbligatorietà (esiste una sfumatura di significato col vincolo di totalità anche se spesso i due termini sono usati intercambiabilmente) si usa il comando NOT NULL. Esso è particolarmente interessante quando applicato a chiavi esterne.

Ad esempio: CF Madre NOT NULL

In questo esempio, praticamente, si sta imponendo che tutti i figli hanno necessariamente una madre (in quanto si sta imponendo che i codici fiscali delle madri non possono essere nulli e che quindi, ogni figlio, deve avere una madre). Si badi che con l’obbligatorietà delle chiavi esterne si può esprimere il vincolo di totalità solo dal lato N, e quindi non lo si può esprimere dal lato 1 (cioè dal lato [Madre, ha]).

Vincolo distinct o unique

Un altro vincolo interessante che può essere applicato sulle chiavi esterne è il vincolo distinct o unique. Esprime il fatto che non ci possono essere valori ripetuti per un attributo. Quindi, ad esempio CF Madre DISTINCT si sta imponendo che una madre può avere un solo figlio in quanto il codice fiscale della madre non può essere ripetuto più volte per quanti figli ha.

In definitiva con le chiavi esterne si può rappresentare la totalità della diretta ma non la totalità dell’inversa.

Vincoli di integrità referenziale

Per quanto riguarda i vincoli di integrità referenziale il dominio della chiave esterna è incluso nel dominio della chiave primaria cioè: ⊆aDom (FK) aDom (PK). Non può quindi succedere che la chiave esterna della tabella punti ad un valore non esistente nella tabella a cui fa riferimento.

Ad esempio, non può essere inserito una chiave esterna CFMADRE nella tabella figlio se prima non è inserita la chiave primaria CFMADRE della tabella madre.

Traduzione delle molteplicità

Molteplicità 1:1 senza totalità

In questo caso si procede inserendo la chiave esterna indifferentemente in una delle due tabelle.

Molteplicità 1:1 con totalità

In questo caso è preferibile inserire la chiave esterna dove c’è la totalità, in questo modo la chiave esterna non presenterà valori nulli e quindi non causerà uno spreco di spazio.

Molteplicità 1:N

In questo caso si procede inserendo la chiave esterna dove c’è la N, in questo modo non si producono tuple ripetute.

Molteplicità M:N

In questo caso si procede creando una nuova tabella inserendo le chiavi esterne delle due tabelle derivanti e eventualmente gli attributi che presenta l’associazione.

Traduzione dei vincoli di specializzazione e generalizzazione

Siccome non è possibile rappresentare direttamente i vincoli di specializzazione e generalizzazione col modello relazionale, occorre adattarli, comprimerli nello schema relazionale operando delle scelte di compromesso. Per effettuare la traduzione si può scegliere tra 3 metodi diversi, ognuno dei quali presenta vantaggi e svantaggi. I 3 metodi sono:

  • Creazione di una tabella unica
  • Tecnica del partizionamento verticale
  • Tecnica del partizionamento orizzontale

1° Metodo: Tabella unica

In questo metodo si crea un’unica tabella che contiene gli attributi della superclasse, gli attributi di tutte le sottoclassi e uno o più discriminatori che serviranno per specificare a quale sottoclasse appartiene la tupla.

Se siamo in presenza di disgiunzione (come nell’esempio [Studente, Matricole, Laureandi]) si procede inserendo un solo attributo discriminatore capace di rappresentare separatamente le 2 sottoclassi. L’attributo Discriminatore, in questo caso, è un attributo booleano che specifica se la tupla appartiene alla sottoclasse Matricole o all’altra sottoclasse Laureandi.

Se invece non c’è disgiunzione (come nell’esempio [Studente, Maggiorenne, Patentato]) allora non può essere usato un solo discriminatore in quanto non si possono rappresentare le 2 sottoclassi separatamente perché esse si sovrappongono. Gli attributi Maggiorenne e Patentato, in questo caso, sono degli attributi discriminatori booleani che specificano se la tupla appartiene alla sottoclasse Matricola o all’altra sottoclasse Laureando.

Vantaggi:

È conveniente usare questo metodo quando gli attributi specifici (cioè gli attributi delle sottoclassi) sono pochi.

Svantaggi:

  • Il primo svantaggio è che bisogna creare 1 o più discriminatori.
  • Il secondo svantaggio è che nelle tuple potrebbero esserci molti campi vuoti (in quanto ogni tupla appartiene ad una solamente delle sottoclassi, di conseguenza gli attributi delle altre sottoclassi rimarranno vuote).

2° Metodo: Partizionamento verticale

Utilizzando la tecnica del partizionamento verticale non si fa altro che creare, oltre alla tabella della superclasse, anche una tabella per ogni sottoclasse contenente:

  • Gli attributi specifici della sottoclasse stessa
  • Una chiave esterna comune alle tabelle delle sottoclassi (che funge anche da chiave primaria).

Vantaggi:

Questo metodo conviene quando ci sono molti attributi specifici delle varie sottoclassi.

Svantaggi:

  • Il primo svantaggio è che utilizzando questo metodo si ha una suddivisione dei dati (quindi i dati vengono sparsi) ed, eventualmente, servirà ricostruirli se si necessita di una visione completa.
Anteprima
Vedrai una selezione di 5 pagine su 17
Domande + Risposte Esame Basi di dati Pag. 1 Domande + Risposte Esame Basi di dati Pag. 2
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
Domande + Risposte Esame Basi di dati Pag. 6
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
Domande + Risposte Esame Basi di dati Pag. 11
Anteprima di 5 pagg. su 17.
Scarica il documento per vederlo tutto.
Domande + Risposte Esame Basi di dati Pag. 16
1 su 17
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher enzonapoli1996 di informazioni apprese con la frequenza delle lezioni di Basi di dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Napoli - Parthenope o del prof Maratea Antonio.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community