Definir claves foráneas

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Explorar y cambiar la estructura de las bases de datos > Diseñar tablas en el editor de diseños >

Definir claves foráneas

Las restricciones de claves foráneas mantienen la integridad de la base de datos. Por ejemplo, imagine que está diseñando una base de datos de los empleados de una empresa. Los empleados se guardan en la tabla PERSON y los departamentos en la tabla DEPARTMENT.

 

+----+------------------+--------------------------+---------------+

| ID | NAME             | EMAIL                    | DEPARTMENT_ID +

+----+------------------+--------------------------+---------------+

| 1  | Toby Hughey      | t.hughey@nanonull.com    | 1             |

| 2  | Mia Dahill       | m.dahill@nanonull.com    | 2             |

| 3  | Fred Weinstein   | f.weinstein@nanonull.com | 1             |

+----+------------------+--------------------------+---------------+

Tabla PERSON

+----+-------------+

| ID | NAME        |

+----+-------------+

| 1  | Development |

| 2  | Marketing   |

+----+-------------+

Tabla DEPARTMENT

El elemento DEPARTMENT_ID de la tabla PERSON apunta al elemento ID de la tabla DEPARTMENT. Esta relación se puede asegurar mediante una restricción de clave foránea entre estas dos columnas para garantizar que:

 

cada registro de persona de la tabla PERSON puede hacer referencia a cualquiera de los departamentos de la tabla DEPARTMENT (relación unívoca).
si elimina un registro de la tabla DEPARTMENT y existe un registro de la tabla PERSON que hace referencia a ese DEPARTMENT, la BD devuelve un error legítimo de validación (por ejemplo, "No se puede aplicar la restricción de clave foránea").

 

Puede crear restricciones de claves foráneas tecleando una consulta SQL en el Editor SQL o diseñarlas de forma visual en el Editor de diseños de DatabaseSpy. Para ello es necesario que:

 

las columnas que forman parte de la relación de clave foránea deben ser del miso tipo de datos y de la misma longitud. En este ejemplo se asume que tanto la columna DEPARTMENT.ID como la columna PERSON.DEPARTMENT_ID son de tipo "int".
la columna que hace referencia () debe formar parte de una clave principal o de una única.

 

Nota:en el servidor SQL también puede añadir una referencia de clave foránea a una columna si hay un índice único definido en ella. Esto también es posible en versiones más recientes de MySQL (siempre y cuando el motor de almacenamiento sea InnoDB).

 

Hay distintas formas de definir una clave foránea en el Editor de diseños.

 

Método nº1:

1.Añada al Editor de diseños la tabla donde desea definir la clave foránea y la tabla a la que desea hacer referencia.
2.Ahora tiene dos opciones:
oArrastrar una columna de la sección Columnas de un diseño de tabla (o del Explorador) hasta la sección Claves de un diseño de tabla.
oArrastrar una clave principal, una clave única o (en SQL Server) un índice único desde un diseño de tabla (o del Explorador) hasta la sección Claves de un diseño de tabla.

 

DatabaseSpy crea automáticamente una clave foránea con el nombre <generado> en la primera columna que tenga el mismo tipo de datos que la columna a la que se hace referencia por medio de la clave o del índice. Esta columna puede ser la columna donde se necesita la clave foránea o no. Por tanto, si lo necesita, haga doble clic en la columna (en la sección Claves, en la columna Columnas) y seleccione la columna correcta de la lista.

dbs_fk_approach1

 

Método nº2:

1.El primer paso puede llevarse a cabo de dos maneras:
oHaciendo clic en el icono Crear restricción de clave nueva ic_add-column de la sección Claves de un diseño de tabla.
oHaciendo clic con el botón derecho en cualquier parte del diseño de tabla y seleccionando el comando Insertar nuevo/a | Clave | Clave foránea del menú contextual.

 

DatabaseSpy crea automáticamente una clave foránea con el nombre <generado>, que no hace referencia a ninguna tabla en particular. Para elegir la tabla a la que se debe hacer referencia haga clic en [seleccione la tabla a la que se hace referencia] y seleccione la tabla correcta de la lista.

dbs_fk_approach2a

2.Si es necesario, configure las columnas desde y hasta para la clave foránea:

 

oPara cambiar la columna donde está la clave foránea, haga doble clic en la columna (en la sección Claves, en la columna Columnas) y seleccione la entrada correcta de la lista.

dbs_fk_approach2b

oPara cambiar la columna a la que apunta la clave foránea, haga doble clic en la columna (en la sección Claves, en la columna Columnas) y seleccione la entrada correcta de la lista.

 

Nombrar claves foráneas

La nueva clave foránea recibe por defecto el nombre <generado>. Esto significa que su nombre será generado automáticamente por la base de datos. Esto garantiza el uso de nombres únicos y evita errores. Si lo prefiere, puede invalidar el nombre generado: haga doble clic en <generado>, escriba el nombre de la clave y pulse Entrar.

 

Si reemplaza el nombre generado con un nombre personalizado, el nombre nuevo debe ser único o, de lo contrario, se producirán errores cuando se ejecute el script de cambios de la base de datos.

 

Nota: en SQLite, la base de datos ignora los nombres de clave personalizados. Por tanto, el nombre de clave que aparece en el Explorador de DatabaseSpy es el nombre de clave interno que indica la base de datos.

 

Duplicar claves foráneas

Si quiere crear una copia de una clave foránea, puede generar una instrucción SQL que añade una restricción de clave foránea a la tabla de la siguiente manera:

 

1.En el Explorador expanda la carpeta Claves de la tabla que contiene la clave foránea que quiere duplicar y haga clic con el botón derecho en la clave foránea.
2.Seleccione el comando Mostrar en Editor SQL | ADD en el menú contextual.
3.En el Editor SQL edite el nombre de la tabla, el de la columna y el de la clave foránea.
4.Haga clic en el botón Ejecutar ic_execute-sql para ejecutar la instrucción SQL y crear la clave foránea nueva.

 

Referencias entre esquemas

Las claves foráneas también pueden hacer referencia a columnas de una tabla ubicada en otro esquema. Cuando defina esta referencia con el Editor de diseño, las tablas del mismo esquema aparecen en color negro, mientras que las tablas ubicadas en otro esquema aparecen en color azul en la lista desplegable que aparece cuando se hace doble clic en un nombre de tabla en la columna Referencia del diseño de tabla.

 

design_cross-schema-FK


© 2019 Altova GmbH