Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Foreign Key

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    139

    Foreign Key

    Ho un pbl con MySQL.
    Ho più tabelle padre e una tabella figlio.
    Nella tabella figlio ho vari campi che possono essere NULL ma che se ci sono fanno riferimento alle varie tabelle padre.
    In fase di inserimento però mi scattano i vari foreign key constraint.

    Li devo per caso settare in quelche modo?

    Se potete aiutarmi.

    Ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    139
    Nessuno riesce ad aiutarmi?

  3. #3

    Re: Foreign Key

    Originariamente inviato da temerario
    Ho un pbl con MySQL.
    Ho più tabelle padre e una tabella figlio.
    Nella tabella figlio ho vari campi che possono essere NULL ma che se ci sono fanno riferimento alle varie tabelle padre.
    In fase di inserimento però mi scattano i vari foreign key constraint.

    Li devo per caso settare in quelche modo?

    Se potete aiutarmi.

    Ciao
    Tante tabelle padre per una tabella figlio... e come se non bastasse una tabella figlio con riferimenti NULL.... per forza o e' figlio di uno oppure di un altro....

    Forse e' il caso che rivedi la struttura del db... forse ti potrebbe convenire una tabella padri, una tabella figli ed una tabella di unione padri-figli....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    139
    il mio pbl è questo:

    Tabella LISTINO
    codice
    descrizione
    codice_articolo
    codice_merceologico
    codice_misura
    codice_varietà
    codice_cliente_fornitore
    prezzo

    Poi ho le varie tabelle ARTICOLO, MERCEOLOGICO, MISURA, VARIETA, CLIENTE_FORNITORE.

    I campi codice della tabella listino sono delle foreign key ma alcune di queste posso essere inserito o no.

    In questo modo purtroppo mi fallisce l'inserimento. C'è un modo migliore per strutturare il DB e gestire questa situazione?

    Grazie

  5. #5
    I campi che puoi definire come non obbligatori puoi associarli ad un record "fasullo" di "parcheggio"....

    crea un id (di solito con valore zero) nella tabella padre dove come dato all'id zero corrisponda un "non assegnato".... pero' personalmente preferisco un id MAX tipo 99999999 per poter eventualmente controllare l'id zero.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    139
    E' preferibile questa soluzione oppure eliminare le FK e quando vado ad esempio a cancellare un articolo dopo un messaggio di conferma mi cancella il listino associato?

  7. #7
    Originariamente inviato da temerario
    E' preferibile questa soluzione oppure eliminare le FK e quando vado ad esempio a cancellare un articolo dopo un messaggio di conferma mi cancella il listino associato?
    Se usi le FK devi seguire le regole , altrimenti che le usi a fare se per gestire le eccezioni le togli e le metti....

    Personalmente uso un record padre "non definito" nel senso di generico (di solito il primo dopo la creazione della tabella) con un valore specifico. Con id autoincrement uso lo zero che devi mettere con un update. Pero', parlando di MySQL, per problemi di portabilita' dello script il controllo tipico delle FK me lo faccio ad HOC con poche righe di script, cioe' non uso sempre le InnoDB.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it L'avatar di geko
    Registrato dal
    Dec 2004
    Messaggi
    104
    Non mi è del tutto chiaro il motivo per cui in alcuni casi i riferimenti alle tabelle padre dovrebbero essere NULL, cmq ha ragione Piero.Mac, anche se trovo la soluzione del record "fittizio" un po' poco elegante. Se questa struttura ti è comoda fai a meno delle FK, se invece preferisci avere una struttura dati più rigorosa potresti tenere nella tabella "listino" solo codice, descrizione e prezzo e spostare tutte le relazioni in tabelle di cross (5 in totale). A questo punto puoi mettere le FK in tutte le tabelle e decidere anche se implemtare le relazioni come uno a molti o molti a molti. Tutto questo a scapito di un po' di sbattimento con le JOIN...
    Ogni soluzione ha pregi e difetti, vedi tu..

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.