Progettazione Database per gestione strumentazione

di il
34 risposte

Progettazione Database per gestione strumentazione

Buongiorno,
dovrei progettare un database per una gestione di strumenti da assegnare ai dipendenti e avere delle scorte di magazzino:
Vorrei che questo DB mi dia la possibilità di movimentare (o meglio assegnare) un determinato strumento, essendo questo in magazzino, ad un dipendenete.
Ho strutturato inizialmente queste tebelle:

Tabella Dipendenti:
ID Dipendente PK
Nome
Cognome

Tabella Anagrafica Strumenti:
ID Strumento PK
Descrizione
Matricola (Non ho messo questa come PK poichè non tutti gli strumenti hanno una matricola)
Quantità (anche se probabilmente sarà sempre 1)

Inoltre ho creato già una tabella con i dati inseriti denominata Assegnazioni la quale ha i seguenti campi:
ID Assegnazione PK
ID Dipendenete
Assegnatario (Nome + Cognome della Tabella Dipendente)
Descrizione Strumento
Matricola Strumento
Quantità
Data Assegnazione
In questa Tabella tutti gli articoli sono assegnati ai dipendenti e alcuni di questi articoli hanno come assegnatario il Magazzino dato che possono essere assegnati da un momento all'altro. Stesso discorso lo farò poi per la riconsegna.

Detto questo non riesco a trovare la metodologia per eseguire questo tipo di movimentazioni, qualcuno può darmi suggerimenti in merito.
Putroppo ho lasciato Access dai tempi della scuola e mi piacerebbe ri-entrare in questo mondo e allenarmi su vari progetti aziendali.

Ringrazio anticipatamente.

