En supposant que tous vos amis sont également dans la table utilisateur, vous aurez besoin d'une table d'amis qui définit une simple relation un-à-plusieurs - reliant la table des utilisateurs à elle-même. Donc
User Table
UserID int identity not null
[other attribute fields]
Friends Table
UserIDLink1 int
UserIDLink2 int
[other attribute field]
Lorsque UserIDLink1 et UserIDLink2 sont des clés étrangères dans la table Utilisateurs.
Ainsi, par exemple, si j'ai trois utilisateurs
1 Joe
2 Bill
3 Jane
et Joe et Jane sont amis alors la table d'amis contiendraient une seule rangée
1 3
Ce qui précède suppose implicitement que si A est un ami de B puis 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 auriez jusqu'à doubler les enregistrements.
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 des amis pour (UserIDLink1, UserIDLink2) et (UserIDLink2, UserIDLink1) pour assurer l'accès est toujours efficace si nous cherchions soit des amis de joe ou des amis de jane (si vous n'aviez pas configuré le second index, la première requête serait une recherche d'index efficace mais la seconde nécessiterait un scan de table complet).Si vos liens n'étaient pas bidirectionnels, il ne serait pas nécessaire de savoir qui sont les amis de A, mais vous en aurez probablement toujours besoin car vous aurez probablement besoin de savoir de qui B est un ami.
Les amitiés sont-elles bidirectionnelles ou unidirectionnelles? Si Pete est l'ami de Marie, cela signifie-t-il toujours que Marie est aussi amie de Pete? –
Notez également que le nom de ce que vous souhaitez est "table d'intersection" ou peut-être aussi "table de recherche". Si vous êtes familier avec les concepts de base de données, il s'agit d'une table de plusieurs à plusieurs, car un utilisateur peut avoir beaucoup d'amis et peut avoir beaucoup d'amis avec d'autres personnes. Notez également qu'il est possible pour un utilisateur d'avoir un ami qui n'est pas un ami, en utilisant ce style. Il y a d'autres moyens, mais c'est le plus simple à mettre en œuvre. Peut-être qu'un peu plus sur votre logique d'entreprise amicale aiderait? @Juha Syrjälä m'a battu à ça! – jcolebrand
Les amis sont unidirectionnels et doivent déjà exister dans la base de données. C'est juste une liste de rappel de personnes que vous connaissez. – asmo