domingo, 29 de octubre de 2017

GUÍA 3. BASES DE DATOS

·        1. Desarrolle en un blog los siguientes puntos: 

Concepto de base de datos.

Podemos definir como base de datos, a la agrupación de información coherente y estructurada, es decir, si almacenamos nombres, apellidos, número telefónico, dirección, ciudad, etc. En una hoja de papel, esto lo podríamos llamar base de datos, sin embargo, encontrar allí el número de teléfono de alguien no sería muy fácil, pues no hemos tenido la precaución ni las herramientas para hacerlo de una manera ágil, como, por ejemplo, escribirlos en orden alfabético, lo cual, sería casi imposible por el medio que estamos empleando, una hoja de papel, tendríamos que dejar espacios para cada letra del abecedario y ubicar allí los datos de nuestros amigos. Ahora bien, imaginémonos que tenemos muchos amigos cuyo apellido inicia por cualquier letra, escojamos la G y seguramente, el espacio que destinamos no sería suficiente y el que dejamos para la Z seria demasiado. Bueno, afortunadamente, se crearon las agendas telefónicas, un block de hojas marcadas con el abecedario y con muchas hojas para cada letra.

            El directorio telefónico, que, por cierto, ya poco vemos, ese libro de muchísimas hojas que almacenaba los números telefónicos de toda una ciudad es una base de datos, pero ¿quién carga un directorio en su bolsillo?  Hoy en día, gracias a la evolución de la tecnología y al diseño de sistemas de información es posible, iniciando desde una hoja de cálculo (ej. Excel) , motores de bases de datos (MySql, PostGreSQL, MS Access, MS Sql, Oracle, ACE, DB2, etc) hasta nuestros celulares, incluso aquellos que mal llamamos “flechas”, son todos ellos una base de datos con información coherente y estructurada, los cuales permiten almacenar, buscar, editar, eliminar la información de contacto de nuestros amigos, conocidos y empresas.  Y a este concepto, el más utilizado hoy en día en el desarrollo de software y diseño de bases de datos, el modelo relacional.

            Bueno, esto fue solo con algo tan sencillo como almacenar números telefónicos, sumemos estos pequeños problemas de el ejemplo anterior a los problemas de las empresas en los años 60, la información era almacenada en cintas magnéticas, por tanto su lectura (información) era secuencial, los procesos eran por lotes (batch), archivos maestros de información por programa, etc. Y ya se requería consultas simultaneas de la misma información,  actualizaciones en línea, ahorrar espacio, es decir, no duplicar la información, relacionar la información; Un buen ejemplo de esto es un sistema de facturación, donde tienes 3 entidades importantes involucradas y relacionadas, los clientes, los productos y la factura como resultado de una transacciones. Pues bien, la relación de cliente factura, para saber a quién debemos entregar, que entregar y a quien cobrar, los productos, relacionados con la factura, cuales, sus cantidades, sus precios unitarios y totales, etc.

            “Camps, R., Casillas, L., Costal, D., Gibert, M., Martín, C., y Pérez, O. (2005) Software libre” definen en su libro que una base de datos es “una base de datos es un conjunto estructurado de datos que representa entidades y sus interrelaciones. La representación será única e integrada, a pesar de que debe permitir utilizaciones varias y simultáneas.”

