Foreign key
copia linkUn oggetto foreign key rappresenta una relazione fra due tabelle, quindi una relazione fra le due tipologie di oggetti in esse contenuti. L’oggetto foreign key viene creato nella tabella “figlia”, quella cioè che punta alla tabella “padre” tramite appositi campi di correlazione; ad esempio, la tabella Righe Ordine può contenere una foreign key verso la tabella Prodotti. Per creare una relazione, è sufficiente tirare la tabella padre su quella figlia, tenendo premuto il tasto shift.
Video corso Creazione oggetto campo foreign key
Proprietà
Nome: rappresenta il nome logico della relazione, così come sarà riconosciuta all'interno del progetto Instant Developer. Quando si crea la relazione, In.de ne preimposta il nome all’elemento della tabella "padre", ma è opportuno modificarlo per indicarne uno più specifico.
Descrizione: contiene la descrizione del significato della relazione. Quando si crea la relazione, In.de ne preimposta la descrizione a quella della tabella "padre", ma è opportuno modificarla per indicarne una più specifica.
Regola di cancellazione: indica quali controlli devono essere fatti se avviene la cancellazione di un record nella tabella padre della relazione. I possibili valori sono:
- Impedisci Modifiche (restrict): se il record in fase di cancellazione è in relazione con altri nella tabella figlia, allora la cancellazione verrà impedita. Questo è il valore di default e significa che la relazione è di tipo "referenziante", cioè gli oggetti coinvolti hanno pari valore.
- Propaga Modifiche (cascade): se il record in fase di cancellazione è in relazione con altri nella tabella figlia, allora anch’essi verranno cancellati. Questa relazione esprime un legame di possesso fra l’oggetto padre e quello figlio; ad esempio se si cancella un Ordine, vengono cancellate anche le sue Righe.
- Annulla Collegamento (set default): se il record in fase di cancellazione è in relazione con altri nella tabella figlia, allora il legame verrà interrotto annullando o comunque impostando al valore di default i campi della relazione. Questa regola può essere interessante in caso di relazione di tipo opzionale. Se, ad esempio, una Riga Ordine si può riferire ad un Prodotto ma questo riferimento è opzionale, è possibile utilizzare questa regola per annullare automaticamente i riferimenti quando il prodotto viene cancellato.
- Nessun controllo (no check): in questo caso non viene fatto alcun controllo. Quando record padre viene cancellato, i record figli non subiscono alcuna modifica e l’operazione può continuare. E’ il valore obbligatorio in caso di relazione fra tabelle in diversi database.
Regola di aggiornamento: è l’analogo della regola di cancellazione ma si applica a modifiche alla chiave primaria di record nella tabella padre. Per la spiegazione dei possibili valori vedi sopra. Per relazioni fra tabelle nello stesso database si consiglia vivamente di mantenere l’impostazione Restrict per impedire l’aggiornamento dei campi in chiave primaria.
Chiave primaria: indica che la relazione è di tipo identificante, cioè che i campi che la compongono fanno parte della chiave primaria della tabella figlia. Questo tipo di relazione esprime un legame di possesso fra l’oggetto padre e quello figlio, ed è quindi bene impostare la regola di cancellazione a Cascade. Non è disponibile se la relazione è di tipo self, cioè fra la tabella e se stessa.
Opzionale: indica che la relazione è opzionale, cioè il legame potrebbe non esserci, quindi anche i campi che la compongono saranno opzionali.
Crea indice: impostando questo flag In.de genererà un indice che avrà come chiave i campi della foreign key, in modo da velocizzare le ricerche dal padre verso i figli. Non è sempre bene avere indici sulle foreign key, in particolare se la tabella padre è piccola (meno di 1000 righe), se la relazione è identificativa (sarebbe un duplicato), se non è necessario accedere dal padre verso il figlio in maniera ottimizzata. In.de può suggerire di impostare questo flag in base alle query scritte nel progetto, se si desidera che vengano eseguite velocemente.
Condividi campi con altre FK: indica se, in caso di foreign key composte di più campi, è possibile condividerli con altre foreign key basate sugli stessi campi. Occorre resettare questo flag solo se i campi creati automaticamente da In.de non soddisfano le proprie esigenze applicative.
Usa Trigger: non tutti i database supportano le varie combinazioni di regole di aggiornamento e cancellazione indicate sopra. Inoltre alcuni database potrebbero porre limiti particolari sull’utilizzo di tali regole. Per superare questi inconvenienti, In.de è in grado di generare trigger sulle tabelle coinvolte nella foreign key che sostituiscono l’integrità referenziale nativa del database. E’ consigliabile impostare questo flag solo se necessario alla propria applicazione in quanto l’integratità referenziale nativa è più completa dell’uso dei trigger.
Controlla esistenza record dipendenti: nel caso di uso di trigger se questo flag viene impostato allora verrà controllata l’esistenza di record nella tabella figlia della foreign key.
Controlla esistenza record puntati: nel caso di uso di trigger se questo flag viene impostato allora verrà controllata l’esistenza di record nella tabella padre della foreign key. Resettando questo flag è possibile ottenere comportamenti particolari, come tabelle che contengono un puntamento ad oggetti appartenenti a più tabelle padri, per le quali non è utilizzare le foreign-key native.
Codice: rappresenta il nome fisico della foreign key all’interno del database. Se è attivo il check-box Automatico allora Instant Developer sceglierà un nome fisico adeguato e non dovrai preoccuparti che rimanga univoco. Nel caso di tabella importata non potrai modificare questa proprietà perché è il nome effettivo della foreign key nel database.
Automatico: indica che il codice della foreign key viene calcolato e reso univoco in base al nome logico della stessa.
Menu contestuale
Aggiorna Database: aggiorna fisicamente la foreign key nel database. In questo modo non è necessario compilare il progetto per ottenerne l’aggiornamento fisico.
Modifica foreign key: apre la videata per l’impostazione della correlazione fra i campi della tabella padre e quelli della tabella figlia. Da utilizzare quando i campi scelti automaticamente da In.de non sono quelli corretti.
Aggiungi attività: crea un nuovo oggetto attività collegato alla foreign key. Serve come promemoria per modifiche future o per gestire il lavoro di gruppo.
Vai a: permette di saltare alla tabella padre della relazione nell’albero degli oggetti del progetto.
Trova oggetti derivati: cerca tutti gli oggetti del progetto derivati dalla foreign key anche a più livelli di derivazione.
Trova dove usato (oggetto): cerca tutti i punti del progetto dove è stata direttamente riferita in qualunque modo questa foreign key.
Trova dove usato (contenuto): cerca tutti i punti del progetto dove è stata direttamente riferita in qualunque modo questa foreign key o uno degli oggetti in essa contenuti.
Puoi tirare una foreign key con il drag&drop su…
Collection: associa la foreign key alla collection, indicando che dovrà essere usata quella relazione al momento del caricamento della collection dal database.
Tabella in query: indica che la foreign key deve essere utilizzata per collegare la tabella con le altre selezionate nella query. E’ anche possibile utilizzare il menu contestuale dell’oggetto tabella in query per ottenere lo stesso risultato.
Ultima modifica: 04/11/2022 / Validità: da 8.5.3800