UD 7. BASES DE DATOS
Índice
¿Qué tengo que hacer?
En este tema debes aprender que es una Base de Datos y los conceptos básicos de los principales elementos que la componen. Para ello, a medida que avanzamos con las actividades de esta situación de aprendizaje tendrás que construir una base de datos de ventas y compras de productos para una empresa determinada.
Una vez construida la base de datos, tendrás que generar información y obtener informes para la dirección de la empresa.
¿Qué tengo que entregar?
En Classroom tendrás que hacer entrega de una memoria del trabajo que has realizado. Esta memoria tendrás que realizarla con la herramienta Google Doc y como mínimo debe contener los siguientes apartados:
Portada.
Índice.
Descripción del trabajo.
Esquema de la Base de Datos donde aparezcan todas las Entidades con sus atributos y las relaciones existentes entre ellas.
Enlace al archivo donde se encuentran todos los comandos SQL necesarios para crear la base de datos vacía.
Enlace al archivo donde se encuentran todos los comandos SQL necesarios para cargar con información inicial nuestra base de datos.
Informes solicitados por la dirección. Debe aparecer cada una de las consultas SQL que se han utilizado así como un enlace al documento de hoja de cálculo donde aparece el resultado de cada consulta SQL.
Conclusión final del trabajo. ¿Qué te ha parecido el mundo de las Bases de Datos? ¿Piensas que las bases de datos aportan mucho o poco a los sistemas de información que hoy en día nos rodean?
Antiguamente las aplicaciones almacenaban la información en ficheros independientes, es decir, antes de que surgieran las bases de datos todo el tratamiento de la información se realizaba mediante ficheros. Los ficheros se diseñaban a medida para cada sistema de información, sin que existiera un formato común. Esta forma de organizar la información impedía que la información de una empresa se pudiese explotar correctamente a medio o largo plazo. Por ejemplo; el programa (software) utilizado por el departamento de recursos humanos debía gestionar un fichero con los datos de los empleados, mientras que el programa de contabilidad mantenía otro fichero distinto con los mismos datos de los empleados pero organizados de otra forma. Esta forma de gestionar los datos dio lugar a los siguientes inconvenientes:
Redundancia de datos ( existía duplicidad de la misma información ).
Mal aprovechamiento del espacio de almacenamiento.
Aumento en el tiempo de proceso de las aplicaciones.
Inconsistencia de la información debida a la redundancia de datos. Por ejemplo: si un dato cambiaba en el fichero de una aplicación, NO cambiaba en los demás ficheros.
Aislamiento de la información (imposibilidad de transferencia a otros programas a nos ser que se desarrollasen programas de migración de datos específicos ).
En definitiva vemos que existía una gran falta de flexibilidad originada en gran medida por la dependencia total de la estructura física de los datos. En las siguientes imágenes vemos algunos ejemplos de organización de la información en estos ficheros:
Una base de datos es un conjunto de datos almacenados en un soporte informático de forma que puede accederse de forma eficiente por varias aplicaciones y usuarios simultáneamente. Los datos deben de estar interrelacionados y estructurados de acuerdo a un modelo definido.
Si nos centramos en sus ventajas e inconvenientes, tenemos:
Ventajas
Se elimina la redundancia y la inconsistencia de datos.
Facilita el acceso a los datos de forma independiente de la aplicación.
Garantiza la seguridad y la privacidad. Es el propio sistema quien pone medios para garantizar cierta seguridad y privacidad.
Permite el acceso concurrente a la información.
Inconvenientes
Instalación más costosa.
Necesitan personal especializado.
La implantación es larga y difícil.
No suelen ser rentables a corto plazo.
Entre los distintos niveles de abstracción de la base de datos destacamos:
Nivel lógico (Externo): cada usuario posee información de aquella parte de la BD que le afecta o corresponde. Cada usuario o grupo de usuarios tiene una lista de la parte que le corresponde.
Nivel conceptual: es la totalidad de la información de la BD. Es el diseño abstracto de la BD.
Nivel físico: es el nivel más cercano al hardware (se encuentra ligado a él). A nivel físico se describe cómo se encuentran los datos almacenados físicamente.
Es un conjunto de programas, procedimientos y
lenguajes que proporcionan los medios necesarios para describir, recuperar y manipular los datos almacenados en la BD, manteniendo la integridad, confidencialidad y seguridad.
En esta parte de la actividad veremos los distintos elementos que forman parte de un diseño relacional de una base de datos, concretamente hablamos de; Entidades, Atributos, Relaciones, Modelo E/R, Modelo Relacional.
Se trata de una herramienta para el modelado de datos, la cual facilita la representación de las distintas entidades de una BBDD.
Se basa en la utilización de tablas. Cada una de estas tablas tiene definidos una serie de columnas que se las llama Campos o Atributos y a las filas se las llama Tuplas. A través de estas columnas se relacionan unas tablas con otras.
En la siguiente imagen podemos ver resumido el proceso de diseño de una base de datos:
Veamos lo visto hasta el momento con un ejercicio práctico.
Diseña una base de datos para una pequeña empresa que debe contener información acerca de clientes, artículos y pedidos. Hasta el momento se registran los siguientes datos en documentos:
Para cada cliente:
Nombre.
Apellido 1.
Apellido 2.
Dni.
Dirección de envío.
Para cada artículo:
Nombre
Precio
. Para cada pedido, que puede constar de:
Varios artículos
Se indica la cantidad de cada uno de los artículos
Fecha en la que se realiza el pedido
4. Las direcciones de envío se entenderán como:
Número
Calle
Ciudad
Partiendo de las solución anterior ahora debes construir con la herramienta Draw.io los esquemas correspondientes a los modelos entidad/relación y al modelo relacional de las entidades necesarias para poder Gestionar las Ventas y Compras de nuestra empresa. Recordemos que como mínimo tenemos que identificar y gestionar las siguientes entidades:
Productos.
Clientes.
Albaranes de Venta.
Albaranes de Compra.
Stock.
Pedidos de Venta.
Pedidos de Compra.
Una vez tengas construidos ambos modelos, incluyelos en tu memoria del proyecto que será el documento que finalmente entregues para la evaluación final del tema.
Una vez que hemos aprendido como debemos pasar del mundo real al mundo del diseño de una base de datos, el siguiente paso será comenzar a construir "físicamente" nuestra base de datos. Para ello, será necesario adentrarnos en el maravilloso mundo del lenguaje SQL. En esta actividad veremos.....
¿Qué es?, Para qué sirve, Elementos del lenguaje, Normas de escritura.
Características de SQL
Declarativo --> Un lenguaje es declarativo cuando con ellos no indicamos cómo hacer las cosas, es decir, lo único que indicamos con las instrucciones que programamos es qué cosas queremos hacer pero NO como hacerlas.
Código más corto y más optimizado.
Métodos únicos para programar.
Fácil de optimizar.
Normalizado.
Potente y versátil.
Lenguaje natural.
Capacidad de SQL
Definición de la estructura de la base de datos --> Nos permite crear y modificar la estructura de la BBDD.
Consultar, organizar y reorganizar los datos --> Podremos consultar actualizar y reorganizar los datos de la BBDD.
Especificación de conexiones seguras --> Somos capaces de controlar el acceso a los datos por parte de los usuarios.
El lenguaje SQL esta compuesto por comandos, clausulas, operadores, funciones y literales. Todo un conjunto de elementos que nos permitirán realizar una multitud de operaciones sobre nuestros datos. Los distintos comandos del lenguaje se clasifican de la siguiente forma:
Lenguaje de Definición de Datos (DDL): Esta parte del lenguaje se utiliza para crear y definir nuevas bases de datos, tablas, campos, etc...
Lenguaje de Manipulación de Datos (DML): Esta parte del lenguaje nos permite generar consultas para ordenar, filtrar y extraer datos de la base de datos. También nos permite insertar y eliminar datos de la base de datos.
Control y seguridad de Datos (DCL): Con esta parte del lenguaje podremos administrar los permisos de acceso de los distintos usuarios de nuestra base de datos.
Podemos decir que las clausulas son palabras especiales del lenguaje SQL que nos permiten modificar el comportamiento de un determinado comando. Entre las más importantes, destacamos las siguientes:
Por otro lado, los operadores nos van a permitir aplicar condiciones cuando queramos analizar nuestros datos. Entre los más importantes destacamos los siguientes:
Las funciones nos van a permitir calcular valores agregados partiendo de la selección de datos realizada. Entre las funciones más importantes destacamos las siguientes:
Una restricción es una condición que una o varias columnas de una tabla debe cumplir obligatoriamente. Entre los distintos tipos de restricciones destacamos las siguientes:
Primary Key: Todas las tablas deben tener una restricción de este tipo y solo una. Esta clave podrá ser referenciada como una clave ajena y aplicarán las restricciones NOT NULL y UNIQUE al campo o campos de la tabla que formen la clave primaria.
Foreing Key: Son campos que se relacionan con las claves primarias de otras tablas. Por tanto, cuando se guarda el valor, este debe existir en la tabla de origen.
Not Null: Obliga a que el dato de la columna que tenga esta restricción nunca sea NULL.
Unique: Impide que existan valores duplicados en la columna.
Default: Nos permite insertar un valor por defecto en el campo de la tabla que implemente esta restricción. Este valor se define en la misma restricción.
NOTA IMPORTANTE: El orden en el que ejecutamos los comandos (o instrucciones) es muy importante ya que necesitaremos crear algunos elementos para poder crear los siguientes.
Para construir nuestras bases de datos vamos a trabajar con la herramienta online sqliteonline. En el siguiente enlace os dejo un script de base de datos con los comandos necesarios para construir la base de datos correspondiente al siguiente modelo entidad/relación.
Tu tarea en este ejercicio será abrir el archivo en la herramienta de trabajo sqliteonline y realizar las siguientes tareas:
Ejecutar los comandos contenidos del archivo y ver como se crean todas las tablas de la base de datos.
Realizar una lectura de los comandos del archivo para ver que entiendes todo su contenido y en caso contrario pregunta al profesor las dudas que te surjan.
Prepara los comandos necesarios para insertar nuevos datos en las tablas que consideres oportuno. Con dos o tres registros nuevos será suficiente.
Prepara el comando necesario para eliminar algún dato de alguna de las tablas del modelo.
Prepara alguna consulta para extraer información de la base de datos.
Antes de nada haremos una actividad de Aprendizaje Cooperativo junto con el compañero o compañera con el que estas realizando la construcción de la base de datos. Concretamente trabajaremos con el siguiente material:
Alumno 1. Lenguaje SQL - DDL.
Alumno 2. Lenguaje SQL - DML.
Cada alumno dedicará unos 15/20 minutos a leer y probar su material en el nuevo entorno de trabajo de esta unidad didáctica ( sqliteonline ). Tras estos 15/20 minnutos cada alumno explicará al compañero su material. Al finalizar la actividad, los dos alumnos tendrán que conocer tanto el lenguaje SQL de definición de datos (DDL) como el lenguaje SQL de manipulación de datos (DML).
Tras la actividad anterior y partiendo del modelo relacional que creasteis para poder Gestionar las Ventas y Compras de nuestra empresa, ahora debéis crear un archivo donde incluyáis todos los comandos necesarios para crear la base de datos al completo.
Una vez tengas construidos todos los comandos guarda tu archivo en Google Drive e incluye el enlace en tu memoria del proyecto que será el documento que finalmente entregues para la evaluación final del tema.
Una vez que ya tenemos creada nuestra base de datos llega el momento de cargar las distintas tablas con los distintos datos que necesitemos. Este proceso recibe el nombre de importación de datos y para ello se pueden dar los siguientes escenarios:
Primera Base de Datos sin necesidad de carga de datos
En este escenario NO es necesaria la carga de datos ya que serán los usuarios finales quienes alimenten los datos mediante el uso diario de la aplicación o programa correspondiente. Este escenario rara vez se da.
Primera Base de Datos con necesidad de carga de datos
En este escenario SI es necesario la carga inicial o importación de datos. Cuando se da este escenario la empresa normalmente tiene sus datos dispersos en distintas hojas de cálculo y es responsabilidad del equipo de base de datos dar formato a estos datos e insertarlos en la nueva base de datos. Este será el escenario que simularemos en nuestro trabajo.
Segunda Base de Datos
Este último escenario viene marcado por la evolución tecnológica. Es esta evolución la que lleva a las empresas a realizar actualizaciones en sus sistemas para que estos sean lo más eficientes posibles y esto se traduzca en una mayor productividad de sus empleados. Este escenario requiere de un trabajo importante por parte del equipo de base de datos, sobre todo si la nueva base de datos NO es del mismo fabricante que la actual.
Por lo tanto, cambiar de Base de Datos NO es tarea fácil. Aunque todos parten del mismo estándar, después cada fabricante ha desarrollado su propia arquitectura, su propio sistema de almacenamiento en memoria y sus propios tipos de datos.
En la siguiente imagen podemos ver las características particulares de un grupo importante de fabricantes de Sistemas Gestores de Bases de Datos (SGBD).
Según lo especificado en el cuadro anterior, los cuatro gestores cuentan con tipos DATE, pero Oracle y MySQL carecen de tipo TIME, como exige el estándar. SQL Server y PostgreSQL incluyen un tipo TEXT que no existe en los otros dos gestores. En Oracle no existe el tipo BOOLEAN y en SQL Server se llama BIT. Aunque los gestores suelen ofrecer herramientas de importación, exportación y transferencia de datos desde otros SGBD, obviamente coger una base de datos creada en un sistema. y transferirla a otro es un proceso arduo y complejo. En la mayoría de los casos requiere de un proceso de migración, que implica crear un software (programa) específico para llevar a cabo la transferencia de datos.
Nosotros en nuestro proyecto trabajaremos con el segundo escenario que hemos comentado; Primera Base de Datos con necesidad de carga de datos. Para ello nos ayudaremos de las hojas de cálculo. Para entender bien el proceso de trabajo que debemos seguir, comentaremos en clase el siguiente ejemplo:
En el siguiente enlace tenemos un script de base de datos que nos crea dos tablas; Creación de Tablas.
En el siguiente enlace tenemos la hoja de cálculo que se encargará de crear los datos correspondientes en las dos tablas anteriores; Importación de Datos.
Ahora es tu turno, debes realizar una carga de datos para cada una de las tablas incluidas en tu base de datos. Como mínimo cada tabla debe tener 20 filas o registros.
En esta actividad vamos a trabajar con el comando SELECT del lenguaje SQL y sus distintas variantes. Para ello, en primer lugar, os dejo un resumen bastante completo de los comandos SQL más importantes:
En el siguiente fichero ( clic aquí ) disponéis de un conjunto de consultas de ejemplos realizadas sobre la base de datos construida con los siguientes scripts:
Veremos en clase cada una de las consultas, su estructura y su finalidad para obtener los distintos informes.
Ahora te toca a ti demostrar lo aprendido, para ello, debes montar las consultas necesarias para extraer de tu base de datos la información solicitada por la Dirección de tu empresa, concretamente:
Listado de clientes ordenado por su nombre de forma descendente.
Listado de artículos con su stock disponible.
Listado de pedidos ordenado por los siguientes criterios; Nombre del Cliente, fecha de pedido ascendente.
Número total de pedidos de venta que la empresa ha recibido.
Modificar la consulta del apartado 3 para que aparezca el importe total de cada pedido como una columna más en el informe.
Listado de aquellos clientes que NO hayan realizado ningún pedido.
Necesitamos localizar a los tres clientes que hayan realizado más pedidos.
Necesitamos localizar aquellos artículos que más demandan nuestros clientes. Para ello, necesitamos un listado de aquellos artículos para los que más pedidos han realizado los distintos clientes de nuestra empresa.
Cuando hablamos del proceso de exportación de datos nos referimos al conjunto de tareas que tenemos que realizar para pasar una determinada base de datos a un conjunto de archivos externos al SGBD (Sistema Gestor de Base de Datos). Normalmente la finalidad del proceso de exportación de datos esta relacionada con una necesidad de almacenamiento o distribución de los datos. Hablamos de almacenamiento cuando el proceso de exportación se realiza para obtener una copia de seguridad de los datos y hablamos de distribución de los datos cuando el proceso de exportación se realiza para enviar la información a un segundo sistema con finalidades distintas, por ejemplo el envío de la información a un sistema experto en Análisis de Datos (Big Data).
Normalmente todos los programas con los que trabajaremos para realizar operaciones sobre las bases de datos disponen de sus propias utilidades o herramientas de exportación. En nuestro caso, nuestro entorno de trabajo dispone de las siguientes herramientas:
En el menú tenemos la opción Export tal y como vemos en la imagen anterior. Al hacer clic nos aparecen distintas opciones, comentaremos a continuación aquellas que nos interesan aprender en este tema:
SQL Schema: Con esta opción el entorno de trabajo nos generará un archivo con todos los comandos DDL necesarios para crear nuestra base de datos. Recuerda que los comandos DDL son aquellos comandos de SQL orientados a definir la estructura de los distintos objetos de nuestra base de datos (Tablas, Claves primarias, Claves secundarias, etc...).
CSV: Con esta opción el entorno de trabajo nos permite generar un archivo CSV con todos los datos de una determinada tabla de nuestra base de datos.
Para finalizar nuestro proyecto de base de datos debes crear una carpeta en Google Drive denominada "Copia Seguridad Base de Datos". A continuación debes realizar las siguientes tareas:
Dentro del directorio anterior debes crear dos subdirectorios con los siguientes nombres: DDL y DATOS.
Utilizando la opción SQL Schema de nuestro entorno debes crear un archivo donde aparezcan todos los comandos DDL necesarios para crear tu base de datos. Este archivo debes almacenarlo en el directorio DDL creado en el paso anterior.
Utilizando la opción CSV de nuestro entorno de trabajo debes crear un archivo CSV para cada una de las tablas de tu base de datos. Cada archivo CSV debes almacenarlo dentro del directorio DATOS creado en el paso 1 en tu unidad de Google Drive.
NO olvides cambiar los permisos del directorio "Copia Seguridad Base de Datos" para que cualquier persona con el enlace pueda ver el contenido de dicho directorio y de esta forma yo pueda evaluar la tarea.
Por último, incluye en la memoria de tu proyecto un apartado denominado Copia de Seguridad. Dentro de este apartado debes incluir el enlace que nos permite abrir el directorio "Copia Seguridad Base de Datos" que has creado en esta tarea.
Ya solo te queda incluir en tu memoria del proyecto vuestra conclusión final, recuerda que debes dar respuesta a las siguientes cuestiones:
¿Qué te ha parecido el mundo de las Bases de Datos?
¿Piensas que las bases de datos aportan mucho o poco a los sistemas de información que hoy en día nos rodean?