3.310 cursos gratis
6.277.261 alumnos
Publica tu curso gratis
Busca cursos gratis:
Estás aquí: mailxmail > Cursos de Informática > Software > MySQL básico. Bases de datos y software libre (segunda parte) > Claves ajenas

MySQL básico. Bases de datos y software libre (segunda parte)

Autor: Editorial McGraw-Hill
Curso: 4/5 4/5 (1 opinión) |785 alumnos|Fecha publicación: 30/10/2008

Capítulo 10:

 Claves ajenas

Claves ajenas

Como se vio en las primeras unidades del libro, la función de las claves ajenas consiste en garantizar la integridad referencial entre tablas.

"La clave ajena hace referencia a un campo que se añade a una tabla para hacer de enlace con otra. Dicho campo hará la función de clave primaria en la tabla referenciada".

Supongamos que disponemos de una tabla provincia cuya clave primaria es idprov. Además, tenemos una tabla ciudad que queremos enlazar con la tabla provincia para que quede constancia de la provincia a la que pertenece cada ciudad. Así pues, añadiríamos a la tabla ciudad un campo, denominado también idprov, que haría referencia a la clave primaria de la tabla provincia y que en la tabla ciudad realizaría la función de clave ajena.

La integridad referencial entre ambas tablas se garantizaría si, además de saber a qué provincia corresponde cada ciudad, se asegura que no podrá asignarse un código de provincia a una ciudad si previamente dicha provincia no existe en la tabla provincias. En la definición del campo, las claves ajenas se especifican en MySQL mediante la cláusula REFERENCES y, a continuación, el nombre de la tabla referenciada con su clave primaria entre paréntesis. Siguiendo con nuestro ejemplo, se debería escribir:

Claves ajenas
Claves ajenas

Lógicamente, para poder hacer referencia a la tabla provincia, ésta debe haber sido declarada previamente. Como regla general, es conveniente declarar en primer lugar aquellas tablas que no contienen claves ajenas. Es realmente importante tener en cuenta que los campos enlazados (la clave primaria y la clave ajena) deben ser exactamente del mismo tipo. Por tanto, si idprov se hubiera definido como int(2) UNSIGNED en la tabla provincia, y como int(2) en la tabla ciudad, no se aceptaría la restricción de clave ajena y aparecería un error.

De la misma forma que ocurría con las claves primarias, las claves ajenas pueden definirse al final de la tabla. Sin embargo, cuando la clave ajena está formada por varios campos, entonces es obligatorio hacerlo de esta forma. Además, si la definición se incluye al final de la tabla, deberá incluirse la cláusula FOREIGN KEY. Así pues, en el caso anterior se debería escribir:

Claves ajenas

Así mismo, el campo o campos que forman parte de la clave ajena deben estar indexados, para lo que usaremos la cláusula INDEX y el nombre del campo o campos que forman el índice entre paréntesis. De esa forma, la creación de la tabla ciudad quedaría, de manera definitiva,como sigue:

Claves ajenas

Aún queda otra cuestión importante por resolver: en MySQL las tablas pueden ser de varios tipos, entre ellos MyIsam o InnoDB. Aunque más adelante se volverá sobre esta cuestión, es importante saber que las claves ajenas sólo funcionarán si las tablas son de tipo InnoDB,al menos en la versión de MySQL que estamos utilizando. Es necesario realizar la comprobación, puesto que por defecto MySQL crea las tablas como MyIsam.

Capítulo siguiente - MySQL. Otras restricciones
Capítulo anterior - Restricciones de MySQL
Recibe nuestras novedades
Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Información de los programas con certificado

Hay 1 opinión. Opina sobre este curso.


Cursos similares a MySQL básico. Bases de datos y software libre (segunda parte)


Cursos Valoración Alumnos Vídeo
Excel. Hojas de cálculo (tercera parte)
Curso del software Excel y formación ofimática. En esta tercera parte de nuestro curso de uso avanzado de hojas de cálculo de Excel aprenderás a modificar gráficos; conoc... [07/11/08]
 2,50/5 2.710  
Introducción a CrystalReport
En este curso le ofrecemos el mejor diseñador de Reportes desde mi punto de vista. Este manual le ayudará a diseñar de forma mas eficas sus informes. Crystal Reports le p... [16/04/07]
5/5 2.299  
Instalación de un Servidor de Correo en Linux
Linux es un sistema operativo libre, con lo que no se tiene que pagar por ningún tipo de licencia. También se puede conseguir el código fuente y poderlo modificar libreme... [16/06/04]
 4,38/5 13.842  


Publicar en   del.icio.us    digg    meneame

¿Qué es mailxmail.com?|ISSN: 1699-4914|Recomiéndanos|Ayuda
Condiciones legales de mailxmail