Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    Aiuto con normalizzazione tabelle database

    Ciao ragazzi devo sviluppare un sistema di notifiche..
    Praticamente ogni qualvolta un utente fa qualcosa verso di me mi deve essere notificato,ovvero:

    Se utente B mi manda una richiesta di amicizia
    Se utente B mi manda un messaggio privato
    Se utente B mi manda una richiesta di sblocco
    Se utente B mi sblocca
    Se utente B mi rifiuta l'amicizia

    eccetera...
    effettivamente sono molti casi e tra l'altro vorrei poter dare la possibilità all'utente di scegliere cosa poter visualizzare.. Nel senso se l'utente non vuole le notifiche di quando gli arrivano nuovi messaggi oppure di quando gli annullano l'amicizia deve poterlo settare..

    Io ho pensato di fare 2 tabelle:
    prima tabella chiamata "settaggi_notifiche" con:

    id_utente (il tuo id utente)

    amicizia_accettata tinyint(1) (se lo imposta a 1 visualizzera tutte le notifiche di quando gli accettano l'amicizia)

    amicizia_rifiutata tinyint(1) (se lo imposta a 1 visualizzera tutte le notifiche di quando gli rifiutano l'amicizia)

    e così via....


    seconda tabella chiamata "notifiche" con:

    id_utente_action (id dell'utente che esegue l'azione verso di te)

    e poi volevo mettere un campo "code" che con un codice mi identificasse l'azione intrapresa verso di me...

    Ma sicuramente si può fare moooooooolto meglio...che ne pensate?Come posso fare?

  2. #2
    ..ho creato una struttura ma attendo consigli..

  3. #3
    devi avere una tabella generica con tutte le azioni possibili, con struttura

    ID
    Descrizione
    Commento

    popolerai questa tabella, appunto, con tutte le azioni possibili

    avrai poi una seconda tabella di notifiche per utente

    ID
    ID_Utente
    ID_Azione
    Notifica (bool)

  4. #4
    Allora ho creato la struttura in questo modo:

    Tabella: "Settings_notify" in questa tabella si inseriranno le preferenze su quali tipologie di notifiche si vogliono vedere!(1=la si vuole vedere, 0=non la si vuole vedere)

    id_user_settings (id dell'utente,ogni utente avrà 1 tabella personale)
    annull_amicizia (tinyint(1))
    inviata_ric_amicizia (tinyint(1))
    ritirata_ric_amicizia (tinyint(1))
    iniziata_discussione (tinyint(1))
    terminata_discussione (tinyint(1))
    ecc....


    Tabella: "Notifiche" quì vengono elencate tutte le azioni che vengono fatte nei nostri confronti

    id_notifica
    from_user_id (id dell'utente che ha intrapreso un'azione verso un altro)
    to_user_id (id dell'utente che riceve l'azione)
    tipo_notifica (Vorrei metterci la tipologia dell'azione che è stata fatta)
    data_ora_notifica

  5. #5
    Ora mi si pone un grande problema:

    Come la faccio la query che mi visualizza SOLO le notifiche che ho impostato di voler visualizzare??

  6. #6
    se tu avessi fatto come ti avevo suggerito io, la query sarebbe stata enormemente più semplice. ora invece devi specificare OGNI notifica...

  7. #7
    Ah mi sa che non avevo capito bene..
    Quindi cambio la tabella "settings_notify" creando una struttura del tipo

    ID
    Descrizione
    Commento

    e qui dentro ci metto tutti quei dati che invece ho messo come righe della tabella


    dopodichè creo una tabella "notifiche"

    ID
    ID_Utente
    ID_Azione
    Notifica (bool)

    dove in ID_Utente ci metto l'utente che ha intrapreso un azione Verso un altro
    in ID_Azione appunto l'id di ciò che ha fatto (preso dalla prima tabella)
    e dentro Notifica vedo se la devo visualizzare o meno in base alle mie preferenze?

    Non so se ho capito perfettamente

  8. #8
    no.

    tabella TipoAzioni
    ID
    Descrizione

    tabella NotifySettings
    ID
    ID_Utente
    ID_Azione
    Notifica (bool)

    tabella Azioni
    ID
    ID_Utente_From
    ID_Utente_To
    ID_TipoAzione

    a questo punto notificherai all'utente ID_Utente_To solo quelle azioni che lui ha richiesto di ricevere (nella tabella NotifySettings)

  9. #9
    Ah adesso ho capito! So di coccio!!

    Devo allora popolare la tabella "NotifySettings" con l'id dell'utente e tutte le azioni con la variabile booleana "Notifica" che mi dice se quella specifica azione la vuole visualizzare o meno!

    Avrò una cosa del tipo (Mettendo il caso che l'azione "conversazioni ricevute" abbia id=10)

    tabella NotifySettings
    ID=15
    ID_Utente=311
    ID_Azione=10
    Notifica (bool)=0

    in questo caso l'utente con id 311 NON vuole visualizzare le notifiche relative alle conversazioni ricevute

    Anche perchè un utente può tranquillamente decidere di non voler più visualizzare una certa azione quindi basta mettere il campo a 0.

    Per la query a questo punto basta che metto
    WHERE Notifica=1

    Ho capito bene stavolta?

  10. #10
    yes. tra l'altro, così facendo, puoi aggiungere tipi di azione a piacimento senza toccare la struttura

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 © 2024 vBulletin Solutions, Inc. All rights reserved.