Mysql
 sql >> Base de données >  >> RDS >> Mysql

Table d'amis MySQL

En supposant que tous vos amis se trouvent également dans la table des utilisateurs, vous aurez besoin d'une table d'amis qui définit une simple relation un-à-plusieurs - reliant la table des utilisateurs à elle-même. Alors

User Table
UserID int identity not null
[other attribute fields]

Friends Table
UserIDLink1 int
UserIDLink2 int 
[other attribute field]

Où UserIDLink1 et UserIDLink2 sont des clés étrangères dans la table Users.

Ainsi, par exemple, si j'ai trois utilisateurs

1 Joe
2 Bill
3 Jane

et Joe et Jane sont amis, alors la table Amis contiendrait une seule ligne

1 3

Ce qui précède suppose implicitement que si A est un ami de B, alors B est un ami de A - si ce n'est pas le cas, vous voudrez probablement renommer UserIDLink1 et UserIDLink2 en UserID et FriendID ou similaire - auquel cas vous avoir jusqu'à doubler les records aussi.

Aussi pour la configuration bidirectionnelle (A est un ami de B si B est un ami de A), vous devez configurer des index sur la table Amis pour (UserIDLink1,UserIDLink2) et (UserIDLink2,UserIDLink1) pour vous assurer que l'accès est toujours efficace si nous recherchions soit des amis de Joe, soit des amis de Jane (si vous n'avez pas configuré le deuxième index, la première requête serait une recherche d'index efficace, mais la seconde nécessiterait une analyse complète de la table).

Si vos liens n'étaient pas bidirectionnels, cela ne serait pas nécessaire pour savoir qui sont les amis de A, mais vous en auriez probablement encore plus besoin, car vous aurez probablement aussi besoin de savoir de qui B est un ami.