Dubbio su correlazione tabelle di un Database

di il
24 risposte

Dubbio su correlazione tabelle di un Database

Ciao a tutti, forse la mia è una domanda un po' stupida ma, data la mia scarsa esperienza con i database, non riesco a capire come gestire un particolare:

Ho creato un database per la gestione degli interventi tecnici presso i clienti.

Il principio di base è che ogni cliente potrebbe più di una sede e in ciascuna sede possono esserci più di un apparecchio.

Ho quindi una Tabella CLIENTI, legata con una relazione uno a molti a una tabella SEDE, legata in ua relazione uno a molti con una tabella APPARECCHI i cui campi sono un ID, Identificativo apparecchio (numerico) e numero matricola.

L'identificativo apparecchio si appoggia poi ad una tabella di supporto dove ad ogni identificativo viene correlato codice e nome del modello dell'apparecchio.

Lo scoglio su cui sbatto me lo ritrovo quado inserisco un nuovo intervento tecnico che è legato al cliente, ad una sede e può riguardare uno o più apparecchi di quella sede. 

Al momento nella tabella interventi mi risulta un campo idcliente, un campo idsede ed il campo idapparecchio quest'ultimo potrebbe avere un solo valore (ossia l'intervento solo su un apparecchio) o nel caso che in quella sede ci siano più apparecchi potrebbe avere tanti valori quanti sono gli apparecchi installati.

Ho creato una query che in base al valore dell'IDsede restituisca l'elenco degli apparecchi installati ma la mia difficoltà è come registrare nel campo idapparecchio i valori uno o più apparecchi.

Nella maschera di inserimento del nuovo intervento ho inserito una casella combinata che mi permette di scegliere la sede dell'intervento (e scrive il valore nel campo idsede della tabella interventi) e mi piacerebbe avere una casella dove possa scegliere uno o più apparecchi i cui id vadano registrati nel campo idapparecchio.

Probabilmente la soluzione è semplicissima e chiedo scusa in anticipo se cosi fosse.

