Come creare una relazione tra 2 record di una medesima tabella

di il
2 risposte

Come creare una relazione tra 2 record di una medesima tabella

Salve a tutti, ho un dubbio e non so come andare avanti. Avrei necessità di creare una relazione e tra 2 record di una tabella ma non capisco come fare. Faccio un esempio pratico...

Ho una tabella access con i dati anagrafici delle persone. Vorrei costruire un'altra tabella che associ un tipo di relazione tra 2 persone. Esempio marco e paolo sono due persone( 2 record) della prima tabella e la relazione che c'è tra loro è "marco è il babbo di paolo". Come realizzo questa cosa, nel senso come creo la struttura delle relazioni in questo caso?

2 Risposte

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    La prima tabella si chiama Persone: OK.
    La seconda tabella la chiamerai Parentele con i seguenti campi:
    IDParentela (PK)
    IDPersona1 (FK)
    GradoParente1 (qui ci scrivi per esempio padre)
    IDPersona2 (FK)
    GradoParente2 (qui ci scrivi per esempio figlio)

    Crei 2 relazioni:
    Persone.IDPersona uno-a-molti Parentele.IDPersona1
    Persone.IDPersona uno-a-molti Parentele.IDPersona2

    Noterai che Access creerà automaticamente una tabella Persone_1 (non ho mai capito perchè...così è).

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    Quello che ti ha esposto Osvaldo va quasi bene, manca solo una seconda istanza della tabella Persone... in cui la Pk deve andare su IdPersona2

    In sostanza essendo la tabella Persone una tabella di anagrafiche non avrai 2 tabelle separate, quindi l'istanza principale relaziona IdPersona1 e la seconda istanza IdPersona2

    In un diagramma ER devi quindi trascinare 2 volte la tabella Persone.

    Fin qui tutto semplice....ma ora viene il difficile... questo è un sistema gerarchico che potenzialmente può avere livelli infiniti, significa che non saranno facilmente gestibili con normali metodi di Query in quanto potrai arrivare solo al 1° massimo 2° livello ma se c'è ne fossero di più capisci anche tu che prevedere query di query di query sarebbe strutturalmente bloccante.

    Per questo le strutture gerarchiche, almeno con access che non ha un TSQL, vanno gestite principalmente con dei recordset in funzioni ricorsive.

    Non è affatto banale ma nemmeno impossibile, diciamo che se sei digiuno di VBA serve un bel passo avanti.

Devi accedere o registrarti per scrivere nel forum
2 risposte