SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
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 ORDENES. 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 ORDENES
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.
DEFINIR UNA CLAVE FORANEA
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> ];
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
 RESTRICT
 NO ACTION
 SET NULL
 SET DEFAULT
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.

Más contenido relacionado

La actualidad más candente

Niveles De Aislamiento
Niveles De AislamientoNiveles De Aislamiento
Niveles De Aislamientoguest1db220
 
Diseño & Procesamiento de transacciones
Diseño & Procesamiento de transaccionesDiseño & Procesamiento de transacciones
Diseño & Procesamiento de transaccionesBlanca Parra
 
Procedimientos Almacenados SQL SEVER.pptx
Procedimientos Almacenados SQL SEVER.pptxProcedimientos Almacenados SQL SEVER.pptx
Procedimientos Almacenados SQL SEVER.pptxCESARHERNANPATRICIOP1
 
Organización lógica y física.
Organización lógica y física.Organización lógica y física.
Organización lógica y física.Lely
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turingAnel Sosa
 
Organización y estructura interna del cpu
Organización y estructura interna del cpuOrganización y estructura interna del cpu
Organización y estructura interna del cpuIsaí Beto Matz Mijes
 
Historia de los sistemas operativos
Historia de los sistemas operativosHistoria de los sistemas operativos
Historia de los sistemas operativosJhonatan López
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPUIvan Porras
 
Los lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingLos lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingJonathan Bastidas
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relaciónjosecuartas
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVERDarwin Durand
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensambladoreveTalavera
 

La actualidad más candente (20)

Niveles De Aislamiento
Niveles De AislamientoNiveles De Aislamiento
Niveles De Aislamiento
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Arreglos - Assembler
Arreglos - AssemblerArreglos - Assembler
Arreglos - Assembler
 
Taller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL proceduralTaller de Base de Datos - Unidad 6 SQL procedural
Taller de Base de Datos - Unidad 6 SQL procedural
 
PROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOSPROCEDIMIENTOS ALMACENADOS
PROCEDIMIENTOS ALMACENADOS
 
Control de versiones (CVS)
Control de versiones (CVS)Control de versiones (CVS)
Control de versiones (CVS)
 
Diseño & Procesamiento de transacciones
Diseño & Procesamiento de transaccionesDiseño & Procesamiento de transacciones
Diseño & Procesamiento de transacciones
 
Jerarquia de chomsky
Jerarquia de chomskyJerarquia de chomsky
Jerarquia de chomsky
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Modos de direccionamiento y formatos
Modos de direccionamiento y formatosModos de direccionamiento y formatos
Modos de direccionamiento y formatos
 
Procedimientos Almacenados SQL SEVER.pptx
Procedimientos Almacenados SQL SEVER.pptxProcedimientos Almacenados SQL SEVER.pptx
Procedimientos Almacenados SQL SEVER.pptx
 
Organización lógica y física.
Organización lógica y física.Organización lógica y física.
Organización lógica y física.
 
maquinas de turing
maquinas de turingmaquinas de turing
maquinas de turing
 
Organización y estructura interna del cpu
Organización y estructura interna del cpuOrganización y estructura interna del cpu
Organización y estructura interna del cpu
 
Historia de los sistemas operativos
Historia de los sistemas operativosHistoria de los sistemas operativos
Historia de los sistemas operativos
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
 
Los lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turingLos lenguajes aceptados para una maquina de turing
Los lenguajes aceptados para una maquina de turing
 
Modelo Entidad Relación
Modelo Entidad RelaciónModelo Entidad Relación
Modelo Entidad Relación
 
INDICES EN SQL SERVER
INDICES EN SQL SERVERINDICES EN SQL SERVER
INDICES EN SQL SERVER
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
 

Similar a Clave foránea

Introducc base datos-sql
Introducc base datos-sqlIntroducc base datos-sql
Introducc base datos-sqlJaime Acurio
 
Base de dato access nº2
Base de dato access  nº2Base de dato access  nº2
Base de dato access nº2dvorador
 
relaciones de tablas en access
relaciones de tablas en accessrelaciones de tablas en access
relaciones de tablas en accesslorenapachon011299
 
Relaciones de tablas
Relaciones de tablasRelaciones de tablas
Relaciones de tablasadidabar
 
