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

Plantear relacion tablas

Estas en el tema de Plantear relacion tablas en el foro de Bases de Datos General en Foros del Web. Hola tengo una serie de tablas, las relaciones me van bien pero no se si hay una forma más sencilla de hacerla o está mal ...
  #1 (permalink)  
Antiguo 01/10/2008, 04:19
Avatar de Silko  
Fecha de Ingreso: septiembre-2008
Mensajes: 62
Antigüedad: 15 años, 8 meses
Puntos: 0
Plantear relacion tablas

Hola tengo una serie de tablas, las relaciones me van bien pero no se si hay una forma más sencilla de hacerla o está mal planteado mi solución:
Tengo una tabla "alojamiento" con establecimientos.

Tabla1: id, nombre,....., campo 1, campo2, campo3 (los campos están a 0 o 1 para saber en que Web o Webs se publica cada establecimiento)

El problema es que cada Web tiene varias clasificaciónes de máximo 3 y mínimo 1 nivel (nivel1, nivel2, nivel3), donde cada nivel depende del anterior (menos el nivel1)
Los establecimientos pueden estar asociados a 1 rama por Web (es decir si está publicado en tres Web, tendrá un máximo de 3 ramas o un mínimo de 0 "no clasificado").
Es decir una casa sale en la Web "x","q","z"... en la "x" esta asociado a una rama 3 niveles, en "q" esta asociado a una rama 2 niveles y en "z" esta asociado a una rama 1 nivel, siendo cada rama específica de cada web

Un ejemplo para que lo entendáis:

Establecimiento 1: " casa Mira flora"
Rama:
nivel1: Montaña
nivel2: Nieve (asociado a nivel1)
nivel3: Dura (asociado a nivel2)


Establecimiento 2: "casa del sol"
Rama:
nivel1: playas
nivel2: arena (asociado a nivel1)

No existiría nivel 3 en esta rama

Yo lo tengo de la siguiente manera planteada:
Tabla establecimiento
Un conexión por web1: id_casa, id_nivel (pudiendo ser (id_nivel1, id_nivel2, id_nivel3))
Un conexión por web2: id_casa, id_nivel (pudiendo ser (id_nivel1, id_nivel2, id_nivel3))
…….

Tabla web1_nivel1: id_nivel1, nombre
Tabla web1_nivel2: id_nivel2, nombre, cod_nivel1
Tabla web1_nive3: id_nivel3, nombre, cod_nivel2

Tabla web2_nivel1: id_nivel1, nombre
Tabla web2_nivel2: id_nivel2, nombre, cod_nivel1
Tabla web2_nive3: id_nivel3, nombre, cod_nivel2

…….

Última edición por Silko; 01/10/2008 a las 06:50
  #2 (permalink)  
Antiguo 01/10/2008, 08:40
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 7 meses
Puntos: 48
Respuesta: Plantear relacion tablas

Te propongo este modelo E-R




Saludos!
  #3 (permalink)  
Antiguo 01/10/2008, 11:43
Avatar de Silko  
Fecha de Ingreso: septiembre-2008
Mensajes: 62
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Plantear relacion tablas

Cita:
Iniciado por Synkronice Ver Mensaje
Te propongo este modelo E-R




Saludos!
Buenas Synkronice.

ALOJAMIENTO

id_alojamiento
nombre
etc...

CLASIFICACION HAS ALOJAMIENTO

id_alojamiento
id_clasificacion


Aquí es donde flaqueo
, no se que campos poner para asociar los 3 niveles (nivel3 depende de nivel2 y este de nivel1).Que pasaria en caso de que la rama termine solo con dos niveles o 1.
Como asociar la rama a cada web ya que comparten la misma base de datos.


Clasificaciones

id_clasificacion
nombre (supongo que la del nivel 1 que la que encabeza)
nos e que mas

Clasificaciones has clasificaciones


ni idea de como asociar


Perdona las molestias.
  #4 (permalink)  
Antiguo 01/10/2008, 12:19
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 7 meses
Puntos: 48
Respuesta: Plantear relacion tablas

ALOJAMIENTOS

- id_alojamiento
- nombre
- direccion
- etc...

Esta tabla solo contendrá los datos relativos a los alojamientos.

ALOJAMIENTOS_HAS_CLASIFICACIONES

id_alojamiento
id_clasificacion

En esta tabla decimos que clasificaciones estan asociadas al alojamiento.

CLASIFICACIONES

id_clasificacion
nivel [enum("1", "2", "3")] Este campo es opcional, si lo necesitas lo pones.
alias

En esta tabla definimos todas las posibles clasificaciones existentes.

CLASIFICACIONES_HAS_CLASIFICACIONES

id_clasificacion_1
id_clasificacion_2

Y por último, en esta tabla definimos las relaciones que poseen las clasificaciones entre sí.

Así que por ejemplo podríamos tener algo así.

ALOJAMIENTOS

1 | Cabañita del rio | Dirección Ribadesella

ALOJAMIENTOS_HAS_CLASIFICACIONES

1 | 1
1 | 2
1 | 3

CLASIFICACIONES

1 | Nieve
2 | Dura
3 | Montaña

CLASIFICACIONES_HAS_CLASIFICACIONES

3 | 1
1 | 2

De esta forma sabremos que las clasificaciones Nieve, Dura y Montaña estan asociadas al alojamiento con id 1 que pertenece a Cabañíta del rio y que las clasificaciones estan relacionadas entre sí según indica la tabla CLASIFICACIONES_HAS_CLASIFICACIONES. Ademas tambien podemos saber que nivel tiene cada clasificación, así podras mostrarlas en orden ascendente o descendente.

Otra cosa interesante es que gracias a la realaciones existentes en la tabla CLASIFICACIONES_HAS_CLASIFICACIONES podemos acotar las opciones de eleccion a la hora de elegir que clasificacion hay que elegir según la clasificacion padre.

Espero que te sirva este planteamiento.


Saludos!
  #5 (permalink)  
Antiguo 02/10/2008, 04:34
Avatar de Silko  
Fecha de Ingreso: septiembre-2008
Mensajes: 62
Antigüedad: 15 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Plantear relacion tablas

Muchas Gracias, la verdad es que si me a servido.
Saludos
  #6 (permalink)  
Antiguo 02/10/2008, 07:52
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 7 meses
Puntos: 48
Respuesta: Plantear relacion tablas

Me alegro que te haya servido el modelo.

Saludos!!
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:51.