Bloque III. Tema 7. Diseño de bases de datos. La arquitectura ANSI-SPARC. El modelo lógico relacional. Normalización. Diseño lógico. Diseño físico. Problemas de concurrencia de acceso: lectura sucia, lectura fantasma y bloqueo. Mecanismos de resolución de conflictos

Índice de contenido

Bloque III. Tema 7. Diseño de bases de datos. La arquitectura ANSI-SPARC. El modelo lógico relacional. Normalización. Diseño lógico. Diseño físico. Problemas de concurrencia de acceso: lectura sucia, lectura fantasma y bloqueo. Mecanismos de resolución de conflictos        1

La arquitectura ANSI-SPARC        1

Arquitectura de tres niveles        2

El modelo lógico relacional        2

Álgebra relacional        3

Normalización        4

Las Formas Normales        5

Primera Forma Normal        5

Segunda Forma Normal        5

Tercera Forma Normal        5

Forma Normal de Boyce-Codd        6

Cuarta Forma Normal        6

Diseño        6

Modelo de Datos Conceptuales        6

Modelo de Datos Lógicos        6

Modelo de Dato Físicos        7

Acceso, Concurrencia y Transacciones        7

Transacciones        7

Concurrencia y problemas        7

Bloqueos mortales o deadlocks        8

Mecanismos de resolución de conflictos        8

Protocolos basados en bloqueos        8

Protocolos basados en marcas temporales        8

 

La arquitectura ANSI-SPARC

https://secure.wikimedia.org/wikipedia/en/wiki/ANSI-SPARC_Architecture

American National Standards Institute – Standards Planning and Requirement Committee. Es un diseño abstracto para un sistema de gestión de bases de datos que fue propuesto por primera vez en 1975. La mayoría de los DBMS comerciales están basados en este modelo, que aun así nunca se convirtió en un estándar formal.

Arquitectura de tres niveles

El objetivo es separar la vista que el usuario tiene sobre los datos de la forma en que estos se representan físicamente. Los niveles son:

Hay tres tipos de esquema correspondientes a los tres niveles en la arquitectura ANSI-SPARC:

 

El modelo lógico relacional

https://secure.wikimedia.org/wikipedia/es/wiki/Modelo_relacional

Basado en la lógica de predicados y en la teoría de conjuntos. Sus bases fueron postuladas por Edgar Frank Codd en 1970.

Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales, el Álgebra relacional y el Cálculo relacional. El Álgebra relacional permite describir la forma de realizar una consulta, en cambio, el Cálculo relacional sólo indica lo que se desea devolver.

Un esquema de una relación es la definición de una estructura. Todo esquema constará de:

Una instancia es la aplicación de un esquema a un conjunto finito de datos.

Una base de datos relacional es un conjunto de una o más tablas estructuradas en registro y campos que se vinculan entre sí  por campos en común.

Álgebra relacional

Algunas definiciones:

Las operaciones son:

Operaciones no básicas o derivadas, se pueden especificar en función de los operadores básicos:

Normalización

https://secure.wikimedia.org/wikipedia/en/wiki/Database_normalization

El proceso de organizar los datos para minimizar la redundancia se denomina normalización. El objetivo es descomponer las relaciones con anomalías en otras más pequeñas y mejor estructuradas.

Edgar Codd, inventor del modelo relacional, introdujo el concepto de normalización y lo que conocemos como 1FN en 1970. Siguió, y definió 2FN y 3FN. Las demás las definieron otros.

Normalmente una relación se la considera “normalizada” cuando llegamos al menos hasta 3FN, en la cual está libre de las anomalías de inserción, actualización y borrado. En la mayoría de los casos 3FN implica también BCFN (Boycce-Codd), 4FN y 5FN, pero no 6FN.

Definiciones útiles para la Normalización:

Las Formas Normales

Decir que una base de datos está en una cierta forma normal es decir que todas sus tablas lo están.

Primera Forma Normal

No tiene grupos repetitivos. En un campo no hay más de un valor. El dominio de un atributo debe incluir únicamente valores atómicos (simples, indivisibles).

No tiene “tablas dentro de tablas”. Por ejemplo meter varios números de teléfono en el mismo campo, en lugar de tener varios campos o tirarlos pa otra tabla.

Segunda Forma Normal

Ningún atributo no principal -aquellos que no están presentes en una clave candidata- es funcionalmente dependiente de un subconjunto propio de una clave candidata. Otras veces se redacta como: cada atributo A de una relación R es dependiente funcional y completamente de la clave primaria K de R.

Otros autores en lugar de referirse a cualquier clave candidata suponen que solo hay una y se refieren a la clave primaria. Y lo definen de la siguiente manera: Una tabla 1FN está en 2FN si y solo si, dada una clave primaria y cualquier atributo que no sea constituyente de una clave primaria, éste depende de toda la clave primaria a la vez, no sólo de una parte de ella. Se puede ver también como que la clave primaria es ya mínima para todos los atributos no principales.

En realidad en teoría pura no es correcto pensar solo en la clave primaria elegida por el diseñador, por el hecho de que haya normalmente una. Hay que pensar en todas las claves candidatas de la tabla, además de la clave primaria elegida.

Tercera Forma Normal

