Relazioni tra tabelle

di il
4 risposte

Relazioni tra tabelle

Ho una tabella Fatture dove ci sono i campi
num fattura e id fornitori che non possono essere mai uguali e quindi ho dato due chiavi primarie (per impedire di registrare la stessa fattura di quel fornitore due volte)
Poi ho una tabella scadenze DOVE devo creare per quella fattura la sua scadenza e dove quindi volevo riportare il campo num fattura per collegarli
Però non riesco a relazionarli
il concetto è che a una fattura possono essere relazionate + scadenze
E' forse perché ho messo due chiavi primarie?

4 Risposte

  • Re: Relazioni tra tabelle

    Non usare mai una chiave primaria su più campi, proprio per questa difficoltà successiva di relazionare.
    Se hai bisogno di rendere univoca la coppia campi NumFattura e IDFornitore, usa un Indice Multicampo Univoco. Leggi la guida in linea per capire come si imposta. Un Indice Multicampo Univoco funziona come la proprietà Indicizzato: Sì (Duplicati non ammessi) ma spalmato su più campi. Se per sbaglio/distrazione digiti una coppia già esistente, Access ti invia un messaggio di errore.
  • Re: Relazioni tra tabelle

    simo27 ha scritto:


    Ho una tabella Fatture dove ci sono i campi
    num fattura e id fornitori che non possono essere mai uguali e quindi ho dato due chiavi primarie
    Non hai usato due chiavi primarie ma una chiave primaria costituita da due campi
    La conseguenza di questo è che nella tabella delle scadenze la chiave esterna alla tabella Fatture sarà costituita dai due campi che in Fatture, insieme, sono chiave primaria.

    simo27 ha scritto:


    E' forse perché ho messo due chiavi primarie?
    Ora hai capito che non hai due chiavi primarie ma una, composta da più campi
  • Re: Relazioni tra tabelle

    Grazie capito !!
  • Re: Relazioni tra tabelle

    simo27 ha scritto:


    Grazie capito !!
    Scusa, ma non funziona così.

    Prima di tutto è assolutamente sbagliato usare la coppia di campi NumeroFattura + IDFornitore come chiave PK.
    I motivi sono due:

    1. ogni anno la numerazione dei documenti riparte da 1
    per cui come dici tu rischi (e prima o poi accadrà, per la nota Legge di Murphy) di doverti trovare nella situazione in cui devi registrare lo stesso NumeroFattura+IDFornitore, anche in un successivo anno. Se le imposti come PK non potrai farlo!

    2. le numerazioni delle fatture prevedono anche delle sotto-numerazioni: /bis, /ter, ... /A, /B/, ... e così via, per il semplice fatto che può accadere (e accade!) che si debba 'infilare' una fattura in una certa data (vuoi per errori vari, vuoi per dimenticanza, etc.) quindi non potendo modificare la numerazione principale si usa la sotto-numerazione.
    Ad esempio, supponendo di avere già emesso queste due fatture:
    - fatt nr. 10 del 13/02/2015
    - fatt. nr 11 del 14/02/2015

    e poi si debba infilarne una nuova sempre in data 13/02/2015, questa fattura dovrà avere una sotto-numerazione, esempio:
    - fatt nr. 10/bis del 13/02/2015

    La chiave primaria va solo semplicemente impostata sull' IDFattura.


    In definitiva, la tua preoccupazione è solo un finto problema, dato che OGNI fattura che emetti deve avere il proprio numero progressivo univoco, ed è solo di questo che ti devi preoccupare.

    una semplice condizione
    SELECT Max(NumeroFattura) + 1
    FROM Fatture
    WHERE AnnoContabile = <AnnoRiferimento>
    in cui <AnnoRiferimento> è l'anno della gestione contabile per il quale deve essere emessa la fattura.
Devi accedere o registrarti per scrivere nel forum
4 risposte