24 Risposte

  • Re: Dubbio su correlazione tabelle di un Database

    24/10/2025 - lantanio ha scritto:

    Al momento nella tabella interventi mi risulta un campo idcliente, un campo idsede ed il campo idapparecchio quest'ultimo potrebbe avere un solo valore (ossia l'intervento solo su un apparecchio) o nel caso che in quella sede ci siano più apparecchi potrebbe avere tanti valori quanti sono gli apparecchi installati.

    Devi creare una ulteriore tabella che relaziona 1-N l'ID intervento con gli ID apparecchi.

    Poi nella form di inserimento dell'intervento devi inserire una subform in cui inserisci gli apparecchi su cui viene fatto l'intervento...Metterai delle combo filtrate che ti fanno comparire solo gli apparecchi presso la sede specifica del cliente...

  • Re: Dubbio su correlazione tabelle di un Database

    Mumble mumble...

    interventi 1>>M righeinterventi

    Nella tabella interventi alla voce nuovo

    Metti l'idintervento, la data il cliente, la sede, data sopralluogo ecc....

    Questa è la testata del tuo foglio di intervento

    Righe:

    Idriga, idintervento, idmatricola, lavoro da eseguire (un campo note), chiuso(si/no)

    Post... E nuova riga... E la.storia si ripete finché per la sede non ci sono più matricole...

    (Adesso, anche dato l'orario, non ricordo la sql per mostrare l'elenco matricole restanti non inserite nel foglio di lavoro, poi magari te la posto)

    Puoi mettere le matricole in una lista da svuotare man mano che vaiinserendo nelle righe.

    La tabella interventi, oltre ad essere la testa del documento è anche il piede.

    Totale interventi (count righe where idintervento)

    Chiuso si / no

    Totale importo

    Ecc...ecc...

    24/10/2025 - lantanio ha scritto:

    creato una query che in base al valore dell'IDsede restituisca l'elenco degli apparecchi installati ma la mia difficoltà è come registrare nel campo idapparecchio i valori uno o più apparecchi.

    Semplicemente aggiungi i vari record di righeinterventi.

    Come fossero.righe fattura ma al posto del prodotto metti la matricola e invece di fattura metti intervento tecnico

  • Re: Dubbio su correlazione tabelle di un Database

    Secondo me la stuttura tabelle dovrebbe essere questa:

    Clienti
    IDCliente (PK)
    ...campi anagrafici...

    Sedi
    IDSede (PK)
    Indirizzo
    IDComune (FK)
    IDCliente (FK)

    Comuni
    IDComune (PK)
    Comune
    CAP
    Provincia
    Regione

    Apparecchi
    IDApparecchio (PK)
    Marca
    Modello

    ApparecchiSedi
    IDAS (PK)
    IDApparecchio (FK)
    IDSede (FK)

    Interventi
    IDIntervento (PK)
    DataIntervento
    Descrizione
    IDAS (FK)

    Relazioni:
    Clienti.IDCliente uno-a-molti Sedi.IDCliente
    Comuni.IDComune uno-a-molti Sedi.IDComune
    Sedi.IDSede uno-a-molti ApparecchiSedi.IDSede
    Apparecchi.IDApparecchio uno-a-molti ApparecchiSedi.IDApparecchio
    ApparecchiSedi.IDAS uno-a-molti Interventi.IDAS

  • Re: Dubbio su correlazione tabelle di un Database

    25/10/2025 - OsvaldoLaviosa ha scritto:

    Secondo me la stuttura tabelle dovrebbe essere questa:

    Clienti
    IDCliente (PK)
    ...campi anagrafici...

    Sedi
    IDSede (PK)
    Indirizzo
    IDComune (FK)
    IDCliente (FK)

    Comuni
    IDComune (PK)
    Comune
    CAP
    Provincia
    Regione

    Apparecchi
    IDApparecchio (PK)
    Marca
    Modello

    ApparecchiSedi
    IDAS (PK)
    IDApparecchio (FK)
    IDSede (FK)

    Interventi
    IDIntervento (PK)
    DataIntervento
    Descrizione
    IDAS (FK)

    Relazioni:
    Clienti.IDCliente uno-a-molti Sedi.IDCliente
    Comuni.IDComune uno-a-molti Sedi.IDComune
    Sedi.IDSede uno-a-molti ApparecchiSedi.IDSede
    Apparecchi.IDApparecchio uno-a-molti ApparecchiSedi.IDApparecchio
    ApparecchiSedi.IDAS uno-a-molti Interventi.IDAS

    Uhm... Un apparecchio in molte sedi?

    Supponendo che cliente sia un magazzino e che sede sia un reparto basta cercare un fac-simile di gestione ubicazione articoli. In più, trattandosi di macchinari e non articoli, abbiamo una matricola unica per macchinario ad eccezione dell'evento fortuito che il macchinario x della ditta y abbia lo stesso numero del macchinario x della ditta k.

    Ma qui non stiamo vedendo.la cosa lato cliente ma lato assistenza tecnica.

    Io ho l'elenco delle matricole, vedo la matricola a chi appartiene (cliente) e dove è ubicata (sedi), controllo se tra le matricole ho altri macchinari where sede =x e se hanno scadenza di manutenzione o altro è con un viaggio faccio due servigi...

    Compilo la mia scheda di intervento:

    Cliente

    Sede

    Macchinari/macchinario

    Descrizione problema

    Ecc...

    Al.rientro si completa con ore intervento parti di ricambio ecc....

    Ho macchinari in gestione, hanno manutenzione ordinaria o straordinaria, una ubicazione ed un cliente con la sua sede.

    Non è la gestione cespiti di una ditta.

    Poi non vorrei aver capito male.

  • Re: Dubbio su correlazione tabelle di un Database

    25/10/2025 - sihsandrea ha scritto:

    Uhm... Un apparecchio in molte sedi?

    Non è un'idea campata in aria. Non so se nel caso specifico dell'OP una cosa del genere possa capitare, ma è plausibile che un macchinario possa essere spostato in una sede differente (magari proprio per far fronte ad una manutenzione di un'altro apparecchio).
    Se questa cosa può capitare, allora nella tabella ApparecchiSede, si potrebbero aggiungere due campi data "DataInizio" e "DataFine", per identificare appunto in quale periodo un apparecchio è rimasto in quella sede.

    TheTruster

  • Re: Dubbio su correlazione tabelle di un Database

    25/10/2025 - sihsandrea ha scritto:

    Un apparecchio in molte sedi?

    Sì. L'amplificatore Denon, modello PMA-480R può averlo Tizio, Caio, Sempronio. E magari Tizio ne ha 5 in 5 Sedi diverse. Forse ho dimenticato un campo Matricola nella tabella ApparecchiSedi.

  • Re: Dubbio su correlazione tabelle di un Database

    25/10/2025 - OsvaldoLaviosa ha scritto:

    25/10/2025 - sihsandrea ha scritto:

    Un apparecchio in molte sedi?

    Forse ho dimenticato un campo Matricola nella tabella ApparecchiSedi.

    Effettivamente stavo per suggerire anche questo. Se gli apparecchi non vengono discriminati anche dal numero di matricola, nel caso di modelli uguali, si rischia di fraintendere quale apparecchio specifico stia in quale sede.

    TheTruster

  • Re: Dubbio su correlazione tabelle di un Database

    Ma in tutto questo lantanio dov'è?

    Lato ditta di manutenzione e intervento tecnico (metodo empirico)

    Driiin.... Driiin....

    - Ditta XY buongiorno!

    - salve avrei bisogno di un registratore di cassa.

    Le do i miei dati fiscali...

    [ Inserimento cliente per emissione preventivo ]

    Driiin.... Driiin....

    - dica!

    - Ok lo prendiamo!

    - perfetto! Domani lo installiamo!

    [Inserimento scheda di lavoro cliente tal dei tali, dispositivo modello e marca nr. Serie o matricola bla bla... Data installazione, data prossima manutenzione, installazione/dismissione (utile per escludere i dispositivi non più manutenibili)]

    Dati fondamentali: cliente, luogo, marca, modello matricola. Il resto è corredo.

    Stiamo parlando di assistenza tecnica, lo scopo del programma è tenere sotto controllo lo stato dei dispositivi, non quanti ne ha la tutta pinkopallo e dove.

    Ho aggiornamenti da fare per il ditr...n modello k, vedo quanti ne ho in flotta e organizzo le assistenze tecniche.

    Mi chiama Pinko pallo, chiedo nr matricola marca e modello (perché due produttori potrebbero mettere lo stesso nr di matricola se non si parla di registratore di cassa).

    Già so a chi appartiene e dove potrebbe essere a meno che il cliente non dice "abbiamo cambiato sede ci siamo trasferiti. In quel caso ho la scheda aperta e cambio l'ubicazione e consulto l'elenco dei prodotti di cui curo l'assistenza cambiandone l'ubicazione.

    Ma queste sono analisi che bisogna fare a priori. Fai finta di essere un tecnico e annota tutti i dati che ti servono poi li normalizzi.

  • Re: Dubbio su correlazione tabelle di un Database

    Ragazzi sono commosso, una valanga di risposte ora vengo con ordine:

    • Soluzione di Mailman: avevo pensato anch'io di creare una tabella che relazionasse uno o più interventi al singolo apparecchio ma mi pareva una soluzione non elegante, invece potrebbe essere funzionale.
    • Soluzione di sihsandrea ecco qui superiamo abbondantemente le mie conoscenze di Access, dato che mi sono perso.... 
    • Soluzione di OsvaldoLaviosa in realtà il mio database è strutturato come quello che ha menzionato tu con la differenza che:

    • Tabella di supporto apparecchi:

    IDApparecchio (PK)
    Codice apparecchio 
    Modello

    • Tabella apparecchi in ogni sede cliente:

    ApparecchiSedi
    IDAS (PK)
    IDApparecchio (FK)

    Matricola apparecchio
    IDSede (FK)

    • La tabella interventi :

    IDIntervento (PK)
    DataIntervento
    Descrizione
    IDAS (FK)

    Ed è proprio qui che mi blocco dato che potrebbe essere possibile che in un singolo IDintervento che avviene in una sola IDsede potrebbero esserci più apparecchi IDAS.

    Gli apparecchi sono tutti della marca dell'azienda, la tabella di supporto contiene tutti gli apparecchi con codice e nome, la tabella ApparecchiSedi prende questi valori dalla tabella di supporto e per lo stesso record IDAS viene inserita la matricola, quindi un apparecchio (composto da codice, nome e matricola) può esistere in una sola sede.

    Per me è importante sapere in quale sede quali apparecchi siano effettivamente operativi dato che operiamo anche con contratti di manutenzione che dipendono anche dalla matricola stessa. Poi sto creando anche degli alert per avvisare per eventuali manutenzioni o interventi programmati.

    Gli apparecchi di cui parliamo sono tutti impianti di trattamento acqua, sono di proprietà del cliente e, fino all'anno scorso non venivano gestiti, quindi sto creando questo database per sapere esattamente quali apparecchi sono installati presso ciascuna sede dei clienti (al 90% i clienti sono Monosede).

    Vi ringrazio in anticipo

  • Re: Dubbio su correlazione tabelle di un Database

    Dispositivi{iddispositivo, descrizione, bla bla...}

    Carichi i dispositivi

    Matricole{matricola, iddispositivo, ubicazione}

    Aggiungi le matricole in base all'iddispositivo. Il campo ubicazione lo compili quando lo passi al cliente e lo modifichi se cambia ubicazione.

    Potresti mettere di default "magazzino"

    Da inventario filtri per campo="magazzino"

    Per cliente una sql tra clienti, sedi e matricole

    Continuiamo...

    Interventi{idintervento, dataintervento, IDcliente, IDSede, bla bla...}

    Righeinterventi{idriga, idintervento, matricola, descrizioneintervento, bla bla}

    Da questo ricavi il foglio di intervento: l'incaricato va all'indirizzo cerca i prodotti con quelle matricole (righeinterventi), fa quello che deve fare era tergo scrive cosa ha fatto e se ha usato ricambi.

    Al rientro l'impiegato apre la scheda e la completa con le info su:

    Lavorieseguiti{idlavoro, idintervento, idriga, note, bla bla}

    tutto il resto va a suon di sql per le ricerche

  • Re: Dubbio su correlazione tabelle di un Database

    28/10/2025 - lantanio ha scritto:

    • Tabella apparecchi in ogni sede cliente:

    ApparecchiSedi
    IDAS (PK)
    IDApparecchio (FK)

    Matricola apparecchio
    IDSede (FK)

    questa non serve... la racuperi da query, come quando vuoi sapere che articoli prende il cliente o che lotti gli ho inviato, allo stesso modo controllo che matricole ha e dove sono ubicate.

    28/10/2025 - lantanio ha scritto:

    • Tabella di supporto apparecchi:

    IDApparecchio (PK)
    Codice apparecchio 
    Modello

    questa va bene, serve per identificare una sola volta gli apparecchi che ci sono, poi ogni apparecchio è contraddistinto da un lotto o matricola

    quindi:

    matricole{matricola (si presume univoco altrimenti usi un indice composto da matricola e articolo), idapparecchio, ubicazione, bla bla}

  • Re: Dubbio su correlazione tabelle di un Database

    Grazie mille dei suggerimenti, questo fine settimana studierò SQL e metto mani all'opera

  • Re: Dubbio su correlazione tabelle di un Database

    28/10/2025 - lantanio ha scritto:

    • Soluzione di OsvaldoLaviosa in realtà il mio database è strutturato come quello che ha menzionato tu con la differenza che:
    • Tabella di supporto apparecchi:

    IDApparecchio (PK)
    Codice apparecchio 
    Modello

    • Tabella apparecchi in ogni sede cliente:

    ApparecchiSedi
    IDAS (PK)
    IDApparecchio (FK)
    Matricola apparecchio
    IDSede (FK)

    • La tabella interventi :

    IDIntervento (PK)
    DataIntervento
    Descrizione
    IDAS (FK)

    Cosa intendi per supporto apparecchi? Per me la 1a tabella si chiama Apparecchi: essa deve avere una Marca=Denon, Modello=PMA-480R. Cos'è un [Codice apparecchio] in questo caso?
    La struttura da me proposta è corretta. Ogni qualvolta si effettuano molti Interventi/Manutenzioni (anche se in stessa Sede-Cliente) tu li tracci uno per uno singolarmente. Opportune query si occuperanno di rimettere tutti i dati in ordine. Anche le maschere verranno organizzate di conseguenza.

    Il problema puramente psicologico entra in gioco perché in data 29/10/2025 viene fatta un'UNICA opera di manutenzione in Sede=A del Cliente=Caio. Tu vorresti tracciare un'UNICA Bolla o Fattura (la chiamerò genericamente Documento) per molti Interventi. Ripeto, con opportune query tu risali lo stesso all'unicità della coppia Sede-Cliente grazie al fatto che gli n Apparecchi presi in considerazione ti faranno risalire automaticamente a A-Caio. Se hai questa esigenza, prevedi un'altra tabella:
    Documenti
    IDDocumento (PK)
    Protocollo (qui in genere si scrive un progressivo relativo all'Anno)
    DataDocumento
    ...spero ci siano altri campi indipendenti da tutto il discorso fatto finora...
    perché ogni altro dato è già tracciato nelle tabelle precedentemente citate.
    La tabella Interventi cambia così:
    IDIntervento
    IDAS (FK)
    Descrizione
    IDDocumento (FK)

    relazione Documenti.IDDocumento uno-a-molti Interventi.IDDocumento

    In fase di compilazione dati, mi viene in mente una maschera/sottomaschera Documenti/Interventi. Se ti piace far apparire in alto nella maschera Documenti tutti i dati anagrafici del Cliente e l'indirizzo della Sede...per me si provvede con la compilazione di tutti gli Interventi prima, poi un clic di pulsante raccoglie i dati "a monte" di ogni singolo Apparecchio-Sede che "curiosamente saranno tutti uguali", quindi li fai apparire in apposite caselle di testo (non associate ad alcun campo di tabella) nella maschera Documenti.
    Stesso discorso se vuoi produrre un report Documento con gli stessi dati visualizzati nella medesima maniera.

    Riepilogando la struttura tabelle

  • Re: Dubbio su correlazione tabelle di un Database

    29/10/2025 - OsvaldoLaviosa ha scritto:

    Riepilogando la struttura tabelle

    Questa è più lineare.

    Per non confonderlo magari metterei in primo piano interventi.

    La segretaria va nel form interventi, seleziona il cliente, il prodotto e.la matricola, poi in automatico spunta la sede o le sedi (in questo caso si prevede una stampa multipla di fogli di lavoro o se si inviano più addetti alla manutenzione o, ancora, se hanno il tablet e quindi dematerializzano la carta)

    Scrive una prima descrizione del problema in modo che il tecnico sa cosa portarsi appresso.

    Conferma l'intervento. I tecnici da tablet o su foglio scrivono il lavoro svolto, eventuali ricambi e tempo di lavoro e chiude l'intervento.

    Il documento di intervento ha già tutto quello che serve per emettere fattura.

    Il modello dovrebbe funzionare (stando ai dati carpiti).

Devi accedere o registrarti per scrivere nel forum
24 risposte