miércoles, 16 de noviembre de 2011

Resumen de transacciones


Una transacción es una colección de operaciones que forman una única unidad lógica de trabajo. Se inicia por la ejecución de un programa escrito en un lenguaje de manipulación de datos como SQL, una transacción contiene instrucciones entre un inicio de transacción y un final.

Una transacción tiene cuatro propiedades principales la atomicidad es decir las operaciones de la transacción se realizan correctamente o ninguna se realiza, la consistencia esto es que el sistema no permite más que una sola transacción a la vez, el aislamiento el cual garantiza que las transacciones se realicen de manera aislada y la durabilidad que realiza los cambios una vez que la transacción finalizo.

Las transacciones tienes dos operaciones básicas: lectura la cual transfiere los datos a la memoria intermedia de la transacción, y la escritura la cual transfiere los datos de la memoria intermedia a la base de datos.

Una transacción puede tener varios estados:

  •          Activa: una transacción permanece así durante su ejecución.

  •          Parcialmente comprometida: se encuentra así cuando ha terminado de ejecutar la última instrucción.

  •          Fallida: sucede cuando no se ha podido ejecutar una instrucción.

  •          Abortada: Cuando ha retrocedido la transacción y el sistema regresa al último estado de la base de datos.

  •          Comprometida: Cuando una transacción ha tenido éxito.
Cuando una transacción es comprometida, el sistema escribe información en el disco pero si detecta una falla se cuenta con la información para devolver a la base de datos a su estado anterior.

Si una transacción es abortada, el sistema tiene dos opciones las cuales son: reiniciar la transacción si se detectó un problema de software o hardware, o cancelar la transacción esto si tiene la transacción alguna falla en su secuencia lógica.

Una transacción puede ser concurrente o secuencial, con la concurrencia se mejora la productividad del sistema de base de datos optimizando los recursos de hardware del sistema y disminuyendo el tiempo de espera entre transacciones sin embargo pueden ocasionar conflictos entre los procesos de lectura y escritura.

En cambio las transacciones secuenciales pueden ser secuenciales en cuanto a vistas o conflictos dependiendo de la planificación de sus procesos.

Un punto importante en cuanto a la consistencia de datos es precisamente la recuperabilidad de una transacción que puede regresar a un estado anterior a la base de datos, esto si se encuentra una falla en la transacción (abortada) y se tienen dos recuperaciones aceptables la planificación recuperable y la sin cascada.

lunes, 7 de noviembre de 2011

El diseño de bases de datos relacionales

El diseño de las bases de datos relacionales

El diseño de una base de datos tiene las siguientes fases: recolección y análisis de requerimientos, en esta fase los diseñadores entrevistan a los futuros usuarios de la base de datos y documentan toda la información además de que se definen los requerimientos funcionales que tendrán las operaciones o transiciones; La siguiente fase es el diseño conceptual, aquí los diseñadores crean un esquema conceptual el cual contendrá una descripción detallada de los requerimientos de la información de los usuarios, además de que se detallan los descriptores de datos y las relaciones entre ellos; El diseño lógico de la base de datos es la siguiente fase que consiste en implementar el esquema de la base de datos en un gestor de base de datos comercial o de red; la última fase es el diseño físico de la base de datos , en esta fase ya se especifica la estructura de almacenamiento interna y la organización de los archivos de la base de datos.



SQL Y LDD

El lenguaje de definición de datos o LDD del SQL, permite definir las relaciones entre tablas, el cual incluye la información siguiente: el esquema de la relación, el dominio de valores asociado al atributo, el conjunto de índices, la información de seguridad, autorización y la estructura de almacenamiento físico.

Los tipos de dominios en SQL predefinidos son los siguientes: char (cadena de caracteres de longitud fija), varchar (cadena de caracteres de longitud variable), int (entero), smallint (entero pequeño), numeric (numero en coma flotante), real, double precisión (son números en coma flotante de doble precisión), float (número de coma flotante), date (fecha de calendario), time (es la hora del día), timestamp (combinación entre date y time); recuerde respetar los tipos de datos, así como indicar cast o as para hacer comparaciones entre dominios.

