Relazione tra tabelle

di
Anonimizzato12275
il
13 risposte

Relazione tra tabelle

Salve a tutti,

devo realizzare per la mia azienda un database per la gestione del vestiario dei dipendenti. Il mio problema è che sono abbastanza neofita in merito ad Access, ho seguito diversi tutorial per impratichirmi ed ora me la cavo, ma non riesco a capire che relazione creare tra le due tabelle "dipendenti" e "vestiario" per fare in modo che ad ogni dipendente figuri quanto e che tipo di vestiario è in possesso. Poi per le varie query, maschere e report mi arrangio io.

Saluti

Luca

13 Risposte

  • Re: Relazione tra tabelle

    Credo tu abbia un Catalogo Vestiario, quindi avendo una tabella Anagrafica, serve realizzare una relazione MOLTI-MOLTI, usando una tabella di Appoggio VestiarioAnagrafica che consenta di sapere cosa viene assegnato ad ognuno.
    
    TblAnagrafica(1)----(00)TblVestiarioAnagrafica(00)----(1)TblVestiario
  • Re: Relazione tra tabelle

    Ok, ma come devo impostare le tabelle per permettere questa relazione molti a molti?

    tabella dipendenti conterrà:
    -cognome
    -nome
    -funzione

    tabella vestiario:
    -capi d'abbigliamento (impostato su ricerca guidata)
    -quantità
    -taglia

    Grazie in ogni caso per la risposta

    Saluti
  • Re: Relazione tra tabelle

    Avendo esordito che hai acquisito un minimo di esperienza ho dato per scontato che qualche rudimento ci fosse...

    Le tabelle vanno strutturate seguendo almeno le 4 FORME NORMALI(sono 5 ma la 5° è poco usata).

    Quindi come minimo devi avere le idee chiare su cosa sono le CHIAVI PRIMARIE(PK) e CHIAVI ESTERNE(FK)... questo rende intuitiva la relazione...
    
    TblAnagrafica       		TblVestiarioAnagrafica					    TblVestiario
    IdAnagrafica[PK](1)	<-->(00)IdAnagrafica [FK indice]       |---->(1)IdVestiario	
    .....						   [FK Indice] IdVestiario (00) <-----|		.....
    .....						             .....									.....
    Gli altri campi li dovrai avere già nel tuo progetto... non dobbiamo costriuire le anagrafiche e la tabella Vestiario vero...? Hai detto che qualche cosa hai già fatto...
  • Re: Relazione tra tabelle

    Io ho già le due tabelle fatte di cui quella del personale già popolata. Solo che non sapendo come funziona la relazione molti a molti chiedevo questo. Ho provato a cercare in internet prima di scrivere qui ma non c'ho capito una mazza

    Ho anche creato le maschere per l'inserimento di nuovo personale, le query per suddividere il personale secondo le diverse funzioni e i vari report suddivisi anch'essi per funzione. Mi manca solo di poter relazionare la taballa dipendenti con quella del vestiario. la tabella vestiario è composta da un record "abbigliamento" dove descrivo le varie tipologie di abbigliamento che viene fornito dall'azienda, la taglia e la quantità.

    Spero di essere stato chiaro, in ogni caso non sono un super esperto, se è troppo complicato spiegarmlo lascia stare

    Saluti
  • Re: Relazione tra tabelle

    sarto ha scritto:


    tabella dipendenti conterrà:
    -cognome
    -nome
    -funzione

    tabella vestiario:
    -capi d'abbigliamento (impostato su ricerca guidata)
    -quantità
    -taglia
    In queste due tabelle mancano i rispettivi campi ChiavePrimaria, solitamente gli si mette un nome che comincia per ID e il tipo di campo generalmente è Contatore. Quindi devi aggiungere innanzitutto un campo Contatore rispettivamente "IDDipendente" e "IDVestiario" e impostarli come chiave primaria.
    Poi devi creare una nuova tabella (detta tecnicamente "tabella di congiunzione") che giustifica la relazione molti-a-molti, avente i seguenti campi (@Alex te lo ha già scritto codificato con le scritte verdi, io te lo riscrivo in verticale):

    tabella VestiarioAnagrafica
    IDVestiarioDipendenti (anche questo Contatore)
    IDDipendente
    IDVestiario

    Relazioni:
    Dipendenti.IDDipendente uno-a-molti con VestiarioAnagrafica.IDDipendente
    Vestiario.IDVestiario uno-a-molti con VestiarioAnagrafica.IDVestiario
  • Re: Relazione tra tabelle

    Dipendenti assegnazione equipaggiamento

    iddipendenti(PK) ID (PK) idequipaggiamento (PK)
    funzione (testo) iddipendenti (numerico) nome (testo)
    cognome (testo) idequipaggiamento (numerico) quantità totale (numerico)
    nome (testo) quantità (nuemrico) taglia (testo)
    data (data/ora)
    operazione (testo)
    osservazioni (memo)

    Relazioni:

    iddipendenti.dipendenti relazione uno a molti con iddipendenti.assegnazione

    idequipaggiamento.equipaggiamento uno a molti con idequipaggiamento.assegnazione


    Domanda:

    devo creare una maschera per l'assegnazione dell'equipaggiamento al personale, ho pensato di fare così:

    Maschera principale associata alla tabella dipendenti mentre la sottomaschera associata alla tabella equipaggiamento. Il problema è che ora io nella tabella dati della sottomaschera nel campo equipaggiamento vedo un numero (ovviamente) e vorrei vedere tutti i nomi degli equipaggiamenti che ho inserito.

    la soluzione?

    Grazie per eventuali suggerimenti

    Saluti

    Luca
  • Re: Relazione tra tabelle

    Formattazione strana, ecco le tabelle corrette:


    dipendenti:

    iddipendenti(PK)
    funzione (testo)
    cognome (testo)
    nome (testo)

    assegnazione:

    ID (PK)
    iddipendenti (numerico)
    idequipaggiamento (numerico)
    quantità (numerico)
    data (data/ora)
    operazione (testo)
    osservazioni (memo)

    equipaggiamento:

    idequipaggiamento (PK)
    nome (testo)
    quantità totale (numerico)
    taglia (testo)
  • Re: Relazione tra tabelle

    sarto ha scritto:


    Maschera principale associata alla tabella dipendenti mentre la sottomaschera associata alla tabella equipaggiamento. Il problema è che ora io nella tabella dati della sottomaschera nel campo equipaggiamento vedo un numero (ovviamente) e vorrei vedere tutti i nomi degli equipaggiamenti che ho inserito
    In base alla struttura relazionale delle 3 tabelle, "Equipaggiamento" non può essere sottomaschera di "Dipendenti".
    La sottomaschera può essere soltanto Assegnazione. In questa sottomaschera evidentemente esiste il campo IDEquipaggiamento con un numero, ma a te interessa vedere il campo Nome...credo di intuire che sia questo il tuo problema. Confermi?
  • Re: Relazione tra tabelle

    Esattamente! in ogni caso la sottomaschera era "asseggnazioni" ho sbagliato a scrivere. Equipaggiamento semplicemente contiene tutti i capi d'abbigliamento fonriti ai dipendenti.
  • Re: Relazione tra tabelle

    Allora procedi così:
    1. Crea una query in visualizzazione struttura, importa la tabella Equipaggiamenti e trascina nell'ordine i campi IDEquipaggiamento e Nome
    2. Imposta Ordinamento Crescente alla colonna Nome
    3. Salva con nome la query EquipaggiamentiOrdinati
    4. Apri in visualizzazione struttura la maschera Dipendenti
    5. Posiziona il mouse nella sottomaschera, raggiungi il campo IDEquipaggiamento e clicca con il mouse destro, scegli Cambia in | Casella combinata
    6. Clicca nuovamente dentro il campo IDEquipaggiamento con il mouse destro e scegli Proprietà
    7. Scheda Tutte
    Origine controllo: IDEquipaggiamento
    Tipo origine riga: Tabella/query
    Origine riga: EquipaggiamentiOrdinati
    Numero colonne: 2
    Larghezza colonne: 0 cm; 3 cm
    Larghezza elenco: 3 cm (cioè il totale di Larghezza colonne)
    8. Salva tutto

    D'ora in poi nel campo IDEquipaggiamento vedrai mostrato il Nome, mentre al suo di sotto IDEquipaggiamento lavorerà per mantenere il riferimento di Origine controllo.
  • Re: Relazione tra tabelle

    Si ma il problema è che il campo idequipaggiamento della tabella assegnazioni ha come tipo dati "numerico" (essendo relazionato ad un campo contatore) quindi di conseguenza quando io inserisco un equipaggiamento (per esempio maglietta XXL) mi da errore visto che access si aspetta un numero ed invece viene inserito un testo.
  • Re: Relazione tra tabelle

    OsvaldoLaviosa ha scritto:


    D'ora in poi nel campo IDEquipaggiamento vedrai mostrato il Nome, mentre al suo di sotto IDEquipaggiamento lavorerà per mantenere il riferimento di Origine controllo.
    Forse non hai inteso il senso di questa frase e il meccanismo di una casella combinata.
    Il campo resterà comunque Numerico (IDEquipaggiamento), ma grazie alla casella combinata, ti dà la possibilità di vedere/selezionare un Testo che all'occhio umano è più comprensibile.
    La proprietà Origine riga dice che tu vai a prendere il dato della 1a colonna della query EquipaggiamentiOrdinati (che è IDEquipaggiamento Numerico), ma poichè è impostato a 0 cm non si vede e la casella combinata, quando viene rilasciata, mostra il primo campo visibile dell'oggetto indicato in Origine riga, cioè il campo Nome.
  • Re: Relazione tra tabelle

    Era solo un problema di associazione della colonna, visto che l'altro giorno stavo smanettando devo aver modificato quel campo. Ora funzione perfettamente, grazie per l'aiuto.
Devi accedere o registrarti per scrivere nel forum
13 risposte