Consideremos la Base de Datos (BD) EMPLEADOS que contiene información correspondiente a una sencilla aplicación de procedimientos de pedidos para una pequeña empresa de distribución. Consta de 5 tablas:
CLIENTES: Contiene una fila por cada uno de los clientes de la empresa. Sus campos son NUMCLIE (numero de cliente), EMPRESA, REPCLIENTE (numero de empleado del representante que atiende al cliente) y LIMCREDITO (limite de crédito).
REPVENTAS: Que contiene una fila por cada uno de los 10 vendedores de la empresa. Sus campos son NUMEMPL (numero de empleado), NOMBRE, EDAD, OFICINAREP (numero de oficina de representación del vendedor), TITULO, CONTRATO, DIRECTOR, CUOTA (ventas previstas) y VENTAS (ventas realizadas).
OFICINAS: Que contiene una fila por cada una de las 5 oficinas en las que trabajan los vendedores. Sus campos son OFICINA (numero de oficina), CIUDAD, REGION, DIR (numero del empleado del director), OBJETIVO (ventas anuales previstas) y VENTAS (ventas anuales realizadas).
PRODUCTOS: Que contiene una fila por cada uno de los productos disponibles para su venta. Sus campos son IDEFAB (identificador del fabricante), IDPRODUCTO (identificador del producto), DESCRIPCION, PRECIO, EXISTENCIA.
PEDIDOS: Que contiene una fila por cada pedido ordenado por un cliente. Por simplicidad se supone que cada pedido se refiere a un solo producto. Sus campos son NUMPEDIDO (numero de pedido), FECHAPEDIDO (fecha del pedido), CLIE (numero de cliente), REP (numero de empleado del representante), FAB (identificador del fabricante), PROUCTO (identificador de producto), CANT (cantidad) e IMPORTE.
A primera vista tanto la columna OFICINA como la columna CIUDAD podrían servir como clave primaria para la tabla, pero si la empresa se amplia y abre 2 oficinas de venta en la misma ciudad, la columna ciudad ya no podría servir como clave primaria. En la práctica “numero de ID” tales como el numero de la oficina, el número de empleados y los números de clientes se eligen con frecuencia como clave primaria.
La tabla PRODUCTOS es un ejemplo donde la clave primaria debe ser una combinación de columnas. La columna ID_FAB identifica al fabricante en la tabla y la columna ID_PRODUCTO identifica el número de producto del fabricante. La columna ID_PRODUCTO podría ser buena clave primaria, pero no hay nada que impida que dos fabricantes diferentes utilicen el mismo número para sus productos, por lo tanto debe utilizarse una combinación de las columnas ID_FAB e ID_PRODUCTO
Claves foráneas
En nuestra BD la columna OFICINA_REP es una clave foránea para la tabla OFICINA. Aunque es una columna en la tabla REPVENTAS, los valores que esta columna contiene son número de oficina. Coinciden con los valores de la columna OFICINA, que es la clave primaria para la tabla OFICINA. Juntas una clave primaria y una foránea crean una relación padre/hijo. Por la misma razón la columna DIR de la tabla OFICINA es una clave foránea para la tabla REPVENTAS, ya que los valores que esta columna contiene son número de empleados que coinciden con valores de la columna NUM_EMPL que es clave primaria en la tabla REPVENTAS. En idéntica situación está la columna REP_CLIE de la tabla CIENTES que también es una clave foránea para la tabla RPVENTAS, ya que los valores que esta columna contiene son números de empleados que coinciden con valores de la columna NUM_EMPL.
Una tabla puede contener más de una clave foránea si está relacionada con más de una tabla adicional. En nuestra BD podemos definir 3 claves foráneas en la tabla PEDIDOS.
Columna CLIE es una clave foránea para la tabla CIENTES, que relacionada cada pedido con el cliente que la remitió.
Columna REP es una clave foránea para la tabla REPVENTAS que relaciona cada pedido con el vendedor que la tomo
Las columnas FAB y PRODUCTO juntas son claves foráneas compuestas para la tabla PRODUCTOS, que relaciona cada pedido con el producto solicitado.
Descargar Codigo SQL