Come rappresentare una relazione tra sé e sé in rdbms?
-
07-07-2019 - |
Domanda
Spero che questa sia una domanda sciocca, ma il mio cervello è impazzito e non riesco a pensare a come farlo adesso.
Sto scherzando cercando di creare qualcosa di social network e dovrò tenere traccia dei "follower" di una persona. Ho già creato una tabella utenti, ma come posso rappresentare l'idea che gli utenti siano associati gli uni agli altri? Questa è una relazione unidirezionale tra l'altro, quindi se alla persona "mi piace". persona b, non è necessariamente vero il contrario.
L'unica cosa che mi viene in mente è una tabella che ha solo un elenco di relazioni uno a uno, quindi:
user a -> user b
user a -> user c
user a -> user d
user b -> user d
user b -> user c
...
ma questo mi sembra off.
Grazie
Simon
modifica: forse un follower su Twitter è più analogo a quello che sto cercando di fare
Soluzione
Crea una tabella che contenga solo le informazioni sull'ID follower in questo modo:
user_id | follower_id
Dovrebbe essere. quindi prendi ad esempio l'utente # 56.
probabilmente avrebbe righe come questa nella tabella dei follower:
56 | 53453
56 | 323
56 | 463
Basta aggiungere un vincolo univoco su entrambe le colonne in modo che non possa fare amicizia due volte con qualcuno.
Altri suggerimenti
Forse una tabella che assomiglia a:
RelationshipId Follower Target
Int Int Int
Dove follower è l'ID dell'utente A e Target è l'ID dell'utente B e l'utente A sta seguendo l'utente B.