Para que los datos de las tablas se puedan seleccionar, encontrar y procesar de forma rápida y eficaz, es necesario que las talas no se encuentren aisladas unas de otras. Las tablas tienen que estar relacionadas con otras formando estructuras relacionales. La relación es una asociación establecida entre campos comunes (columnas) en dos tablas. Los campos que entran en relación pueden llamarse de distinta manera, pero tienen que ser del mismo tipo de datos. La relación permite al motor de Acces, encontrar datos relacionados en ambas tablas. Por ejemplo podemos encontar NOMBRE, APELLIDO (de la tabla EMPLEADO_PERSONAL), SALARIO, y DEPART (de la tabla EMPLEADO_LABORAL) de uno o varios empleados.
Las relaciones pueden ser de tres tipos:
- 1. De uno a uno.
- 2. De uno a varios.
- 3. De varios a varios.
- 4. Indeterminada, indefinida o inconsistente.
Relación de uno a uno:
Por cada registro de la tabla principal (tabla que contiene la clave principal) puede existir un sólo registro en la tabla relacionada (tabla que contiene la clave externa). La tabla relacionada no puede contener un registro que no esté relacionado con uno de la tabla principal: no puede existir un registro con FECHA_ALTA, SALARIO, etc., si no hay un empleado con el que se relacione. Más información en uno a uno. Esta relación se utiliza para simplicar y organizar las tablas con muchos campos. Ver el ejemplo siguiente:
nota: esta relación se indica:
Relación de uno a varios:
Por cada registro de la tabla principal (tabla de la clave principal o lado uno de la relación) pueden existir muchos (infinitos) registros en la tabla relacionada (tabla de la clave externa o lado infinito de la relación). La tabla relacionada no puede contener un registro que no esté relacionado con uno de la tabla principal, pero pueden haber muchos registro que estén relacioandos con el mismo registro de la tabla principal: varios (infinitos) empleados de la tabla EMPLEADO_LABORAL, pueden estar en el mismo departamento de la tabla DEPARTAMENTO...
nota: esta relación se indica:
Restricciones de integridad referencial
La integridad referencial garantiza que las relaciones entre filas de tablas relacionadas son válidas y que no se eliminan o se cambian datos relacionados de forma accidental. Cuando se exige la integridad referencial en una base de datos de Oracle, se deben observar las reglas siguientes:
- No puede especificar un valor en la columna de clave externa de la tabla relacionada si ese valor no existe en la clave principal de la tabla relacionada. Sin embargo, puede especificar un valor nulo en la columna de clave principal. Por ejemplo, no puede indicar que se asigna un trabajo a un empleado que no está incluido en la tabla
EMPLOYEE
, pero puede indicar que un empleado no tiene trabajo asignado mediante la especificación de un valor nulo en la columnaJOB_ID
de la tablaEMPLOYEE
. - No puede eliminar una fila de una tabla de clave principal si existen filas que coinciden con ella en una tabla relacionada. Por ejemplo, no puede eliminar una fila de la tabla
JOBS
si hay empleados asignados al trabajo representado por esa fila en la tablaEMPLOYEE
. No obstante, si están activadas las eliminaciones en cascada, puede eliminar una fila de clave principal y se eliminarán también todas las filas coincidentes en las tablas relacionadas. - No puede cambiar un valor de clave principal de la tabla de clave principal si esa fila tiene filas relacionadas. Por ejemplo, no puede eliminar un empleado de la tabla
EMPLOYEE
si ese empleado está asignado a un trabajo en la tablaJOBS
.
Oracle sólo admite dos tipos de integridad referencial:
- Activar la integridad referencial para comprobar los valores de las tablas relacionadas al especificar los datos. Si el valor del dato no está permitido (determinado por las reglas definidas anteriormente), se produce un error en la entrada de datos y no se agregan a la base de datos.
- Eliminaciones en cascada.
Relación de varios a varios:
Debes tener claro las llaves primarias y una tabla de unión para que se produzca la relación varios a varios entre PRODUCTOS y NUM_VENTA. Un registro de la tabla NUM_VENTA puede estar relacionado con varios registros de la tabla PRODUCTOS y un registro de la tabla PRODUCTOS puede estar relacionado con varios registros de la tabla NUM_VENTA. Explicación: cuando realizamos una venta le asignamos un número (N_VENTA) y lo almacenamos en la tabla NUM_VENTA; esa venta puede estar formada por uno o varios productos identificados con un numero de producto (N_PRODUCTO) de la tabla PRODUCTOS.
Pero, ¿cómo podemos relacionar varios registros de la tabla NUM_VENTA con varios de PRODUCTOS, y viceversa?. En realidad esta relación está formada por dos relaciones de uno a muchos. Una tabla intermedia (tabla de unión VENTAS) contiene la clave principal múltiple que se forma con la conbinación de dos (o más) claves externas: N_VENTA y N_PRODUCTO. La combinación de estos dos campos forma un campo que no se repite. Por ejemplo: la venta 200 (N_VENTA vale 200) se realizó con los productos 12, 14 y 36 (N_PRODUCTO). Si formamos con N_VENTA y N_PRODUCTO una clave principal obtenemos 20012, 20014 y 20036, valores no repetidos. Con otros valores de N_VENTA se prcedería igual.
Esta relación se puede producir por diversas causas y en cualquier caso debe evitarse puesto que no garantiza la obtención de datos coherentes.
No hay comentarios:
Publicar un comentario