Database (gym workout), struttura, schema logico

di il
19 risposte

Database (gym workout), struttura, schema logico

Salve premetto che sono un novizio nei database insomma delle conoscenze teoriche ma non mi sono mai addentrato nello sviluppo dei database
Sto facendo un database per divertimento/utilità nella gestione delle sessioni di allenamento in palestra per usarlo come specie di log, diario degli allenamenti con informazioni dettagliate (alcune cose non sono prettamente necessarie, ma utili) che in seguito penserò se interfacciarli con il web o con il visual studio, comunque per costruire dei grafici (anche con excel) per un periodo di tempo lungo (>6 mesi)
(Ho sfogliato molte app per cellulari e software ma nessuno di questi mi soddisfa e di alcuni servizi a pagamento non sono convinto)

Sono pressappoco all'inizio ho costruito le tabelle e lo schema relazionale

Suggerimenti?

19 Risposte

  • Re: Database (gym workout), struttura, schema logico

    Ciao secondo me c'è un po di confusione con l'entità esercizio.

    Tu leghi la tab atleta con quella esercizio con relazione 1 a molti.

    Se due o più atleti fanno lo stesso esercizio tu ridondi nella tabella "esercizio" delle informazioni quali ad esempio "nome esercizio".
    Il database quindi non soddisfa il requisito 3NF.

    Mi salta all'occhio che tra la tabella "Atleta" e la tabella "Esercizio" se ne debba frapporre un'altra che puoi chiamare "atleta_esercizio" e che metta le tabelle di prima in relazione molti-a-molti.
  • Re: Database (gym workout), struttura, schema logico

    Grazie mille per la risposta
    l'ho modificato come hai detto tu e ho modificato un paio di cose


    edit:
  • Re: Database (gym workout), struttura, schema logico

    Ciao,
    ho visto che hai fatto un po di modifiche.
    Visto che quella relazione molti-a-molti l'hai fatta tra la tabella atleta a sessione,
    chiamala atleta_sessione.

    Non mi convince la relazione esercizi-serie-ripetizione

    in esercizi non dovrebbe esserci id_serie.
    in serie dovrebbe esserci un id_esercizio in quanto fk verso tabella esercizio.

    La tabella ripetizione e la tabella serie potrebbero confluire in un una sola tabella.
  • Re: Database (gym workout), struttura, schema logico

    L'ho modificato ulteriormente



    Troppe relazioni molti-a-molti?
  • Re: Database (gym workout), struttura, schema logico

    Ciao devi lavorarci ancora un po, ci sono cose strane.

    Fascia_muscolare e fascia_muscolare_1 (c'è una tabella in più)
    serie_esercizi e serie (sicuro che non basti solo la tabella serie con fk id_esercizio?)

    Con sessione cosa intendi esattamente? la giornata di palestra?
    Se 1 atleta può effettuare più sessioni ma una sessione riguarda solo 1 atleta, la tabella di mapping non dovrebbe esistere.
  • Re: Database (gym workout), struttura, schema logico

    Ho modificato un po e ho fatto una prova popolandola, "credo" che vada bene



    vorrei aggiungere delle maschere ma devo istruirmi prima

    Toki ha scritto:


    Ciao devi lavorarci ancora un po, ci sono cose strane.

    Fascia_muscolare e fascia_muscolare_1 (c'è una tabella in più)
    serie_esercizi e serie (sicuro che non basti solo la tabella serie con fk id_esercizio?)

    Con sessione cosa intendi esattamente? la giornata di palestra?
    Se 1 atleta può effettuare più sessioni ma una sessione riguarda solo 1 atleta, la tabella di mapping non dovrebbe esistere.
    la tabella in più è niente altro che ho aggiunto due volte la stessa tabella nella relazione
    poi non capivo il fatto della fk, ora l'ho compreso
  • Re: Database (gym workout), struttura, schema logico

    Per me ci sono ancora molte cose che non vanno. Soprattutto io non comprendo molti termini del tuo campo professionale. Cosa rappresentano le tabelle Serie e Muscoli? Anch'io non ho chiaro il significato di Sessioni. La tabella Atleti (scrivilo al plurale) ha un campo anzianità_allenamento: non credo abbia attinenza con il titolo della tabella stessa.
    Potresti fare qualche esempio di cosa accade concretamente a un Atleta di nome Pietro Mennea che entra nella tua palestra...poi cosa fa e cosa gli succede?
  • Re: Database (gym workout), struttura, schema logico

    OsvaldoLaviosa ha scritto:


    Per me ci sono ancora molte cose che non vanno. Soprattutto io non comprendo molti termini del tuo campo professionale. Cosa rappresentano le tabelle Serie e Muscoli? Anch'io non ho chiaro il significato di Sessioni. La tabella Atleti (scrivilo al plurale) ha un campo anzianità_allenamento: non credo abbia attinenza con il titolo della tabella stessa.
    Potresti fare qualche esempio di cosa accade concretamente a un Atleta di nome Pietro Mennea che entra nella tua palestra...poi cosa fa e cosa gli succede?
    Grazie della risposta
    Si in effetti qualcosa non va
    (anzianità allenamento indica da quanti anni un atleta si allena, l'esperienza, numerico)

    tabelle:
    - atleti (dati degli atleti)
    - sessioni (giorno e vari attributi riguardo a quella "seduta" di allenamento (potrebbero esserci ad esempio 2 sedute in un giorno es Pietro va la mattina in palestra a fare una cosa poi la sera un'altra))
    - fasce,muscoli, esercizi (tutte e tre archivi nomenclature, non modificabili direttamente)
    - serie (dati relativi ad 1 singola delle tante serie,(la modifica dei dati è prevalente qui))

    Pietro si iscrive [atleta], poi aggiunge una "seduta" [sessione], in cui sceglie i dati presenti in [fasce], [muscoli] poi andrà a scegliere un esercizio dalla lista [esercizi], dove poi scriverà i dati relativa ad ogni singola delle multiple [serie].

    la tabella serie forse non dovrebbe collegata direttamente ad esercizi.....?

    EDIT:
  • Re: Database (gym workout), struttura, schema logico

    maxslayer ha scritto:


    anzianità allenamento indica da quanti anni un atleta si allena, l'esperienza, numerico
    Non è un campo da includere nella tabella Atleti. Penso che sarà il risultato di una query futura.

    maxslayer ha scritto:


    - sessioni (giorno e vari attributi riguardo a quella "seduta" di allenamento (potrebbero esserci ad esempio 2 sedute in un giorno es Pietro va la mattina in palestra a fare una cosa poi la sera un'altra))
    OK.

    maxslayer ha scritto:


    - fasce,muscoli, esercizi (tutte e tre archivi nomenclature, non modificabili direttamente)
    - serie (dati relativi ad 1 singola delle tante serie,(la modifica dei dati è prevalente qui))
    Pietro si iscrive [atleta], poi aggiunge una "seduta" [sessione], in cui sceglie i dati presenti in [fasce], [muscoli] poi andrà a scegliere un esercizio dalla lista [esercizi], dove poi scriverà i dati relativa ad ogni singola delle multiple [serie].
    Fasce, Muscoli, Esercizi e Serie. Sono tutti termini tecnici del tuo campo professionale che io non riesco a comprendere. Potresti elencare alcuni valori di ogni tabella?

    Immagino che una Sessione può prevedere molti Esercizi. Io ci vedrei una tabella DettagliSessioni in cui si elencano tutti gli Esercizi eseguiti durante una Sessione. Correggimi dove sbaglio.
  • Re: Database (gym workout), struttura, schema logico

    Non è un campo da includere nella tabella Atleti. Penso che sarà il risultato di una query futura.
    ci avevo pensato (ma volevo includere anche il tempo prima di registrarsi nel database, con "data iscrizione" e una somma con "anzianità" dovrebbe uscire il totale fino ad oggi, circa, tutto questo dando per scontato che dalla data iscrizione non abbia frequentato in modo discontinuo)
    Fasce, Muscoli, Esercizi e Serie. Sono tutti termini tecnici del tuo campo professionale che io non riesco a comprendere. Potresti elencare alcuni valori di ogni tabella?
    ho rimosso fasce che ho rivalutato superfluo (indicava il gruppo muscolare, l'insieme di piu muscoli)
    ed ho aggiunto una relazione molti-a-molti perchè ogni esercizio può sfruttare più muscoli insieme


    qui ci sono le tabelle che ho collegato

    Immagino che una Sessione può prevedere molti Esercizi. Io ci vedrei una tabella DettagliSessioni in cui si elencano tutti gli Esercizi eseguiti durante una Sessione. Correggimi dove sbaglio.
    la mia idea era di usare una query per questa cosa dato che in ogni [serie] c'è l'id dell'esercizio a cui appartiene, credo
  • Re: Database (gym workout), struttura, schema logico

    maxslayer ha scritto:


    ho rimosso fasce che ho rivalutato superfluo (indicava il gruppo muscolare, l'insieme di piu muscoli)
    ed ho aggiunto una relazione molti-a-molti perchè ogni esercizio può sfruttare più muscoli insieme
    Dipende.
    Un TipoEsercizio sollecita molti Muscoli: OK
    Un Muscolo può essere sollecitato da molti TipoEsercizio: OK
    Una Fascia comprende molti Muscoli. Non sappiamo se un TipoEsercizio sollecita molti Muscoli provenienti da diverse Fasce in maniena NON sistematica. In quest'ultimo caso hai fatto bene a eliminare Fasce. Ma se un TipoEsercizio coinvolge sempre una Fascia nella sua interezza il discorso Fasce uno-a-molti Muscoli torna utile come se stessimo parlando di Regioni uno-a-molti Provincie uno-a-molti Comuni (scusa la variazione sul tema...).

    Rivedento l'intero progetto, secondo me in questa fase primordiale avresti messo troppa carne sul fuoco. Io lavorarei su poche tabelle iniziali/essenziali per poi aggiustare successivamente per affinare i tuoi scopi (statistiche, valutazioni ecc...).

    Avevo parlato di Sessioni e DettagliSessioni. Se Sessioni non dice molto di più di quei campi, forse non serve. La tabella Atleti-Esercizi (suggerita da Toki) potrebbe avere i seguenti campi:
    IDA-E
    TimeInizio
    TimeFine
    Esercizio
    IDAtleta

    Questo però lo sai meglio tu, nel tuo campo professionale. Io considererei una Sessione di Esercizi (per una futura query) l'insieme di Esercizi svolti dal IDAtleta in un giorno. Questo potrà fornirtelo una semplice query senza riassumere in una IDSessione. Ripeto, questo puoi chiarircelo meglio solo tu.
  • Re: Database (gym workout), struttura, schema logico

    Dipende.
    Un TipoEsercizio sollecita molti Muscoli: OK
    Un Muscolo può essere sollecitato da molti TipoEsercizio: OK
    Una Fascia comprende molti Muscoli. Non sappiamo se un TipoEsercizio sollecita molti Muscoli provenienti da diverse Fasce in maniena NON sistematica. In quest'ultimo caso hai fatto bene a eliminare Fasce. Ma se un TipoEsercizio coinvolge sempre una Fascia nella sua interezza il discorso Fasce uno-a-molti Muscoli torna utile come se stessimo parlando di Regioni uno-a-molti Provincie uno-a-molti Comuni (scusa la variazione sul tema...).

    Rivedento l'intero progetto, secondo me in questa fase primordiale avresti messo troppa carne sul fuoco. Io lavorarei su poche tabelle iniziali/essenziali per poi aggiustare successivamente per affinare i tuoi scopi (statistiche, valutazioni ecc...).
    il core è [sessioni], [sessioni_serie], [serie] con tutti i campi associati
    se volessi ridurlo:
    avrei "nome_esercizio" ridondante se rimuovessi [esercizi] (cioè nella tab [serie] inserisco dati in un campo testuale [nome_esercizio])
    potrei rimuovere [atleti] se volessi un database personale
    il discorso "Fascia" è come hai detto, vengono sollecitati in maniera non sistematica
    [muscoli] serve solo per statistiche, potrei rimuoverlo
    però nasce proprio per fare delle statistiche questo db
    Avevo parlato di Sessioni e DettagliSessioni. Se Sessioni non dice molto di più di quei campi, forse non serve. La tabella Atleti-Esercizi (suggerita da Toki) potrebbe avere i seguenti campi:
    IDA-E
    TimeInizio
    TimeFine
    Esercizio
    IDAtleta

    Questo però lo sai meglio tu, nel tuo campo professionale. Io considererei una Sessione di Esercizi (per una futura query) l'insieme di Esercizi svolti dal IDAtleta in un giorno. Questo potrà fornirtelo una semplice query senza riassumere in una IDSessione. Ripeto, questo puoi chiarircelo meglio solo tu.
    diciamo che avevo previsto che un atleta potesse andare due volte in un giorno, cosa che si perderebbe così, tralasciando questo dettaglio,
    (ps. ho aggiunto invece di "durata_minuti", "ora_inizio" e "ora_fine")
    l'idea della query è buona, ma poi dove metterei i campi della tabella [sessioni]? questi campi riguardano appunto una "seduta" e vengono inseriti 1 volta per sessione
    poi la tabella [Atleti-Esercizi] come hai scritto, TimeInizio e TimeFine si riferisce ad ogni singolo esercizio?
  • Re: Database (gym workout), struttura, schema logico

    maxslayer ha scritto:


    il core è [sessioni], [sessioni_serie], [serie] con tutti i campi associati
    Continuo a non capire il significato di Serie e Sessioni_Serie.

    maxslayer ha scritto:


    se volessi ridurlo:
    avrei "nome_esercizio" ridondante se rimuovessi [esercizi] (cioè nella tab [serie] inserisco dati in un campo testuale [nome_esercizio])
    potrei rimuovere [atleti] se volessi un database personale
    Non è in queste direzioni che ridurrei il tuo database. Atleti è importante, direi indispensabile. Esercizi pure.

    maxslayer ha scritto:


    il discorso "Fascia" è come hai detto, vengono sollecitati in maniera non sistematica
    [muscoli] serve solo per statistiche, potrei rimuoverlo
    però nasce proprio per fare delle statistiche questo db
    Qua dobbiamo capirci entrambi per bene:
    Fascia1/Muscolo1
    Fascia1/Muscolo2
    Fascia1/Muscolo3
    Fascia2/Muscolo4
    Fascia2/Muscolo5
    Fascia2/Muscolo6
    Fascia2/Muscolo7
    Fascia3/Muscolo8
    Fascia3/Muscolo8
    Esisterebbe un Esercizio che sollecita soltanto Muscolo2-3-7-8?
    Un Muscolo può appartenere a più Fasce?

    maxslayer ha scritto:


    diciamo che avevo previsto che un atleta potesse andare due volte in un giorno, cosa che si perderebbe così, tralasciando questo dettaglio,
    (ps. ho aggiunto invece di "durata_minuti", "ora_inizio" e "ora_fine")
    l'idea della query è buona, ma poi dove metterei i campi della tabella [sessioni]? questi campi riguardano appunto una "seduta" e vengono inseriti 1 volta per sessione
    Lascia Sessioni e DettagliSessioni.

    maxslayer ha scritto:


    poi la tabella [Atleti-Esercizi] come hai scritto, TimeInizio e TimeFine si riferisce ad ogni singolo esercizio?
    Sì.
    Considera che rischi di avere TimeInizio e TimeFine per ogni Esercizio. E TimeInizio e TimeFine per ogni Sessione. Per me c'è qualcosa di poco ortodosso o non-normalizzato che potrebbe darti fastidio.
  • Re: Database (gym workout), struttura, schema logico

    OsvaldoLaviosa ha scritto:


    Continuo a non capire il significato di Serie e Sessioni_Serie.
    ogni [sessione] comprende più [esercizi] di cui più [serie] (ogni serie più ripetizioni, per serie si intende "set" oppure "sequenza" di ripetizioni).
    devo essere in grado di scrivere i dettagli di ogni singola [serie], ci sono più serie per ogni [esercizio], quindi alla fine, semplificando, più [serie] per [sessione]. Ho collegato direttamente sessione con serie e assegno alla singola serie l'id dell'esercizio, dato che [esercizio] sono record già precompilati...

    OsvaldoLaviosa ha scritto:


    Qua dobbiamo capirci entrambi per bene:
    Fascia1/Muscolo1
    Fascia1/Muscolo2
    Fascia1/Muscolo3
    Fascia2/Muscolo4
    Fascia2/Muscolo5
    Fascia2/Muscolo6
    Fascia2/Muscolo7
    Fascia3/Muscolo8
    Fascia3/Muscolo8
    Esisterebbe un Esercizio che sollecita soltanto Muscolo2-3-7-8?
    Un Muscolo può appartenere a più Fasce?
    Si, esercizi che sollecitano più muscoli di più fasce (multiarticolari)
    No, il muscolo ha una fascia ben definita

    OsvaldoLaviosa ha scritto:


    Sì.
    Considera che rischi di avere TimeInizio e TimeFine per ogni Esercizio. E TimeInizio e TimeFine per ogni Sessione. Per me c'è qualcosa di poco ortodosso o non-normalizzato che potrebbe darti fastidio.
    Avevo parlato di Sessioni e DettagliSessioni. Se Sessioni non dice molto di più di quei campi, forse non serve. La tabella Atleti-Esercizi (suggerita da Toki) potrebbe avere i seguenti campi:
    IDA-E
    TimeInizio
    TimeFine
    Esercizio
    IDAtleta
    A cosa ti stai riferendo? TimeInizio e Timefine per ogni Sessione?

    piccolo update:


    Grazie per la pazienza.
Devi accedere o registrarti per scrivere nel forum
19 risposte