PDA

View Full Version : [MySQL] Novizio in DB Management


sammega
06-07-2014, 12:02
Ciao a tutti! Sono nuovo del forum e sono contento di essere entrato a far parte di questa fantastica community.
Sto sviluppando una applicazione web che si deve appoggiare su di un Database. Fino ad adesso avevo fatto un uso di MySQL abbastanza modesto: ho seguito diverse guide ma non ho mai capito bene diversi concetti. Devo creare un Database che contenga le informazioni di numerosi utenti, ognuno dei quali ha un diverso 'status' (come l'ho chiamato io) con dei diversi permessi. Fin qui tutto bene: una tabella con nome cognome status e altre info standard, il problema è che ogni status ha delle impostazioni particolari inerenti al suo ruolo. Mi chiedevo quindi se fosse corretto fare una unica grande tabella con tutte le impostazioni di tutti gli status che possono venire utilizzate o meno. Chiarisco la situazione con un esempio estremamente semplificato:

+---------+----------+----------------------+--------------------+
| userid | status | opzioni admins | opzioni users |
+================================= +
| pinco | admin | qualcosa | null |
+---------+----------+----------------------+--------------------+
| pallo | user | null | qualcos'altro |
+---------+----------+----------------------+---------------------+

Adesso vi chiedo se questa soluzione sia corretta o ne esista un'altra più leggera ed elegante :mbe: . Inoltre vi chiedo di segnalarmi una ottima guida che mi possa chiarire le idee :) . Grazie mille a tutti :D

vile83
07-07-2014, 17:08
Io aggiungere anche altre informazioni tipo password (se eventualmente le riesci a codificare in hash).

Poi dipende da quanti livelli è composta la tua applicazione..

userid, user, password, dataregistrazione, dataultimalogin, tipo_account.

Per me questa è la stratificazione essenziale, poi non so se vuoi portare altre informazioni sull'utente Mail, parola d'identificazione segreta dell'utente..
insomma tutte info che si basano sull'utente.

per quanto riguarda lo status come lo definisci tu, i opterei per utilizzare dei flag del tipo:
numero 1(amministra) 2 (utente avanzato) 3 (utente con funzioni medie) e bla bla

Io così faccio di solito.

Spero di essere stato d'aiuto

sammega
08-07-2014, 16:17
Ok grazie ho trovato una ottima soluzione ;) Grazie ancora

vile83
08-07-2014, 16:52
Sono curioso.. condividi la soluzione :-)

sammega
12-07-2014, 20:50
Semplicemente c'è una tabella utenti dove ci sono tutti gli user con i vari status come ho scritto sopra, poi c'è un'altra tabella per ogni status dove ad ogni campo corrisponde una od una serie di opzioni e ad ogni riga ogni utente con quel preciso status. So che la cosa si può ottimizzare con le Foreign Keys e con InnoDB ma preferisco aspettare un po' di tempo per aggiornare il tutto (anche perché devo ancora entrare bene nella logica :doh: ) ;) Poi per altre operazioni dove un database risulta non prettamente necessario utilizzo dei file di configurazione .INI tramite parsing in PHP :D