Progettazione / relazione del database per la trasmissione di messaggi

4

Qual è la progettazione del database o la logica aziendale per la creazione di un'app per la messaggistica tra utenti?

Ho difficoltà a scegliere come affrontare la relazione tra ciascuna conversazione del thread utente. Mostro questa figura, ma è stato davvero difficile capire il concetto

Come funziona tutto questo messaggio di threading (come Gmail o Facebook)?

    
posta Benjamin Smith Max 30.11.2013 - 11:24
fonte

1 risposta

2

Vorrei comporre il thread dei messaggi e quindi rendere i thread successivi subordinati ai messaggi a cui sono risposte.

Ad esempio:

  • Il thread A è iniziato.
  • Il thread A riceve tre messaggi.
  • Il quarto messaggio viene aggiunto e risponde al messaggio 3, creando un nuovo thread.
  • Il genitore del thread B è impostato sul messaggio 3.
  • Il quarto messaggio diventa parte di ThreadB.
  • Il quinto messaggio è una risposta al messaggio originale e viene aggiunto a ThreadA.
  • Il sesto messaggio è una risposta al messaggio tre e viene aggiunto a ThreadB.

Quindi, quando si esegue il rendering del thread, dopo aver visualizzato una query di messaggi per tutti i thread il cui messaggio principale corrisponde al messaggio appena visualizzato. Se ce ne sono per il messaggio, semplicemente rendi quella discussione prima di andare al messaggio successivo.

Ho incluso un diagramma di base (probabilmente tecnicamente errato) che illustra le relazioni nel database.

Dato l'esempio sopra riportato, sarebbe simile a questo quando viene visualizzato:

  • (ThreadA)
    1. Messaggio 1
    2. Messaggio 2
    3. Messaggio 3
      • (ThreadB)
        1. Messaggio 4
        2. Messaggio 6
    4. Messaggio 5

Aggiornamento: risolti alcuni problemi relativi alla relazione e alla molteplicità. L'ho aggiornato per includere anche rappresentazioni testuali delle relazioni. Qualsiasi input sulla validità sarebbe utile, da un po 'di tempo da quando ne ho fatto uno. Ho usato ORM basato su modelli quasi esclusivamente ultimamente. Inoltre, tieni presente mentre utilizza il formato di base di IDEF1X. Contiene specifiche e IDEF1X è un sistema di modellazione basato sulla semantica.

    
risposta data 30.11.2013 - 18:17
fonte