Tabelle NON in form normale

di il
15 risposte

Tabelle NON in form normale

Buona sera

La tabella T1, che  non è in forma normale, prevdde che ogni cliente COD possa avere  3 esenzioni 

La tabella T2 è una anagrafica delle esenzioni 

La tabella T1 non è in forma normale  
infatti gli stessi valori sono inseriti i colonne diverse 
Esempio 
per il COD =1 la esenzione 101 e’ in colonna ese1 
per il COD =3 la esenzione 101 e’ in colonna ese2

per rendere la T1 un po +  chiara e ordinata ho pensato di  mettere e dei flag in colonne corripondemti alle  esenzioni
e arrivare ad una tabella T1  modificata cosi fatta …

Domanda: 
io stavo pensando ad  5 queri di update del tipi ..vedi sotto…
chideo se possa esserci una soluzione  + elegane e meno farraginosa 

UPDATE dati SET N101 = 1
WHERE ESE1 =101   OR ESE2 = 101 or  ESE3 = 101;

UPDATE dati SET N201 = 1
WHERE ESE1 =201   OR ESE2 = 201 or  ESE3 = 201;

UPDATE dati SET N301 = 1
WHERE ESE1 =301   OR ESE2 = 301 or  ESE3 = 301;

UPDATE dati SET N401 = 1
WHERE ESE1 =401   OR ESE2 = 401 or  ESE3 = 401;

UPDATE dati SET N501 = 1
WHERE ESE1 =501   OR ESE2 = 501 or  ESE3 = 501;

grazie ciao da carlo

15 Risposte

  • Re: Tabelle NON in form normale

    Il campo cod deve essere per forza univoco?

    Perche' non fai una colonna per il cod ed una per il codice di esenzione?

    Poi crei un indice multicampo fra cod ed ese in modo da evitare di inserire due records uguali

    Con un paio di query di accodamento metti in coda alla tabella T1 la colonna cod e la colonna ese2, poi accodi di nuovo la colonna cod e la ese3.

    Cosi', un domani che devi aggiungere una nuova esenzione non devi mettere mano alla tabella…

  • Re: Tabelle NON in form normale

    Secondo me confondi l'archiviazione dei dati con la visualizzazione dei dati, oppure access con excell.

    Che sono due cose ben distinte.

    Nella prima tabella non vedo record duplicati, ma semplicemente il modo nativo e giusto di come dovrebbero essere archiviati i dati in un database.

    Quindi non capisco la richiesta di dover andare a modificare le tabelle di archiviazione con update quando dovresti usare una query di raggruppamento in fase di visualizzazione e con una struttura del database con le giuste relazioni tra le tabelle.

  • Re: Tabelle NON in form normale

    A mio avviso devi spiegare meglio i singoli campi e come si relazionano fra loro: in particolare vedo il cod 3 che ha ese1 201 ed ese2 301,  poi vedo ancora cod 3 ese1 201 ed ese2 101

    Il cod 3 ha quindi due volte ese1 201: deve essere cosi' o e' una ripetizione?

    Se si scrivesse cod 3 ese1 101, ese2 201 ese3 301 avrebbe lo stesso significato?

  • Re: Tabelle NON in form normale

    Le tabelle iniziali sono da cambiare ma non come hai fatto. Ovviamente devi abbandonare l'idea di Excel se lavori con un DB.

    La T2 diventa

    idESEdesESE
    1101
    2201
    3301
    4401
    5501

    e la tabella degli utenti (clienti?) che adesso è T1 dovrebbe avere i codici con la descrizione

    idUTEdesUTE
    1Rossi
    2Verdi
    3Bianchi

    Dovrai implementare una tabella che chiamerai T1T2 con le registrazione delle esezioni (e con la relazione con T1 per idUTE e con T2 per idESE

    idUEidUTEidESE
    111
    212
    313
    423
    532
    633
  • Re: Tabelle NON in form normale

    Se hai 5 codici esenzione ti direi di creare la tabella come

    Cod.  Es1.  Es2  …. Es5

    In fase di inserimento/modifica quando scegli dalla combo controlli se inserirlo su es1, es2… ecc…

  • Re: Tabelle NON in form normale

    Così se deve aggiungere un'altra esenzione deve modificare la struttura. E continua la debornalizzazione.

    Ma davvero lavorate sui DB?

  • Re: Tabelle NON in form normale

    08/10/2024 - oregon ha scritto:


    Le tabelle iniziali sono da cambiare ma non come hai fatto. Ovviamente devi abbandonare l'idea di Excel se lavori con un DB.

    Buongiorno Oregon,

    perche' adottare l'uso dei contatori di Access come PK quando gli stessi valori dei campi delle tabelle permettono di essere gestiti loro stessi come PK?  

    … ovviamente sempre che tali campi abbiano valori di tipo Long…

  • Re: Tabelle NON in form normale

    08/10/2024 - oregon ha scritto:


    Così se deve aggiungere un'altra esenzione deve modificare la struttura. E continua la debornalizzazione.

    Ma davvero lavorate sui DB?

    Già il titolo parla da solo… non in forn normale.

    Se ha 5 esenzioni e vuole che venga fuori una cartella tipo tessera del bingo, e vuole che le esenzioni vengano incolonnate, basta creare 5 campi.

    Resta da capire che natura hanno le tre esenzioni massime consentite… io andrei a sviluppo verticale master detail ma lui ha chiesto una dritta per questo tipo di sviluppo.

  • Re: Tabelle NON in form normale

    La questione non riguarda la visualizzazione (stile Excel) ma l'impostazione della struttura di un DB.

    Che la tabella non sia in forma normale è proprio il problema che gli causerà mal di testa con le query e la manutenzione del DB..

    Ripeto, le tabelle vanno normalizzato poi si scrivono le query per visualizzare i dati come si vuole.  

  • Re: Tabelle NON in form normale

    Fatta baby-prova e va..

    basta fare la relazione per avere i dati dell'esente (cod per intenderci)

  • Re: Tabelle NON in form normale

    09/10/2024 - sihsandrea ha scritto:


    Fatta baby-prova e va..

    Che c'entra “che va” con la corretta gestione dei DB Andrea?

    Va beh… ho capito, come non avessi detto nulla, a volte è tempo perso. 

  • Re: Tabelle NON in form normale

    Sono 5 codici… capisco la forzatura ma avrebbe più gatte da pelare per mostrare i dati a sviluppo orizzontale da una master / detail.

    Non ti do torto ma per il tipo di dato sembra più che sufficiente.

    La mia premessa è stata quella di una forzatura.

    Beh, contento lui…

  • Re: Tabelle NON in form normale

    Oggi sono 5 codici, domani un possibile casino 

  • Re: Tabelle NON in form normale

    Che dire… programmatore fai-da-te? no laurea o attestati? haihaihaihaihai….

    camminerai e cadrai, ti alzerai sempre a modo tuo… per citarne una di ligabue.

Devi accedere o registrarti per scrivere nel forum
15 risposte