Rileggendo quanto ho scritto ieri sera mi chiedo quanto avesse bevuto prima...
Chiedo perdono a tutti ed in particolare a te Gianluigi per quanto scritto.
Una tabella eredita tutti i campi della tabella genitrice ma
NON ne eredita i vincoli e la Chiave Primaria. L'utilizzo più frequente è prorpio quello di evitare duplicazioni di dati creando tabelle senza campi per la maggior parte nulli.
Ti faccio un esempio pratico. Immagina di dover catalogare i prodotti di un laboratorio che venda articoli di terzi e articoli auto prodotti. Potresti usare la seguente struttura.
Prodotti
- Codice
- Descrizione
- Prezzo
...
Terzi (eredita Prodotti)
- Fornitore
l'inserimento dei dati avverrà nel modo seguente:
INSERT INTO prodotti (codice, descrizione, prezzo) VALUES (1, 'Tazza ceramica', 12.3);
INSERT INTO prodotti (codice, descrizione, prezzo) VALUES (2, 'Piatto Fondo', 7.16);
INSERT INTO terzi (codice, descrizione, prezzo, fornitore) VALUES (3, 'Tazza vetro', 2.71,'Vetroglass');
le interrogazioni saranno eseguite:
SELECT * FROM prodotti; per l'elenco di tutti i prodotti
SELECT * FROM ONLY prodotti per l'elenco dei soli articoli auto prodotti.
SELECT * FROM terzi; per l'elenco degli articoli rivenduti ed i loro fornitori.
Fermo restando che entrambe le tabelle
devono avere una loro chiave primaria.
Detto questo quello che risulta inutile, penso fosse quello che intendeva anche Berseker7, sono le relazioni idcli, idfor, idvet nella tabella anazie poichè esiste già la relazione
idazi. Nel caso specifico delle tabelle ereditate anche la relazione idazie è superflua, se non dannosa.
Come sempre si tratta di decidere quale sia la strada migliore da seguire.