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

Relaciones con valores vacios?

Estas en el tema de Relaciones con valores vacios? en el foro de Mysql en Foros del Web. Hola buenas, Tengo una base de datos con X relaciones entre las tablas, que pasa si en un campo relacionado quiero poner un valor que ...
  #1 (permalink)  
Antiguo 23/02/2011, 05:48
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Relaciones con valores vacios?

Hola buenas,

Tengo una base de datos con X relaciones entre las tablas, que pasa si en un campo relacionado quiero poner un valor que no esta en la relación, como por ejemplo:

Tabla 1:

1. Coche
2. Moto
3. Bici

Tabla 2

Valor = 0??

Un saludo y gracias!
  #2 (permalink)  
Antiguo 23/02/2011, 05:53
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: Relaciones con valores vacios?

Si la relación es en FOREIGN KEY no puedes poner un valor que no exista. Generaría un error de consistencia y el INSERT falla.
MySQL Sólo lo puede aceptar si la FK está definida contra una lave UNIQUE de la ota tabla que permita valores NULL, pero es una excepción. Si la FK usada es UNIQUE en su tabla origen pero no PK y pued ser NULL no te admitirá un valor real. Sólo NULL.
__________________
¿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 23/02/2011, 08:25
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 8 meses
Puntos: 165
Respuesta: Relaciones con valores vacios?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si la relación es en FOREIGN KEY no puedes poner un valor que no exista. Generaría un error de consistencia y el INSERT falla.
MySQL Sólo lo puede aceptar si la FK está definida contra una lave UNIQUE de la ota tabla que permita valores NULL, pero es una excepción. Si la FK usada es UNIQUE en su tabla origen pero no PK y pued ser NULL no te admitirá un valor real. Sólo NULL.
Entonces.. que me recomiendas? que quite las relaciones o que ponga NULL?

Muchas gracias y un saludo!
  #4 (permalink)  
Antiguo 23/02/2011, 08:54
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: Relaciones con valores vacios?

El tema no pasa por aconsejar una cosa o la otra. Lo que tienes que hacer es verificar cómo es realmente el sistema que estás diseñando.
SI en ese sistema esa relación es obligatoria, es decir, si ese valor debe existir, entonces debe colocarse como FK apuntando a la PK de la otra tabla. En caso contrario, si ese valor puede existir, entonces es una relación opcional y esas tienes dos formas de manjearla: con un indice UNIQUE en la otra tabla, o simplemente poniendo ese campo como NULL.
Eso no lo decides tu, lo decide el usuario cuando define lo que necesita. Surge de las reglas del negocio, es decir, del análisis del sistema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 23/02/2011 a las 08:59

Etiquetas: relaciones, vacios
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 12:15.