Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208

    [MySQL] On Cascade, cancella tutto in questa relazione?

    Salve,
    La mia è una curiosità da basso utilizzo delle FK in un database.
    Ho uno schema così, vi indico solo le Primary Key

    TABELLA PARENT:
    parent_id


    TABELLA CHILD
    child_id
    child_fk_parent_id

    TABELLA CHILD2
    child2_id
    child2_fk_child_id
    child2_fk_child_parent_id
    In pratica, la tabella Child è figlia di Parent e la tabella Child2 è figlia di Child, contenendone l'intera primary key.

    A questo punto, se io setto il comportamento di Parent su ON CASCADE in caso di cancellazione, la cancellazione così fatta arriva fino a Child2 o dovrò comunque collegare Child2 in relazione diretta con Parent per ottenere l'effetto?

    Grazie mille!

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da Korenaar Visualizza il messaggio
    ........ o dovrò comunque collegare Child2 in relazione diretta con Parent per ottenere l'effetto?
    No non devi collegare direttamente Child2 con Parent
    il campo "child2_fk_child_parent_id" non ti serve assolutamente

    anzi oltre a non servire apre un grave errore di normalizzazione
    ( a meno che non si tratti di un caso particolare e motivato)

    .

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Sarò onesto, quella key di Child in Child2 ce l'ha portata in automatico Mysql Workbench in qualità di Primary Key di Child. Non credevo creasse problemi a tal punto. Dunque mi confermi comunque che avendo tre tabelle collegate in quel modo il delete si trasmette dalla prima all'ultima tabella, qualunque sia il numero di tabelle tra la prima e l'ultima?

    per il resto, sistemo quest'anomalia. Ho dato per scontato che uscendo in automatico questa potesse essere una pratica naturale.

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da Korenaar Visualizza il messaggio
    Sarò onesto, quella key di Child in Child2 ce l'ha portata in automatico Mysql Workbench in qualità di Primary Key di Child.
    ..........
    Ho dato per scontato che uscendo in automatico questa potesse essere una pratica naturale.
    Saro onesto anch'io, è la prima volta che vedo una tipologia di Key fatta in quel modo, poi se mi dici che la propone di default MySql mi viene voglia di capirne il senso

    in pratica hai le tabelle Nonno, Padre, Figlio
    nella Figlio hai contemporaneamente i riferimenti del Padre e del Nonno

    ma se il Padre del Padre poi non corrisponde al Nonno del Figlio cosa succede ??
    in Figlio potrebbe avere 2 Nonni ( e non rispondetemi che ne ha 4 )

    So che mi sono spiegato male .......


    Quote Originariamente inviata da Korenaar Visualizza il messaggio
    ..........
    Dunque mi confermi comunque che avendo tre tabelle collegate in quel modo il delete si trasmette dalla prima all'ultima tabella, qualunque sia il numero di tabelle tra la prima e l'ultima?
    Non ho un MySql per testarlo, ma sarei stupito se non lo facesse


    Magari qualcuni più esperto .....
    Ultima modifica di nman; 17-11-2014 a 00:14

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Guarda, per spiegarmi veloce:

    UTENTE:
    utente_id (PK)


    QUOTA:
    quota_id (PK)
    quota_utente_id (FK ma anche'essa PK)

    PAGAMENTO:
    pag_id (PK)
    pag_quota_id (FK ma anch'essa PK)
    pag_quota_utente_id (FK sempre da QUOTA ma PK in automatico da WorkBench)
    In pratica la tabella utente, la tabella quota associata all'utente con le sue voci, la tabella pagamenti associata alla singola quota per mantenere traccia dei pagamenti rispetto alla quota da pagare.

    Workbench col suo sistema di modeling praticamente ha portato in PAGAMENTI l'intera PK di QUOTA. Ecco perchè viene fuori così. Non so so è giusto o sbagliato, la cosa che vorrei capire è se cancellando un utente con questo sistema in automatico mi viene via tutto quello che è collegato direttamente o indirettamente ad esso. Da un lato il problema potrebbe essere una serie di pagamenti non più associati a nulla (da evitare), ma viceversa anche il classico errore da CONSTRAINT che mi impedisce la cancellazione di un utente (anche questo fastidioso direi).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.