34 Risposte

  • Re: Progettazione Database per gestione strumentazione

    1. Tabella Dipendenti: OK
    2. Tabella Strumenti: non serve il campo Quantità, almeno che non ci fornisci valide spiegazioni.
    3. Nella tabella Assegnazioni devi avere UN SOLO campo che rappresenti UN RECORD di tabella madre corrispondente, mi riferisco a Dipendenti e Strumenti. Quindi non ti serve ripetere (anzi è sbagliato) i campi Assegnatario da Dipendenti. Idem Descrizione e Matricola da Strumenti.
    Riepilogando la tabella Assegnazioni deve avere i seguenti campi
    IDAssegnazione (PK)
    IDDipendente (FK)
    IDStrumento (FK)
    DataAssegnazione
    Quantità

    4.

    rescassiste ha scritto:


    dovrei progettare un database per una gestione di strumenti da assegnare ai dipendenti e avere delle scorte di magazzino:
    Vorrei che questo DB mi dia la possibilità di movimentare (o meglio assegnare) un determinato strumento, essendo questo in magazzino, ad un dipendente.

    rescassiste ha scritto:


    In questa Tabella tutti gli articoli sono assegnati ai dipendenti e alcuni di questi articoli hanno come assegnatario il Magazzino dato che possono essere assegnati da un momento all'altro. Stesso discorso lo farò poi per la riconsegna.
    Qua io non ti seguo. Potresti spiegarti meglio o raccontare qualche esempio concreto?
  • Re: Progettazione Database per gestione strumentazione

    Esempio:
    Strumento 1 - > Magazzino
    Strumento 2 -> Luca
    Strumento 3 -> Alessandro
    Strumento 4 -> Luca
    Strumento 5 -> Fabio

    Voglio che il giorno x assegno lo Strumento 1 a Luca

    Il giorno y Luca riconsegna lo strumento 2

    Quindi la nuova giacenza dovrà risultare
    Strumento 1 - > Luca
    Strumento 2 -> Magazzino
    Strumento 3 -> Alessandro
    Strumento 4 -> Luca
    Strumento 5 -> Fabio

    Con ciò vorrei che i vari Luca,Alessandro,Fabio possano essere assegnati gli strumenti da Magazzino ma a sua volta quando la riconsegnano lo strumento deve ritornare in Magazzino.

    Pertanto se lo strumento è assegnato ad un nome (Luca o Alessandro o Fabio) questo può essere soltanto riconsegnato a Magazzino, mentre gli Strumenti del Magazzino possono essere solo assegnati alle varie persone.

    La mia tabella Assegnazioni di cui ti parlavo prima è una sorta di Inventario con già le assegnazioni fatte, pensavo fosse utile lavorare su quello.
  • Re: Progettazione Database per gestione strumentazione

    Strumento1 ne esiste solo uno oppure molti?
    Luca in data 10/12/2017 può avere molti Strumenti?
    Noto che utilizzi la voce Magazzino come se fosse anch'essa un "Dipendente"...perché l'hai pensata così?
  • Re: Progettazione Database per gestione strumentazione

    Strumento1 ne esiste solo uno oppure molti? - Solo 1
    Luca in data 10/12/2017 può avere molti Strumenti? - Può avere più Strumenti
    Noto che utilizzi la voce Magazzino come se fosse anch'essa un "Dipendente"...perché l'hai pensata così? - Esatto ho inteso il magazzino come un dipendenete poichè all'inizio pensavo di variare il campo dipendente per modificare l'assegnazione...
  • Re: Progettazione Database per gestione strumentazione

    Mah...la soluzione più lineare che mi salta in mente è la seguente:
    Dipendenti: OK
    Strumenti: OK...il campo Quantità...IO (me medesimo) non saprei cosa farne...ma ci credi che sono tentato di dirti di lasciarlo? Per ora lascialo, se successivamente si riscontra superfluo, lo togli.
    Tabella Assegnazioni
    IDAssegnazione (PK)
    DataAssegnazione
    IDDipendente (FK)
    IDStrumento (FK)

    Relazioni:
    Dipendenti.IDDipendente uno-a-molti Assegnazioni.IDDipendente
    Strumenti.IDStrumento uno-a-molti Assegnazioni.IDStrumento

    Tra i Dipendenti ci metti pure la voce Magazzino.
    Al tuo primo input dati tu carichi la tabella Assegnazioni di tutti gli Strumenti nel Magazzino.
    Quando Strumento1 in data 11/12/2017 passa da Magazzino a Luca, tu tracci solo l'assegnazione Luca<--->Strumento1.
  • Re: Progettazione Database per gestione strumentazione

    Per realizzare ciò che chiedi alla struttura

    Tabella Assegnazioni
    IDAssegnazione (PK)
    DataAssegnazione
    IDDipendente (FK)
    IDStrumento (FK)

    che correttamente ti hanno suggerito, cambierei il campo DataAssegnazione in DataInizioAssegnazione ed aggiungerei il campo DataFineAssegnazione.
    Nel momento in cui l'assegnazione viene chiusa è implicito che lo strumento rientra in Magazzino.
    All'atto di nuova assegnazione dovranno essere proposti, tramite opportuna casella combinata, solo gli strumenti che risultano, in quel momento, privi di DataFineAssegnazione.
    Bisogna anche preoccuparsi che tutte le assegnazioni precedenti all'ultima inserita non possano essere modificate ed anche che all'atto del salvataggio di una nuova assegnazione non si possa commettere l'errore di inserire una data precedente a quella di chiusura dell'ultima assegnazione, se questa esiste.
  • Re: Progettazione Database per gestione strumentazione

    Giusto per precisare:

    Rescassiste ha scritto:


    La mia tabella Assegnazioni di cui ti parlavo prima è una sorta di Inventario con già le assegnazioni fatte, pensavo fosse utile lavorare su quello.
    se si impiega la (esclusiva) tabella sostituendo, di volta in volta, l'assegnatario si ottiene si l'inventario, degli strumenti, ma al contempo si perde l'informazione della evoluzione (nel tempo) che ha subito lo strumento stesso.
    La struttura proposta da Osvaldo, con l'opportunità di avere le varie date di assegnazione permette di conoscere temporalmente l'iter seguito dallo strumento (fra i vari dipendenti e/o magazzino) e nel contempo con una query che determini l'ultima posizione (quale massima data) dello strumento si è in grado di ottenere l'inventario aggiornato (ed è quindi, fra le due, la struttura preferibile da implementare).
    Non mi trovo d'accordo sulla proposta di cambiare il campo DataAssegnazione in modo da gestire il periodo (con DataInizioAssegnazione e DataFineAssegnazione) in quanto superflua per determinare lo status dell'inventario e facilmente derivabile dalla struttura sopra citata.
  • Re: Progettazione Database per gestione strumentazione

    Chiedo un'altra cosa.... pensavo... se io faccio le assegnazioni strumenti ai dipendenti con una tabella e su un'altra tabella metto solo la giacenza degli strumenti a magazzino.... Riesco poi a fare una movimentazione di record da una tabella ad un altra (ovvero da un dipendente al magazzino)?
    Secondo voi è fattibile?
  • Re: Progettazione Database per gestione strumentazione

    rescassiste ha scritto:


    Chiedo un'altra cosa.... pensavo... se io faccio le assegnazioni strumenti ai dipendenti con una tabella e su un'altra tabella metto solo la giacenza degli strumenti a magazzino.... Riesco poi a fare una movimentazione di record da una tabella ad un altra (ovvero da un dipendente al magazzino)?
    Secondo voi è fattibile?
    Non ha senso, basta una sola tabella.
  • Re: Progettazione Database per gestione strumentazione

    L'idea (in parte già strutturata) è quella di: dato un form scheda dipendente ci sia la possibilità di visualizzare la lista strumenti del dipendenete (ok già fatto) e tramite un pulsante accedere alla sezione nuova assegnazione, cosi da poter assegnare un nuovo strumento prelevato dal magazzino, e stessa cosa per quanto riguarda la restituzione.
  • Re: Progettazione Database per gestione strumentazione

    Senza una data di chiusura dell'assegnazione come fai a sapere che lo strumento è stato consegnato e quindi rientrato in magazzino?
    Inoltre l'aggiunta del campo data di chiusura permetterà veramente uno storico dei movimenti Magazzino -> Assegnazioni.
  • Re: Progettazione Database per gestione strumentazione

    Ma la data di chiusura in che tabella la devo inserire?
  • Re: Progettazione Database per gestione strumentazione

    Nella tabella Assegnazioni strumento e ripeto quello detto precedentemente:

    "Nel momento in cui l'assegnazione viene chiusa, inserendo la Data di chiusura, è implicito che lo strumento rientra in Magazzino.
    All'atto di nuova assegnazione dovranno essere proposti, tramite opportuna casella combinata, solo gli strumenti che risultano, in quel momento, privi di DataFineAssegnazione.
    Bisogna anche preoccuparsi che tutte le assegnazioni precedenti all'ultima inserita non possano essere modificate ed anche che all'atto del salvataggio di una nuova assegnazione non si possa commettere l'errore di inserire una data precedente a quella di chiusura dell'ultima assegnazione, se questa esiste."
  • Re: Progettazione Database per gestione strumentazione

    A mio avviso, la tua tabella deve servire esclusivamente a registrare la movimentazione, quindi ogni movimento avrai una riga.
    Se prendiamo ad esempio la struttura correttamente suggerita :

    Tabella Assegnazioni
    IDAssegnazione (PK)
    DataAssegnazione
    IDDipendente (FK)
    IDStrumento (FK)

    Avresti una cosa di questo tipo (diamo per scontato che l'IDDipendente=1 corrisponde al MAGAZZINO):
    
    IDAssegnazione DataAssegnazione IDDipendente IDStrumento
    1              10/11/2017       2            1
    2              10/11/2017       3            3
    3              10/11/2017       4            4
    4              10/11/2017       5            2
    5              16/11/2017       1            1
    6              17/11/2017       1            4
    6              17/11/2017       4            1
    
    In questo modo hai sempre la visione generale dell'andamento.
    Ad esempio, i dati sopra ti indicano che lo strumento1:
    - è stato consegnato il 10/11/2017 al dipendente 2
    - è rientrato il 16/11/2017 in magazzino
    - è stato consegnato il 17/11/2017 al dipendente 4

    Con una tabella siffatta puoi fare tutte le interrogazioni che vuoi, come:
    - sapere chi ha lo strumentoX
    - quali strumenti hai a magazzino
    - quanti giorni viene utilizzato lo strumentoX
    e così via...
Devi accedere o registrarti per scrivere nel forum
34 risposte