configurando uma lista de amigos no mysql

Quero fazer uma lista de amigos no meu jogo online. Não tenho certeza de como configurá-lo ou por onde começar. Os amigos de adicionar e aceitar partes de amigos que posso lidar, mas não sei como configurá-lo em mysql e php. Uma lista de usuários (amigos) conectados a cada usuário ou algo assim?

Se o seu relacionamento de amizade é simétrico, você pode armazenar cada par em um registro separado:

friend1 friend2 AB BA AC BD CB DB 

e consulta todos os amigos de B como esse:

 SELECT friend2 FROM friends WHERE friend1 = 'B' 

ou armazene o usuário com a id mínima no primeiro campo e com o id máximo no segundo:

 friend1 friend2 AB AC BD 

e consulte os amigos de B como esse:

 SELECT friend1 FROM friends WHERE friend2 = 'B' UNION ALL SELECT friend2 FROM friends WHERE friend1 = 'B' 

A primeira opção é um pouco mais eficiente no MySQL , e esta é a única opção se o seu relacionamento de amizade não for simétrico (como no LiveJournal )

Veja este artigo:

  • Selecionando amigos

A amizade é essencialmente uma relação mútua entre duas pessoas. Nos termos do database, é uma relação de muitos para muitos entre dois usuários.

Então, o que você precisa é uma tabela de binding que contenha referências a dois usuários por ID.

Exemplo

Tabela de usuários

 ID Username 1 Bob 2 Jim 3 Alice 

Mesa amigos

 user1 user2 1 2 2 3 

Isso faria amigos de Bob amigos Jim e Jim com Alice.

Confira as respostas nessa outra publicação aqui no stackoverflow … algumas explicações simples, mas ótimas para realizar o que você precisa.

Projeto de database do Facebook?

Uma alternativa seria definir a coluna A como segue: $ checkfriend = (($ friend1 $ friend2) || ($ friend2 $ friend1))

Coluna B como segue: (amizade aceita ou amizade rejeitada) com base na escolha do usuário

Basicamente, eles têm user1 e user2 na mesma coluna.