domingo, 25 de julio de 2010

Relaciones entre tablas

Es fundamental diseñar bien la base de datos. Lo más importante es:

  1. Definir bien las tablas y sus campos
  2. Determinar los campos clave para relacionar las tablas. Pedir integridad relacional.
  3. Establecer el tipo de relación entre tablas:
    • Uno a uno
    • Uno a varios
    • Varios a varios


Relación uno a uno

Si la relacion entre dos entidades es uno a uno, en Access generamos dos tablas que tienen que tener las claves principales del mismo tipo y con los mismos datos. Ambas tablas se relacionaran por sus claves principales.

Por ejemplo, imagina que tienes dos entidades que son datos personales y datos profesionales. En una tabla pones los datos personales con el DNI como clave principal. En la otra tabla, con el DNI como clave principal, pones los datos profesionales. Después estableces una relación uno a uno entre ambas claves principales.

En el caso de dos tablas relacionadas mediante una relación uno a uno se podría convertir en una única tabla. Según el ejemplo anterior, podríamos tener en una única tabla los datos personales y profesionales. Por cada DNI podríamos tener en un mismo registro (una misma fila) todos los datos de esa persona. En muchos casos se aconseja separar en dos o más tablas los datos, estableciendo diferentes entidades.

Veamos otro motivo por el que se pueda establecer una relación uno a uno entre dos tablas. Supongamos que el departamento de personal de una compañía observa que aproximadamente el 5% del personal es extranjero. En ese caso nos interesaría ampliar la información personal del trabajador recogiendo por ejemplo, el país de origen, los permisos de que dispone, si su carnet de conducir está convalidado, si su titulación está convalidada, entre otros muchos aspectos. En este caso, si utilizamos una única tabla estaría llena de muchas celdas vacías para el 95% de los empleados, por lo que es aconsejable crear una nueva tabla denominada tabla Extranjeros en la que únicamente figuren ese 5% del personal.

Ambas tablas, la tabla Personal y la tabla Extranjeros, podrían relacionarse por el mismo campo principal, por ejemplo el Id. Personal, que es el número de registro personal que tienen todas las empresas. O bien, podría utilizarse otro sistema al no utilizar en ambas tablas el mismo campo principal. Por ejemplo, en la tabla de Personal utilizamos como campo principal el Id. Personal (que es el número de registro personal), conteniendo esta tabla el campo DNI para los trabajadores nacionales y NIE para los extranjeros. En la tabla Extranjeros podría figurar el NIE como clave principal, y así podríamos establecer la relación uno a uno entre Id. Personal (de la tabla Personal) y NIE (de la tabla Extrajeros).


Relación uno a varios

Si la relación entre dos entidades es uno a varios, por ejemplo clientes y facturas, en Access generamos dos tablas. Además, la clave principal de la tabla del lado uno (clientes) hay que ponerla como clave externa (un campo más) en la tabla del lado varios (facturas). La clave principal de la tabla del lado uno ha de estar relacionada con la clave externa de la tabla del lado varios.

Otro ejemplo, puede ser el de la relación entre las tablas Proveedores y Productos de una base de datos de Pedidos. Un proveedor puede proporcionarnos un gran número de productos, siendo esta una relación uno a varios. Por cada proveedor de la tabla de Proveedores podemos tener varios productos en la tabla de Productos. Para establecer la relación en Access deberíamos arrastrar el campo clave de la tabla de Proveedores [Id. Proveedor] hacía la tabla Productos. Esto es, hemos de llevar la clave principal del lado uno hasta la tabla del lado varios de la relación, convirtiéndola en una columna adicional.

La columna Id. de proveedor de la tabla Productos se denomina clave externa. Una clave externa es la clave principal de otra tabla. La columna Id. de proveedor de la tabla Productos en una clave externa porque también es la clave principal en la tabla Proveedores.


Relación varios a varios

Si la relacion entre dos entidades es varios a varios, en access generamos una tabla para cada entidad, y una nueva tabla en la que como mínimo tenemos que tener dos campos como claves externas, donde pondremos los datos de las claves principales de cada una de las dos tablas primeras. Cada una de las dos tablas primeras estara relacionada con la tercera tabla con una relación uno a varios.

Por ejemplo, la relación entre la tabla Productos y la tabla Pedidos. Un producto puede aparecer en varios pedidos, y por otro lado, un pedido puede componerse de varios productos. En este caso estamos en una relación varios a varios ya que un pedido puede tener varios productos y un producto puede estar en varios pedidos. Para establecer esta relación en Access necesitamos una tercera tabla interpuesta entre las dos anteriores a la que arrastramos la clave principal de cada una de las dos tablas Productos y Pedidos, estableciendo una relación uno a varios entre ellas y esta tercera tabla. Esta tercera tabla la podríamos denominar tabla Detalles de pedido, y en ella figurará el Id. Producto y el Id. Pedido, además de los detalles de cada línea del pedido por ejemplo, precio unitario, cantidad, descuento.

Cuando existe una relación de uno a uno o de uno a varios, las tablas implicadas deben compartir una o varias columnas comunes. Cuando la relación es de varios a varios, se necesita una tercera tabla para establecer la relación.

No hay comentarios:

Publicar un comentario en la entrada