Progettazione del database di servizi di chat

1

Ho un'applicazione Android / desktop che sto pubblicando sul Web e, dato che ci sono alcuni aspetti sociali, ho pensato di aggiungere un servizio di chat in modo che anche gli utenti possano chattare. Per questo servizio di chat, desidero che le persone abbiano "Online, Offline, Occupato e Assente" come possibili stati.

Al momento ho una tabella nel mio database chiamata "utenti", che ha il loro nome utente / password / mail, ecc., tutte le solite cose. Ora mi chiedevo se avrei anche bisogno di salvare lo stato dell'utente qui?

In caso contrario: come posso memorizzare lo stato di un utente? (Tenendo presente che gli altri devono vedere questo ovviamente)

Se sì: qual è il modo migliore per farlo? Ho pensato di archiviarlo come numero intero (ad es. 1 == offline, 2 == online, 3 == away e 4 == busy). Salvarlo come testo sarebbe solo uno spreco di spazio?

(A proposito, è un RDBMS, se questo è importante :))

    
posta Dylan Meeus 27.02.2015 - 12:54
fonte

3 risposte

5
... table in my database named "users", which has their username/password/mail etc, 

Ovviamente vuoi dire che stai memorizzando il "hash" o il valore calcolato in modo simile derivato da la password scelta dall'utente.

How do I best store a users status? 

Vorrei andare con un valore Integer nel record degli utenti, che è una chiave esterna di una (piccola, piccola) tabella di ricerca di users_statuses:

status_id  Description
        1  Offline 
        2  Online 
        3  Away 
        4  Busy 

In questo modo, quando vuoi aggiungere ...

       37  Lost in the Bermuda Triangle 

... è solo un'altra riga in un tavolo; nessun codice cambia; nessuna modifica dello schema del database; facile.

    
risposta data 27.02.2015 - 14:09
fonte
3

Sono d'accordo con te, memorizzare lo stato come numero intero sarà sufficiente. E preferirei salvarlo in una tabella diversa, diciamo user_status, poiché verrà aggiornato frequentemente in base alle attività dell'utente.

    
risposta data 27.02.2015 - 13:54
fonte
1

La tabella utenti è sicuramente il luogo in cui memorizzarla.

Nota che se usi MySql (e forse anche altri?), puoi anche usare un enum, così puoi essere sicuro che il valore che scrivi è nel range, e puoi riferirlo ad esso in modo leggibile nel tuo codice dell'applicazione (ad es. onLine , invece di 1 ).

    
risposta data 27.02.2015 - 14:20
fonte

Leggi altre domande sui tag