Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Mejor forma para campo de etiquetas

Estas en el tema de Mejor forma para campo de etiquetas en el foro de Mysql en Foros del Web. Hola, tengo una base de datos de fotografias, a dia de hoy con unos 35000 registros. Quiero añadirle un campo para que la gente pueda ...
  #1 (permalink)  
Antiguo 31/10/2011, 11:32
Avatar de Pentaxeros  
Fecha de Ingreso: mayo-2008
Mensajes: 173
Antigüedad: 15 años, 10 meses
Puntos: 3
Mejor forma para campo de etiquetas

Hola, tengo una base de datos de fotografias, a dia de hoy con unos 35000 registros.

Quiero añadirle un campo para que la gente pueda etiquetarlas.

Por ejemplo la Base de datos es:
ID TITULO URL ETIQUETAS
1 Pruebas http:... B/N, Paisaje, Nocturna
2 Pruebas2 http:/... Retrato, Color
....
...
..
.

Lo que quiero añadir es el Campo de ETIQUETAS, y mi duda es si añadir un nuevo campo, o si es mejor crear una tabla adicional de ETIQUETAS como esta:
ID2 ID ETIQUETA
1 1 B/N
2 1 Paisaje
3 1 Nocturna
4 2 Retrato
5 2 Color
...
..

Lo que quiero es poder FILTRAR por ETIQUETAS, de forma que sea optimo, rapido, y que en el futuro no sea una carga en el servidor por el tema de las consultas y búsquedas.
y después UNIRLAS a la hora de

Por ello tengo una duda importante, con que OPCION tomo:

1) añado un campo ETIQUETAS al la base datos principal, y añado la etiquetas y luego hago búsquedas en ese campo etiquetas

2) Creo la segunda tabla, y hago las búsquedas uniendolas con INNER JOIN.

Creo que la segunda opción es la "mejor", pero se me plantea una duda, ya que a dia de hoy son 35000 filas en la base de datos principal, y la de etiquetas nueva como minimo tendra el doble o triple de la de origen...
Actualmente la base principal crece unas 15000 a 20000 filas por año, y no se me da "reparo" en el tamaño que tendra en numero de filas la base de datos de etiquetas.

Bueno los EXPERTOS, espero que me aconsejen y me ayuden.

Por cierto las etiquetas serán siempre las mismas, digamos que he creado una lista de unas 25 etiquetas que son las que etiquetaran todas las fotos.

OTRA TERCERA OPCION, seria en la base de datos PRINCIPAL, crear 25 nuevas columnas, una por etiqueta, de tipo binario, que ocupe poco, ya que tendría valor 0 o 1, y después las consultas serán tipo WHERE etiqueta1=1 AND etiqueta3=1

La cosa es que las consultas van a ser muy frecuentes.

Bueno espero vuestra ayuda!!!

Gracias por adelantado.
  #2 (permalink)  
Antiguo 31/10/2011, 12:29
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 2 meses
Puntos: 447
Respuesta: Mejor forma para campo de etiquetas

Hola Pentaxeros:

Si tomamos como base la normalización de bases de datos y por tanto las relaciones entre tus tablas estamos hablando de un modelo muchos a muchos, ya que una fotografía puede tener 1 o más etiquetas y una etiqueta puede tener 1 o más fotografías. De tal manera, el modelo que tienes que manejar sería uno con tres tablas:

Fotografías (Catálogo)
Etiquetas (Catálogo)
Fotografías_Etiquetas (Relaciones)

La tabla de relaciones sólo almacenaría los índices a los catálogos, de tal suerte que las búsquedas serían más rápidas... con los datos que pones como ejemplo las tablas quedarían más o menos así:

Código:
FOTOGRAGÍAS
idFotografía|titulo|url
-------------------
1|Pruebas|http:...
2|Pruebas2|http:/...

ETIQUETAS
idEtiqueta|descripcion
-------------------------
1|B/N
2|Paisaje
3|Nocturna
4|Retrato
5|Color

FOTOGRAFÍAS-ETIQUETAS
idFE|idFoto|idEtiqueta
---------------------------------------
1|1|1
2|1|2
3|1|3
4|2|4
5|2|5
NO INTENTES HACER LA ÚLTIMA PROPUESTA. Por cuestiones de normalización de BD un campo NO DEBE FORMAR PARTE DE UNA TABLA SI ES OPCIONAL PARA UN REGISTRO, pues estarías desperdiciando espacio en memoria en cada registro.

En cuanto al número de registros, pues aunque parecieran mucho 100 mil registros no son nada... para hablar de tablas "grandes" deberías hablar de varios millones de registros.

El único cuidado que debes tener es la correcta definición de tus índices en cada una de las tablas.

Saludos
Leo.
  #3 (permalink)  
Antiguo 01/11/2011, 11:44
Avatar de Pentaxeros  
Fecha de Ingreso: mayo-2008
Mensajes: 173
Antigüedad: 15 años, 10 meses
Puntos: 3
Respuesta: Mejor forma para campo de etiquetas

Gracias!!!

Etiquetas: etiquetas, join, registros, tabla, formulario, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:26.