La struttura dei dati principali dei siti di social networking è lo graph. Su Facebook il grafico è diretto (quando sei amico di qualcuno, sei un amico). Su Twitter il grafico è diretto (segui qualcuno, ma non necessariamente ti seguono).
I due modi più comuni per rappresentare i grafici sono adjacency lists e adjacency matrices.
Un elenco di adiacenze è semplicemente un elenco di spigoli sul grafico. Considera un utente con un ID utente intero.
User1, User2
1 2
1 3
2 3
L'interpretazione non orientato di questi record è che l'utente 1 è diventato amico di utenti 2 e 3 e utente 2 è anche amica di utente 3.
Rappresentare questo in una tabella del database è banale. È la tabella di join delle relazioni da molti a molti che abbiamo familiarità con. Le query SQL per trovare gli amici di un determinato utente sono abbastanza facili da scrivere.
Ora che conosci gli amici di un determinato utente, è sufficiente unire questi risultati alla tabella degli aggiornamenti. Questa tabella contiene tutti gli aggiornamenti dell'utente indicizzati dall'ID utente.
Finché tutte queste tabelle sono correttamente indicizzate, si avrebbe un tempo abbastanza facile progettare query efficienti per rispondere alle domande che ti interessa.
fonte
2009-04-17 23:17:10
+1 per menzionare la denormalizzazione, questo non è ovvio al vecchio SQL wor ld dove 3NF è stata la stella guida per molto tempo. (Http://en.wikipedia.org/wiki/Third_normal_form) – Crypth