Los dominios de SQL, permiten hacer comparaciones entre ellos mismos por ejemplo en el tipo de dato date y al utilizar la función interval, regresa un intervalo resultado de la comparación entre dos fechas distintas; también acontece muy a menudo que se requiera una coerción es decir una comparación entre tipos compatibles lo cual el sql transforma o a veces si se requiere una conversión de tipos, precisamente para poder lograr la comparación.
También son muy útiles los dominios en SQL, para resolver los problemas ocasionados por los nulos en los atributos, el valor null pertenece a todos los dominios pero en situaciones especiales es muy común retirarlo o prohibirlo en tales casos por ejemplo una llave primaria, se hace necesario realizar tal acción precisamente para mantener unicidad entre tuplas.
Para la definición de esquemas en SQL, se puede utilizar la sentencia create table r (…), dentro del paréntesis se tendrían las restricciones y atributos que formarían el esquema r, las llaves primarias las cuales poseen su atributo no nulo y único, esta llave hace a cada tupla única; la restricción check, la cual especifica un predicado el cual cada tupla de r deberá respetar, en caso de fallar la condición check SQL notificara el error, recuerde que null, es un valor valido para todo dominio de SQL salvo aquel que este declarado como not null; la especificación unique, indica que el atributo o atributos que lo forman son claves candidatas y se tomara en cuenta para verificar la unicidad de la tupla.

Para gestionar esquemas se tienen las siguientes sentencias: drop table r, la cual elimina todo esquema r tiene una repercusión drástica esta última sentencia, la sentencia delete from r, la cual conserva la relación pero elimina todas las tuplas, pero no se podrán insertar nuevas tuplas a menos que se ejecute de nuevo create table; con alter table r add A D, donde A es atributo y D dominio agrega nuevos campos a la relación; alter table r drop A, elimina el campo descrito por A.

SQL y consultas con el LMD

La estructura básica de una expresión SQL con el lenguaje de manipulación de datos o LMD consiste en tres clausulas principales: select (Corresponde a la operación de proyección del algebra relacional), from (Corresponde a la operación del producto cartesiano) y where (Corresponde al predicado selección del algebra relacional).

Una consulta típica en SQL tiene la forma: select a1…an from r1…rn where Cada a representa un atributo, cada r representa una relación y P es el predicado, Si se omite la cláusula where el predicado P es cierto.

Los lenguajes formales de consulta están basados en la noción matemática de que una relación es un conjunto, así nunca aparecen tuplas duplicadas en la relaciones, en aquellos casos donde se requiera forzar la eliminación de duplicados se insertara la palabra clave distinct después de select.

De igual forma se usa la palabra clave all para especificar que no se eliminan los duplicados, el símbolo “*” se puede usar para denotar todos los atributos, la cláusula select puede contener también expresiones aritméticas que contengan los operadores, +,-,* operando sobre constantes o sobre tuplas, SQL también proporciona tipos de datos especiales, tales como varias formas del tipo fecha y funciones aritméticas destinadas a operar con esos tipos de datos.

La cláusula where usa las conectivas lógicas and, or y not en lugar de símbolos matemáticos, pero permite operadores de comparación SQL para comparar cadenas y expresiones aritméticas así como tipos especiales tales como el tipo fecha.
Además SQL incluye un operador de comparación between que especifica que un valor sea menor o igual que un valor y mayor o igual que otro valor, de forma análoga se puede usar el operador de comparación not between.

La cláusula from define por sí misma un producto cartesiano de la relaciones que aparecen en la cláusula, también SQL proporciona un mecanismo para renombrar tanto relaciones como atributos. Para ello utiliza la cláusula as de la siguiente forma select nombre as n from directorio.

