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

planteamiento de una bd

Estas en el tema de planteamiento de una bd en el foro de Bases de Datos General en Foros del Web. Bueno, veamos, tengo una duda no de codigo, si no de planteamiento de una base de datos de mysql. Vamos, que no se cual es ...
  #1 (permalink)  
Antiguo 11/06/2005, 06:19
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
planteamiento de una bd

Bueno, veamos, tengo una duda no de codigo, si no de planteamiento de una base de datos de mysql. Vamos, que no se cual es la forma mas optima de hacer esta base de datos.

Quiero guardar articulos en la base de datos. Cada articulo tiene una categoria. Ese diseño inicial es facir: tabla de articulos y tabla de categorias. Para relacionarlas la tabla articulos tiene un campo 'categoria' que contiene el id de la categoria a la cual pertenece el articulo.

Ahora bien, quiero que cada articulo pueda tener mas de una categoria. Ya es un problema. He pensado en hacer la tabla articulos, categorias y una categorias_de_articulos, que tendria los campos:
Código:
articulo -> (id del articulo en cuestion)
categoria -> (id de una categoria del articulo)
Y de esta manera, para hacer que el articulo con id 1 pertenecta a las categorias 4,5,6 necesitaria 3 registros:
Código:
articulo=1  categoria=4
articulo=1  categoria=5
articulo=1  categoria=6
Y despues recogeria todos los articulos where articulo=1 y punto, tendria las 3 categorias.
Si quiero todos los articulos que tienen la categoria 4 haria un where categoria=4

¿Veis alguna solucion mas optima?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #2 (permalink)  
Antiguo 11/06/2005, 14:35
 
Fecha de Ingreso: diciembre-2002
Ubicación: Roma
Mensajes: 60
Antigüedad: 21 años, 4 meses
Puntos: 0
Derkenuke,

Imagino che uniriás los registros con una tabla de relación muchos a muchos. ¿Correcto?
  #3 (permalink)  
Antiguo 12/06/2005, 07:06
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
mmm.. perdon? No, las relaciones no me interesan. En realidad es para aplicar la base de datos a una pagina web con php y mysql, asi que no tiene que haber nada raro porque de todas las relaciones se encargan los documentos php
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #4 (permalink)  
Antiguo 13/06/2005, 04:33
 
Fecha de Ingreso: agosto-2002
Mensajes: 230
Antigüedad: 21 años, 8 meses
Puntos: 1
aunque no te interesen las relaciones lo que estás haciendo es relacionar dos tablas una de artículos y otra de cateorias, al principio la relación que definías (implícitamente) era 1:N, pero ahora al poder haber varias categorías para un artículo y que una categoría fuera de varios artículos estás definiendo una relación N:M y la solución más normal para este caso es la de crear una tabla de relación entre las dos tablas. Otra solución podría ser que duplicaras los registros en la tabla artículos y que la clave principal fuera id_articulo e id_categoria, esta no suele ser la solución empleada pero también es posible hacerlo así, todo depende del número de artículos que vaya a haber, el tamaño que ocuparán y esas cosas

Espero que te sirva de ayuda
  #5 (permalink)  
Antiguo 13/06/2005, 04:52
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Pues si, la relacion quedaria asi.

Lo de duplicar registros en la tabla articulos no le veo mucha salida. mas que nada porque en esa tabla estara escrito todo el articulo (supongo que cada registro ocuparia de medio mega a un mega al final) y duplicar eso.. gastaria demasiado espacio.

¿Crear una tabla de relacion? ¿Como funciona eso?


Gracias por responder
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 13/06/2005, 05:08
 
Fecha de Ingreso: agosto-2002
Mensajes: 230
Antigüedad: 21 años, 8 meses
Puntos: 1
simplemente tienes una tabla que tendrá las dos claves de la relación (en este caso id_articulo e id_categoria) y podrías añadirle algún dato más si te interesa, a lo mejor el orden de importancia de esa categoría, puede ser que el artículo sea fundamentalmente de la categoría a pero que también toque de refilón a la categoría b y c.

Lo único que tienes que hacer es crear la tabla y deberías definir los campos id_categoría e id_artículo como claves foráneas de la tabla, aunque no es estrictamente necesario
  #7 (permalink)  
Antiguo 13/06/2005, 09:31
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 20 años, 5 meses
Puntos: 2
vamos a ver derkenuke, el planteamiento que has realizado en tu primera exposición es la correcta.
Tienes dos tablas en la que un registro de la tabla A puede estar relacionada con muchos registros de la tabla B, y un registro de la tabla B puede estar relacionado con muchos registros de la tabla A.
O sea, el articulo-A puede pertenecer a la categoria-A y categoria-B pero a su vez la categoria-B puede tener al articulo-A,articulo-H,articulo-P.
Para que esto sea así debe existir una tabla intermedia que enlace una la tabla A con la B.
Vamos, que vas por el buen camino.
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 19:19.