Dependencias entre campos.

La existencias existentes entre los datos de una tabla influyen notablemente en el dise帽o final de una base de datos. Para obtener un sistema 贸ptimo y eficaz, es necesario que el dise帽ador de la BBDD sea capaz de distinguir entre los distintos tipos de dependencias existentes en los campos de una relaci贸n.

Dependencia funcional.

La dependencia funcional es cuando se dice que un atributo B depende funcionalmente de un atributo A cuando el valor de A es el mismo que el valor de B. La dependencia se representa:

A → B

Veamos un ejemplo.

Tabla sin dependencia

La tabla anterior tiene alguna dependencia funcional, que vamos a calcular solo para la clave principal pieza.

Existe una dependencia funcional entre pieza y descuento, ya que siempre que se incluya la pieza (1), se referir谩 a un tornillo. No existe una dependencia funcional entre los campos f_pedido, f_suministro y cantidad, ya que esos valores pueden variar al realizarse nuevos pedidos en otra fecha y otras cantidades. La representaci贸n es la siguiente.

pieza → descuento.
pieza ⇏ f_pedido.
pieza ⇏ f_suministro.
pieza ⇏ cantidad.

Aunque se representa una dependencia funcional completa en la fila 6 de la tabla, esta dependencia es pura casualidad ya que se pueden realizar pedidos en otras fechas y con otras cantidades.

A la hora de establecer las dependencias funcionales es necesario realizar la abstracci贸n imaginando todas las posibles ocurrencias de registros que podemos almacenar en una tabla. Una vez exploradas todas las posibilidades estaremos en disposici贸n de exponer las dependencias funcionales.

dependencia funcional parcial

En el siguiente ejemplo puedes ver que la tabla libros tiene una dependencia funcional seg煤n los siguientes atributos (teniendo como clave primaria a isbn):

ISBN → TITULO
ISBN → N_PAG
ISBN ⇏ AUTOR
ISBN → A脩O

La 煤nica dependencia funcional que falla es la de autor, ya que un mismo libro ha podido ser escrito por m谩s de un autor, y por lo tanto, para cada autor existir谩 un isbn diferente.

Dependencia funcional completa.

Dado lo s atributos A1, A2,...,Ax y B, se dice que B depende funcionalmente de forma completa de A1, A2,...Ax si, y solo s铆, B depende funcionalmente del conjunto de atributos A1, A2,...Ax, pero no de ning煤n otro de sus posibles subconjuntos.

La dependencia funcional se representa as铆.

A1,A2,....,Ax →→ B

Vease el siguiente ejercicio para verlo mejor:

dependencia funcional completa

Seg煤n el ART, CLI y F_VENTA:

[art,cli,f_venta] → precio

Pero:

precio → art

Entonces:

[art, cli,f_venta] ⇏⇏ precio

Por lo que en la tabla no existe una dependencia funcional completa. Sin embargo en cuanto a la cantidad:

[art, cli,f_venta] →→ cantidad

Si depende completamente de la tabla a pesar de que los atributos art, cli, f_venta no dependan funcionalmente de cantidad.

Dependencia transitiva.

Dados tres atributos A, B y C, se dice que existe una dependencia transitiva entre A y C si B depende funcionalmente de A. Y C depende funcionalmente de B.

A ---------> B
B ---------> C

Vease el siguiente ejemplo:

tabla de direcciones

En la tabla direcci贸n se almacena la informaci贸n de las direcciones de notificaci贸n de la persona. Para cada contribuyente se almacena un DNI, el nombre, la calle, la localidad y el c贸digo postal. C贸mo las direcciones son 煤nicas por persona (ya que aunque una persona sea propietaria puede residir en m谩s de una vivienda), nuestro registro exige poner una direcci贸n de notificaci贸n (en donde resida habitualmente). As铆 la clave determina el resto de atributos de la tabla. Es decir, a partir de DNI se pueden obtener el resto de campos.

dni → [nombre, calle, localidad, c_postal]

Pero tambi茅n es posible conocer la localidad sin necesidad de conocer el DNI:

c_postal → localidad

Entonces podemos establecer que:

dni ---------> localidad

Con esta breve pr谩ctica damos por terminado el m贸dulo de relaciones y empezamos con el estudio de programaci贸n de BBDD y el lenguaje de consulta SQL en las proximas clases.