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:


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:

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:

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.
Información de los programas con certificado
Hay 1 opinión. Opina sobre este curso.
| 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.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] |
|
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] |
|
13.842 | ||
Publicar en
del.icio.us
digg
meneame