Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/04/2009, 05:20
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: relacionar una tabla

Las dos tablas tienen que tener un campo en comun, supongamos:

Empresas
idEmpresa PK
NombreEmpresa
...

Empleados

idEmpleado PK
idEmpresa FK
NombreEmpleado
...

Tenemos una tabla Empresas donde guardamos los datos identificativos de un grupo de empresas, en otra tabla Empleados tenemos los datos de usa serie de empledos, uno de esos datos tendrá que ser la empresa que les emplea, con solo guardar el IdEmpresa en la tabla Empleado ya podemos saber para que empresa trabaja. Si ademas queremos restringir la entrada de empleados a los de las empresas previamente introducidas en la tabla empresas definimos un FK, clave foranea, que nos relacione las tablas. Tambien podemos definir que pasa cuando se elimine una empresa que tenga empleados, se puede impedir la eliminación o se pueden eliminar los empleados (eliminación en casdacada).


Del help de mysql


reference_definition:
REFERENCES tbl_name (index_col_name,...)
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE reference_option]
[ON UPDATE reference_option]

reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION





Código sql:
Ver original
  1. CREATE TABLE Empresas
  2. (
  3. idEmpresa INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4. NombreEmpresa VARCHAR(45) NOT NULL
  5. )
  6.  TYPE = INNODB;
  7.  
  8.  
  9. CREATE TABLE Empleados
  10. (
  11. idEmpleado INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  12. idEmpresa INT NOT NULL,
  13. NombreEmpleado VARCHAR(45) NOT NULL,
  14. FOREIGN KEY (idEmpresa) REFERENCES Empresas (idEmpresa)
  15. ON DELETE CASCADE
  16. )
  17.  TYPE = INNODB;

Quim