Tabella che fa riferimento a se stessa

di il
6 risposte

Tabella che fa riferimento a se stessa

Buongiorno,sono nuovo del forum ed anche di Access , nel senso che ho fatto un corso base due settimane fa per necessità lavorative ed ora sto cercando di realizzare il database per cui ho fatto il corso, ma ho paura che sia sopra le mie possibilità. Grazie a chiunque voglia aiutarmi

Il database in questione è in ambito meccanico industriale, cerco di spiegarmi al meglio.
Ci sono vari componenti che compongono il macchinario, pezzi base non scindibili , ed ho fatto una tabella componenti.
Questi componenti vengono assemblati insieme per fare dei gruppi di montaggio che chiamo semiassemblati, ed ho fatto una tabella semiassemblati.
Fin qui tutto abbastanza semplice con una terza tabella di servizio gestisco le relazioni molti a molti fra le tabelle componenti e semiassemblati.
Il problema è che un semiassemblato può essere composto da componenti ma anche da uno o più semiassemblati che naturalmente fanno parte della stessa tabella.

Esempio :

Componenti : A ; B ; C ; D ; E

Semiassemblati : M1 ; M2 ;M3

M1 composto da A e B

M2 composto da C , D ,E

M3 composto da M1 , B, D

Non posso dividere i semiassemblati in due tabelle perchè un semiassemblato che oggi è fine a se stesso (tipo M2), domani potrebbe far parte di un altro semiassemblato quindi all'inizio non so di quale tabella farà parte .

Spero di essere stato chiaro

Grazie
Saluti

6 Risposte

  • Re: Tabella che fa riferimento a se stessa

    Windreef ha scritto:


    ...ho fatto un corso base due settimane fa per necessità lavorative ed ora sto cercando di realizzare il database per cui ho fatto il corso, ma ho paura che sia sopra le mie possibilità.
    Sì, in un corso di 2 settimane non sei in grado di fare quello che ti serve, specie se sei partito da zero quanto a nozioni di database relazionali. (per la cronaca: non l'ho mai fatto nemmeno io, quindi non leggere la risposta come quella di un sapientone che vuole farti sentire una nullità)
    La situazione a mio avviso è da ricondurre al... database delle ricette di @Alex!

    Ovviamente non tanto per il fatto che i macchinari si mangiano quanto per il fatto che lì viene gestita una struttura ricorsiva infinita, in cui tutto può essere componente di qualcosa.
    Se riesci a trasformare la difficoltà in uno stimolo ad imparare arriverai in fondo.
  • Re: Tabella che fa riferimento a se stessa

    Grazie mille
    Ok ci proverò
    grazie
  • Re: Tabella che fa riferimento a se stessa

    Windreef ha scritto:


    Ok ci proverò
    C'è anche questo, sempre opera di @Alex: mirror.masterdrive.it/alessandrobaraldi/DettaglioFaq.asp%3FIdFAQ=272.html
    Prova a guardare anche questo thread dove viene spiegato il ragionamento che deve stare alla base di un database fatto in quel modo
    forum.masterdrive.it/access-79/creazione-database-ricette-98774/
    Mi auguro che non aumenti il comprensibile caos iniziale con cui dovrai combattere.
    (se è richiesta una password da qualche parte in quei database è "sitocomune", senza le virgolette ovviamente. Non è un segreto, l'ha pubblicata @Alex più volte, così non ci resti male se ti sembra di non riuscire a fare alcune cose)
  • Re: Tabella che fa riferimento a se stessa

    Stai entrando in un campo non complesso, ma non banale... relazioni Gerarchiche.
    Se un componente può essere Figlio di un solo Componente, la Tabella va realizzata con un Campo [IdParent] che definisce la PK dell'Oggetto Padre a cui è legato.
    Se un Componente è un elemento primario questo campo IdParent, sarà NULL, se un componente ha un legame con un Componete superiore avrà l'Id del componente superiore.
    Es(Ambito culinario), per semplicità metto 3 campi:
    
    IdPk 		| Desc 		| IdParent
    -----------------------------------
    1 		| Torta di Mele | Null
    2 		| Uova 		| 1
    3 		| Farina 	| 1
    Questa struttura, per essere gestita potrebbe avere necessità di solo 1 Tabella in cui nel diagramma relazionale si inseriscono 2 Istanze della stessa Tabella, e si collega IdPK della 2° su IdParent della 1°.
    Questo però andrebbe bene se la Farina tu la usassi SOLO per fare quella Torta di mele... ovvero solo se il Componente 2 venisse usato Solo nel componente Padre 1

    Se invece hai un catalogo componenti e vuoi la flessibilità di gestite le aggregazioni gerarchiche, serve una struttura simile ma con una tabella aggiuntiva di Defininizione Gerarchica.

    TbComponenti
    
    IdPK
    Desc
    TbGerarchia
    
    IdPk
    IdParent
    La Chiave primaria di questa tabella è l'insieme dei 2 campi.
    Ovviamente in questa tabella inserirai la ricetta... o i dati specifici dell'aggregazione.

    Il problema che poi ti troverai, dal momento che JET non gestisce le Gerarchie in SQL, ed in base al fatto che queste strutture sono tipiche per popolare TreeView, dovrai lavorare di Codice più di quanto pensi..., in ogni caso è il metodo per farlo...
  • Re: Tabella che fa riferimento a se stessa

    Grazie mille
    Cmq sticaz.. devo digerire tutte le informazioni e provare, molto.
    Mi sa che ci risentiremo nei prossimi giorni

    Grazie infinite a tutti
  • Re: Tabella che fa riferimento a se stessa

    Buongiorno,
    riguardo al problema esposto nel primo post, io ho risolto così :
    Ho creato una QUERY UNIONE fra le tabelle COMPONENTI e SEMIASSEMBLATI
    Ho creato una tabella con QUERY CREAZIONE derivata dalla query di unione appena fatta . Nome tabella SEM-COMP
    Ho creato una tabella di servizio con i campi IDcomponente e ID semiassemblai
    Nelle relazioni database ho creato una relazione una a molti fra la chiave primaria della tabella semiassemblati e IDsemiassemblati della tabella di servizio e poi un'altra relazione uno a molti fra la chiave primaria della tabella SEM-COMP creata con la QUERY UNIONE e IDcomponente della tabella di servizio

    Sembra che funzioni, però volevo chiedervi un favore , secondo voi può funzionare o ci sono errori di gestione che possono portare a problemi?
    Prima di iniziare ad inserire valanghe di dati LOL

    grazie mille per la disponibilità
    ciao
Devi accedere o registrarti per scrivere nel forum
6 risposte