New question

Question:

Date: 03-10-2020 11:58:51 (In Spanish)

Como guardar una lista de amigos.[Resolved]

Hola buenas a todos.

Tengo una duda. ¿Como sería mejor guardar los ids de los amigos de un usuario? Creando un campo que guarde los id separado por comas. en la misma tabla de datos del usuario, por ejemplo "2,34,76,88,94,98,145,378" o es mejor crear una tabla solo de amigos que los guarde de modo id,idusuario,amigos siendo el campo amigos guardado de la misma manera. ¿O hay una manera mas efectiva de guardar amigos?

Gracias de antemano
Tags: Database - MySQL - PHP Votes: 0 - Answers: 6 - Views: 5 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 03-10-2020 13:00:16 Hola David te paso un link que capaz te ayude en algo Crear una modelo de base de datos que muestre los amigos de un usuario
    . Saludos
      Votes: 1 - Link answer
     
  • Date: 04-10-2020 06:29:35 Si lo entiendo hacer un inner join a una tabla de amigos. Pero que resulta más efectivo una tabla con cientos de miles de registros (de amigos) a la que hacerle el inner join o un campo varchar que contenga un los ids de los amigos separado por comas.

    La duda es usar una tabla con cientos de registros vs un campo mega extenso con todos los ids separados por comas.

    Que forma sería la menos laboriosa para programar o cual sería la que menos recursos o datos utilice, no se si me explico.

    Gracias de nuevo
      Votes: 0 - Link answer
     
  • Date: 11-10-2020 04:55:30 De hecho, colocar todos los id de amigos en un solo campo viola la primera regla de normalización (el valor de una columna debe ser una entidad atómica, indivisible). Solo imagina esta situación: ¿cómo eliminas un id que se encuentra dentro de ese campo? ¿cómo actualizas el campo para incluir un nuevo amigo?   Votes: 0 - Link answer
     
  • Date: 11-10-2020 06:33:18 Juan Vasquez, entonces está todo dicho, por el tema de la normalización. Aunque para eliminar tenía pensado recorrer el campo sacando los valores entre las comas a uno nuevo y ya si fuese para eliminar pues cuando la recorre y lo lee ese no lo vuelve a concatenar. Pero parece que me meto en historias para hacer una cosa tan simple. Pues resuelta la duda. Gracias!!   Votes: 0 - Link answer
     
  • Date: 11-10-2020 09:52:16 Debes crear una tabla que llamaremos 'usuarios_amigos', con estos campos: id (clave principal), usuario_id (el id del usuario) y 'amigo_id' (el id del amigo). Si un usuario tiene 5 amigos, la tabla tendrá 5 filas para ese usuario (usuario_id siempre será el mismo -por ejemplo: 1, amigo_id será diferente en cada fila). Para recuperar todos los amigos:
    Select * FROM usuarios_amigos WHERE usuario_id = 1
    Para borrar un amigo:
    // suponemos amigo_id = 21
    DELETE FROM usuarios_amigos WHERE usuario_id = 1 AND amigo_id = 21 
    . Para agregar amigo:
    // suponemos amigo_id = 21
    INSERT INTO usuarios_amigos SET usuario_id = 1, amigo_id = 21
      Votes: 0 - Link answer
     
  • Date: 12-10-2020 00:15:51 Muchas gracias Juan por los ejemplos. Comprendido 100%.   Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In