miércoles, 13 de julio de 2011

Relaciones

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.

Antes de hablar de las relaciones hay que entender lo que son los campos clave o llave. Son campos clave los que intervienen en la relación. Es clave principal un campo (o más de uno para claves de campo múltiple) cuyo valor o valores identifican de manera exclusiva cada registro de una tabla. Una clave principal no puede permitir valores Nulos o repetidos. Por ejemplo, pueden ser calve principal campos como DNI en una tabla de personas, o CODIGO en una tabla de productos. Una clave principal se utiliza para relacionar una tabla con claves externas de otras tablas. Un campo autonumérico también puede funcionar como clave principal. La combinación de dos o más campos pueden dar una clave principal...



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 columna JOB_ID de la tabla EMPLOYEE.
  • 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 tabla EMPLOYEE. 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 tabla JOBS.

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. 


 
Relación indeterminada: 

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