Db access per turni query data/attivita

di il
9 risposte

Db access per turni query data/attivita

Buongiorno in questi giorni non ho avuto modo di lavorare sul db ieri ho modificato il db non so se ho fatto bene. Ho 2 tbl con campi id, potatura siepe, pulizia piazzale e pulizia condominio che si svolge il mercoledì e un altra tabella con 3 campi di servizi che si svolgono il venerdì.
Dentro ogni campo inserisco il nome di chi ha svolto quel servizio , quindi il ragionamento è che in data mercoledi questi 3 operai hanno svolto questi servizi e in data venerdì altri servizi.
Le date sono sempre diverse quindi non si creano duplicati.
Il problema nasce quando vado a ricercare le attività degli operai, perché non riesco a eseguire la ricerca, ad esempio voglio sapere cosa ha fatto Daniele il meecoledi, ho pensato di fare un filtro. (Se contiene) pensando che mi estresse solo i record di Daniele invece estrae tutto il record dove ci sta anche Daniele.

Grazie della pazienza che mostrate

9 Risposte

  • Re: Db access per turni query data/attivita

    danielefioretti ha scritto:


    Ho 2 tbl con campi id, potatura siepe, pulizia piazzale e pulizia condominio che si svolge il mercoledì e un altra tabella con 3 campi di servizi che si svolgono il venerdì.
    È errato pensare 2 tabelle così. Confondi i "nome-campo" con i "valore-campo".
    Il database (fin qui) deve avere (almeno) 2 tabelle così:
    Persone
    IDPersona (PK)
    Cognome
    Nome

    Servizi
    IDServizio (PK)
    DataServizio
    TipoServizio
    IDPersona (FK)

    Relazione Persone.IDPersona uno-a-molti Servizi.IDPersona

    Facoltativamente, siccome TipoServizio è un valore che tende a ripetersi spesso e volentieri (potatura, pulizia...), prevedi anche una tabella TipiServizi da relazionare uno-a-molti Servizi.TipoServizio.
  • Re: Db access per turni query data/attivita

    Ok grazie. In realtà l'idea era creare anche una tabella tipo di servizi, ma non avendo la conoscenza per farlo non ho azzardato
  • Re: Db access per turni query data/attivita

    Se ho capito bene la chiave esterna la fk idpersona deve essere collegata alla pk idpersona, se volessi
    Una terza la inserisco tra le due e la formulo così
    id
    Potat
    Pulizie
    Idpersona
    Idservizi
  • Re: Db access per turni query data/attivita

    No. Devi creare una tabella TipiServizi. Puoi concepirla con un solo campo TipoServizio (PK). Poi crei la relazione TipiServizi.TipoServizio uno-a-molti Servizi.TipoServizio. In tabella Servizi ti consiglio di impostare una casella combinata che guarda i valori dalla tabella.campo TipiServizi.TipoServizio.
  • Re: Db access per turni query data/attivita

    Ho capito grazie
  • Re: Db access per turni query data/attivita

    Buongiorno alle chiavi esterne devo assegnare un tipo numerico?
  • Re: Db access per turni query data/attivita

    Ciao

    Non devi ma è consigliato.

    Il motivo è prestazionale.
    I numeri occupano meno spazio delle stringhe. Quando si creano degli indici, le chiavi vengono messe in ciascun indice in modo da poter accedere all'informazione quando necessario.

    I DB di solito accedono al disco in blocchi di memoria di una certa dimensione. Più dati ci stanno, meno accessi al disco vengono eseguiti, quindi maggiori performance

    Inoltre si suggeriscono delle sequenze, poichè ci sono chiavi/indici che vengono usati in scrittura (vedi le clustered di SQL Server).
    In quel caso il DB scrive sempre in fondo, senza dover "spostare" fisicamente gli altri elementi per mantenere l'ordine


    Detto questo, puoi farla come preferisci.
  • Re: Db access per turni query data/attivita

    danielefioretti ha scritto:


    Buongiorno alle chiavi esterne devo assegnare un tipo numerico?
    La prassi accademica prevede campi PK--->FK sempre di tipo numerico...anche per le osservazioni sollevate da PiGi78. Nel caso specifico di TipoServizio...io nei casi di tabella mono-campo preferisco relazionare tra testo e testo. È importante che entrambi i campi abbiano (quasi) le stesse caratteristiche (soprattutto Dimensione campo). Direi che quando la tabella madre monocampo ha una lista di valori "contenuta"...la differenza è irrilevante.
  • Re: Db access per turni query data/attivita

    Attualmente nella tabella ho inserito idtiposervizio e desctiposervizio (testo)
    E nella maschera per inserire i dati ho inserito una casella combinata legata al campo desctiposervizi. Grazie
Devi accedere o registrarti per scrivere nel forum
9 risposte