Todo atributo no principal es funcionalmente dependiente de forma no transitiva de cada clave candidata. No deben existir dependencias transitivas de atributos no principales, respecto de la clave primaria. En realidad es lo mismo que decir que atributos no clave no pueden depender funcionalmente de otros atributos no clave, si a su vez éstos sí dependen de atributos clave: K → Y e Y → Z, así se tiene una dep. transitiva K → Z y como efecto secundario, es que Z está dependiendo de un atributo no principal, que es Y.

Otra forma de expresarlo es que ningún atributo no principal tiene una dependencia transitiva respecto de alguna clave candidata. Aunque no significa exactamente lo mismo.

“Cada atributo no principal debe proporcionar un hecho sobre la clave, la clave entera, y nada más que la clave”

Vemos que hasta ahora, para reconocer la primera y la segunda, las palabras claves son “completa” y “transitiva”

Forma Normal de Boyce-Codd

Toda dependencia funcional no trivial es una dependencia de una superclave. En cualquier dependencia no trivial X → A se cumple que X es una superclave -recordemos conjunto de atributos que cumplen con el principio de unicidad – Y además A no puede ser clave candidata, igual que en 3FN.

Pensemos en la 3FN “Toda dependencia funcional -incluye triviales- lo es de forma no transitiva de una clave candidata” pues aquí lo que está añadiendo es que además esa dependencia funcional debe ser no trivial.

Está a medio camino entre la 3FN -ligeramente más fuerte- pero todavía no es 4FN. Lo que quiere decir esta forma es que si hay una dependencia funcional de verdad, de las no triviales, entonces lo es de una superclave. Es decir la tabla tiene cierta coherencia y completitud porque todos los atributos están ofreciendo hechos explicativos o predicados sobre alguna superclave presente.

Cuarta Forma Normal

Toda dependencia multivaluada no trivial es una dependencia de una superclave.

En en el tercer nivel se abren como unas opciones, porque el requisito para 4FN es bien que esté en 3FN o que esté en FNBC.

Diseño

El principio de independencia de los datos (física o lógica) propugna que las aplicaciones no dependan de cómo se almacenan los datos físicamente o de su organización lógica. Características de un buen diseño:

Modelo de Datos Conceptuales

Son los orientados a la descripción de estructuras de datos y restricciones de integridad. Se usan fundamentalmente durante la etapa de análisis de un problema dado y están orientados a representar los elementos que intervienen en ese problema y sus relaciones. El ejemplo más típico es el modelo entidad-relación.

Modelo de Datos Lógicos

Son orientados a las operaciones más que a la descripción de una realidad. Usualmente están implementados en algún sistema gestor de bases de datos. El ejemplo más típico es el modelo relacional, que cuenta con la particularidad de contar también con buenas características conceptuales (normalización de bases de datos).

Modelo de Dato Físicos

Son estructuras de datos a bajo nivel implementadas dentro del propio manejador. Ejemplos típicos son los Árboles B+, las estructuras de Hash, etc.

Acceso, Concurrencia y Transacciones

Transacciones

Un conjunto de operaciones de una aplicación de bases de datos que se efectúan como una única operación lógica (ACID):

El concepto de ACID se define ISO/IEC 10026-1:1992

Los niveles de aislamiento son:

Nivel

Lectura sucia

Lectura no repetible

Lectura fantasma

Lectura no comprometida

Lectura comprometida

No

Lectura repetible

No

No

Secuenciable

No

No

No

 

Concurrencia y problemas

Libro en “Bases de Datos”.

Dos transacciones T1 y T2 son concurrentes cuando se ejecutan simultáneamente en una sola CPU, que solo puede ejecutar una por una. Los tipos  de problemas que se pueden generar son:

  1. Actualización perdida. Se pierde el valor que actualizó una de las transacciones concurrentes.
  2. Actualización temporal o Lectura Sucia. Se puede presentar ante un rollback. Si una transacción permite acceso a los valores que ha escrito, a otra transacción, antes de ser confirmada -no aislamiento- entonces los valores que tomó la otra transacción no han sido válidos ya que la transacción original “se arrepintió”
  3. Lectura no repetible. Que no está garantizado que dos lecturas consecutivas de un mismo datos dentro de una transacción devuelvan el mismo resultado si no han sido modificadas dentro de la propia transacción, claro está.
  4. Lectura fantasma. Una lectura de una fila que no existía cuando se inició la transacción. De nuevo provocado por la falta de aislamiento.

Bloqueos mortales o deadlocks

Un sistema está en estado de interbloqueo cuando toda Ti del conjunto de T's que están en ejecución, está esperando por algún recurso que tiene bloqueado otra Tj. Suceden más frecuentemente cuanto más elevado es el nivel de aislamiento. Hay dos estrategias:

Mecanismos de resolución de conflictos

Los sistemas de control de concurrencia se basan en protocolos o conjuntos de reglas.

Protocolos basados en bloqueos

Asegurar la secuenciabilidad o el acceso mutuamente excluyente a los datos. Se hace poniendo bloqueos al elemento de datos accedido. Hay dos modos de bloqueo: compartido BC o de lectura y exclusivo BX o de escritura. Cada transacción debe solicitarlos y esperar a que se les conceda. Se permiten varios BC y solo un BX.

Protocolos basados en marcas temporales

Basados en predeterminar el orden de ejecución de las transacciones. Una marca temporal es un identificador único que el SGBD asigna a cada T al entrar en el sistema, bien con la hora o con un contador.