Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/10/2010, 14:24
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Es correcto una FK con valores NULL?

Cita:
Iniciado por huesos52 Ver Mensaje
Si es posible. Y para tu caso me parece un buen diseño.

Mira esto
http://dev.mysql.com/doc/refman/5.0/...nstraints.html
en la parte donde se puede establecer la propiedad set null al momento de declarar la constraint.

saludos
Leyendo la doc, no me queda del todo claro como debo actuar :S

"InnoDB rechaza cualquier operación INSERT o UPDATE que intente crear un valor de clave foránea en una tabla hija sin un valor de clave candidata coincidente en la tabla padre"

Pero luego dice

"SET NULL: Borra o actualiza el registro en la tabla padre y establece en NULL la o las columnas de clave foránea en la tabla hija. Esto solamente es válido si las columnas de clave foránea no han sido definidas como NOT NULL. MySQL 5.0 soporta tanto ON DELETE SET NULL como ON UPDATE SET NULL"

Debo definir la tabla user_preferencias asignandole el set null??

Esta es mi definición actual, la debería cambiar según la doc de mysql?

Código SQL:
Ver original
  1. CREATE TABLE `tbl_user_personal` (
  2.   `user_id` INT(10) UNSIGNED NOT NULL,
  3.   `user_name` VARCHAR(30) COLLATE utf8_spanish_ci NOT NULL,
  4.   `user_mail` VARCHAR(45) COLLATE utf8_spanish_ci NOT NULL,
  5.   `user_birthday` DATE NOT NULL,
  6.   `user_sexo` CHAR(1) COLLATE utf8_spanish_ci NOT NULL,
  7.   `user_pais` SMALLINT(5) UNSIGNED NOT NULL,
  8.   `user_provincia` INT(10) UNSIGNED DEFAULT NULL,
  9.   KEY `fk_user_personal_user` (`user_id`),
  10.   KEY `fk_user_pais` (`user_pais`),
  11.   KEY `fk_tbl_user_personal_tbl_provincias1` (`user_provincia`),
  12.   CONSTRAINT `fk_user_personal_user` FOREIGN KEY (`user_id`) REFERENCES `tbl_user` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  13.   CONSTRAINT `fk_user_pais` FOREIGN KEY (`user_pais`) REFERENCES `tbl_paises` (`pais_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  14.   CONSTRAINT `fk_tbl_user_personal_tbl_provincias1` FOREIGN KEY (`user_provincia`) REFERENCES `tbl_provincias` (`provincia_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
  15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

Muchas gracias de antemano