Al crear un sistema de votación sociales, en caso de que no perder de vista downvotes y upvotes separado en el PP?

StackOverflow https://stackoverflow.com/questions/733288

Pregunta

Con cosas como SO, Digg, Reddit, etc ...

¿Hay que seguir la pista de downvotes en la base de datos independiente de upvotes? O en caso de que simplemente tener un campo "útiles" que se decrementa / incrementa basa fuera lo que el usuario hace sin persistencia de eso?

¿Cómo se deben manejar votos?

¿Fue útil?

Solución

En SO, hasta la califican ganan 10, abajo califican de -2. Para que esto funcione es necesario que se registren de forma independiente. Es muy posible que una respuesta polémica para generar unos pocos de cada uno, y sólo mostrar un número total no significa mucho. Así que diría que mantenerlos separados.

Otros consejos

Me mantenerlos separados. Algunas preguntas tienen mucha actividad (arriba y abajo) y que realmente les gusta identificar a aquellos.

Incluso si usted no está interesado en la diferencia en este momento, un campo adicional en la tabla no es tan caro, por lo que no hace daño a separarlo. Porque si quieres añadirlo más tarde, no hay manera de que puede recuperar los datos si no se almacena por separado.

También suponer que sí mantiene una votación por separado para CW y entradas no CW. Porque si la pregunta cambios en CW más adelante, incluso con un recálculo, se mantiene el representante original de ganado / perdido.

Depende de lo que desea hacer con sus datos.

Si sólo desea mostrar los votos que digo sólo utiliza un campo. Es como el número de puntos de vista de un hilo en el foro. ¿Quieres ver lo que obtiene mayor número de clics, pero no cuántas veces alguien lo visualizó.

Sistema de Votación de SO es un poco más compleja. Puesto que pueden cancelar todos los votos de los usuarios en particular tienen que llevar un registro de que votado por / contra la lo . Esto, creo, está escrito en otra mesa, sino porque es caro para volver a calcular todos los votos cada vez que alguien vea una pregunta, mantienen valor calculado en un campo, cambiándolo cada vez que alguien vota.

puedo aconsejar que le permite almacenar de forma separada tal vez incluso con los datos adicionales que fue autor de un particular, hacia arriba o downvote. Quién sabe, puede llegar a una buena idea mañana y necesitará estos datos adicionales para implementarlo.

Pero también sería bueno tener una especie de campo de pre-calculada (vamos a llamarlo caché) que se actualiza cada vez que se presente una altura o un downvote. Las páginas a continuación, se representan con este campo calculado previamente. Esto aumentará el tiempo de respuesta y disminuir la carga de base de datos.

Si es demasiado costy para volver a calcular los valores de inmediato puede considerar runnning algunas tareas del programador (una vez por hora?) Que procesará votos, hasta al día y volver a calcular los valores almacenados en caché.

Teniendo en cuenta la cantidad de datos que tendrá en la base de datos para el sitio web de votación social, el espacio adicional para una columna adicional para almacenar int de bajada califican va o insignificante por lo que sería una locura no hacerlo.

Bueno, ya que también lo ha hecho 10 para un upvote y -2 para un downvote, y hay un nuevo cálculo de vez en marcha, tendría que almacenar de forma independiente.

De lo contrario una respuesta con 10 upvotes y 5 downvotes que originalmente le dieron 90 puntos, esto ReCalc a 50 si no se almacenan por separado.

Me mantenerlos separados para que pudiera revisar por separado. En lo social, Upvoting es muy diferente a downvoting, y me gustaría ser capaz de mirar a ellos de forma independiente si fuera yo.

Definitivamente separado por una razón muy simple. Mañana usted querrá hacer algo extra que necesita esa información (algún tipo de informe o gráfico, por ejemplo). Además de mantenerlos le cuesta nada separado.

ya que la gente por lo general puede votar una vez, y (en SO por ejemplo) puede cancelar su voto, lo que necesita saber que votaron, en qué momento, qué voto, y sobre el cual artículo.

Estoy seguro de que los downvotes y upvotes se mantienen por separado, aunque podría haber un campo agregado que mantiene el recuento. SO le permite cambiar un voto más adelante (hacer el downvote un upvote), y por eso creo que los votos se registran para cada usuario también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top