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

Crear base de datos - Complejo

Estas en el tema de Crear base de datos - Complejo en el foro de Bases de Datos General en Foros del Web. Hola foreros!, He escrito 'complejo' en el titulo del post pues a pesar de llevar bastante tiempo haciendo bases de datos con mysql y otros ...
  #1 (permalink)  
Antiguo 17/08/2009, 03:35
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Crear base de datos - Complejo

Hola foreros!,

He escrito 'complejo' en el titulo del post pues a pesar de llevar bastante tiempo haciendo bases de datos con mysql y otros sistemas, he comenzado hacer una base de datos pero con unas dudas que solo una persona experimentada me podra resolver .

Bueno presento mi problema. Actualmente cuando queria relacionar datos simplemente ponia una columna en mi tabla donde introducia el id del dato relacionado, simple y rapido. El problema es que ahora estoy trabajando con un gran volumen de datos relacionados ademas de ser infinito el numero de relaciones, por lo que no me puedo permitir crear una columna para cada relacion.

Por ello he pensado hacer una tabla en la que introducir la relacion, es decir, por ejemplo poner en una columna el id y la tabla de un dato y el id de otro dato, de ese modo se relacionarian los dos datos... y solo tengo que buscar en esa tabla la relacion.


¿Es comun este procedimiento?... la verdad es que se me abre un mundo con esta posibilidad.
  #2 (permalink)  
Antiguo 17/08/2009, 09:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Crear base de datos - Complejo

El problema puede darse porque originalmente planteabas una gran cantidad de relaciones simples (lo que se denominarían unarias), entre diferentes objetos, pero posiblemente no te plantearas esas relaciones desde una perspectiva un poco más elevada, donde puedan aparecer relaciones entre objetos de nivel secundario o terciario e incluso más.
Con esto quiero decir que es posible (no puedo asegurarlo sin ver tu modelo) que uno de los problemas se origine en que se están usando ids de tablas primarias innecesariamente en tablas de un nivel más elevado. Por caso: si bien el ID de un proveedor de un artículo está relacionado con el ID del artículo vendido en una factura, ese ID no es necesario en la relación FACTURA, porque pertenece a otro nivel de análisis. Este tipo de cosas no son "errorres" en todo el sentido del término, sino información superflua, aunque sea correcta.
Por cuestiones prácticas, lo que suele hacerse en casos como el tuyo es crear meta-entidades que agrupen en un sólo registro conjuntos de relaciones que identifiquen un "paquete" o metaentidad de nivel más alto. de esa forma se van agregando uno o dos niveles de abstracción que permiten ser modelados con menos problemas.
Un ejemplo para graficarlo sería la construcción de un automóvil. En el nivel más alto está el vehículo con un conjunto de relaciones limitado; a su vez cada una de esas relaciones (motor, chasis, cubiertas, etc.) es una meta-entidad que se compone de meta-entidades menores, y así hasta llegar a los componentes básicos.
Según me parece, si en este momento tienes el problema del excesivo numero de relaciones por tabla, se puede resolver creando niveles de abstracción de datos.

Tal vez si pudiesemos ver la estructura del modelo de tablas en un gráfico, podríamos saber si por allí se puede encarar una solución.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/08/2009, 18:00
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Crear base de datos - Complejo

Hola gnzsoloyo!

Como siempre gracias por ayudarme!. He leido tu respuesta y entiendo tu idea... aunque no se como plasmarla en mi base de datos, por ejemplo con mysql. Aunque creo que no es lo que busco, pues en mi base de datos solo hay datos relacionados y no datos jerarquicos.

La verdad es que no me importaria tanto es te problema si la base de datos que voy a manejar fuese pequeña, pero la caracteristica principal de mi web es que los usuarios pueden crear tablas y elementos en mi base de datos, por lo que necesito hacer una base preparada para soportarlo y funcionar bien.

La idea es:
tabla1 - En esta tabla se guarda un registro con un id unico de cada elemento de toda la base de datos. Es decir, que si alguien crea un elemento en la tabla55 tenga un id en la tabla1.
tabla2 - En esta tabla se guardan las relaciones, es decir, como enlaces en las que un elemento de la base esta relacionado con otro, por medio de dos columnas con sus respectivos id's.
La idea funciona pues ahora mismo la estoy usando... el problema lo tengo sabido desde el primer dia... la cantidad de relaciones se me dispara hasta un numero enorme... por ejemplo para publicar un simple articulo igual tengo 30 relaciones.

¿Crees que exista un sistema mas avanzado?, yo tras mucho pensarlo me parece que no... pero igual tu sabias algo?


[/INDENT]
  #4 (permalink)  
Antiguo 22/08/2009, 14:56
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Crear base de datos - Complejo

Hola de nuevo...

Tras buscar y rebuscar he encontrado lo que buscaba... se conoce como "puente" en bases de datos, aunque mi idea es un poco mas compleja la idea se puede comprender...


Muchas gracias gnzsoloyo!.
  #5 (permalink)  
Antiguo 23/08/2009, 11:07
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
Respuesta: Crear base de datos - Complejo

Bueno no me considero experimentado.

Pero hace mucho tiempo practico y muchos lo aplican.

Tener 3 tablas

Tabla1+Auxiliar+Tabla2.

Tabla1:id1 ->Relación(1,varios)->Auxiliar(id1)
Tabla2:id2 ->Relación(1,varios)->Auxiliar(id2)

No se bien si es lo que plantas.
(Uno a varios) ->auxiliar->(varios a uno).

El puente es mi auxiliar la cual cuenta con 2 campos importantes (id1,id2), donde id1, y id2 son llaves foraneas en mi tabla auxiliar. en las otras son primarias respectivamente.

Espero ser claro.
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 17:56.