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

Duda modelar ER

Estas en el tema de Duda modelar ER en el foro de Bases de Datos General en Foros del Web. Hola, Estoy haciendo un diagrama Entidad Relación y resulta que tengo una relación que consiste en lo siguiente: Hay una relación 1:N entre una entidad ...
  #1 (permalink)  
Antiguo 08/08/2012, 16:40
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 9 meses
Puntos: 0
Duda modelar ER

Hola,

Estoy haciendo un diagrama Entidad Relación y resulta que tengo una relación que consiste en lo siguiente:
Hay una relación 1:N entre una entidad USUARIO y una entidad VIAJE, ambas identificadas mediante un ID (Id_Usuario e Id_viaje) es decir un usuario realiza muchos viajes, pero tiene uno que es su preferido. La entidad viaje tiene como clave externa el Id del usuario.

¿Cómo lo modelarias, poniendo un atributo que sea Id_Viaje dentro de la tabla de usuario, para que así tenga uno y sólo un viaje preferido?

Gracias!
  #2 (permalink)  
Antiguo 08/08/2012, 17:06
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: Duda modelar ER

Eso no se modela dentro de la entidad Usuario, porque no es un atributo el usuario (no es parte de su identidad, por tanto no es artibuto de él).
Un viaje preferido es una relación opcional entre los viajes y los usuarios. Hay tres formas de plantearla:
1) Como tabla independiente, que relacione ambas claves con cardinalidad 1:1 (la PK está compuesta por las PKs de cada tabla, por lo que la relación no puede repetirse).
2) Como atributo de Viaje, es un dato de tipo booleano con valor por defecto en FALSE. Sólo se puede controlar por programación.
3) Si un mismo viaje es realizado más de una vez por el usuario, la cantidad de viajes al mismo sitio o con el mismo programa definen la preferencia.
La elección es una decisión de diseño, es decir, la tienes que tomar tu, o la pone el cliente (regla de negocio).
__________________
¿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 08/08/2012, 17:43
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Duda modelar ER

La idea que yo tenía desde un principio era hacer tu primera opción, una tabla 1:1 con las claves de cada tabla, pero me surgió la duda ¿Eso mantiene la integridad referencial en el diagrama?

Gracias por tu respuesta!
  #4 (permalink)  
Antiguo 08/08/2012, 18:18
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: Duda modelar ER

Cita:
¿Eso mantiene la integridad referencial en el diagrama?

Creo que no tienes bien claro lo que significa exactamente "integridad referencial".
Diciéndolo en forma simple, es la propiedad de una relación en donde cada tupla de un atributo referenciado debe apuntar a una tupla válida de la entidad referenciada.
Es evidente y manifiesto que si creas una tabla que sólo contiene dos atributos, cada uno de los cuales es FK de otra tabla, y ambos combinados forman la PK de esa tabla relacional, por definición de PK, siempre existirá integridad referencial.
¿Cómo?
- Una PK no puede contener valores nulos.
- Una FK que es parte de clave no puede contener nulos.
- Una FK que no puede contener nulos, debe forzosamente referenciar a una PK que existe en la tabla origen.
En otras palabras: Siempre habrá integridad referencial en ese contexto.

Ten en cuenta que esa tabla relacional en realidad representa una regla de negocio, y que es independiente de la relación 1:N con los viajes. Es decir:
- Debe existir siempre una relación entre viaje y usuarios, pero puede no haber viajes preferidos.
- No puede darse en ese contexto que haya un viaje preferido sin que exista el usuario y el viaje.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 09/08/2012, 10:30
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Duda modelar ER

Cierto, tienes toda la razón en que tenía una idea equivocada de integridad referencial, gracias por aclararmelo.

Tan sólo decirte que siempre tiene que haber un viaje preferido, pero eso no cambia las cosas, asique haré una tabla 1:1 con las PK de Usuario y Viaje.

Gracias por vuestra pronta y eficaz respuesta!
  #6 (permalink)  
Antiguo 09/08/2012, 10:46
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Duda modelar ER

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Ten en cuenta que esa tabla relacional en realidad representa una regla de negocio, y que es independiente de la relación 1:N con los viajes. Es decir:
- Debe existir siempre una relación entre viaje y usuarios, pero puede no haber viajes preferidos.
- No puede darse en ese contexto que haya un viaje preferido sin que exista el usuario y el viaje.
Un usuario tiene que tener SIEMPRE un viaje preferido, ¿eso cambia la cosa o se hace en una tabla 1:1 con las claves primerias de Usuario y de Viaje?
  #7 (permalink)  
Antiguo 09/08/2012, 11:01
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: Duda modelar ER

Eso es una regla de negocio. En general no es fácil de implementar sin terminar creando una dependencia circular, y eso es desastroso.
La dependencia circular se crearía si pones la FK de Viaje en Usuario. COmo no puedes crear el usuario sin el viaje, y el viaje no se registra sin usuario... no se puede insertar ni una ni la otra, a menos que el campo sea NULL, lo que no sería lo que planteas.

En general, lo más simple es crear un campo booleano en la tabla usuario que indique si el usuario ya seleccionó un viaje preferido, y declararlo como NOT NULL, de modo que sea mandatorio.
El resto lo administraras en la aplicació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)
  #8 (permalink)  
Antiguo 31/08/2012, 10:50
 
Fecha de Ingreso: junio-2012
Mensajes: 22
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Duda modelar ER

Gracias

Etiquetas: entidad, modelar, relacion
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:32.