El concepto de clave foránea implica relación o vinculación. En el caso de base de datos, se refiere a un registro de una tabla que está relacionado o vinculado con un registro de otra (o de la misma) tabla.
Veamos el siguiente ejemplo:
CREATE TABLE color (
color_id INTEGER NOT NULL PRIMARY KEY,
nombre VARCHAR (10)
);
CREATE TABLE producto (
producto_id INTEGER NOT NULL PRIMARY KEY,
nombre VARCHAR (10),
color_id INTEGER NULL,
producto_color_fk FOREIGN KEY (color_id) REFERENCES color (color_id)
);
Aquí estamos indicando que el campo color_id de la tabla producto, está vinculado o relacionado con el campo color_id de la tabla color. Esto implica que un valor del campo color_id de la tabla producto será válido si y sólo sí está almacenado en el campo color_id de cualquiera de los registros de la tabla color.
Adicionalmente, el campo color_id de la tabla producto tiene como característica que es NO requerido (puede ser NULL). Esto implica que dicho campo acepta el valor NULL además de los valores almacenados en el campo color_id de la tabla color. Si se desea que no acepte valores NULL, debe cambiarse la definición según se indica seguidamente:
CREATE TABLE producto (
producto_id INTEGER NOT NULL PRIMARY KEY,
nombre VARCHAR (10),
color_id INTEGER NOT NULL,
producto_color_fk FOREIGN KEY (color_id) REFERENCES color (color_id)
);
producto_id INTEGER NOT NULL PRIMARY KEY,
nombre VARCHAR (10),
color_id INTEGER NOT NULL,
producto_color_fk FOREIGN KEY (color_id) REFERENCES color (color_id)
);
Esto hará que dicho campo sea requerido y sólo pueda contener valores almacenados en el campo color_id de la tabla color.
Será el gestor de bases de datos el que se encargue de verificar la validez de los valores almacenados en el campo color_id de la tabla producto. Esto libera al programador de realizar aplicaciones que revisen si un valor existe en la tabla color. Esto garantiza consistencia en los datos almacenados.
2 comentarios:
gracias por estas clases virtuales Olinto, realmente bastante ilustrativas y faciles de comprender.
Gracias por tus comentarios.
Puedes suscribirte vía RSS para que estés al día con las publicaciones.
Un gran saludo.
Publicar un comentario