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

    [Progettazione db "serio" in PGSQL] Frazionare o no le tabelle?

    Carissimi,
    la base per l'applicazione che sto realizzando è frutto di due anni di lavoro e sarà il mio main business quindi sono orientato a seguire le più accurate norme di progettazione. Non voglio che si faccia qualcosa, ma che si faccia nel modo migliore.

    I campi della tabella persone della mia applicazione potrebbero essere divisi in due gruppi, in quanto il loro significato pratico è diverso. Mentre nella prima parte ci sono dati anagrafici, nella seconda sono indicati i poteri di accesso della persona in questione (ovvero i ruoli). Norme teoriche imporrebbero di creare tre tabelle con relazione uno a uno, ma non sono convinto. Secondo voi è comunque necessario spezzarla nonostante i seguenti punti?

    1) La dimensione complessiva di una unica tabella non supererebbe i 40 - 45 campi;
    2) I dati dei due gruppi non saranno MAI usati da soli, ovvero in nessuna parte del software si richiederebbero solo i dati di una delle parti senza l'altra;
    3) Come è evidente, per ogni riga del primo gruppo è sempre associata una sola riga del secondo;
    4) I record non sono moltissimi (prevedo qualche migliaio) ma i campi relativi al ruolo hanno una doppia criptazione (e per giunta SHA-512!!) che già appesantisce in particolare la fase di list, ovvero quando voglio estrarre e decriptare ("decriptare" per modo di dire! Lo so che SHA è asimmetrico, ma il valore di quei campi è variabile tra due opzioni quindi ho creato una classe che... Vabbé non mi dilungo) i dati per vedere tutte le persone in una sola lista, quindi capirete la mia esigenza di alleggerire quanto più possibile la gestione di quella tabella, quindi a tutte le operazioni necessarie non vorrei aggiungere una ulteriore operazione inner join. Ovvero, tutte le operazioni che "affibbio" ad una riga andranno ripetute spessissimo per molte migliaia, in pagine di frequente consultazione;
    5) il punto 4 è gravato dal fatto che in una sola pagina web (contabilità) ho tre elenchi persone a tendina gestiti con Ajax! Quindi moltiplicate per tre la mia esigenza di consultare i dati delle persone in modo assolutamente snello e leggero...

    Siete ancora convinti che debba frazionare la mia tabella?

    GRAZIE A TUTTI IN ANTICIPO PER IL TEMPO DEDICATO (visto anche che siamo in Agosto!)

  2. #2
    Io ti consiglio prima di progettare il tuo DB almeno in terza forma normale. Solo dopo questa fase, sole se ci saranno problemi di prestazioni, allora potrai pensare di denormalizzarlo.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    MacApp, sei stato gentilissimo, ti ringrazio davvero anche perché l'applicazione in oggetto è davvero importante. Se ho ben capito queste sono le motivazioni della tua risposta (ti prego di confermarle):

    "Se vuoi davvero creare il tuo db in modo serio fraziona ovunque possibile le tue tabelle creando diverse relazioni tra loro anziché una unica tabella, come prescrivono le più evolute regole sulla progettazione, a prescindere dalla dimensione del tuo database (anche in un file Access con cinque campi e dieci record mettere in uno stesso campo tre indirizzi sarebbe scorretto, l'accuratezza nella progettazione non dipende dalle dimensioni ma è una questione di principio); solo se questo rallenterà le operazioni, quindi se ci saranno motivi concreti, allora accorpa le tabelle dove puoi farlo senza compromettere il db vero e proprio".

    Ho bene interpretato le tue indicazioni?

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.