+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [Generale]Vincolo di integrità referenziale - Chiave esterna

  1. #1
    Newton non è in linea Scolaretto
    Post
    120

    [Generale]Vincolo di integrità referenziale - Chiave esterna

    Ciao a tutti, ho una domanda alla quale penso però sarà data la risposta da me attesa.

    Se ho in un db relazionale, una tabella A che ha un campo per il quale vi è un vincolo di integrità referenziale e quindi questo campo è una chiave esterna verso una tabella B.

    Ipotizzo A tabella Slave e B tabella master.

    In ogni caso, sarà corretto poter scrivere o modificare record nella tabella slave A , a patto di mantenere l'integrità referenziale?? che poi si traduce in :

    1 - Inserimento - Nello scrivere un record devo garantire che il campo dove vi è il vincolo abbia un valore presente nella tabella master nel campo specificato.

    2 -Modifica - Nel modificare un record della tabella slave devo garantire ancora il vincolo, ossia che il campo sia presente nella tab master.

    è corretto ciò???

  2. #2
    Post
    4,740
    Blogs
    12
    Quote Originariamente inviato da Newton Visualizza il messaggio
    ...è corretto ciò???
    Si in linea di principio è corretto. È il DBMS che in accordo a quanto definito dai vincoli di integrità, effettuerà controlli sulla correttezza dei vincoli al momento di Inserimento/Modifica dati. In caso di violazione di un qualche vincolo, il DBMS solleverà un'eccezione che potrà essere gestita dal tuo programma.

  3. #3
    Newton non è in linea Scolaretto
    Post
    120
    Appunto.

    Su una tabella slave si può INSERIRE/MODIFICARE, l'importante è manterene la congruenza dei dati tra le 2 tabelle. Dovrai mettere cmq nel campo chiave esterna un valore che esite nella tab master.

    Puoi cancellare sempre un record nella tabella Slave.


    Si definiscono poi ..le politiche ON DELETE e ON UPDATE ..sulla tabella master e che conseguenza debbon avere sulle tabelle slave...

    set null
    nothing
    cascade

  4. #4
    L'avatar di M.A.W. 1968
    M.A.W. 1968 non è in linea Moderatore Globale Ultimo blog: C64 - Knight: il giro del cavallo
    Luogo
    Granducato di Toscana
    Post
    836
    Blogs
    41
    Quote Originariamente inviato da Newton Visualizza il messaggio
    Su una tabella slave si può INSERIRE/MODIFICARE
    E ci mancherebbe che non fosse possibile! Sarebbe del tutto illogico.
    Anzi, su quasi tutti i sistemi DBMS, a partire dai più arcaici che pure supportavano nominalmente alcuni livelli di integrità referenziale, il controllo di esistenza della chiave primaria nella tabella master non viene effettuato in automatico, almeno in fase di creazione del record: a rigore, in tali ambienti sarebbe possibile aggiungere/creare record "orfani" nella tabella slave senza effetti collaterali.

    Ben diverso il discorso per quanto attiene la cancellazione, e in particolare la propagazione della cancellazione. Al di là dei formalismi e dei dettagli, deve essere ben chiaro che il mero concetto di integrità referenziale nasce quasi esclusivamente in riferimento a codesta operazione.


    Colgo l'occasione per rimarcare ancora una volta che, nei motori DBMS di qualità e nei livelli applicativi, le "cancellazioni" non sono comunque mai tali e il mantenimento della coerenza dei dati è affidato a molteplici mezzi. Nella tipica applicazione gestionale fiscale (e non) nulla o quasi nulla di importante viene eliminato fisicamente dal database, ma debitamente archiviato con memoria di transazione e relativa data. Esempio da manuale: il vecchio indirizzo territoriale in anagrafica clienti dopo un trasferimento di sede. Solo in tal modo l'eventuale ristampa di bolle e fatture con data anteriore al trasferimento, per copia conforme o altri scopi, avverrà correttamente e coerentemente.
    Ultima modifica di M.A.W. 1968; 12-10-2011 15:15 
    Tutti gli utenti sono pregati di prendere visione del Regolamento del Forum e di rispettarlo.

    Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo... già che ci siete, leggete questa selezione di parole famose di alcuni tra i più grandi geni.

    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi