entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Arquitectura de un Sistema de Etiquetado en una Página web

Buenos Días, estoy construyendo el sistema de etiquetado para el sitio web que estoy desarrollando quiero consultar la ayuda de ustedes quienes están más experimentados y con más experiencia que yo :)

Lo tengo pensado de la siguiente manera: Basado que es un sitio web de Noticias tengo pensado hacer una tabla llamada Tags y que esta tengo los campos id,tag,contenido donde ella almacenará de la forma siguiente:
id->id autoincrementado
tag-> el tag por ejemplo "día soleado"
contenido-> un array en json con los últimos N {url} donde cada item en el array será el último agregado como si este fuese una pila el último en entrar el primero en salir LIFO

Otra forma que pensé fue en el contenido asignarle un valor de peso a cada item que dicho peso esté definido por la cantidad de visita + la cantidad de comentarios + la cantidad de compartido según su relevancia.
Pero como nunca he hecho algo como esto no estoy seguro de cual implementar para hacer un buen sistema de Etiquetado.

Saludos Dairon

1 Respuesta

2votos

carlossevi Puntos63580

No veo claro el campo de "contenido" con el array json. No lo veo fácil de mantener en cada actualización y está poco normalizado ¿Cómo extraes todas las etiquetas relacionadas con una noticia? Es poco claro. La alternativa que se me ocurre:

Tabla de etiquetas:

id  >   clave única autoincrementada
tag >   el tag, por ejemplo "día soleado"

Tabla de asignación de etiquetas:

id          >   clave única autoincrementada
id_tag      >   clave foránea de la etiqueta asignada
id_noticia  >   clave foránea de la noticia relacionada

Con esas dos tablas será muy sencillo hacer sacar mediante una consulta SQL (o una vista guardada) cualquier información, incluso combinándola con el número de comentarios, compartidos... y ponderar el orden. De esta forma cualquier cambio de criterio posterior puede contemplarse desde código (consulta o vista) y no hay que tocar el schema ni los datos de la base de datos.

0voto

dairon comentado

Hola @carlossevi me gusta mucho lo que me sugiere pero tengo una duda, yo tengo en mi base de datos una tabla secciones con los campos (id,nombre,tipo) y por cada row en ella tengo una tabla de noticias con el nombre id_secciones+'news' y otra id_secciones+'coment' para tener todas relacionadas en el TAG:
devería agregar un id_seccion como clave foránea de la seccion en la tabla de asignación de etiquetas porque en cada tabla de noticias de diferentes secciones existe el mismo id_noticia.
Saludos Dairon

0voto

carlossevi comentado

Bueno, realmente la solución que te aporto funciona para tener una única tabla de noticias, igual que para tener una única tabla de etiquetas. El parche que comentas serviría a medias ya que por ejemplo no te serviría para poder hacer consultas "complejas" en SQL con joins de varias tablas.

0voto

dairon comentado

eso es cierto @carlossevi pero hasta ahora no veo la necesidad de utilizar consultas complejas como join eso creo

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta