fbpx
Wikipedia

Clave foránea

En el contexto de bases de datos relacionales, una clave foránea o clave ajena (o Foreign Key FK) es una limitación referencial entre dos tablas. La clave foránea identifica una columna o grupo de columnas en una tabla (tabla hija o referendo) que se refiere a una columna o grupo de columnas en otra tabla (tabla maestra o referenciada). Las columnas en la tabla referendo deben ser la clave primaria u otra clave candidata en la tabla referenciada.

Los valores en una fila de las columnas referendo deben existir solo en una fila en la tabla referenciada. Así, una fila en la tabla referendo no puede contener valores que no existen en la tabla referenciada. De esta forma, las referencias pueden ser creadas para vincular o relacionar información. Esto es una parte esencial de la normalización de base de datos. Múltiples filas en la tabla referendo pueden hacer referencia, vincularse o relacionarse a la misma fila en la tabla referenciada. Mayormente esto se ve reflejado en una relación uno (tabla maestra o referenciada) a muchos (tabla hija o referendo).

La tabla referendo y la tabla referenciada pueden ser la misma, esto es, la clave foránea remite o hace referencia a la misma tabla. Esta clave externa es conocida en SQL:2003 como auto-referencia o clave foránea recursiva. Una tabla puede tener múltiples claves foráneas y cada una puede tener diferentes tablas referenciadas. Cada clave foránea es forzada independientemente por el sistema de base de datos. Por tanto, las relaciones en cascada entre tablas pueden realizarse usando claves foráneas. Configuraciones impropias de las claves foráneas o primarias o no forzar esas relaciones son frecuentemente la fuente de muchos problemas para la base de datos o para el modelamiento de los mismos.

Por ejemplo, digamos que hay dos tablas, una tabla CONSUMIDOR que incluye todos los datos de los consumidores, y otra que es la tabla de ÓRDENES. La intención es que todas las órdenes estén asociadas a la información del consumidor y que viven en su propia tabla. Para lograr esto debemos colocar una clave foránea en la tabla ÓRDENES con relación a la llave primaria de la tabla CONSUMIDOR.

La clave foránea identifica una columna(s) en una TABLA REFERENCIANTE a una columna(s) en la TABLA REFERENCIADA.

Definiendo claves foráneas

ALTER TABLE <nombre tabla> ADD [ CONSTRAINT <nombre restricción> ] FOREIGN KEY ( <expresión columna> [, <expresión columna>]... ) REFERENCES <nombre tabla> [ ( <expresión columna> [, <expresión columna>]... ) ] [ ON UPDATE <acción> ] [ ON DELETE <acción> ]; 

Ejemplo en Oracle SQL

En de las llaves foráneas. Adicionalmente eliminación de las tablas.

--- script creación de tablas: Cliente y Producto CREATE TABLE Cliente ( IDCliente INTEGER primary key not null, IDProducto INTEGER not null, -- Definido el campo con anterioridad para la llave foránea (llave primaria en Producto) Fecha_suscripción char(8), Pedido CHAR(100) ); CREATE TABLE Producto ( IDProducto INTEGER primary key not null, IDCliente INTEGER not null, -- Definido el campo con anterioridad para la llave foránea (llave primaria en Cliente) Nombre varchar(10), Descripción varchar(100) ); -- script: Adicionar las llaves foráneas -- sintaxis: ALTER TABLE tablaB ADD CONSTRAINT FK_nombre_cualquiera_único FOREIGN KEY (campo_tablaB) --- REFERENCES tablaA(campo_nombre_tablaA); -- LLave foránea para Cliente ALTER TABLE cliente ADD CONSTRAINT FK_IDproducto_clt FOREIGN KEY (IDproducto) REFERENCES producto(IDproducto); -- LLave foránea para Producto ALTER TABLE producto ADD CONSTRAINT FK_IDCliente_pro FOREIGN KEY (IDCliente) REFERENCES Cliente(IDCliente); -- Script eliminación de tablas**  -- **se recomienda borrar en orden inverso a aquel en que fueron creadas. DROP TABLE Producto CASCADE CONSTRAINTS; DROP TABLE Cliente CASCADE CONSTRAINTS; 

Acciones referenciales

