Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/03/2005, 05:01
Avatar de hunab
hunab
 
Fecha de Ingreso: febrero-2005
Ubicación: Barcelona
Mensajes: 133
Antigüedad: 19 años, 2 meses
Puntos: 1
Lo primero que tienes que tener en cuenta es que relacionar dos tablas no significa que exista una integridad referencial entre ellas. Para crear relaciones tienes que establecer claves foráneas, es decir, claves que referencian a campos de otra tabla. En mysql para poder añadir integridad referencial necesitas crear tablas del tipo InnoDB. Por ejemplo, para añadir una integridad referencial que al borrar un campo te borre todos los campos "hijos" tendrias que definir algo como esto.

en el momento que creas las tablas:

CREATE TABLE propietario
(
id_propietario INT NOT NULL,
PRIMARY KEY (id_propietario)
) TYPE = INNODB;

CREATE TABLE coche
(
id_coche INT NOT NULL,
id_propietario INT NOT NULL,
PRIMARY KEY(id_coche),
INDEX (id_propietario),
FOREIGN KEY (id_propietario) REFERENCES propietario(id_propietario) ON DELETE CASCADE
) TYPE = INNODB;

tambien puedes crear una clave foranea despues de haber creado las tablas:

ALTER TABLE coche ADD FOREIGN KEY(id_propietario) REFERENCES ON DELETE CASCADE propietario(id_propietario);

En este ejemplo tenemos propietarios y coches, de tal forma que si borramos al propietario automáticamente se nos borrará los coches de éste.
Me he olvidado comentar para trabajar con claves foráneas tienes que crear un índice en el campo que ha sido declarado como clave foránea.
__________________
Marcio Barrios
marciobarrios.com // artículos sobre estándares y desarrollo web

Última edición por hunab; 07/03/2005 a las 05:08