17.10 - Acerca de la copia de tablas con integridad referencial - Teradata Data Mover

Teradata® Data Mover Guía del usuario

Product
Teradata Data Mover
Release Number
17.10
Release Date
Junio de 2021
Content Type
Guía del usuario
Publication ID
B035-4101-061K-ESN
Language
Español (España)

En la mayoría de los casos, puede copiar las tablas que tienen integridad referencial desde el origen hasta el destino mediante Teradata PT API, Teradata JDBC y Teradata DSA.

Una tabla tiene integridad referencial si alguna de sus columnas de clave externa (FK) hace referencia a columnas de clave principal (PK) en otra tabla. La integridad referencial ayuda a garantizar la integridad y la coherencia de los datos en las columnas de PK y FK.

Se pueden añadir restricciones de integridad referencial a una tabla cuando se usan sentencias CREATE TABLE o ALTER TABLE. En Teradata Database, se puede declarar integridad referencial estándar, por lotes y mínima. En los siguientes ejemplos de diferentes tipos de integridad referencial, el conjunto de columna de clave externa compuesto (Nombre, DeptId) hace referencia a las columna de clave principal (Nombre, DeptId) de la tabla principal db.employee_PK:
integridad referencial Ejemplo Descripción
Estándar
FOREIGN KEY ( Name , Deptid ) REFERENCES 
db.employee_PK ( Name , Deptid ))

Aplica la integridad referencial a nivel de fila.

Lote
FOREIGN KEY ( Name , Deptid ) REFERENCES WITH 
CHECK OPTION db.employee_PK ( Name , Deptid ))

Aplica la integridad referencial para una transacción implícita; es útil cuando una única sentencia inserta varias filas en una tabla.

Mínima
FOREIGN KEY ( Name , Deptid ) REFERENCES WITH 
NO CHECK OPTION db.employee_PK ( Name , Deptid ))

Indica explícitamente a Teradata Database que no incurra en una carga adicional del sistema aplicando la integridad referencial en la relación de PK-FK.

Los siguientes escenarios describen cómo gestiona Data Mover la copia de tablas con claves externas.
Tabla de origen Tabla de destino Resultados de Data Mover
La definición de FK existe La tabla no existe. Copia la tabla de origen al destino con la definición de FK del origen.
La definición de FK existe No tiene ninguna definición de FK. Copia la tabla de origen en el destino sin ninguna integridad referencial, por lo tanto, la tabla de destino no tiene ninguna definición de FK.
FK definida para col1 y col2 Se ha definido la FK para col3 y col4. Copia la tabla de origen en el destino, pero la tabla de destino mantiene su definición original de FK (FK en col3 y col4). La tabla de destino no utiliza la definición de FK de la tabla de origen (FK en col1 y col2).
Las siguientes restricciones se aplican al copiar tablas que tienen integridad referencial:
  • Si se copia una tabla principal en el destino, la tabla no podrá conservarse en el destino con una tabla secundaria que no se copie como parte del trabajo debido a una de las siguientes dos condiciones:
    Condición Ejemplo Información del error
    La tabla secundaria tiene integridad referencial permanente en la tabla. Las tablas de origen A y B, donde A es el elemento principal de B y C. Se producirá un error cuando se copian las tablas de origen A y B, donde C contiene referencias permanentes en A en el destino, pero no se copia C. El trabajo se debe crear solo cuando se muevan A y C, debido a que la integridad referencial de B es mínima con respecto a A.
    Las tablas de destino A, B y C, donde A es la principal de B y C; la integridad referencial de B es mínima con respecto a A; y la integridad referencial de C es permanente con respecto a A.
  • Al copiar una tabla secundaria, solo se puede cambiar el nombre o la ubicación de la tabla principal si la tabla secundaria ya existe en la base de datos de destino o si la tabla principal existe en la misma base de datos del destino y del origen.
  • Si la tabla no existe en el destino, se utilizará la definición de la tabla de origen para crear la tabla en el destino. Debido a que Teradata Database representa la clave principal como un índice único en una definición de tabla, la tabla de destino se crea con un índice único en lugar de con una clave principal. Las tablas secundarias pueden hacer referencia a tablas con un índice principal o secundario único.
  • Si un trabajo copia la base de datos completa con Teradata DSA, y la base de datos tiene tablas con claves externas, las tablas de destino se crearán sin claves externas.
  • Si las tablas de origen y de destino tienen diferentes claves externas, las claves externas de la tabla de destino se mantienen después de la copia de la tabla.
  • Solo se puede copiar una tabla secundaria sin copiar su tabla principal si la tabla secundaria ya existe en la base de datos de destino o si la tabla principal existe en la misma base de datos del destino y del origen.
  • Cuando se mueven tablas, si una tabla principal tiene una clave de identidad de generación siempre y esa clave se utiliza como una clave externa para una tabla secundaria, solo se pueden mover las tablas con Teradata DSA. No se admiten copias parciales para este tipo de tabla de integridad referencial con DSA, TPT o JDBC.

Se considera que dos tablas tienen referencias circulares si una clave principal de la tabla principal (PT1) hace referencia a una clave externa de la tabla secundaria (CT1), y si una clave principal de CT1 hace referencia a una clave externa de PT1. Es decir, que existe una relación PK-FK mutua entre ambas tablas. Cuando se copian tablas de origen con referencias circulares, Data Mover solo puede copiarlas en el destino si no tienen ninguna relación PF-FK mutua; no debe existir ninguna referencia circular entre las tablas de destino. Si las tablas no existen en el destino cuando Data Mover intenta copiar las tablas de origen con referencias circulares, se producirá un error.