Debido a que el sistema de gestión de base de datos hace cumplir las restricciones de referencia, se debe garantizar la integridad de los datos si las filas de la tabla maestra se van a eliminar (o van a ser actualizadas). Si todavía existen filas dependientes en tablas referendo, esas referencias tienen que ser consideradas. SQL:2003 especifica 5 acciones referenciales diferentes que se ejecutarán en estos casos:

CASCADE

Cada vez que se eliminan o se actualizan las filas de la tabla maestra, se eliminarán o actualizarán las respectivas filas de la tabla hija. Esto se conoce eliminación o actualización en cascade.

RESTRICT

El valor de una columna de la tabla maestra no puede ser actualizado o borrado cuando existe una fila en una tabla hija que hace referencia al valor de la columna de la tabla maestra.

Del mismo modo, una fila no se puede eliminar, siempre que haya una referencia a la misma a partir de una tabla hija.

NO ACTION

NO ACTION y RESTRICT son muy parecidos. La principal diferencia entre el NO ACTION y RESTRICT es que NO ACTION realiza la comprobación de integridad referencial después de tratar de modificar la tabla mientras que RESTRICT hace la comprobación antes de intentar ejecutar la sentencia UPDATE o DELETE. Ambas acciones referenciales actúan de la misma forma si la comprobación de integridad referencial falla: la sentencia UPDATE o DELETE dará lugar a un error.

SET DEFAULT, SET NULL

En general, la acción tomada por el DBMS para SET NULL o SET DEFAULT es el mismo para ambos ON DELETE u ON UPDATE: El valor de la referencia afectada se cambia a NULL para SET NULL, y con el valor predeterminado especificado por SET DEFAULT .gla

Con SET NULL, cada vez que se elimina o actualiza el registro en la tabla padre, establece a NULL las columnas de la FK en la tabla hija, para ello las columnas de la tabla hija NO han de haber sido definidas como NOT NULL.

  •   Datos: Q1056760