·         Características generales de una base de datos.
Como ya he mencionado en el párrafo anterior, las bases de datos deben cumplir ciertas características para que puedan ser llamadas bases de datos, y a diferencia de archivos normales los cuales manejan un solo tipo de datos, las bases de datos manejan o contienen datos de diferentes tipos, es decir, mientras en un archivo de texto, todos los datos almacenados en el son tratados como texto, en una BD pueden existir datos de tipo texto, numérico (integer, long, etc), booleano, memo, etc.
            Una base de datos en si misma nos permite realizar consultas no predefinidas, es decir, que al escribir una serie de sentencias (comandos) podemos seleccionar información que cumpla unos criterios de selección por cualquiera de sus campos sin importar el tipo de dato que este contenga. Estos criterios de selección pueden ser tan complejos como sean necesarios, es decir, podemos buscar la información por edad, color de ojos, estatura, número de hijos, etc. Pero eso si, debe existir un campo en la base de datos que contenga dicha información, no podremos buscar por salario, si dicha información no es almacenada en la estructura de la base de datos. Para hacer estas consultas, de forma fácil y entendible, se desarrollaron lenguajes para interpretar lo que deseamos, esto dentro de un estándar, el lenguaje SQL (del ingles Structured Query Language)  nos permite en un sistema de gestión de bases de datos relacionales especificar diferentes operaciones.
            Encontramos también en una base de datos flexibilidad, para que cuando un sistema de información requiera cambios, estos se puedan realizar sin restricciones críticas para el mismo, por ejemplo, si definimos un campo para guardar un nombre de 15 caracteres y después requerimos ampliarlo a 50 caracteres, esto será posible sin afectar el SI porque es en la base de datos donde definimos el tamaño del campo, no en el SI. Y ahí aparece una característica mas, y es la independencia, es muy importante que exista la mayor independencia entre los datos y los procesos, precisamente, para facilitar en parte la evolución o mejoras del SI.

            Otra característica que determina a una base de datos es la redundancia, en una base de datos podemos eliminar la redundancia gracias a otra característica la relación, es decir, podemos agrupar información (normalmente los llamamos tablas) con un identificador único, como ejemplo los datos personales, donde tenemos el número de identificación, el nombre, los apellidos, la edad, dirección, ciudad, etc. Y en otro grupo de información, tenemos las clases a las que asisten estas personas. Cuando un profesor desea acceder a la información de sus alumnos, esta información no se encuentra duplicada en las tablas con la información del curso, en ella solo encuentra los números de identificación, pero gracias a la eliminación de la redundancia y a la relación, puede generar ese listado con los datos asociados al número de identificación.  No siempre es posible eliminar la redundancia de información, por ejemplo, los atributos que utilizamos para relacionar la información (llaves) deberá conservarse en las tablas que deseamos relacionar, y en ocasiones, es más fácil y menos costoso, duplicar la información en varias tablas.
            Estas características traen con si una problemática y es la integridad, al estar los datos distribuidos en diferentes tablas y relacionados por campos con información única (llaves) se hace necesario que la BD tenga integridad de la información, como mencione en el ejemplo anterior, esto es, que el número de identificación almacenado en la tabla de clases, debe tener un correspondiente y único número en la tabla que almacena los datos personales. Para ello se crean reglas de integridad en los modelos de bases de datos. Estas reglas las define el diseñador de la BD, y el motor (o Sistema de Gestión de la Base de Datos – SGBD) entiende y hará cumplir, incluso, el mismo sistema tiene reglas predefinidas que siempre cumplirá.  En síntesis, existen reglas del motor, del diseñador y del propio usuario.
            Pues bien, se hace necesario entonces, que sea posible recuperarnos de una falla de integridad y es allí donde el sistema incorpora métodos de reconstrucción, mantenimiento y recuperación de la integridad de la información. Para ello se hace necesario incorporar procesos como el backup periódico de las transacciones, los datos entre otros.
            Es importante, también, la concurrencia, esta es una de las características, si no es la más importante, una de las mas requeridas.  Gracias a esta característica, muchos usuarios o procesos puedan acceder a la información al mismo tiempo; cuando el acceso es de solo lectura, es decir, no serán actualizados los datos, el problema radica en el desempeño de la aplicación, es decir, que tan rápido responderá la BD a las consultas con los recursos existentes. Pero cuando mas de un usuario actualiza información en el mismo registro, esto puede causar interferencia, es decir, fallas o perdida de integridad, para ello los motores tienen procedimientos basados en transacciones para evitar esto. Una transacción según la definición de Camps, Casillas, Costal, Gibert, Martín y Pérez es “un conjunto de operaciones simples que se ejecutan como una unidad. Los SGBD deben conseguir que el conjunto de operaciones de una transacción nunca se ejecute parcialmente. O se ejecutan todas, o no se ejecuta ninguna”, para lo cual el SGBD incorpora comandos como COMMIT, ROLLBACK.

·         Identifique, describa y explique en qué consiste el modelo entidad-relación de una base de datos.
El modelo entidad-relacion de una base de datos es la interrelación que existe entre las entidades de la BD y sus atributos llave. Las relaciones entre entidades pueden ser uno a uno o uno a muchos; en ocasiones es necesario crear relaciones mucho a muchos, las cuales, normalmente no son recomendadas y debemos tratar de evitarlas, para ello se crea una entidad intermedia como en la imagen siguiente, la relación profesores-cursos seria mucho a muchos, creamos la tabla intermedia ProfesoresCursos, la cual tiene una relación profesor-ProfesoresCursos uno a muchos y ProfesoresCursos-Cursos Muchos a uno.




Los campos llave idprofesor y idcurso son los campos utilizados para realizar la relación con la entidad intermedia, la cual tiene una llave profesor y curso.

·         ¿En qué consiste la normalización de una base de datos?
La normalización de bases de datos es un proceso donde se designan y aplican reglas de nominadas "forma normal" a las relaciones obtenidas al crear el modelo entidad-relación. Esto se hace para evitar la redundancia de datos.
            Con ello se evita cambiar datos que existen en más de una entidad, ya que al actualizarse se deberían cambiar en todas las entidades donde exista. Un cambio en la dirección de un cliente es mucho más fácil de implementar si los datos sólo se almacenan en la tabla Clientes y no en algún otro lugar de la base de datos, Además del espacio que consumiría en el disco. Entre los procesos que se realizan están los cálculos de accesos a disco, las rutas de acceso a la información, etc.
