Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    117

    MySql - Normalizzazione: dividere una tabella per tenere separati i dati soggetti ad update?

    Ciao a tutti,
    sto cercando di completare un database e di normalizzarlo (perché durante l'allestimento ho fatto un po' di caos).

    1° dubbio
    Mi ritrovo con due tabelle che andrebbero unificate perché contengono solo dati univoci (nel senso che sono tutti in rapporto di 1:1 con l'ID) ma, siccome molti sono immutabili mentre alcuni (circa 4 su 14) sono soggetti a modifica, mi domandavo se era opportuno fare due tabelle, ovvero:

    Prima tabella con tutti i dati non soggetti a modifica
    Seconda Tabella con solo i dati soggetti a modifica
    (vi sarei grato se mi fosse anche spiegato il perché della scelta dato che sono un autodidatta al primo esperimento più complesso)

    2° dubbio
    Mi domandavo se possano sorgere problemi usando, come chiave primaria della seconda tabella, un campo nel quale "copio" l'ID della prima tabella.

    3° dubbio
    Ho un numero di "protocollo" che sul mio db è diviso in due (campo 'anno' e campo 'numero') mentre su un db dal quale estraggo alcuni dati (e del quale non ho controllo) è unificato con il seguente criterio:
    anno+numero in 5 cifre
    Quindi io avrei (ad esempio) '2015' in un campo e '1' in un altro
    invece sull'altro db ritrovo un campo unico contenente '201500001'
    Siccome mi sembra assurdo tenere tre campi, vorrei sapere se mi conviene tenere un dato unico e "splittarlo" quando mi serve separato oppure tenere i dati separati e "costruire" il dato unico quando devo confrontarli.

    Grazie in anticipo a chiunque mi darà suggerimenti.
    Ciao

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    1°)
    Se sono solamente 14 campi io li terrei tranquillamente su tabella unica
    quando devi modificare fai la tua UPDATE sui campi che ti interessano

    Dividere le tabelle può avere senso su centinaia di campi oppure se devi modificare
    in aggiunta di campi delle tabelle importanti e non ti senti sicuro di toccare la tabella di origine

    tieni presente poi che una relazione 1 a 1 appesantisce il DB molto più che aggiungere 4 campi sulla stessa tabella


    2°)
    No, nessun problema
    solitamente quelli della razza che usano le key autoincrementali hanno tutte le tabelle
    con chiave 1, 2, 3, 4, 5 eccetera

    3°)
    qui è un pò più complesso,
    se vuoi normalizzare direi di tenere 2 campi in quanto il 2015 è di fatto l'anno di riferimento
    ( cosi a memoria la normalizzazione dice di non fondere 2 dati in un unico campo )


    pero sono convinto che in un protocollo hai anche la data, !!!!!!
    quindi in entrambe le alternative che ci sottoponi avresti dei dati rindondanti

    io userei 2 campi,
    - la data
    - un numerico
    da poter comporre all'occorrenza con
    ---- Year(data) & Format(numerico, "00000")
    ( ho usato una sintassi casuale che quasi certamente non funziona con MySql )

    questo naturalmente a condizione che tu non possa avere
    un protocollo 201500001 datato 31/12/2014


    .
    Ultima modifica di nman; 20-02-2015 a 23:45

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    117
    Grazie mille nman, mi hai tolto i dubbi e mi hai fatto rendere conto che 14 campi in una tabella non sono poi tanti (ma per me che sono alle prime armi ti garantisco che lo sono).
    Grazie ancora e ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.