La cláusula as es útil en variables tupla, este tipo de variables se definen en la cláusula from mediante el uso de as, las variables tupla son de gran utilidad para comparar dos tuplas de una misma relación.

SQL especifica cadenas entre comillas simples como ‘hola’, la operación más usada sobre cadenas es el encaje u operador like para la descripción de patrones, el carácter “%” encaja con cualquier subcadena, el subrayado encaja con cualquier carácter, SQL también permite buscar discordancias en lugar de concordancias usando el operador not like.

SQL ofrece al usuario cierto control sobre el orden en el cual se presentan las tuplas de una relación, la cláusula order by hace que las tuplas resultantes de una consulta se presenten en cierto orden.

SQL define las tuplas que están en el resultado de una consulta, además del número de copias de cada una de esas tuplas que aparecen en el resultado, la semántica de duplicados de una consulta SQL, se puede definir utilizando versiones de los operadores relaciones para multiconjuntos.

jueves, 13 de octubre de 2011

Resumen de normalizacion

La normalización de una base de datos, consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al relacional.

Una vez obtenido el esquema relacional resultante del modelo entidad relación que representa la base de datos, normalmente se tendrá una buena base de datos. Pero otras veces, debido a fallos en el diseño o a problemas indetectables en esta fase del diseño, tendremos un esquema que puede producir una base de datos que incorpore estos problemas:

  •   Redundancia. Se llama así a los datos que se repiten continua e innecesariamente por las tablas de las bases de datos. 
  •   Ambigüedades. Datos que no clarifican suficientemente el registro al que representan.
  •  Pérdida de restricciones de integridad.
  • Anomalías en operaciones de modificación de datos. El hecho de que al insertar un solo elemento haya que repetir tuplas o registros en una tabla para variar unos pocos datos. O que eliminar un elemento suponga eliminar varias tuplas.  
  • El principio fundamental reside en que las tablas deben referirse a objetos o situaciones muy concretas.


La solución para estos problemas o anomalías suele ser dividir la tabla con problemas en otras tablas más adecuadas.

Las formas normales se corresponden a una teoría de normalización iniciada por Codd y continuada por otros autores (entre los que destacan Boyce y Fagin). Codd definió en 1970 la primera forma normal, desde ese momento aparecieron la segunda, tercera, la Boyce-Codd, la cuarta y la quinta forma normal.

Una tabla puede encontrarse en primera forma normal y no en segunda forma normal, pero no al contrario. Es decir los números altos de formas normales son más restrictivos (la quinta forma normal cumple todas las anteriores).

Primera forma normal.

Una tabla se encuentra en primera forma normal si impide que un atributo de una tupla pueda tomar más de un valor.

Segunda forma normal.

Si una tabla está en primera forma normal y además cada atributo que no sea clave, depende de forma funcional completa respecto de cualquiera de las claves. Toda la clave principal debe hacer dependientes al resto de atributos, si hay atributos que depende sólo de parte de la clave, entonces esa parte de la clave y esos atributos formarán otra tabla.

Se dice que un conjunto de atributos (Y) depende funcionalmente de otro conjunto de atributos (X) si para cada valor de X hay un único valor posible para Y. Simbólicamente se denota por X→Y.

Por ejemplo el nombre de una persona depende funcionalmente del DNI, para un DNI concreto sólo hay un nombre posible.

Tercera forma normal.

Ocurre cuando una tabla está en segunda forma normal y además ningún atributo que no sea clave depende transitivamente de las claves de la tabla. Es decir no ocurre cuando algún atributo depende funcionalmente de atributos que no son clave.

Se produce cuando tenemos tres conjuntos de atributos X, Y y Z. Y depende funcionalmente de X (X→Y), Z depende funcionalmente de Y (Y→Z). Además X no depende funcionalmente de Y. Entonces ocurre que X produce una dependencia funcional transitiva sobre Z. 

Esto se denota como: (X-→Z)