Si se cumple la primera regla, se dice que la base de datos está en la "primera forma normal". Si se cumplen las tres primeras reglas, la base de datos se considera que está en la "tercera forma normal". Aunque son posibles otros niveles de normalización, la tercera forma normal se considera el máximo nivel necesario para la mayor parte de las aplicaciones.
Primera forma normal
•Eliminar los grupos repetidos de las entidades individuales.
•Crear una entidad independiente para cada conjunto de datos relacionados.
•Identificar cada conjunto de datos relacionados con una llave principal.

Segunda forma normal
•Crear entidades independientes para conjuntos de valores que se apliquen a varios registros.
•Relacionar estas tablas con una llave externa.

Tercera forma normal
•Eliminar los campos que no dependan de la llave.


FUENTE: Gómez, E., Martínez, P., Moreda, P., Suárez, A., Montoyo, A., y Saquete, E. (2003). Bases de datos 1

·         ¿Qué es una base de datos orientada a objetos?
Una base de datos orientada a objetos es aquella que integra las características de una base de datos con las de un lenguaje de programación orientado a objetos, el resultado es un sistema autónomo de gestion de la base de datos orientada a objetos (ODBMS, object database management system), el cual tiene embebido todo lo necesario para gestionar los datos, su validación, acceso, eliminación, etc.
            Este tipo de bases de datos es muy utilizado en los sistemas CAD y CASE.

·         Identifique y explique las operaciones que se pueden realizar sobre una base de datos.
En las bases de datos se pueden ejecutar varias operaciones, entre ellas:
Referentes al almacenamiento
•CREATE DATABASE para crear una nueva base de datos vacía.
•DROP DATABASE para eliminar completamente una base de datos existente.
•CREATE TABLE para crear una nueva tabla, donde la información se almacena realmente.
•ALTER TABLE para modificar una tabla ya existente.
•DROP TABLE para eliminar por completo una tabla existente.

Referente a los datos
•SELECT para leer (o seleccionar) datos.
•INSERT para añadir (o insertar) nuevos datos.
•UPDATE para cambiar (o actualizar) datos existentes.
•DELETE para eliminar (o borrar) datos existentes.
•REPLACE para añadir o cambiar (o reemplazar) datos nuevos o ya existentes.
•TRUNCATE para vaciar (o borrar) todos los datos de la tabla.

·         ¿En qué consiste una base de datos distribuida?

Una base de datos distribuida (BDD) es un conjunto de múltiples bases de datos lógicamente relacionadas, distribuidas en diferentes espacios lógicos y geográficos. los sistemas de bases de datos distribuidas, no necesariamente homogéneos. Este proceso de consolidación de la información no implica la centralización de los datos, por el contrario, se mantiene localizada en diversos lugares permitiendo el acceso a la BD como si estuviera localizada en un solo lugar, permite tener accesos rápidos a la información.

Los principios fundamentales de un sistema de datos distribuido son:
1. Autonomía local.
2. No dependencia de un sitio central.
3. Operación continúa.
4. Independencia con respecto a la localización.
5. Independencia con respecto a la fragmentación.
6. Independencia de réplica.
7. Procesamiento distribuido de consultas.
8. Manejo distribuido de transacciones.
9. Independencia con respecto al equipo.
10. Independencia con respecto al sistema operativo.
11. Independencia con respecto a la red.

12. Independencia con respecto al SGBD.


·         ¿Qué aspectos de seguridad se deben tener en cuenta en una base de datos?
Cuando nos referimos a seguridad en una base de datos, podemos decir que nos referimos a varios aspectos, inicialmente a la confidencialidad de la información y con ello a la integridad y disponibilidad de la misma. Estos tres aspectos se logran con autorizaciones o derechos de acceso, a nivel global (toda la BD), por entidad (tabla) o por atributo (un campo), con el cifrado de información en los atributos (campos) críticos, esto requiere que se identifique el usuario que accede a la información, que posea una contraseña asociada a dicho usuario, o mecanismos de 2FA (Doble factor de autenticación), además de procesos de backup, de mantenimiento a la base de datos, en algunas compañías, donde la información es muy sensible, se aísla la base de datos con firewalls para que solo se acceda al puerto de consulta del motor, implementan monitores de actividad sobre el motor, etc.  


2. Realice una tabla sobre los diferentes motores de bases de datos y sus características generales, amplíe su información en el objeto de aprendizaje sobre los gestores de bases de datos

https://www.dropbox.com/s/ycc1jblcs9jm2cw/Cuadro%20comparativo.pdf?dl=0



REFERENCIAS

Camps, R., Casillas, L., Costal, D., Gibert, M., Martín, C., y Pérez, O. (2005). Software libre. Recuperado de http://goo.gl/qrViKv,

Gómez, E., Martínez, P., Moreda, P., Suárez, A., Montoyo, A., y Saquete, E. (2003). Bases de datos 1. Recuperado de http://goo.gl/6LA1mU

Márquez, M. (2002). Tema 2. Bases de Datos Orientadas a Objetos. Diseño de sistemas de bases de datos. Recuperado de http://goo.gl/oQYPhz

Definición de SQL recuperado de https://es.wikipedia.org/wiki/SQL