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

Duda con relaciones 1 a 1

Estas en el tema de Duda con relaciones 1 a 1 en el foro de Mysql en Foros del Web. Yo quiero relacionar huespedes con habitaciones. Se me ocurre modelar las tablas de 2 formas. HUESPEDES id_huesped nombre habitacion (FK) HABITACIONES id_habitacion (PK) precio tamaño ...
  #1 (permalink)  
Antiguo 11/10/2010, 10:18
 
Fecha de Ingreso: febrero-2010
Mensajes: 132
Antigüedad: 14 años, 2 meses
Puntos: 0
Exclamación Duda con relaciones 1 a 1

Yo quiero relacionar huespedes con habitaciones.
Se me ocurre modelar las tablas de 2 formas.

HUESPEDES
id_huesped
nombre
habitacion (FK)

HABITACIONES
id_habitacion (PK)
precio
tamaño

O sino también se me ocurrió:

CLIENTES
id_huesped (PK)
nombre

HABITACIONES
id_habitacion
precio
tamaño
huesped (FK)

Son perfectamente equivalentes estas formas de modelar ?
Alguna diferencia ??

gracias...
  #2 (permalink)  
Antiguo 11/10/2010, 10:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda con relaciones 1 a 1

Yo usaría otra con tres tablas.

HUESPEDES
id_huesped
nombre
apellidos
DNI
telefono
y otros datos

HABITACIONES
id_habitacion (PK)
precio
tamaño

RESERVAS
habitacion (FK)
huesped (FK)
fechainireserva (date)
fechafinreserva (date)
  #3 (permalink)  
Antiguo 11/10/2010, 10:42
 
Fecha de Ingreso: febrero-2010
Mensajes: 132
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Duda con relaciones 1 a 1

Ok, si, es mas linda tu version.

De todas formas las relaciones 1 a 1 no exige tener un 3er. tabla verdad ??
En mis versiones, son validas las 2 ?? O alguna de ellas era mejor que la otra ?? No estaba seguro en que tabla poner la FK.
  #4 (permalink)  
Antiguo 11/10/2010, 14:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda con relaciones 1 a 1

es que no es una relación 1 a 1 realmente, porque una habitación puede tener varios huéspedes distintos en distintos momentos. Imagino que sólo guardas el dato de un huésped para cada habitación. Es verdad que un huésped no puede reservar dos habitaciones a la vez, aunque tampoco es imposible, pues un padre puede reservar, imagino, para él y su esposa una habitación y otra para sus dos hijos, por ponerte un ejemplo. Creo que ninguna de las dos versiones que propusiste te vale. Por otra parte, no olvides que la ocupación de una habitación se hace por un rango de tiempo, de tal fecha a tal fecha, y eso no parecías haberlo contemplado.
Y aunque no estaría bien, si te empeñas, es más lógico poner la FK del cliente en la habitación (como un atributo de la misma), aunque ningún huésped va a estar de por vida en una habitación, y menos todos los clientes como hace tu propuesta.
  #5 (permalink)  
Antiguo 11/10/2010, 15:45
 
Fecha de Ingreso: octubre-2004
Mensajes: 251
Antigüedad: 19 años, 6 meses
Puntos: 1
Respuesta: Duda con relaciones 1 a 1

si no te sirve de nada tener solo dos tablas, maneja una de reservas segun te aconsejaron arriba
__________________
www.lomasnuevo.net
  #6 (permalink)  
Antiguo 11/10/2010, 18:25
 
Fecha de Ingreso: febrero-2010
Mensajes: 132
Antigüedad: 14 años, 2 meses
Puntos: 0
Exclamación Respuesta: Duda con relaciones 1 a 1

Bien, gracias...

Pero para terminar de entender el tema de las relaciones 1 a 1, cuando es PERFECTAMENTE 1 a 1, no se me ocurre un ejemplo ahora....

pero, con 2 tablas se podría modelar siempre ??
Y en ese caso tendria que analizar en que tabla va la FK ??
Hay alguna receta de como proceder en relaciones 1 a 1 ??

Asi se como proceder cuando me tope con una situación asi.

gracias.
  #7 (permalink)  
Antiguo 12/10/2010, 09:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda con relaciones 1 a 1

un par de ejemplos
usuario y nick (si no aceptas nicks repetidos)
usuario y email (en el caso de que sólo archives un email por usuario)
eso podría guardarse en una misma tabla, pero hay quienes proponen una separación en dos tablas mediante el id cuando ello pudiera suponer cierta mejora en las consultas (menor recorrido de datos), reunión de distintos grupos de datos, etc.

Con dos tablas no se puede modelar siempre; de hecho son pocas las bases que tienen dos tablas.
Debes leer sobre normalización. Busca en la red información.

Etiquetas: relaciones
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 20:37.