Por ejemplo si X es el atributo Número de Clase de un instituto, e Y es el atributo Código Tutor. Entonces X→Y (el tutor depende funcionalmente del número de clase). Si Z representa el Código del departamento, entonces Y→Z (el código del departamento depende funcionalmente del código tutor, cada tutor sólo puede estar en un departamento). Como no ocurre que Y→X (el código de la clase no depende funcionalmente del código tutor, un código tutor se puede corresponder con varios códigos de clase).

Entonces X-→Z (el código del departamento depende transitivamente del código de la clase).

Forma normal de Boyce-Codd (FNBC).

Ocurre si una tabla está en tercera forma normal y además todo determinante es una clave candidata.

Cuarta forma normal.

Ocurre esta forma normal cuando una tabla está en forma normal de Boyce Codd y toda dependencia multivaluada es una dependencia funcional.

Una dependencia multivaluada de una tabla con atributos X, Y, Z de X sobre Z (es decir X->>Z) ocurre cuando los posibles valores de Y sobre cualquier par de valores X y Z dependen sólo del valor de X y son independientes de Z.

Quinta forma normal.

Ocurre cuando existen restricciones especiales entre claves que no han sido desglosados, se deben a restricciones muy concretas y complejas.

A continuacion un video:









martes, 4 de octubre de 2011

Resumen modelo entidad-relacion


El modelo entidad-relación es una herramienta para el modelado de datos de un sistema de informacion. Estos modelos expresan entidades relevantes para un sistema de información así como sus interrelaciones y propiedades.


Entidad: Es un objeto en el mundo real que es distinguible, tiene un conjunto de propiedades.


Atributo: Describe la propiedad o propiedades que posee una entidad.


Diagrama entidad relación: Proporciona una notación para documentar un diseño de una base de datos, el diagrama consta de los siguientes componentes:


  •          Rectángulos: representan entidades.

  •          Elipses: representan atributos.

  •          Rombos: representan relaciones normalmente es etiquetado en su interior con un verbo.

  •          Líneas: unen atributos a entidades, y entidades a relaciones.

  •         Elipses dobles: representan atributos multivaluados.

  •          Elipses discontinuas: describen atributos derivados.

  •          Líneas dobles: indican participación total de una entidad en una relación.



Relación: Es una asociación entre entidades.


Cardinalidad de las relaciones: El tipo de cardinalidad se representa mediante una etiqueta en el exterior de la relación, respectivamente: "1:1", "1: N" y "N: M", aunque la notación depende del lenguaje utilizado, la que más se usa actualmente es el unificado. Otra forma de expresar la cardinalidad es situando un símbolo cerca de la línea que conecta una entidad con una relación:
  •      "0" si cada instancia de la entidad no está obligada a participar en la relación.
  •      "1" si toda instancia de la entidad está obligada a participar en la relación y, además, solamente participa una vez.
  •      "N”, "M", o "*" si cada instancia de la entidad no está obligada a participar en la relación y puede hacerlo cualquier número de veces.
Entidades fuertes y débiles: Una entidad débil es aquella que no puede existir sin participar en la relación, es decir, aquella que no puede ser unívocamente identificada solamente por sus atributos. Una entidad fuerte (también conocida como entidad regular) es aquella que sí puede ser identificada unívocamente.

Grado: Es el número de entidades que intervienen en una relación.

Restricciones de participación: Dado un conjunto de relaciones R en el cual participa un conjunto de entidades A, dicha participación puede ser de dos tipos:

  • Total: Cuando cada entidad en A participa en al menos una relación de R.
  • Parcial: Cuando al menos una entidad en A NO participa en alguna relación de R.

Herencia: La herencia es un intento de adaptación de estos diagramas al paradigma orientado a objetos. La herencia es un tipo de relación entre una entidad "padre" y una entidad "hijo". La entidad "hijo" hereda todos los atributos y relaciones de la entidad "padre". Por tanto, no necesitan ser representadas dos veces en el diagrama. La relación de herencia se representa mediante un triángulo interconectado por líneas a las entidades.