Relaciones de tablas en una base de datos
Relaciones de tablas en una base de datosRelaciones de tablas en una base de datos
Relaciones de tablas en una base de datosmafeeeee
 
Relaciones de tablas en una base de datos
Relaciones de tablas en una base de datosRelaciones de tablas en una base de datos
Relaciones de tablas en una base de datosmafeeeee
 
Entidad, Llave primaria, llave foranea
Entidad, Llave primaria, llave foraneaEntidad, Llave primaria, llave foranea
Entidad, Llave primaria, llave foranealinis129
 
Presentacion De Taller De Bd
Presentacion De Taller De BdPresentacion De Taller De Bd
Presentacion De Taller De Bdjuanarmando2010
 
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDAD
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDADINTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDAD
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDADelylupita
 
Presentacion De Taller De Bd
Presentacion De Taller De BdPresentacion De Taller De Bd
Presentacion De Taller De Bdjuanarmando2010
 
Modelo relacional 11 4
Modelo relacional 11 4Modelo relacional 11 4
Modelo relacional 11 4Nathaliarache
 

Similar a Clave foránea (20)

INTEGRIDAD DE DATOS
INTEGRIDAD DE DATOSINTEGRIDAD DE DATOS
INTEGRIDAD DE DATOS
 
Introducc base datos-sql
Introducc base datos-sqlIntroducc base datos-sql
Introducc base datos-sql
 
Presentación2
Presentación2Presentación2
Presentación2
 
Clave primaria
Clave primariaClave primaria
Clave primaria
 
G dbdd
G dbddG dbdd
G dbdd
 
G dbdd
G dbddG dbdd
G dbdd
 
G dbdd
G dbddG dbdd
G dbdd
 
G dbdd
G dbddG dbdd
G dbdd
 
Base de dato access nº2
Base de dato access  nº2Base de dato access  nº2
Base de dato access nº2
 
relaciones de tablas en access
relaciones de tablas en accessrelaciones de tablas en access
relaciones de tablas en access
 
Relaciones de tablas
Relaciones de tablasRelaciones de tablas
Relaciones de tablas
 
Modelo Relacional
Modelo RelacionalModelo Relacional
Modelo Relacional
 
Relaciones de tablas en una base de datos
Relaciones de tablas en una base de datosRelaciones de tablas en una base de datos
Relaciones de tablas en una base de datos
 
Relaciones de tablas en una base de datos
Relaciones de tablas en una base de datosRelaciones de tablas en una base de datos
Relaciones de tablas en una base de datos
 
Entidad, Llave primaria, llave foranea
Entidad, Llave primaria, llave foraneaEntidad, Llave primaria, llave foranea
Entidad, Llave primaria, llave foranea
 
Presentacion De Taller De Bd
Presentacion De Taller De BdPresentacion De Taller De Bd
Presentacion De Taller De Bd
 
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDAD
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDADINTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDAD
INTEGRIDAD REFERENCIAL E INTEGRIDAD DE ENTIDAD
 
Presentacion De Taller De Bd
Presentacion De Taller De BdPresentacion De Taller De Bd
Presentacion De Taller De Bd
 
M. Relacional
M. Relacional M. Relacional
M. Relacional
 
Modelo relacional 11 4
Modelo relacional 11 4Modelo relacional 11 4
Modelo relacional 11 4
 

Más de miranda271999

Más de miranda271999 (8)

Tipos de campos
Tipos de camposTipos de campos
Tipos de campos
 
Para que sirve una bd
Para que sirve una bdPara que sirve una bd
Para que sirve una bd
 
Que es una bd
Que es una bdQue es una bd
Que es una bd
 
Tablas
TablasTablas
Tablas
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Modelo entidad
Modelo entidadModelo entidad
Modelo entidad
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datos
 
Consultas sql
Consultas sqlConsultas sql
Consultas sql
 

Clave foránea

  • 1. 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 ORDENES. 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 ORDENES con relación a la llave primaria de la tabla CONSUMIDOR.
  • 2. La clave foránea identifica una columna(s) en una TABLA REFERENCIANTE a una columna(s) en la TABLA REFERENCIADA. DEFINIR UNA CLAVE FORANEA 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> ];
  • 3. 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  RESTRICT  NO ACTION  SET NULL  SET DEFAULT 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.
  • 4. 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.