Las claves extrañas son tan valiosas y reconocidas que se clasifican como nivel 3 en las etapas de normalización de la base de datos. En 3NF, todos los atributos (columnas) en una tabla dependen directamente de la clave primaria de esa tabla, y no hay dependencias transitivas.
La introducción de las claves extranjeras puede ayudar a mantener los requisitos de 3NF asegurando que los valores en una columna de clave extranjera solo existan en la clave primaria referenciada.
El objetivo de este tutorial es mostrarle cómo crear y usar una clave extranjera en una base de datos Oracle. Este tutorial está orientado hacia los principiantes, y no cubrimos cómo implementar las claves extranjeras en las normalizaciones de la base de datos.
Crear una declaración de clave extranjera
Podemos crear una clave extranjera durante la creación de la tabla utilizando la declaración Crear tabla y la cláusula de clave extranjera.
Podemos expresar la sintaxis como se muestra en lo siguiente:
Crear tabla table_name (
Tipo de datos de columna1,
Tipo de datos de columna2,
…
Clave externa (columna1, columna2, ...)
Referencias OTRO_TABLE_NAME (OTRO_COLUMN1, OTRO_COLUMN2, ...)
);
El table_name se refiere a la tabla que desea crear en la base de datos. También definimos las columnas de la tabla, su tipo de datos correspondiente y varias restricciones.
Finalmente, llamamos a la cláusula de clave extranjera para especificar la columna o columnas que deseamos compensar las referencias de la clave extranjera.
Para ilustrar mejor el uso de claves extranjeras, tomemos dos tablas como se muestra en las siguientes declaraciones de creación:
Crear bases de datos de tabla
(
Número de identificación generado por defecto en NULL como identidad,
Nombre Varchar2 (50) No nulo,
Número de default_port,
Último_version varchar2 (20) no nulo,
Escriba VARCHAR2 (20) No NULL,
Lenguaje Varchar2 (20) No NULL,
Clave externa (ID)
Referencias size_stats (database_id)
);
Tabla 2:
Crea la tabla size_stats (
Database_id Número Clave principal,
size_on_disk número no nulo,
size_comprised Número
);
En la primera cláusula, creamos una tabla para almacenar la información de la base de datos, como el nombre de la base de datos, el puerto predeterminado, la última versión de la base de datos, el tipo de base de datos y el idioma.
Además, incluimos la cláusula de clave extranjera que define una nueva clave extranjera en la columna de identificación de la tabla de la base de datos. Esta clave extranjera hace referencia a la base de datos_id en la tabla size_stats. Por lo tanto, es bueno asegurarse de que exista la tabla size_stats antes de crear la tabla de bases de datos.
Una vez que tengamos la configuración de las tablas de muestra, insertemos los datos de muestra en la tabla para la demostración.
insertar en valores size_stats (database_id, size_on_disk, size_comprised) (1, 100.45, 94.55);
Insertar en valores size_stats (database_id, size_on_disk, size_compissed) (2, 567.67, 344.43);
Insertar en valores size_stats (database_id, size_on_disk, size_compissed) (3, 649.30, 500.13);
Insertar en valores size_stats (database_id, size_on_disk, size_compissed) (4, 45.62, 39.96);
Insertar en valores size_stats (database_id, size_on_disk, size_compissed) (5, 1000.12, 986.43);
A continuación, agregue los datos a la tabla de bases de datos como se muestra en lo siguiente:
Insertar en bases de datos (nombre, default_port, ortat_version, type, idioma)
Valores ('oracle', 1521, '19c', 'relacional', 'sql');
Insertar en bases de datos (nombre, default_port, ortat_version, type, idioma)
Valores ('mysql', 3306, '8.0 ',' relacional ',' sql ');
Insertar en bases de datos (nombre, default_port, ortat_version, type, idioma)
Valores ('PostgreSQL', 5432, '13', 'Relacional', 'Sql');
Insertar en bases de datos (nombre, default_port, ortat_version, type, idioma)
Valores ('MongoDB', 27017, '4.4 ',' no relacional ',' javaScript ');
Insertar en bases de datos (nombre, default_port, ortat_version, type, idioma)
Valores ('Microsoft SQL Server', 1433, '2017', 'relacional', 't-sql');
Las primeras declaraciones de inserción deben darnos una tabla que contenga las estadísticas del tamaño de la base de datos como se muestra en lo siguiente:
La segunda tabla contiene la información de la base de datos como se muestra en lo siguiente:
Una vez que se aplica la clave extranjera, asegura que los datos proporcionados estén intactos y no se agregan datos no válidos.
Por ejemplo, si intentamos agregar una nueva base de datos con una ID que no existe en la tabla de estadísticas, debería devolver un error de la siguiente manera:
Insertar en bases de datos (nombre, default_port, ortat_version, type, idioma)
Valores ('sqlite', nulo, '3.34 ',' relacional ',' c ');
Error resultante:
[23000] [2291] ORA-02291: Restricción de integridad (recursos humanos.SYS_C007781) Violado - Clave principal no encontrada
Dejar caer una restricción extranjera
Puede eliminar un nombre de restricción extranjera existente utilizando el comando ALTER TABLE como se muestra en el siguiente:
Alter cuento table_name
Drop Restinint extranjero_key_name;
Habilitar/deshabilitar una clave extranjera
También podemos deshabilitar o habilitar una clave extranjera sin eliminarla de la tabla como se muestra en los siguientes comandos:
ALTER TABLA TABLA_NAME
Deshabilitar restricción extranjera_key_name;
Para habilitar una clave extranjera, use el siguiente comando:
ALTER TABLA TABLA_NAME
Habilitar restricción extranjera_key_name;
Conclusión
En este tutorial, aprendió cómo usar las claves extranjeras en las tablas de Oracle para mejorar y proporcionar integridad de datos.