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

relacionar una tabla

Estas en el tema de relacionar una tabla en el foro de Mysql en Foros del Web. Hola, perdonar se que esto esta escrito en varios temas, pero no lo entiendo :S Me podeis explicar los pasos para poder relacionar una tabla ...
  #1 (permalink)  
Antiguo 07/04/2009, 04:39
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años
Puntos: 1
relacionar una tabla

Hola, perdonar se que esto esta escrito en varios temas, pero no lo entiendo :S

Me podeis explicar los pasos para poder relacionar una tabla a otra en MY SQL,

ejemplo, yo tng una tabla: empresa. y tengo ota tabla llamada datos, lo que quiero es relacionar la tabla, para que los datos se relacionen con empresa.

gracias
  #2 (permalink)  
Antiguo 07/04/2009, 05:20
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
  #3 (permalink)  
Antiguo 07/04/2009, 05:51
 
Fecha de Ingreso: marzo-2009
Mensajes: 480
Antigüedad: 15 años
Puntos: 1
Respuesta: relacionar una tabla

Ya.. Pero lo del codigo sql no lo peudo hacer en mysql, no? y si lo puedo hacer donde?

luego, que es TYPE = INNODB;?¿?

:S

Yo esqe lo hago a mano en mysql
  #4 (permalink)  
Antiguo 07/04/2009, 06:26
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

Cita:
Ya.. Pero lo del codigo sql no lo peudo hacer en mysql, no? y si lo puedo hacer donde?
mysql> en el prompt o en alguna herramienta gui las oficiales mysql las puedes bajar de MySQL GUI Tools Downloads, tambien hay graficas de pago...


Cita:
luego, que es TYPE = INNODB;?¿?
Mysql puede usar distintos moteres de bbdd INNODB és uno de ellos, para mi el mejor especialmente si se trata de relacionar tablas...

Cita:
Yo esqe lo hago a mano en mysql
Como te piensas que he escrito yo ese codigo!!!

Quim
  #5 (permalink)  
Antiguo 07/04/2009, 07:25
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: relacionar una tabla

Cita:
TYPE = INNODB;
Atención con eso: la sintaxis de arriba es obsoleta. Lo que usa MySQL actualmente es
Código SQL:
Ver original
  1. ENGINE = INNODB;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 16:55.