2012-08-04 10 views
5

Me pregunto,
en muchos sitios web existe la opción de agradar/no me gusta una publicación.
incluso aquí, por supuesto, en stackoverflow.database-design: table of likes?

¿técnicamente es una gran tabla de Me gusta?

user_id post_id 

user_id - que votaron
post_id - cuyo puesto es

es todo eso?
una tabla de "me gusta" grande?
¿No hay algo más eficiente/sofisticado?

+0

¿En base a qué supone que es una gran mesa? –

+0

Si necesita conservar la información sobre a quién le gustó o no le gustó una publicación, esa es la cantidad mínima de datos que necesita almacenar. – JJJ

Respuesta

5

En su nivel más básico, sí, eso es todo.

Pero entonces comienza a expandirse, tratando de responder a preguntas como:

  • ¿Cuánto pagó el usuario al igual que este post?
  • ¿Cuándo les gustó la publicación?
  • ¿Cómo encontraron la publicación?
  • ¿Comentaron en la publicación?
  • ¿Cómo funciona el grupo entero/comunidad como el puesto

Entonces se empieza a querer responder más preguntas en profundidad sobre los amigos y la comunidad.

1

Creo que puedo entender su preocupación. Tener que emitir un COUNT() cada vez que se debe presentar la página.

Sin duda tiene que tener esta tabla básica, que será la base de un COUNT(), pero realmente no necesita COUNT() para cada acceso.

Cree una tabla de totalización y actualícela cuando la página reciba un me gusta o no, utilizando un desencadenante, o llame a un procedimiento almacenado para actualizarlo de vez en cuando.

Yo diría que cada método está más indicado para diferentes personalidades del sitio, es decir, más lecturas o más escrituras, pero usted ya sabe que cuando se trata de gustos o disgustos, nada es previsible.

+0

tan prácticamente, supongamos que tengo una tabla de publicación que puede ser del agrado. debe tener un campo "likes_counter" que cuente el número de Me gusta, así que no tengo que usar COUNT(). ¿derecho? – socksocket

+0

Correcto. Usando su tabla de objetivos, agregarle una columna es un enfoque que guarda una tabla adicional en el servidor. Si puedes cambiar la estructura de la tabla objetivo, genial. De lo contrario, cree una tabla separada que contendrá dos columnas: targetTableName, totalLikes. Supongo que tiene acceso completo a la base de datos. Mis consideraciones fueron simplemente llamar la atención sobre las diferentes alternativas de diseño. –