La Web del Programador: Comunidad de Programadores
https://www.lawebdelprogramador.com/foros/MySQL/822871-Clave-FORANEA.html

Clave FORANEA

Clave FORANEA

Publicado por R3DRUM (1 intervención) el 14/06/2007 11:54:34
HOLA

Necesito saber que debo de hacer para vincular dos tablas, es decir, en una de las dos tablas tenga una clave FORÁNEA referente a la otra.

Pero eso si, hacerlo desde 'phpMyAdmin'.

Muchas Gracias

RE:Clave FORANEA

Publicado por Ezequiel (7 intervenciones) el 21/06/2007 17:56:17
Para eso deberás crear las tabla a mano, es decir, no desde la herramienta que te provee phpAdmin sino desde la solapa que dice SQL, le escribís todas las tablas que quieras ingresar a través de INSERTO INTO (
Para declarar clave principal:
PRIMARY KEY (campo),
Para declarar clave foránea:
FOREING KEY ("clave_foranea") REFERENCES "otra_tabla"(campo de la otra tabla),
y luego deberas agregar esta sentencia ) Engine=InnoDB; al final de cada tabla.
Ojala te sirva!

RE:Clave FORANEA

Publicado por Matias Garcia (2 intervenciones) el 28/06/2007 20:22:54
hola,
en principio yo estoy estudiando un curso de PHP Y MYSQL, ahora estoy con phpmyadmin, ya tengo mi diseño en modelo relacional , sus claves primarias y ajenas.
las claves foránea en phpmyadmin deves de crear primero las tabla en motor de almacenamiento InnoDB y en la ventana ESTRUCTURA crear Indices, creas las claves ajena donde va a mirar hacia la tabla, se supone que son las id_xxxx de cada tablas en su relacion con su tabla
ejemplo:

Tabla voto (Modelo Relacional) en texto

id_voto
puntuacion
id_noticia
id_usuario
claves primaria: id_voto
claves ajenas: `id_noticia` a `noticia`
claves ajenas: `id_usuario`a `usuario`

cuando tenga todas tus tablas en modelo relacional,
creas tus indices al campo donde se encuentra la clave ajena y le pones un nombre, con un tipo unique y le das a continuar y
en vista de relaciones pones

ejemplo:

campo relaciones interna

id_noticia noticia ->id_noticia
id_usuario usuario ->id_usuario

y asin todas las claves
es muy importante que hagas el modelo relacional a todas tus tablas, para un futuro.
ah se me olvidava si no tuviese las tablas de almacenamiento InnoDB lo haces en MyISAM que es la que esta predeterminada.
bueno si necesita algo mas en este correo me lo dices
un saludo y suerte.
[email protected]

RE:Clave FORANEA

Publicado por jorge Armando Ramirez (1 intervención) el 16/07/2009 18:36:57
tengo una base de datos ya la almacene en modo imnBD, marque las claves primarias y las index, como puedo hacer la relacion de tablas, no entiendo esa parte
asesores
Comentarios de la tabla: InnoDB free: 3072 kB

Campo Tipo Nulo Predeterminado
cedulaasesor int(20) No 0
nombre varchar(30) No
telefono
varchar(30)
No


Beneficiarios
Comentarios de la tabla: InnoDB free: 3072 kB

Campo Tipo Nulo Predeterminado
cedulabene int(20) No 0
nombre varchar(20) No
fechadenacimiento date No 0000-00-00
parentesco varchar(20) No
cedulausuario varchar(20) No
numcontrato varchar(10) No

Contratos
Comentarios de la tabla: InnoDB free: 3072 kB; (`cedulaasesor`) REFER `sistema de informacion/contratos`(`cedulaasesor`); (`numcontrato`) REFER `sistema de informacion/contratos`(`numcontrato`); (`cedulacli`) REFER `sistema de informacion/contratos`(`cedulacli`); (`codplan`) REFER `sistema de informacion/contratos`(`codplan`)

Campo






Tipo






Nulo






Predeterminado
numcontrato int(5) No 0
cedulacli int(10) No 0
codplan int(10) No 0
cedulaasesor int(20) No 0
fechaafiliacion date No 0000-00-00
fechadevencimiento date No 0000-00-00
fechadepago date No 0000-00-00
Pagos Comentarios de la tabla: InnoDB free: 3072 kB

Campo Tipo Nulo Predeterminado
numrecibo int(10) No 0
numcontrato int(10) No 0
fehadepago date No 0000-00-00
valor varchar(20) No
codpoliza int(10) No 0
cedulacli int(20) No 0
Planes Comentarios de la tabla: InnoDB free: 3072 kB

Campo Tipo Nulo Predeterminado
codplan int(11) No
nombreplan varchar(20) No
valorplan varchar(20) No
Poliza Comentarios de la tabla: InnoDB free: 3072 kB

Campo Tipo Nulo Predeterminado
codpoliza int(10) No
nombrepoliza varchar(20) No


Usuarios Comentarios de la tabla: InnoDB free: 3072 kB; (`cedulausuario`) REFER `sistema de informacion/contratos`(`cedulacli`)

Campo Tipo Nulo Predeterminado
cedulausuario int(20) No 0
nombres varchar(20) No
apellidos varchar(20) No
direccion varchar(20) No
telefono varchar(20) No
barrio varchar(20) No

RE:Clave FORANEA

Publicado por Oscar (1 intervención) el 02/09/2009 18:28:57
Que tal ando buscando ayuda, para crear foraneas en phpmyadmin, lo que pasa es que las cree con comandos, bueno importe un archivo en sql y me las creo supuestamente pero utilizo el ON DELETE CASCADE y cuando elimino una tupla de la tabla referenciada no me elimina la relacion en las foraneas, a que se deba esto?

puedes poner el codigo de tus foraneas para saber como las creaste te pongo el mio:

FOREIGN KEY (`id_tipo_usuario`) REFERENCES tipo_usuarios(`id_tipo_usuario`) ON DELETE CASCADE)

saludos, y espero tu ayuda!!

Clave FORANEA

Publicado por JP (1 intervención) el 01/09/2011 17:12:18
1. ALTER TABLE tabla1
2. ADD CONSTRAINT nombreclaveforanea
3. FOREIGN KEY (campotabla1)
4. REFERENCES tablaquereferencia (campoquereferencia)
5. ON DELETE NO ACTION
6. ON UPDATE NO ACTION ;

Fuente:
http://www.webtutoriales.com/tutoriales/programacion/mysql/claves-foraneas.50.html