Relazioni database

di il
28 risposte

Relazioni database

Buongiorno,
provengo dal forum access ove ho inserito l'argomento "report e sottoreport con tabelle variabili" e, accettando il consiglio di Osvaldo, vorrei affrontare l'argomento inerente la migliore strategia per creare relazioni tra tabelle.
Il mio è un DB gestionale per un laboratorio dove un utente, attraverso autenticazione inserisce delle informazioni fornite da un committente. Dovrà poi stampare un report contenenti le suddette informazioni ed un prospetto che è funzione del tipo di analisi che dovrà eseguire. La compilazione avverrà a penna nel corso delle analisi e poi alla fine i dati inseriti in nuove tabelle che non ho ancora creato.
Vorrei avere delle opinioni circa la strutturazione delle relazioni. Allego alcuni screenshot del DB.
Allegati:
26735_c0c9c59f1561acd6bca3f1d48ee7de51.png
26735_c0c9c59f1561acd6bca3f1d48ee7de51.png

26735_4807619e5437a59f26c66732622f1359.png
26735_4807619e5437a59f26c66732622f1359.png

26735_e95adf5b5515cc4fcf633433b8e01dc2.png
26735_e95adf5b5515cc4fcf633433b8e01dc2.png

26735_566b54d699ab098ac49b8805fbab7859.png
26735_566b54d699ab098ac49b8805fbab7859.png

