Un foro de discusión en línea es un sitio donde personas puede mantener conversaciones en forma de mensajes publicados . Los foros de discusión permiten que las conversaciones tengan lugar cuando las personas no están en línea y los mensajes pueden archivarse temporalmente. Además, dependiendo de la configuración del foro, es posible que un moderador deba aprobar un mensaje antes de que sea visible para otros usuarios. Los foros tienen un conjunto específico de términos, por ejemplo, una sola conversación generalmente se denomina "hilo". Los hilos pueden ser respondidos por tantas personas como deseen. La mayoría de los foros requieren que los usuarios se registren y luego inicien sesión para publicar mensajes. Sin embargo, en la mayoría de los foros, los usuarios no tienen que iniciar sesión para leer los mensajes existentes.
Estos son requisitos comunes para un foro de sitio web , así que trabajemos para crear un modelo de base de datos comenzando con una configuración básica del foro que podemos ampliar más adelante.
Entidades
Como se mencionó anteriormente, las personas mantienen conversaciones en forma de mensajes publicados que se agrupan en conversaciones. Por lo tanto, la base de datos debe admitir información sobre personas o usuarios , conversaciones o hilos y mensajes o publicaciones .
Para el foro en línea, será necesario crear usuarios; puede ser necesario permitir que los usuarios editen sus detalles después de haberlos creado, pero probablemente no sea necesario permitir la eliminación de usuarios. Los usuarios crearán conversaciones, o hilos, generalmente publicando un primer mensaje en el foro, en lugar de crear una conversación explícitamente, pero podría ser necesario admitir ambas posibilidades. Los hilos contendrán publicaciones creadas por usuarios.
Funcionalidad
La publicación de mensajes es la funcionalidad principal del foro en línea . ¿Deberían los usuarios poder editar los mensajes después de haberlos publicado? ¿Deberían los usuarios poder eliminar mensajes después de publicarlos? La respuesta a ambas es probablemente sí.
Relaciones
Las publicaciones están vinculadas a hilos y las publicaciones las crean los usuarios, por lo que habrá una relación definida. entre usuarios y publicaciones. Los hilos son creados por los usuarios, por lo que debe almacenar una relación allí (por ejemplo, si un usuario está prohibido en el foro, es posible que desee eliminar todos los hilos y publicaciones que ese usuario creó).
Ahora que conoces las entidades y relaciones , está listo para construir un modelo de la base de datos, y eso solo debería tomar unos minutos. Aquí es donde las herramientas son útiles.
Modelo de base de datos
Echemos un vistazo a Vertabelo para continuar con el foro de discusión en línea.
Cree un modelo para el foro en línea y comience a agregar las entidades representando usuarios, hilos y publicaciones. Vertabelo le recordará que necesita definir claves primarias para cada tabla; Recomiendo usar id
columnas, ya que eso le dará más flexibilidad potencial (y no lo vinculará con el nombre del usuario como clave principal u otras trampas). A continuación, agregue las relaciones que ya describimos anteriormente. He agregado una contraseña (en formato hash) para que el usuario controle el inicio de sesión de los usuarios.
Ahora, terminará con algo que se parece más o menos a esto:
Verás que hay marcas de tiempo con la fecha/hora de creación de cada fila, para que esa información pueda mostrarse en el foro (“Usuario desde el 2 de febrero de 2014”, “Fecha de publicación:24 de diciembre de 2014”, etc. ).
Si vas a tener un moderado foro de discusión en línea en el que los mensajes deben ser aprobados por un moderador antes de que sean visibles para otros usuarios, luego debe agregar un elemento de estado a hilos y publicaciones para que la aplicación pueda decidir si los hilos y las publicaciones asociadas han sido revisados y aprobados. Un estado también permitiría a otros usuarios marcar conversaciones y publicaciones como spam o inapropiadas.
Espero que ya puedas empezar a pensar en mejoras. Por ejemplo, si necesita detalles formales sobre el usuario, en lugar de un solo campo de "nombre", puede querer su nombre, apellido y nombre de usuario o apodo. Y una publicación puede tener un tema además del contenido, pero creo que el tema de la publicación está vinculado al hilo, por lo que podría no ser necesario.
Siguiente parte » |