clave, foránea, contexto, bases, datos, relacionales, clave, foránea, clave, ajena, foreign, limitación, referencial, entre, tablas, clave, foránea, identifica, columna, grupo, columnas, tabla, tabla, hija, referendo, refiere, columna, grupo, columnas, otra, t. En el contexto de bases de datos relacionales una clave foranea o clave ajena o Foreign Key FK es una limitacion referencial entre dos tablas La clave foranea identifica una columna o grupo de columnas en una tabla tabla hija o referendo que se refiere a una columna o grupo de columnas en otra tabla tabla maestra o referenciada Las columnas en la tabla referendo deben ser la clave primaria u otra clave candidata en la tabla referenciada Los valores en una fila de las columnas referendo deben existir solo en una fila en la tabla referenciada Asi una fila en la tabla referendo no puede contener valores que no existen en la tabla referenciada De esta forma las referencias pueden ser creadas para vincular o relacionar informacion Esto es una parte esencial de la normalizacion de base de datos Multiples filas en la tabla referendo pueden hacer referencia vincularse o relacionarse a la misma fila en la tabla referenciada Mayormente esto se ve reflejado en una relacion uno tabla maestra o referenciada a muchos tabla hija o referendo La tabla referendo y la tabla referenciada pueden ser la misma esto es la clave foranea remite o hace referencia a la misma tabla Esta clave externa es conocida en SQL 2003 como auto referencia o clave foranea recursiva Una tabla puede tener multiples claves foraneas y cada una puede tener diferentes tablas referenciadas Cada clave foranea es forzada independientemente por el sistema de base de datos Por tanto las relaciones en cascada entre tablas pueden realizarse usando claves foraneas Configuraciones impropias de las claves foraneas o primarias o no forzar esas relaciones son frecuentemente la fuente de muchos problemas para la base de datos o para el modelamiento de los mismos Por ejemplo digamos que hay dos tablas una tabla CONSUMIDOR que incluye todos los datos de los consumidores y otra que es la tabla de oRDENES La intencion es que todas las ordenes esten asociadas a la informacion del consumidor y que viven en su propia tabla Para lograr esto debemos colocar una clave foranea en la tabla oRDENES con relacion a la llave primaria de la tabla CONSUMIDOR La clave foranea identifica una columna s en una TABLA REFERENCIANTE a una columna s en la TABLA REFERENCIADA Indice 1 Definiendo claves foraneas 1 1 Ejemplo en Oracle SQL 2 Acciones referenciales 2 1 CASCADE 2 2 RESTRICT 2 3 NO ACTION 2 4 SET DEFAULT SET NULLDefiniendo claves foraneas EditarALTER TABLE lt nombre tabla gt ADD CONSTRAINT lt nombre restriccion gt FOREIGN KEY lt expresion columna gt lt expresion columna gt REFERENCES lt nombre tabla gt lt expresion columna gt lt expresion columna gt ON UPDATE lt accion gt ON DELETE lt accion gt Ejemplo en Oracle SQL Editar En de las llaves foraneas Adicionalmente eliminacion de las tablas script creacion de tablas Cliente y Producto CREATE TABLE Cliente IDCliente INTEGER primary key not null IDProducto INTEGER not null Definido el campo con anterioridad para la llave foranea llave primaria en Producto Fecha suscripcion char 8 Pedido CHAR 100 CREATE TABLE Producto IDProducto INTEGER primary key not null IDCliente INTEGER not null Definido el campo con anterioridad para la llave foranea llave primaria en Cliente Nombre varchar 10 Descripcion varchar 100 script Adicionar las llaves foraneas sintaxis ALTER TABLE tablaB ADD CONSTRAINT FK nombre cualquiera unico FOREIGN KEY campo tablaB REFERENCES tablaA campo nombre tablaA LLave foranea para Cliente ALTER TABLE cliente ADD CONSTRAINT FK IDproducto clt FOREIGN KEY IDproducto REFERENCES producto IDproducto LLave foranea para Producto ALTER TABLE producto ADD CONSTRAINT FK IDCliente pro FOREIGN KEY IDCliente REFERENCES Cliente IDCliente Script eliminacion de tablas se recomienda borrar en orden inverso a aquel en que fueron creadas DROP TABLE Producto CASCADE CONSTRAINTS DROP TABLE Cliente CASCADE CONSTRAINTS Acciones referenciales EditarDebido a que el sistema de gestion de base de datos hace cumplir las restricciones de referencia se debe garantizar la integridad de los datos si las filas de la tabla maestra se van a eliminar o van a ser actualizadas Si todavia existen filas dependientes en tablas referendo esas referencias tienen que ser consideradas SQL 2003 especifica 5 acciones referenciales diferentes que se ejecutaran en estos casos CASCADE RESTRICT NO ACTION SET NULL SET DEFAULTCASCADE Editar Cada vez que se eliminan o se actualizan las filas de la tabla maestra se eliminaran o actualizaran las respectivas filas de la tabla hija Esto se conoce eliminacion o actualizacion en cascade RESTRICT Editar El valor de una columna de la tabla maestra no puede ser actualizado o borrado cuando existe una fila en una tabla hija que hace referencia al valor de la columna de la tabla maestra Del mismo modo una fila no se puede eliminar siempre que haya una referencia a la misma a partir de una tabla hija NO ACTION Editar NO ACTION y RESTRICT son muy parecidos La principal diferencia entre el NO ACTION y RESTRICT es que NO ACTION realiza la comprobacion de integridad referencial despues de tratar de modificar la tabla mientras que RESTRICT hace la comprobacion antes de intentar ejecutar la sentencia UPDATE o DELETE Ambas acciones referenciales actuan de la misma forma si la comprobacion de integridad referencial falla la sentencia UPDATE o DELETE dara lugar a un error SET DEFAULT SET NULL Editar En general la accion tomada por el DBMS para SET NULL o SET DEFAULT es el mismo para ambos ON DELETE u ON UPDATE El valor de la referencia afectada se cambia a NULL para SET NULL y con el valor predeterminado especificado por SET DEFAULT glaCon SET NULL cada vez que se elimina o actualiza el registro en la tabla padre establece a NULL las columnas de la FK en la tabla hija para ello las columnas de la tabla hija NO han de haber sido definidas como NOT NULL Datos Q1056760Obtenido de https es wikipedia org w index php title Clave foranea amp oldid 128884581, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos