UT01 - Introducción a las Bases de Datos

Conexión legislativa

En esta Unidad de Trabajo nos centraremos en:


Introducción

Hay una frase muy icónica sobre la importancia de los datos que fue acuñada por Clive Humby: "los datos son el nuevo petróleo". A pesar de que el petróleo sigue siendo de gran importancia para la sociedad moderna, los datos, cada vez más, están ganando esa carrera. Sin embargo, como el petróleo, los datos deben ser refinados para que realmente tengan un valor. Cuando esto ocurre, dejamos de hablar de datos y empezamos a hablar de información.

¿Qué diferencia hay entre los datos y la información?

Algo indispensable para la información es que esté adecuadamente contextualizada:

El dato adquiere más sentido cuando se le añade contexto. El verdadero impacto se produce cuando la información se convierte en conocimiento. Si la información nos dice qué está ocurriendo, el conocimiento nos explica por qué sucede y cómo debemos actuar:

Estos 3 conceptos: dato, información y conocimiento forman parte de lo que se conoce como "la pirámide DIKW": Data, Information, Knowledge, Wisdom.

ut01-dikw.png300
Fuente: Wikipedia

¿Y qué hay de la sabiduría? Es la que nos ayuda a responder a la pregunta de "¿Qué es lo mejor a largo plazo?". Incorpora una visión más global de todo el conocimiento disponible, así como ética y valores o aspectos de sostenibilidad.

Para poder construir esta pirámide es fundamental contar con sistemas capaces de almacenar, organizar, recuperar y transformar grandes volúmenes de datos. En este módulo aprenderemos a diseñar y crear estos sistemas, así como a introducir, recuperar y transformar datos en bruto para obtener información útil. Pero primero es necesario revisar cómo se gestionaban los datos en los comienzos de la informática.


Ficheros

En un principio, la manera de gestionar los datos en la informática era mediante ficheros. Cada programa o aplicación guardaba su propia información en archivos independientes, como .txt, .csv o .dat, emulando de forma digital el antiguo sistema de carpetas y archivadores de oficina. Aunque esta aproximación supuso un gran paso respecto al papel, pronto aparecieron inconvenientes que dificultaban el tratamiento de los datos.

Los ficheros, generalmente, se dividen en 2 tipos:

Además, los ficheros tienen una extensión que representa su formato y le indica al sistema operativo qué software debe utilizarse para procesarlos correctamente. Por ejemplo:

Ficheros para el almacenamiento de datos de programas

Cuando un fichero se utiliza para almacenar datos de programas, se dice que está compuesto por registros (filas dentro del fichero). Cada uno de estos registros se divide en campos, que representan una unidad elemental de información de dicho registro.

Ejemplo

Crea un fichero llamado "clientes.csv" y añade la siguiente información:

nombre,apellidos,dni,dirección
Juan,Pérez Gómez,50013619G,Calle Mayor 12
María,López Torres,88619580M,Avenida de la Constitución 42
Rosa,Sánchez Ruíz,21134217T,Plaza España 8
  • La primera línea del fichero contiene los campos: nombre, apellidos, dni, dirección
  • A partir de la segunda línea empiezan los registros

Crea otro fichero llamado "ventas.csv" y añade la siguiente información:

dni_cliente,producto,cantidad,dirección_envío
50013619G,Ratón Inalámbrico,1,Calle Mayor 12

Aunque estos ficheros son fáciles de entender y editar, el almacenamiento de datos en ficheros presenta varios problemas:

Es por ello que, a día de hoy, se opta por lo que se conoce como Bases de Datos.


Bases de datos

Una Base de Datos (BD) es una colección organizada de datos relacionados entre sí, estructurados de forma lógica y almacenados sistemáticamente en soportes digitales para su posterior consulta, actualización y gestión. En última instancia, los datos se almacenan directamente en ficheros físicos en el disco duro pero, para su acceso, nunca se trabajan con ficheros, sino con lenguajes y aplicaciones especializadas.

Tipos de Bases de Datos

Dependiendo del criterio que utilicemos para clasificar las Bases de Datos, se pueden clasificar principalmente en:

Según la localización de los datos

Tradicionalmente, las bases de datos han seguido un modelo centralizado y basado en un modelo conocido como cliente-servidor. Esto es: existe un servidor que aloja la base de datos, y esta reside en una sola máquina. Las diferentes aplicaciones que necesitan conectarse a la base de datos (clientes) lo hacen mediante una conexión remota.

Nosotros empezaremos instalando los servicios necesarios para la gestión de bases de datos en la misma máquina desde la que haremos las consultas, pero no es lo habitual

Con el crecimiento del volumen de datos y la necesidad de alta disponibilidad, el modelo centralizado presenta limitaciones (puntos únicos de fallo, problemas de latencia e incapacidad de escalar indefinidamente en una sola máquina). Para resolver esto surgen las bases de datos distribuidas, donde los datos no residen en un solo equipo, sino que están repartidos lógicamente en varios nodos o servidores interconectados a través de una red.

Políticas de fragmentación de la información

Para distribuir la información entre diferentes servidores, la base de datos aplica diferentes estrategias conocidas como fragmentación:

Ejemplo

Supón que tenemos una base de datos distribuida en 2 servidores: S1 y S2. Siguiendo el ejemplo de los clientes.csv del apartado de ficheros, responde a las siguientes preguntas:

Según la variabilidad de los datos

Atendiendo al uso principal que se le da a la información y a la frecuencia con la que esta se modifica o consulta, distinguimos dos grandes tipos:

De OLTP a OLAP

En el trabajo diario de una empresa, las bases de datos dinámicas (OLTP) registran cada interacción inmediata (ventas, altas, facturas). Periódicamente, mediante procesos de extracción y transformación (ETL), esos datos se vuelcan en una base de datos estática (OLAP) donde los analistas de negocio (Business Intelligence) realizan informes sin ralentizar la base de datos operacional

Según el modelo de datos

El modelo de datos es el conjunto de herramientas conceptuales para describir los datos, sus relaciones, su significado y sus restricciones, de manera que se facilita la interpretación del mundo real y su representación en forma de datos en un sistema informático.

La evolución de los modelos de datos con el tiempo es el resultado de la evolución técnica de los sistemas de tratamiento de datos. En líneas generales podemos distinguir los siguientes:

Operaciones fundamentales: CRUD

Casi cualquier interacción con una base de datos se reduce a cuatro operaciones básicas:

Concepto Transversal

Para ver cómo se aplican estas operaciones en otros contextos (como peticiones HTTP en la web o manipulación de ficheros en programación), consulta la nota principal: CRUD.

Para que todas estas operaciones se ejecuten de forma transparente, sin que el usuario ni el programador tengan que manipular los archivos físicos en el disco, necesitamos un software especializado: el Sistema de Gestión de Bases de Datos (SGBD) o DBMS (Database Management System).


Sistema Gestor de Bases de Datos

Los Sistemas Gestores de Bases de Datos (SGBD), también conocidos como DataBase Management Systems (DBMS) son herramientas que permiten crear, organizar, manipular y administrar las bases de datos.

Actualmente existen muchos SGBD, cuyo funcionamiento está principalmente determinado por el modelo de datos utilizado. Algunos ejemplos de ellos son:

Curiosidad

MariaDB es un fork de MySQL creado por el propio fundador de MySQL tras la compra de Sun Microsystems por parte de Oracle. Su objetivo fue garantizar una alternativa 100% libre y gratuita, compatible a nivel de comandos y sintaxis con MySQL.

Funciones de un SGBD

Las funciones de un SGBD son:

Inconvenientes de los SGBD

Aunque los SGBD solucionan los problemas de los ficheros tradicionales, implican una serie de costes y compromisos que hacen que no siempre sean la solución óptima para cualquier escenario:

Componentes de un SGBD

Para llevar a cabo todas sus funciones, un SGBD se compone de un conjunto de módulos que interactúan entre sí:

Lenguajes de un SGBD

Para interactuar con la base de datos, el SGBD proporciona un lenguaje de consulta. En las bases de datos relacionales, el estándar es SQL (Structured Query Language). Este lenguaje se divide funcionalmente en 4 subcategorías:

Arquitectura de 3 Niveles

Para garantizar la independencia de datos (que los cambios en el soporte físico no afecten a las aplicaciones del usuario), el grupo ANSI/SPARC (American National Standards Institute, Standards Planning And Requirements Comitee) definió, en los años 70, una arquitectura de 3 niveles de abstracción claramente diferenciados:

  1. Nivel Externo (o de Vistas): es la visión de la base de datos que tienen los usuarios finales o aplicaciones. Cada usuario ve únicamente la información relevante para su trabajo a través de vistas personalizadas, ocultando el resto de la base de datos por motivos de simplicidad y seguridad. También permite generar informes y formularios para la consulta e introducción de datos a usuarios sin conocimientos técnicos sobre el lenguaje de consulta.
  2. Nivel Conceptual: es la visión global e integrada de toda la base de datos. Describe qué datos se almacenan, qué relaciones existen entre ellos y qué restricciones de integridad se aplican, de forma totalmente independiente del hardware y del software del SGBD.
  3. Nivel Interno (o Físico): describe cómo se almacenan físicamente los datos en los soportes de almacenamiento (estructuras de archivos, índices de búsqueda, punteros, bloques de disco y técnicas de compresión).
Independencia de datos en la práctica

  • Independencia lógica: permite modificar el nivel conceptual (añadir una nueva tabla o campo) sin tener que rehacer las aplicaciones del nivel externo.
  • Independencia física: permite cambiar el almacenamiento físico (migrar de un disco SSD a un array RAID o modificar los índices) sin alterar el nivel conceptual ni el código de las aplicaciones.

graph TD
    classDef externo fill:#3b82f6,stroke:#1d4ed8,color:#fff;
    classDef conceptual fill:#10b981,stroke:#047857,color:#fff;
    classDef interno fill:#f59e0b,stroke:#b45309,color:#fff;
    classDef fisico fill:#6b7280,stroke:#374151,color:#fff;

    subgraph Nivel_Externo ["1. NIVEL EXTERNO (vistas)"]
        V1["Vista usuario / App 1"]
        V2["Vista usuario / App 2"]
        V3["Vista usuario / App N"]
    end

    subgraph Nivel_Conceptual ["2. NIVEL CONCEPTUAL (esquema lógico)"]
        NC["Esquema conceptual
(entidades, relaciones y reglas)"] end subgraph Nivel_Interno ["3. NIVEL INTERNO (esquema físico)"] NI["Esquema interno
(estructuras de almacenamiento e índices)"] end subgraph Almacenamiento ["ALMACENAMIENTO FÍSICO"] BD[("Base de Datos en disco")] end V1 <-->|"Independencia lógica"| NC V2 <-->|"Independencia lógica"| NC V3 <-->|"Independencia lógica"| NC NC <-->|"Independencia física"| NI NI <--> BD class V1,V2,V3 externo; class NC conceptual; class NI interno; class BD fisico;

Pueden existir uno o más niveles externos, pero solamente existe un nivel conceptual y un nivel interno.

En el ciclo de DAW, el objetivo principal no es formar administradores de bases de datos (DBA), sino desarrolladores web. Por ello, tus metas principales serán:

Por tanto, en este módulo no nos preocuparemos tanto por la parte física de la base de datos, nos centraremos mucho más en la parte lógica.

Nota

Si ahora mismo este nivel de abstracción resulta algo complejo de visualizar, no te preocupes. A medida que diseñemos nuestras primeras tablas y ejecutemos consultas en las siguientes unidades, todo irá cobrando sentido de forma natural.


Legislación sobre el uso de Bases de Datos en España

En España, el tratamiento y almacenamiento de datos de carácter personal en bases de datos está estrictamente regulado para proteger la privacidad y los derechos de los ciudadanos.

Como desarrolladores web, no basta con que una base de datos sea eficiente y segura a nivel técnico, también debe cumplir la legalidad vigente

Marcos Normativos Principales

Actualmente, el marco legal se compone principalmente de dos normativas interconectadas:

  1. RGPD (Reglamento General de Protección de Datos):
    • Ámbito: Unión Europea (Reglamento UE 2016/679).
    • Impacto: es la norma suprema en materia de protección de datos en todos los países de la UE. Introduce sanciones elevadas y el principio de responsabilidad proactiva. Esto es: las empresas que manejen datos personales con alguna aplicación informática no sólo deben cumplir la ley, sino que tienen que ser capaces de demostrar que adoptan las medidas técnicas necesarias para garantizar la seguridad de los datos desde la fase de diseño de dicha aplicación.
  2. LOPDGDD (Ley Orgánica de Protección de Datos y Garantía de los Derechos Digitales):
    • Ámbito: España (Ley Orgánica 3/2018).
    • Impacto: adapta y especifica el RGPD europeo a la legislación española, incluyendo además un capítulo dedicado a los derechos digitales (derecho al olvido, desconexión digital, neutralidad de la red, etc.). Además, establece una autoridad de control: la Agencia Española de Protección de Datos (AEPD)
      Curiosidad

      La AEPD es el organismo oficial encargado de velar por la privacidad y aplicar las sanciones por incumplimiento. En su guía sobre el uso de dispositivos móviles en centros docentes, alertan de los riesgos para la privacidad del alumnado y desaconsejan el uso de teléfonos móviles personales en las aulas cuando existan otros medios educativos más idóneos.

El artículo 9 del RGPD define lo que se consideran datos de categoría especial (o datos sensibles). Se prohíbe con carácter general el tratamiento de este tipo de información, salvo excepciones muy concretas y reguladas. Estos datos incluyen:

Requisitos y obligaciones - Derechos ARSULIPO

Como desarrolladores, vamos a tener acceso a datos personales de los usuarios que utilicen nuestras aplicaciones y debemos cumplir de forma estricta los principios y obligaciones legales indicados por el RGPD (licitud, minimización, exactitud, limitación del plazo, seguridad, etc.).

Para garantizar el cumplimiento de estos principios, la legislación reconoce a los ciudadanos los llamados derechos ARSULIPO. Nuestra responsabilidad como desarrolladores web es diseñar la base de datos y la lógica de la aplicación web para responder técnicamente a cada uno de ellos:

  1. A - Acceso: el usuario tiene derecho a saber qué datos personales suyos tenemos almacenados.
    • Por ejemplo: debemos diseñar una vista en la aplicación ("Mi Perfil") que consulte y muestre todos los registros asociados al usuario en la base de datos.
  2. R - Rectificación: el usuario puede exigir la corrección de datos inexactos o incompletos.
    • Por ejemplo: habilitar formularios web de edición que ejecuten operaciones de actualización (UPDATE).
  3. SU - Supresión ("Derecho al olvido"): el usuario tiene derecho a solicitar el borrado de sus datos cuando finalice la relación o retire su consentimiento.
    • Por ejemplo: ejecutar un borrado físico (DELETE) o anonimizar la información (como renombrar el registro a Usuario_Eliminado). Si existe una obligación legal de conservar ciertos datos, se debe aplicar un bloqueo de datos previo a su destrucción definitiva.
  4. LI - Limitación del tratamiento: el usuario puede solicitar que se suspenda temporalmente el uso de sus datos.
    • Por ejemplo: incluir un campo los datos de usuarios (como is_restricted = true) para omitir la fila en las consultas habituales.
  5. P - Portabilidad: el usuario tiene derecho a obtener una copia de sus datos para trasvasarlos libremente a otra plataforma.
    • Por ejemplo: crear una opción que extraiga la información del usuario y genere un archivo descargable en un formato estructurado y estándar (XML, JSON, CSV...).
  6. O - Oposición: el usuario puede negarse a que sus datos se utilicen para fines secundarios para los que no dio un consentimiento explícito (como el envío de publicidad o la elaboración de perfiles para campañas de marketing).
    • Por ejemplo: se deben incluir casillas de verificación en el panel de configuración del usuario para que pueda desactivar los envíos comerciales sin necesidad de eliminar su cuenta.

ut01-arsulipo.webp600
Fuente: 7experts

Regla de oro de seguridad

Independientemente de los derechos que ejercite el usuario, nunca se deben almacenar contraseñas en texto plano dentro de una base de datos. Almacenarlas sin cifrar constituye una infracción muy grave del principio de confidencialidad e integridad de la LOPDGDD. Las contraseñas deben guardarse siempre procesadas mediante algoritmos de hashing seguro (como bcrypt).