Agregación: Es una abstracción a través de la cual las relaciones se tratan como entidades de un nivel más alto. Se utiliza para expresar relaciones entre relaciones o entre entidades y relaciones. Se representa englobando la relación abstraída y las entidades que participan en ella en un rectángulo.


A continuacion tutorial del modelo entidad relacion aqui

lunes, 12 de septiembre de 2011

Introduccion a las bases de datos


Introducción a las bases de datos.

Hoy en día al hacer una transacción bancaria, al abordar algún transporte público para dirigirse hacia algún lugar, en las telecomunicaciones, o bien en alguna actividad donde se requiera almacenar información se emplean bases de datos, esta última sirve para almacenar información, de esta forma el usuario final de las bases de datos puede ser cualquier persona, una base de datos es gestionada por medio de un sistema gestor de bases de datos.

Un sistema gestor de bases de datos (SGBD), tiene como objetivo principal almacenar y recuperar la información de manera fácil y rápida además de evitar posibles resultados erróneos.

Asimismo el gestor de base de datos, debe tratar ciertos aspectos como la atomicidad, la cual considera que debe realizarse una operación con la base de datos o no, la integridad de los datos la cual asegurara de que los datos sean consistentes y la seguridad la cual evitara que los datos sean manipulados por usuarios que no deben acceder a información vital.

De igual manera también un gestor de base de datos, debe proporcionar cierta abstracción de los datos que provee a los usuarios, de manera que el usuario final o el programador puedan tener una visión diferente de los datos según ellos lo requieran.

Los gestores de base de datos, tienen un modelo de datos, es decir una serie de herramientas con las cuales explican la información, la relación interna de la misma información y sus restricciones, el modelo entidad-relación es el más usado, el modelo relación es usado para almacenar datos, pero además existen otros modelos, como el relacional orientado a objetos y el de datos semiestructurados.

El diseño de la base de datos se conoce como esquema y cuenta con un lenguaje de definición de datos o LDD así como un lenguaje de manipulación de datos o LMD, estos lenguajes son no procedimentales es decir solo necesitan que se especifique lo que se necesita para llevar a cabo una acción.

Los gestores de bases de datos cuentan con varios subsistemas entre los cuales están: el gestor de transacciones el cual asegura que una transacción u operación el sistema ocurra sin presentar problemas, el procesador de consultas de LMD y LDD, además del gestor de almacenamiento que cumple la misión de ser interfaz entre los programas de aplicación y los datos.

Una gran parte de aplicaciones que emplean SGBD se dividen en aplicaciones de arquitectura de dos o tres niveles.

En las aplicaciones de dos niveles el usuario recurre a la aplicación es decir esta última es un cliente del SGBD que puede estar en red o no, hacía el servidor de bases de datos el cual contiene al SGBD puede conectarse mediante OBDC(Open Data Base Connectivity o Conexión abierta de base de datos) o JDBC(Java Data Base Connectivity o Conexión de base de datos Java).

En cambio las aplicaciones de tres niveles o arquitectura de tres niveles, el cliente se comunica hacia un servidor de aplicaciones el cual a su vez hacia un servidor de bases de datos en red o de manera local.

Principalmente el SGBD mejora en forma sustancial el problema de almacenamiento de la información comparado con manejar un sistema de información basado en archivos en el cual se podría tener varios problemas como la redundancia de datos, esta puede existir debido a que las diferentes aplicaciones que se emplean manejan diferentes formatos de archivos, más aún pueden existir archivos duplicados.

En un sistema de archivos también pueden existir problemas de seguridad de la información debido a que los archivos del sistema operativo podrían no estar protegidos de escritura.

En conclusión se podría decir que una base de datos basada en el modelo de entidad-relación puede ser la mejor manera de guardar información, gestionarla y asegurar información valiosa comparada con otros modelos y otros sistemas de información basados por ejemplo en archivos.