28 Risposte

  • Re: Relazioni database

    Ma ti rendi conto che non si capisce nulla?

    Non puoi postare screenshot assolutamente inutili ... invia nomi di tabelle con campi e loro significato ...
  • Re: Relazioni database

    Io mi sento molto fuori/lontano dal tuo campo professionale, pertanto non capisco molti termini e considerazioni tecnici che per te sono quotidianità, per me quasi arabo.
    Chi è un Utente? Chi un Committente? Di cosa si occupa la tua azienda? Chiariscimi pure cosa sono Analisi, TipiAnalisi, Protocollo. Vedo una tabella DettagliCampioni...ma (almeno in base mie conoscenze pregresse…) non vedo una tabella Campioni.
    Potresti raccontare con almeno un esempio cosa succede passo passo?

    Ti ricordo che in questa sezione del forum si discute soltanto della "Progettazione database", quindi il mio occhio cade soltanto sulla Finestra Relazioni.
  • Re: Relazioni database

    La storia è questa: Un cliente (ovvero il committente l'analisi) che per me è un ente (che può essere un comune la regione ecc.) ed ha una sua descrizione (Descrizione_Ente) e ti porta uno o più campioni (in tale data ovvero data_campione) per farci delle analisi e ne fa richiesta formale con un documento di richiesta che presenta un protocollo (testo_protocollo) con una data_protocollo. Quindi ho un tipo di analisi da fare: ad esempio un analisi di gasolio (quindi tipo_analisi) e questo può essere di diverse tipologie ovvero tipi_campione che dovrò sottoporre a determinate analisi a seconda del tipo.
    A questo punto un dipendente (descritto con username) dell'azienda accetta i campioni, inserisce i dati nel DB dopo aver inserito login e password. In questo in un secondo momento posso risalire a chi ha inserito i dati descrittivi del campione e delle analisi (però ancora non esiste la parte di DB che gestisce l'inserimento delle analisi).
    Nelle relazioni è presente anche la voce numero campione e numero certificato ma questi sono dati numerici ed ho previsto che il DB li assegni sfruttando una chiave primaria in assegnazione automatica. Pertanto l'analista non dovrà inserire questi dati.
    Mi sono fermato qui. il prossimo passo è quello che ho già descritto riguardo ai report.
  • Re: Relazioni database

    Non sono sicuro di aver capito tutto al 100%. Correggimi dove sbaglierò.
    I Clienti sono gli Enti: OK
    Gli Utenti sono quelli che seguono le Richieste o Pratiche o Protocolli: giusto?
    Un Cliente può fare molte Richieste.
    Una Richiesta è seguita da un Utente.
    In una Richiesta possono esserci molti DettagliRichiesta.
    E un DettaglioRichiesta può subire molte Analisi.

    Se tutto ciò che ho descritto è vero, provo a brancolare nel semibuio del tuo database e/o campo professionale con il seguente schema tabelle/relazioni.

    Clienti
    IDCliente (PK)
    Cliente
    Indirizzo
    ...altri campi tipicamente anagrafici…

    Utenti
    IDUtente (PK)
    Nome
    Cognome
    Password

    Richieste
    IDRichiesta (PK)
    DataProtocollo
    TestoProtocollo
    Descrizione (questo ce lo sto aggiungendo io a caso...se non serve toglilo…)
    IDUtente (FK)
    IDCliente (FK)

    DettagliRichieste
    IDDR (PK)
    TipoCampione
    Quantità (non so...penso che un Campione potrebbe avere una sua quantità...vedi tu se questo campo serve…)
    IDRichiesta (FK)

    AnalisiCampioni
    IDAC (PK)
    TipoAnalisi
    Valore
    IDDR (FK)

    Relazioni:
    Clienti.IDCliente uno-a-molti Richieste.IDCliente
    Utenti.IDUtente uno-a-molti Richieste.IDUtente
    Richieste.IDRichiesta uno-a-molti DettagliRichieste.IDRichiesta
    DettagliRichieste.IDDR uno-a-molti AnalisiCampioni.IDDR
  • Re: Relazioni database

    E' proprio quello che hai descritto tu. Per quanto il modo di procedere nel mio campo professionale ti possa sembrare un po' strano si attiene a delle procedure standardizzate giustificate da dettagli che non sto qui a spiegare, anche perché esula dagli argomenti del forum.
    Hai definito delle relazioni tar tabelle un po' diverse da quello che ho fatto io. Trovi che le relazioni stabilite da me non sono corrette? ovvero quelle che compaiono nell'immagini precedenti. Lo chiedo perché siamo qui per anche per imparare oltre che a risolvere dei problemi.
  • Re: Relazioni database

    Eddy1973,
    ti è stata proposta una soluzione che effettua una correlazione fra tutte le tabelle, la tua (cercando di estrapolare la immagine) presenta le seguenti tabelle:
    - EnteRichiedente
    - Analisi
    - Utenti
    - Protocollo
    - DettaglioCampioni
    ma (in questa) non sono chiare le relazioni intercorrenti.
    In ogni caso devi essere tu a valutare quella che soddisfa il requisito; e questo prima di procedere con maschere e report in quanto se non idonea (la struttura dati) sarai costretto a rivedere il tutto.
  • Re: Relazioni database

    Le relazioni create nel mio DB si adattano ai miei scopi. Il progetto è comunque lontano dal termine e molto probabilmente qualcosa anche nelle relazioni verrà modificato, se necessario. Ad ogni modo mi trovo in questo forum partendo dal forum access in cui ho esposto il mio problema riguardo alla creazione di report con argomento dal titolo "Report e sottoreport con tabelle variabili", che qui non posso esporre e che ancora non ho capito se sia una cosa fattibile oppure no. Vabè cercherò una soluzione da me.
    Grazie e alla prox.
  • Re: Relazioni database

    In questo thread hai chiesto suggerimenti (in base al titolo) sulle "Relazioni database" e per tale argomento hai avuto delle indicazioni.
    Se poi sei partito da altro 3D:
    https://www.iprogrammatori.it/forum-programmazione/access/report-sottoreport-con-tabelle-variabili-t41021.html
    è in quello che puoi avere risposte (proprio per il diverso quesito). Non è, comunque, che aiuti visto l'approccio:

    eddy1973 ha scritto:


    "... che qui non posso esporre ..."
  • Re: Relazioni database

    La mia proposta di schema tabelle è NORMALIZZATA, presupposto imprescindibile per affrontare il forum popolato da utenti abituati a lavorare solo in questa direzione. La struttura proposta da te è confusa e non normalizzata.
    Conseguenza della mia nuova struttura tabelle, anche tutto il susseguente approccio di input dati da maschere e visualizzazione su report avrà tutt'altro sapore.

    Come vedrei io i passi successivi (però siamo già in ambito più strettamente Access):
    1. A te piace il login dell'Utente: OK. Da lì passi a compilare la maschera Richieste che avrà su IDUtente e IDCliente 2 caselle combinate per facilitarti l'input dati.
    2. Da Richieste un pulsante apre una (sotto)maschera collegata DettagliRichieste.
    3. Per ogni record di DettagliRichieste, un altro pulsante aprirà un'altra (sotto)maschera collegata AnalisiCampioni.

    Nel tuo primo post hai parlato di "scrivere in prima battuta i dati con penna e carta". Questo è semplicemente l'approccio più spontaneo umano, che non sempre si allinea con la logica delle tabelle ben correlate e normalizzate. Da quei dati scritti a penna, occorre poi trovare il bandolo di una matassa che (anche con l'abitudine) si dovrà allineare di conseguenza.
  • Re: Relazioni database

    Causa problemi tecnici sono stato lontano per un po'.
    Hai ragione. Le relazioni da te indicate sono tecnicamente migliori delle mie. Analizzando bene la situazione credo che il tuo consiglio sia molto prezioso anche in prospettive di altre idee che mi sono venute. Sicuramente varierò le relazioni in base alla struttura che mi hai suggerito.
    Per quanto riguarda la scrittura con carta e penna il tutto è pensato anche in funzione di coloro che utilizzeranno quotidianamente il DB che non hanno molta dimestichezza con lo strumento informatico.
    Grazie. Alla prossima.
  • Re: Relazioni database

    Buongiorno,

    ho ulteriormente modificato e implementato la struttura delle relazioni del DB già rappresentato.
    Ho aggiunto delle tabelle allo scopo di memorizzare i dati ottenuti da analisi da eseguire su campioni di olio lubrificante. Questi oli possono essere di vario tipo, ad esempio: 2001, 3004 GRI, 3004 GRII e 3004 GRIII ed ognuno con parametri d'analisi distinti.
    Ho collegato poi queste tabelle con relazione uno-a-molti ad una tabella denominata olio e quest'ultima con relazione uno-a-molti con la tabella "Assegnazione".
    Di seguito lo screenshot delle relazioni.
    Nella tabella "Assegnazione" ho inserito anche dei campi che saranno poi destinati ad essere collegate ad altre tabelle d'analisi d'altro tipo da generare successivamente.
    Un DB così impostato è corretto oppure risulta necessario strutturarlo in altro modo?
    Cosa mi consigliate?
    Grazie.
    Allegati:
    26735_f5ef49b9caa89148efbdb43b2b0f04ce.png
    26735_f5ef49b9caa89148efbdb43b2b0f04ce.png
  • Re: Relazioni database

    Tutti quegli oli che hai descritto sono tutti MOLTI TipoCampione. Dallo schema da me proposto devi aggiungere una nuova tabella TipiCampioni con i seguenti campi:
    IDTipoCampione (PK, numerazione automatica)
    TipoCampione (testo breve)
    Categoria (qui puoi specificare se si tratta di Olio, Carburante, Solvente...non so…)

    In tabella DettagliRichieste devi modificare il campo TipoCampione in IDTipoCampione (numerico). Poi relazioni COERENTEMENTE TipiCampioni.IDTipoCampione uno-a-molti DettagliRichieste.IDTipoCampione.
  • Re: Relazioni database

    Grazie. Proverò ad impostare nella maniera che mi ha indicato.
  • Re: Relazioni database

    Quelle tabelle indicata come 2001, 3004 GRI, ecc sono tabelle destinate a contenere parametri d'analisi misurati in laboratorio come la viscosità, densità ecc. Le indicazioni che mi hai mostrato sono chiare ma non capisco dove dovrei collegare queste tabelle.
Devi accedere o registrarti per scrivere nel forum
28 risposte