El documento describe tres tipos de relaciones entre tablas de bases de datos: 1 a 1, 1 a N, y N a N. Las relaciones 1 a 1 unen cada registro de una tabla con exactamente un registro de otra tabla, mientras que las relaciones 1 a N unen cada registro de una tabla A con múltiples registros de una tabla B. Las relaciones N a N unen cada registro de ambas tablas con múltiples registros de la otra tabla.
2. Los datos que se encuentran en una tabla suelen estar relacionados con
datos de otras tablas. Así de esta forma se establece un vínculo
denominado Relación por el cual se crea una asociación entre los datos
de las tablas relacionadas. Este método de relación suele ser utilizado
para conseguir información de una tabla a través de otra. Las relaciones se
establecen entre dos tablas. Existen 3 tipos de relaciones entre 2 tablas:
1. Relaciones 1 a 1: Un registro de la tabla A está asociado únicamente a un
registro de la tabla B, y viceversa.
2. Relaciones 1 a N: También denominada relaciones de 1 a muchos. Un
registro de la tabla A está asociado a muchos registros de la tabla B,
mientras que un registro de la tabla B está asociado únicamente a un
registro de la tabla A.
3. Relaciones N a N: También denominada relaciones de muchos a
muchos. Un registro de la tabla A está asociado a muchos registros de la
tabla B, y un registro de la tabla B está asociado a muchos registros de la
tabla A.
3. A partir de aquí crearemos 5 tablas para construir las
relaciones que vamos a ir explicando. Las tablas son:
• La tabla Clientes
• La tabla Categorías
• La tabla Pedidos
• La tabla Productos
• La tabla Detalles de pedidos
7. Una de las grandes ventajas de las bases de datos es que podemos
tener toda la información que necesitamos almacenada en varias
tablas, relacionadas entre ellas, en lugar de una única tabla enorme
con toda la información.
Siguiendo en el ejemplo anterior, los campos (o columnas) de las
cuatro tablas deben coordinarse de modo que muestren información
acerca del mismo pedido. Esta coordinación se lleva a cabo mediante
las relaciones entre las tablas.
Una relación hace coincidir los datos de los campos clave
(normalmente un campo con el mismo nombre en ambas tablas). En
la mayoría de los casos, estos campos coincidentes son la clave
principal(1) de una tabla, que proporciona un identificador único para
cada registro, y una clave externa(2) de la otra tabla.
Como ejemplo podemos ver la relación entre la tabla CATEGORIAS y
la tabla CLIENTES :
• Clave principal de la tabla CATEGORIAS: Id Categoría
• Clave ajena de la tabla CLIENTES: Id Categoría
8. (1)Clave principal: uno o más campos (columnas) cuyos valores identifican de manera exclusiva cada registro
de una tabla. Una clave principal no puede permitir valores Nulo y debe tener siempre un índice exclusivo.
Una clave principal se utiliza para relacionar una tabla con claves externas de otras tablas.
(2) Clave externa: uno o más campos de tabla (columnas) que hacen referencia al campo o campos de clave
principal de otra tabla. Una clave externa indica cómo están relacionadas las tablas.
Para crear una relación, así
como el comportamiento que
tendrá, hemos de pulsar el botón
9. Una vez que hemos pulsado
el botón nos aparecerá una
nueva ventana donde
podremos definir la relación
10. Los pasos para definir la relación y su
comportamiento correctamente son:
1. Seleccionar las tablas implicadas en la relación
que se desea crear.
2. Seleccionar los campos (clave principal y clave
ajena) de las tablas.
3. Seleccionar que operación se realizará cuando
ocurra una operación de actualización de datos
sobre la clave principal.
11. La relación uno a uno ocurre cuando un registro de la tabla A posee un
único registro asociado en la tabla B y un registro de la tabla B posee un
único registro asociado en la tabla A. El problema que tenemos es que
Open Office Base no permite representar relaciones de tipo 1 a 1, ya que
cada vez que intentamos realizar una la convierte a relación de tipo 1 a
N (de 1 a muchos). En nuestro ejemplo la clave primaría que
utilizaremos será la de la tabla Países, y la clave ajena (o externa) será la
columna Id País de la tabla Banderas. Daría igual si fuera al contrario.
Al realizar la correspondencia entre las distintas tablas comprobaremos
que Open Office Base pone la relación de 1 a N.
12. Así que la única solución posible es unir las dos tablas,
manteniendo de esta forma la correspondencia de los
registros. Esto hace que la idea que hemos explicado de
separar la información en distintas tablas para su
organización, en este caso, no sea posible.
13. La relación uno a varios ocurre cuando un registro de la tabla A puede tener
mas de un registro asociado en la tabla B, mientras que, un registro de la
tabla B posee como máximo un registro asociado en la tabla A.
Este tipo de relaciones suelen ser las más frecuentes, y por defecto, las que
implementa Open Office Base.
En el ejemplo que estamos siguiendo de los pedidos, nos encontraremos que
los clientes realizaran pedidos, y que cada pedido ha de pertenecer a un
cliente. Esto hace que la clave primaria de la tabla Clientes (que es Id
Cliente) se encuentre en la tabla Pedidos mediante una clave ajena,
que será denominada con el mismo nombre.
14. Esta forma de definir las columnas (o campos) en las tablas
permitirá crear la relación de 1 a muchos, ya que a cada pedido le
podremos asignar un único cliente, pero cada cliente podrá tener
muchos pedidos (o ninguno).
15. La relación varios a varios ocurre cuando un registro de la tabla A
puede tener mas de un registro asociado en la tabla B y,
análogamente, un registro en la tabla B puede tener mas de un
registro asociado en la tabla A.
Como podemos observar, en este tipo de relaciones la solución
anterior no es factible, ya que Base crea únicamente relaciones de
tipo uno a muchos (1 a N), por lo que crear una columna en una
tabla apuntando a otra no nos serviría. Por ejemplo un producto
puede estar en muchos pedidos, y un pedido puede tener muchos
productos.
16. 1. Si añadimos la columna Id Producto de la tabla PRODUCTOS a la tabla
PEDIDOS nos encontraremos con que al realizar la relación un producto podrá
estar en muchos pedidos, pero un pedido solamente podrá contener un
producto. Como podemos observar, esta solución no es correcta, ya que no es
una relación muchos a muchos (N a N).
17. 2. Si añadimos la columna Id Pedido de la tabla PEDIDOS a la tabla
PRODUCTOS nos encontraremos con que, al realizar la relación, un pedido
podrá contener diferentes productos, pero un producto solamente podrá
encontrarse en un pedido, ya que un producto únicamente podrá registrar un
solo pedido.
18. La solución a este problema es crear una nueva tabla, que la llamaremos
DETALLES DE PEDIDO que contendrá el identificador de la tabla
PRODUCTOS (que el la columna Id Producto), y el identificador de la tabla
PEDIDOS (que es la columna Id Pedido). En este caso, la nueva tabla nos
permitirá asignar a un pedido un producto las veces que queramos,
permitiendo de esta forma asignar a un mismo pedido muchos productos, y
que un producto se encuentre en muchos pedidos. Aprovechando dicha
tabla, crearemos una nueva serie de columnas que necesitaremos para aportar
información extra al detalle del pedido (como puede ser la cantidad y el precio
actual al que se realiza el pedido).
19. En la solución que hemos creado, observaremos que
hemos incluido un campo denominado Id Detalle Pedido a
la tabla DETALLES DE PEDIDO que nos servirá para
identificar cada registro de la tabla. Esta solución nos
permitirá repetir en un mismo pedido un producto, ya que la
clave principal (o clave primaria) no es la combinación entre
Id Pedido y Id Producto. Si en la solución que adoptáramos
para la tabla DETALLES DE PEDIDO fuera necesario que para
cada pedido únicamente pudiera tener un producto, nos
veríamos obligados a no crear la columna Id Detalle Pedido y a
hacer que la combinación de las columnas Id Pedido y Id
Producto fueran la clave principal.