Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    428

    base di dati normalizzata

    Buon giorno,
    mi ritrovo con una base di dati presumibilmente normalizzata (non l'ho creata io), solo che dovendo implementare l'applicazione (in php) che la userà, mi sembra essere scomoda da utilizzare, è possibile?
    Fidandomi del creatore di tale base di dati, tenderei a scartare l'errore nella normalizzazione (però la mano sul fuoco non ce la voglio mettere :P .. non si sa mai :P), mi sorge il dubbio di sbagliare io a strutturare l'applicazione.

    In pratica per il sistema vi sono tre tipologie di utenza, con diversi permessi di accesso alle varie aree. Semplifico indicando i tre utenti con 1, 2, 3 dove 2 essendo maggiore di 1 ha anche i permessi di 1 e 3 ovviamente i permessi di 1 e potenzialmente di 2.

    La base di dati che mi è stata presentata ha 3 tabelle con gli stessi valori, ma si differenziano per il nome, ovvero ho la tabella 1, la tabella 2 e la tabella 3.
    In questo modo per permettere all'utente di eseguire una certa operazione, dovrei controllare se è presente in una delle 3 tabelle.
    Solo che in questo modo lo stesso utente con gli stessi dati può apparire in più tabelle ... informazione ridondante (e quindi errore nella pianificazione della base di dati?)

    Senza fare uno studio di normalizzazione mi verrebbe più istintivo raggruppare le tre tabelle in una unica e poi fare una tabella gruppi e una tabella con le varie associazioni, e risolvere tutto con un query con dei join, oppure vista la scarsa complessità del sistema e una improbabile espansione futura, mettere direttamente 3 campi boolean nella tabella degli utenti ad indicare direttamente l'appartenenza ad uno o più gruppi.

    Che ne dite? Problema mio in sviluppo... problema nella base di dati? In entrambi :P ?


    grazie
    ciao
    p.s.: avevo letto l'articolo sulle base di dati per strutture ricorsive, ma quà non mi sembra necessaria una struttura simile.

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    io farei esattamente come dici tu:

    una tabella utenti con chiave esterna adminlevel
    una tabella adminlevel che riporta i permessi

    se la tua applicazione necessita di un autenticazione, oltre
    a creare i campi login e pwd (in MD5) è performante tenere in sessione il livello amministrativo dell'utente...
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    428
    i permessi sono molto pochi, non so se possa essere utile inserirli in un'altra tabella, o gestirli staticamente nelle pagine.
    Cmq per tenere in sessione il livello amministrativo dell'utente, lo intendi nel caso di sessioni lato db, perchè salvarglielo su cookie, non credo sia sicuro (smentiscimi pure se ho detto una cavolata :P)

    Cmq grazie mille!

    ciao
    gnegno

  4. #4
    Originariamente inviato da Gnegno
    i permessi sono molto pochi, non so se possa essere utile inserirli in un'altra tabella, o gestirli staticamente nelle pagine.
    Una sola tabella ... sono tutti dati che riguardano lo user e quindi atomici, alla stregua di un indirizzo in agenda.
    Cmq per tenere in sessione il livello amministrativo dell'utente, lo intendi nel caso di sessioni lato db, perchè salvarglielo su cookie, non credo sia sicuro (smentiscimi pure se ho detto una cavolata :P)
    Usa le sessioni con cookies.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    428
    ma quindi alla fine la base di dati che mi era stata fornita non era realmente normalizzata? Oppure alla fine la normalizzazione rimane solo a livello teorico e poco di utilizzo pratico?
    io mi aspetto che dopo uno studio di normalizzazione, la base di dati sia solida e funzionale!

  6. #6
    La base di dati che mi è stata presentata ha 3 tabelle con gli stessi valori, ma si differenziano per il nome, ovvero ho la tabella 1, la tabella 2 e la tabella 3.
    In questo modo per permettere all'utente di eseguire una certa operazione, dovrei controllare se è presente in una delle 3 tabelle.
    Solo che in questo modo lo stesso utente con gli stessi dati può apparire in più tabelle ... informazione ridondante (e quindi errore nella pianificazione della base di dati?)
    E la chiami ottimizzata?

    Come se mysql avesse una tabella per ogni privilegio assegnabile agli users. La normalizzazione consiste anche nel raggruppare per categoria, ma dati atomici e non ripetuti in altre tabelle. A voler esagerare fai una tabella user ed una privilegi come gia' detto, ma se il privilegio e' di tipo gerarchico serve a nulla. Il valore assegnato tanto vale sia presente con i dati personali. Risparmi una tabella.

    se fai una tabella user ed una privilegi, dovrai poi relazionare lo user al privilegio. Tanto vale mettere immediatamente il privilegio associato allo user.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    428
    sìsì capito, e infatti era la cosa più intuitiva che mi veniva da fare, solo che mi fidava di colui che mi aveva passato tale base di dati, che mi era sorto il dubbio non averci capito niente :P
    Poi devo dire la verità.. che del corso dell'anno scorso di base di dati (dove studiai la normalizzazione) ricordo veramente poco

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.