Currículo: esta unidad cubre parte de los saberes básicos del Bloque C – Software de aplicación para sistemas informáticos (TICO.1.C.4.1, TICO.1.C.4.2, TICO.1.C.4.3, TICO.1.C.4.4, TICO.1.C.4.5, TICO.1.C.4.6 y TICO.1.C.3.7) correspondiente a 1º Bachillerato. Además, se evalúan los criterios que puedes encontrar al final de esta página.
Tabla de contenidos
- 8.1. Sistemas gestores de bases de datos relacionales.
- 8.2. Tablas, registros y campos. Tipos de datos.
- 8.3. Claves y relaciones.
En este mundo interconectado, cada acción que realizamos se convierte en un dato. Desde la búsqueda de información en internet hasta la interacción en redes sociales, pasando por las compras online y el visionado de series en plataformas de «streaming». Todos estos datos necesitan ser almacenados, gestionados y procesados de manera eficiente para que la información esté disponible al instante. Aquí es donde entra en juego el mundo de las bases de datos.

Las bases de datos no son solo el corazón de casi todas las aplicaciones web y servicios que usamos a diario, sino que también son imprescindibles en ámbitos tan variados como la medicina, para el seguimiento de historiales clínicos; la meteorología, en la predicción del tiempo; o incluso en el deporte, para analizar el rendimiento de los atletas.
Por ejemplo, cada vez que usamos una aplicación para monitorizar nuestras rutas de «running», estamos viendo nuestro progreso al mismo tiempo que estamos interactuando con bases de datos que almacenan y procesan nuestras distancias, rutas, tiempos y comparativas.

Las bases de datos se han vuelto imprescindibles en la era de la «big data», donde la capacidad de procesar rápido enormes cantidades de información puede ser la diferencia entre tomar una decisión acertada o quedarse atrás.
Por ejemplo, las recomendaciones personalizadas que nos hacen las plataformas de comercio electrónico se basan en complejos análisis de datos almacenados sobre nuestros hábitos de compra y preferencias.

Adentrarnos en el estudio de las bases de datos nos permitirá comprender cómo se estructuran los datos en tablas, registros y campos, cómo se definen y manipulan mediante lenguajes específicos como SQL, y cómo se pueden extraer informaciones valiosas a través de vistas, informes y formularios. Además, exploraremos las diferencias entre los sistemas gestores de bases de datos relacionales, fundamentales para entender la lógica detrás del almacenamiento de datos interrelacionados, y las bases de datos NoSQL, fundamentales para manejar volúmenes de datos masivos que no se ajustan bien a esquemas predefinidos.
La habilidad para gestionar y analizar datos se ha convertido en una competencia clave en el mercado laboral actual. En este sentido, conocer el funcionamiento y la aplicación de las bases de datos nos abre las puertas a una amplia gama de oportunidades profesionales.
8.1. Sistemas gestores de bases de datos relacionales.
Es fundamental comprender que estamos hablando de una herramienta clave en el mundo de la informática y la gestión de la información.
Pero antes de conocer qué es un Sistema Gestor de Bases de Datos -SGBD-, necesitamos saber qué es una base de datos.
Una base de datos es un conjunto de información estructurada relativa a un tema determinado. Este tema puede englobar un gran número de contextos de los que nos interesa mantenernos al tanto y que queremos tener frecuentemente actualizados.
Prácticamente cualquier sistema de información o conocimiento puede estructurarse y clasificarse en una base de datos.
Hasta hace relativamente pocos años, las bases de datos eran analógicas, es decir, contenían información en papel o textos impresos. Sin embargo, con la llegada de la era digital y el Big Data se ha hecho imprescindible el uso de bases de datos informatizadas.
Gracias a las bases de datos en formato digital se han podido solucionar muchos de los problemas que surgían a raíz de la ingente cantidad de información que se maneja en la actualidad.
Por ejemplo, permiten ahorrar espacio, agilizar las consultas y se puede almacenar mucha más información. ¿Te imaginas lo engorroso que sería obtener el listado de publicaciones de un usuario de una red social si todo estuviera almacenado en papel?
Los programas que han hecho esto posible se denominan Sistemas Gestores de Bases de Datos (SGBD) o, en inglés, Database Management System (DBMS). Este tipo de programas facilitan enormemente el almacenamiento de datos y la posterior consulta de los mismos. En un principio eran usados sobre todo por grandes empresas o administraciones públicas, pero en la actualidad también los emplean todo tipo de usuarios o empresas (por ejemplo, para crear el registro de usuarios de una web).
Los SGBD no solo almacenan datos de manera eficiente, sino que también permiten su recuperación, actualización y gestión a través de relaciones lógicas entre ellos.
Estos sistemas se basan en el modelo relacional de datos, un enfoque que organiza la información en tablas compuestas por filas y columnas.

Los SGBD funcionan bajo el principio de que cada dato está relacionado de alguna manera con otro, permitiendo así consultas complejas y el mantenimiento de las relaciones entre los datos a través de reglas definidas.
Esta capacidad para establecer relaciones complejas entre diferentes tablas es lo que los hace tan potentes para el manejo de grandes volúmenes de información estructurada.
Pero, esa es solo la punta del iceberg, ya que un SGBD nos ofrece toda esta funcionalidad:
- Definición de datos: permiten la creación y modificación de la estructura de las bases de datos a través de un Lenguaje de Definición de Datos (DDL). Esto incluye la creación de tablas, definición de campos, y establecimiento de restricciones y relaciones entre tablas.
- Manipulación de datos: ofrecen herramientas para insertar, actualizar, borrar y consultar datos almacenados, utilizando un Lenguaje de Manipulación de Datos (DML). Estas operaciones son fundamentales para el manejo diario de los datos dentro de la base de datos.
- Control de transacciones: gestionan transacciones, que son secuencias de operaciones de manipulación de datos tratadas como una sola unidad. Esto asegura la integridad de los datos a través de propiedades como la atomicidad, consistencia, aislamiento y durabilidad (ACID).
- Seguridad: proveen mecanismos para controlar el acceso a los datos, asegurando que solo usuarios autorizados puedan realizar operaciones específicas. Esto incluye la gestión de permisos y roles, así como la implementación de políticas de seguridad para proteger los datos.
- Integridad de datos: mantienen la precisión y consistencia de los datos a través de restricciones de integridad, unicidad y de chequeo, que aseguran que los datos almacenados cumplan con reglas específicas.
- Consultas avanzadas: permiten la realización de consultas complejas utilizando el Lenguaje de Consulta Estructurada (SQL), incluyendo operaciones como «join», subconsultas, funciones agregadas y vistas, para extraer información significativa de los datos almacenados.
- Optimización de consultas: incluyen optimizadores de consultas que analizan y determinan la manera más eficiente de ejecutar una consulta, mejorando el rendimiento de la base de datos.
- Soporte para procedimientos almacenados: permiten definir procedimientos en la propia base de datos, que se ejecutan automáticamente en respuesta a eventos específicos, mejorando la eficiencia y centralizando la lógica de negocio.
- Gestión de la concurrencia: gestionan el acceso concurrente a los datos para asegurar que múltiples usuarios puedan trabajar con la base de datos simultáneamente sin interferir entre sí, mediante el control de bloqueos y versiones de datos.
- Copia de seguridad: ofrecen herramientas para crear copias de seguridad de los datos y recuperar la base de datos en caso de fallos o pérdida de datos, asegurando su disponibilidad.
- Soporte para datos masivos: algunos SGBD están diseñados para manejar grandes volúmenes de datos por lo que ofrecen funcionalidades muy demandadas en este tipo de tareas.
Un ejemplo práctico de la aplicación de los SGBD lo encontramos en el sector bancario, donde es vital gestionar enormes cantidades de datos relacionados con clientes, cuentas, transacciones y préstamos. Un SGBD permite a los bancos almacenar estos datos de forma segura, realizar operaciones como actualizar saldos de cuentas, procesar pagos y generar informes financieros de manera eficiente.

Entre los SGBD más destacados hoy en día se encuentran MySQL, Oracle Database, Microsoft SQL Server y PostgreSQL. Cada uno de estos sistemas tiene sus propias características, ventajas y desventajas, pero todos comparten la capacidad de trabajar con datos relacionales de manera eficiente.
| MySQL: ampliamente utilizado en aplicaciones web, es conocido por su simplicidad y eficacia en el manejo de sitios web dinámicos. | |
| Oracle Database: ofrece una solución robusta para grandes empresas, destacando por su escalabilidad, seguridad y conjunto de características para el procesamiento de transacciones complejas. | |
| Microsoft SQL Server: integrado estrechamente con productos Microsoft, es ideal para entornos que ya dependen de la infraestructura de Microsoft. | |
| PostgreSQL: un sistema de código abierto, resalta por su conformidad con los estándares SQL y su capacidad para manejar una amplia gama de cargas de trabajo, desde simples consultas hasta análisis de datos complejos. |
8.2. Tablas, registros y campos. Tipos de datos.
En el núcleo de los sistemas gestores de bases de datos relacionales se encuentran las tablas, registros, y campos, conceptos fundamentales que estructuran la manera en que se almacena y organiza la información.
Este esquema facilita almacenamiento de datos de manera sistemática y eficiente, su recuperación, actualización y gestión.
Vamos a desglosar cada uno de estos elementos y cómo interactúan entre sí para formar la base de cualquier base de datos relacional.
8.2.1. Tablas
Una tabla es una estructura que organiza datos en filas y columnas, de manera similar a como se visualiza una hoja de cálculo.
Cada tabla almacena datos sobre un tipo específico de entidad, por ejemplo, clientes, productos, o pedidos.
Este es el aspecto de una tabla que almacena datos personales:

8.2.2. Registros
Un registro (también llamado fila o tupla) en una tabla representa un único elemento o instancia de la entidad que describe la tabla.
Por ejemplo, en una tabla de clientes, un registro sería un cliente específico.
Siguiendo con el ejemplo anterior, cada fila sería un registro:

8.2.3. Campos
Los campos (también llamados columnas o atributos) son los componentes individuales de información en un registro.
Cada campo tiene un tipo de dato específico que define la naturaleza de los datos que puede contener, como texto, números, fechas, etc.
Por ejemplo, un campo «Nombre de Cliente» puede ser de tipo texto, mientras que un campo «Fecha de Nacimiento» sería de tipo fecha.

8.2.4. Tipos de datos
Los SGBD soportan diversos tipos de datos para adaptarse a las necesidades específicas de almacenamiento de información.
El tipo de dato se define sobre cada campo -columna-, cuando estamos creando la tabla.
Modificar el tipo de dato de un campo una vez que la tabla está cargada de registros, es mala idea, ya que podrían producirse inconsistencias.
Estos tipos de datos incluyen:
- Texto: para almacenar cadenas de caracteres, como nombres, direcciones o descripciones.
- Números: existen varios tipos numéricos, incluidos enteros y decimales, para almacenar números con o sin decimales.
- Fecha y hora: para almacenar fechas, horas o ambas, permitiendo realizar operaciones como cálculos de intervalos o comparaciones de fechas.
- Booleano: para almacenar valores verdadero o falso, útil para definir campos con solo dos posibles valores, estados o condiciones.
- Blob (Binary Large Object): para almacenar datos binarios, como imágenes, archivos de audio o cualquier otro tipo de archivo multimedia.
Ejercicio 8.1 – Identificando entidades
Ahora que ya tienes conocimientos básicos sobre lo más elemental de las bases de datos, debes entrenar la extracción de información de tu interés para construir una base de datos, a partir del enunciado de un problema.
Para cada uno de estos supuestos, se pide que:
- Identifiques cada una de las tablas que podría tener una base de datos que gestionara ese sistema de información, y les pongas un nombre representativo.
- Identifiques cada uno de los campos de cada tabla y elijas el tipo de dato más apropiado para ellos. Si en el enunciado no aparece de forma explícita un campo que crees que es necesario, puedes añadirlo por tu cuenta.
- Crea la tabla con sus correspondientes campos y rellénala con al menos 5 registros cada una.
Estos son los 5 supuestos sobre los que tienes que hacer todo lo anterior:
- COOL SHOES. Se desea desarrollar un sistema de información para gestionar las ventas, el inventario y los clientes de una zapatería online. Este sistema deberá permitir el registro de los productos disponibles, incluyendo información sobre el modelo, la talla, el color, el precio y la cantidad en stock. Además, deberá gestionar los pedidos realizados por los clientes, incluyendo datos del cliente, detalles del pedido y estado del envío.
- CITIUS ALTIUS FORTIUS. Un club deportivo necesita un sistema para administrar sus socios, las actividades deportivas que ofrece y las inscripciones a estas actividades. El sistema debe incluir información sobre cada socio (nombre, edad, contacto), las diferentes actividades disponibles (nombre de la actividad, horario, entrenador asignado) y el registro de inscripciones, indicando qué socio se ha inscrito en qué actividad.
- BEYOND LANGUAGE. Para una academia de inglés se requiere un sistema que gestione tanto a los estudiantes como a los cursos y profesores. Este sistema debe permitir registrar información sobre los estudiantes (nombre, nivel de inglés, contacto), los cursos ofrecidos (nombre del curso, nivel, horario, profesor) y las asignaciones de estudiantes a cursos, incluyendo las calificaciones obtenidas.
- GAS LOVERS. Un concesionario de motos necesita un sistema para administrar las ventas, el inventario de motos y los clientes. El sistema deberá incluir información detallada de cada moto (marca, modelo, año, precio, características técnicas), los datos de los clientes (nombre, dirección, contacto) y los registros de ventas realizadas, especificando la moto vendida, el cliente y la fecha de la venta.
- FOOD ROCKET. Un restaurante quiere implementar un sistema para gestionar su menú, las reservas y los pedidos a domicilio. Este sistema debe contener información sobre los platos del menú (nombre del plato, ingredientes, precio), las reservas realizadas por los clientes (nombre del cliente, número de comensales, fecha y hora de la reserva) y los pedidos a domicilio (detalles del pedido, dirección de entrega, estado del pedido).
[En classroom tienes un ejemplo resuelto, para que entiendas lo que se pide]
Entrega: debes entregar un enlace público de Google Docs antes de la fecha límite indicada en classroom.
8.3. Claves y relaciones.
En el universo de las bases de datos relacionales, las claves y relaciones nos permiten establecer conexiones lógicas entre los distintos datos almacenados. Estos conceptos son fundamentales para asegurar la integridad de los datos, evitar duplicidades innecesarias y facilitar la recuperación eficiente de la información.
8.3.1. Claves
Una clave es un atributo o conjunto de atributos que sirve para identificar de manera única cada registro dentro de una tabla.
Las claves juegan un papel vital en el mantenimiento de la integridad de los datos y en la definición de las relaciones entre tablas.
Existen varios tipos de claves, pero las dos más importantes son estas:
- Clave primaria (primary key): un atributo o conjunto de atributos que identifica de manera única cada registro en una tabla. No puede haber dos registros en una tabla con la misma clave primaria, y no puede ser nula.
- Clave foránea (foreign key): un atributo en una tabla que es la clave primaria en otra tabla. Las claves foráneas se utilizan para establecer y hacer cumplir una relación entre dos tablas.
Es obligatorio definir una clave primaria para cada tabla de una base de datos.
Por ejemplo, si tenemos una tabla -como la que hemos visto más arriba- de alumnos, ¿qué atributo sería clave primaria?
Para responder a esta pregunta debemos preguntarnos: ¿qué atributo hace que cada alumno sea distintos de todos los demás? Si lo piensas por un momento, llegarás a la conclusión que el DNI es el dato que identifica unívocamente a cada alumno, y en general, a cada persona. Por tanto, el campo DNI sería la clave primaria de la tabla ALUMNOS.
Consideremos ahora estas dos tabla, que formarían parte de una hipotética base de datos llamada TALLER. En nuestra aplicación para gestionar un taller de coches, habrá varias tablas, pero dos de ellas serán: PROPIETARIO y VEHÍCULO:
PROPIETARIO
| DNI | Nombre | Apellidos | Teléfono |
| 45112558B | Juan | Méndez Álvarez | 665000111 |
| 27000112Z | Alberto | García Castaño | 778552121 |
| 41445698K | Lucia | López Toledo | 615804142 |
VEHÍCULO
| Matrícula | Marca | Modelo | Cilindrada |
| 3399GHF | Toyota | Corolla | 1.9 |
| 5641BCD | Mercedes | CLA | 1.6 |
| 9099KDF | Nissan | Primera | 2.5 |
Como puedes ver, la tabla PROPIETARIO tiene una clave primaria -el DNI– que identifica de forma única a cada propietario. De la misma manera, la tabla VEHÍCULO tiene una clave primaria -la Matrícula– que identifica de manera única a cada vehículo.
Pero las tablas no están relacionadas, es decir, no sabemos quién es el propietario de cada vehículo, lo cual hace imposible gestionar los pagos de las reparaciones que se le hagan a ese vehículo.
Es necesario, añadir algún campo a la tabla VEHÍCULO que nos permita relacionar cada vehículo con su propietario.
VEHÍCULO
| Matrícula | Marca | Modelo | Cilindrada | Propietario |
| 3399GHF | Toyota | Corolla | 1.9 | 27000112Z |
| 5641BCD | Mercedes | CLA | 1.6 | 27000112Z |
| 9099KDF | Nissan | Primera | 2.5 | 45112558B |
Ahora, sí que sabemos que el Toyota y el Mercedes son de Alberto, y el Nissan es de Juan. A este campo que hemos añadido en la tabla VEHÍCULO -Propietario- es al que llamamos clave foránea, porque nos permite relacionar cada fila de la tabla VEHÍCULO con una fila de la tabla PROPIETARIO.
Esta relación debemos dejarla establecida diseñando un diagrama relacional de la base de datos. En el ejemplo anterior, sería:

Cuando diseñamos una base de datos es completamente imprescindible definir tanto las claves primarias de todas las tablas, como las claves foráneas que nos permitan relacionar unas tablas con otras.
Ejercicio resuelto – YouTube DB
Todos sabemos cómo funciona YouTube, pero es un gigante que almacena montones de datos de todo lo que ocurre, y no todos esos datos son evidentes. Centrémonos en los más visibles: tenemos unos usuarios que suben vídeos, comentan y se suscriben. Además queremos llevar la cuenta de las visualizaciones por país, para ver las tendencias de cada zona geográfica.
Así, a primera vista tendríamos estas 5 tablas: USUARIOS, VÍDEOS, COMENTARIOS, SUSCRIPCIONES, VISUALIZACIONES_PAÍS.
Si reflexionamos un poco, no será complicado extraer los campos que tendría cada tabla:
- USUARIOS:
- UsuarioID
- Nombre
- FechaRegistro
- País
- VÍDEOS:
- VideoID
- Título
- UsuarioID
- FechaSubida
- Visualizaciones
- Likes
- COMENTARIOS:
- ComentarioID
- VideoID
- UsuarioID
- Fecha
- Contenido
- SUSCRIPCIONES:
- UsuarioID_Suscriptor
- UsuarioID_Suscrito
- FechaSuscripción
- VISUALIZACIONES_PAÍS:
- VideoID
- País
- Fecha
- Visualizaciones
¿Se te ocurre qué campo(s) funcionarían como clave primaria de cada tabla?
USUARIO (UsuarioID)
VÍDEOS (VideoID)
COMENTARIOS (ComentarioID)
SUSCRIPCIONES (UsuarioID_Suscriptor, UsuarioID_Suscrito)
VISUALIZACIONES_PAIS (VideoID, País, Fecha)
Además, observando la definición de los campos que hemos hecho, parece evidente qué campos estarían funcionando como claves foráneas. Para ver esto con más claridad, podemos construir su diagrama relacional:

Finalmente, podemos escribir el contenido de ejemplo de esas 5 tablas con algunos registros, para terminar de redondear la comprensión de esta base de datos:
USUARIOS
| UsuarioID | Nombre | FechaRegistro | País | |
| User001 | JuanVlogs | juanvlogs@email.com | 2022-01-15 | España |
| User002 | MartaGamer | martagamer@email.com | 2022-02-20 | España |
| User003 | CarlosTech | carlostech@email.com | 2022-03-25 | España |
| User004 | AnaCooks | anacooks@email.com | 2022-04-30 | España |
| User005 | PedroMusic | pedromusic@email.com | 2022-05-05 | España |
VÍDEOS
| VideoID | Título | UsuarioID | FechaSubida | Visualizaciones | Likes |
| Vid001 | “Viaje a Sevilla” | User001 | 2022-06-10 | 15000 | 3000 |
| Vid002 | “Partida épica de Fortnite” | User002 | 2022-07-15 | 25000 | 5000 |
| Vid003 | “Novedades en tecnología móvil” | User003 | 2022-08-20 | 20000 | 4000 |
| Vid004 | “Receta de paella” | User004 | 2022-09-25 | 10000 | 2000 |
| Vid005 | “Concierto acústico en casa” | User005 | 2022-10-30 | 5000 | 1000 |
COMENTARIOS
| ComentarioID | VideoID | UsuarioID | Fecha | Contenido |
| Com001 | Vid001 | User002 | 2022-06-11 | “¡Fantástico viaje!” |
| Com002 | Vid002 | User003 | 2022-07-16 | “Increíble partida, ¡bien jugado!” |
| Com003 | Vid003 | User004 | 2022-08-21 | “Muy interesante, gracias por la info” |
| Com004 | Vid004 | User005 | 2022-09-26 | “Tengo que probar esa receta” |
| Com005 | Vid005 | User001 | 2022-10-31 | “Gran concierto, ¡me encanta!” |
SUSCRIPCIONES
| UsuarioID_Suscriptor | UsuarioID_Suscripto | FechaSuscripción |
| User001 | User002 | 2022-02-01 |
| User002 | User003 | 2022-03-02 |
| User003 | User004 | 2022-04-03 |
| User004 | User005 | 2022-05-04 |
| User005 | User001 | 2022-06-05 |
VISUALIZACIONES_PAÍS
| VideoID | País | Fecha | Visualizaciones |
| Vid001 | España | 2022-06-10 | 14000 |
| Vid002 | España | 2022-07-15 | 24000 |
| Vid003 | España | 2022-08-20 | 19000 |
| Vid004 | España | 2022-09-25 | 9000 |
| Vid005 | España | 2022-10-30 | 4000 |
8.3.2. Relaciones
Las relaciones definen cómo las tablas se conectan entre sí en una base de datos relacional. Estas conexiones son muy importantes para organizar los datos de manera lógica y para facilitar la recuperación de información compleja a través de consultas.
Existen tres tipos principales de relaciones:
- Relación uno a uno (1:1): cada registro en la primera tabla se relaciona con un máximo de un registro en la segunda tabla, y viceversa. Este tipo de relación es menos común pero se utiliza para dividir una tabla por razones de seguridad o para mejorar el rendimiento. Por ejemplo, si tuviéramos una tabla con los datos personales de una persona y otra tabla con los datos de acceso a una web -usuario y contraseña- esta sería una relación 1 a 1, porque las credenciales de accesos son exclusivas de una persona, y una persona no puede tener varias credenciales de acceso.
- Relación uno a muchos (1:N): un registro en la primera tabla puede estar relacionado con uno o varios registros en la segunda tabla, pero un registro en la segunda tabla solo puede estar relacionado con un registro en la primera tabla. Este es el tipo de relación más común en las bases de datos relacionales.
- Relación muchos a muchos (N:M): registros en la primera tabla pueden estar relacionados con múltiples registros en la segunda tabla, y viceversa. Este tipo de relación generalmente requiere una tabla intermedia o de unión para gestionar las relaciones entre las tablas. Por ejemplo, si tenemos una tabla ESTUDIANTES y una tabla ASIGNATURAS, estaríamos en una relación N a M, puesto que un estudiante puede tener varias asignaturas, y una asignatura puede ser escogida por varios estudiantes. Para discriminar qué estudiante cursa cada asignatura, crearíamos una tabla llamada MATRICULA. De esta manera, en la tabla ESTUDIANTES sólo habría datos personales, en la tabla ASIGNATURA sólo datos propios de cada asignatura y con la tabla MATRÍCULA controlaríamos quién asiste a qué asignaturas.

Cuando diseñamos bases de datos siempre es un ejercicio recomendable reflexionar sobre el tipo de relación que involucra a las tablas.
Ejercicio 8.2 – Identificando claves primarias
- Elige la clave primaria de cada una de estas tablas argumentando tu elección.
- En cada caso, añade una tabla con al menos 3 registros y que contenga una clave foránea que haga referencia a la clave primaria de la primera tabla.
- En cada caso, indica qué tipo de relación has creado: 1:1, 1:N o N:M, y argumenta por qué.
IMPORTANTE: no puedes usar campos ID creados con la única finalidad de construir una clave primaria
Gestión de una carrera ciclista
FINISHER: tabla que almacena los corredores que han llegado a meta.
| Nombre | Equipo | Categoría | Dorsal | Tiempo |
| Carlos Sastre | Team CSC | Elite | 101 | 22:35:00 |
| Alejandro Valverde | Movistar Team | Elite | 102 | 22:37:00 |
| Alberto Contador | Astana | Elite | 103 | 22:40:00 |
| Lance Armstrong | US Postal | Elite | 104 | 22:45:00 |
| Miguel Indurain | Banesto | Elite | 105 | 22:50:00 |
Gestión de abonados a un canal de televisión de pago
ABONADO: tabla que registra las suscripciones de cada cliente.
| Nombre | Dirección | Paquete | FechaInicio | |
| Carlos Martínez | Calle Falsa, 123 | carlos@example.com | Básico | 2022-01-10 |
| Alejandro López | Avenida Siempre Viva, 45 | alejandro@example.com | Familiar | 2022-02-15 |
| Alberto Torres | Plaza Mayor, 9 | alberto@example.com | Premium | 2022-03-22 |
| Lance Rubio | Ronda Sur, 88 | lance@example.com | Deportes | 2022-04-05 |
| Miguel Ángel Díaz | Paseo de la Castellana, 200 | miguel@example.com | Cine | 2022-05-16 |
Gestión de una farmacia
FÁRMACO: tabla que almacena el stock de cada medicamento.
| Nombre | Dosis | Fabricante | Stock | Precio |
| Paracetamol | 500 mg | Bayer | 100 | 5 € |
| Ibuprofeno | 400 mg | Pfizer | 150 | 8 € |
| Amoxicilina | 500 mg | Teva | 75 | 12 € |
| Loratadina | 10 mg | Sanofi | 50 | 7 € |
| Metformina | 850 mg | Merck | 90 | 9 € |
Gestión de unas elecciones municipales
GANADOR_DISTRITO: tabla cuya utilidad es registrar qué partido ganó en cada distrito electoral de la ciudad.
| Año | Distrito | Ganador | VotosRecibidos | Participación% |
| 2022 | Norte | Partido A | 12345 | 75.5 |
| 2022 | Sur | Partido B | 9876 | 72.3 |
| 2022 | Este | Partido C | 5432 | 78.1 |
| 2022 | Oeste | Partido A | 6543 | 74.6 |
| 2022 | Centro | Partido D | 11234 | 76.2 |
Gestión de incidencias en un servicio técnico
INCIDENCIAS: tabla que registra el estado en el que se encuentran las incidencias.
| Fecha | Hora | Cliente | Tipo | Estado |
| 2022-03-15 | 10:00 | Carlos S. | Software | En proceso |
| 2022-03-15 | 10:30 | Alejandro L. | Hardware | Resuelta |
| 2022-03-15 | 11:00 | Alberto T. | Conectividad | Pendiente |
| 2022-03-15 | 11:30 | Lance R. | Periféricos | En proceso |
| 2022-03-15 | 12:00 | Miguel Á. D. | Software | Cancelada |
Entrega: debes entregar un enlace público de Google Docs antes de la fecha límite indicada en classroom.
8.4. Lenguajes de definición y manipulación de datos. Comandos básicos en SQL.
El estudio de las bases de datos relacionales nos lleva inevitablemente a SQL –Structured Query Language–, el lenguaje estándar utilizado para interactuar con sistemas gestores de bases de datos relacionales.
SQL se divide en varios componentes, entre los que destacan el Lenguaje de Definición de Datos -DDL-, por sus siglas en inglés- y el Lenguaje de Manipulación de Datos -DML-.
Cada uno de estos componentes cumple funciones específicas que permiten a los usuarios definir la estructura de la base de datos, insertar, consultar, actualizar y borrar datos. Vamos a explorar los comandos básicos de SQL dentro de estas categorías.
8.4.1. Lenguaje de definición de datos
El DDL permite a los usuarios definir y modificar la estructura de la base de datos. Los comandos básicos incluyen:
- CREATE: utilizado para crear nuevas tablas, bases de datos, índices, etc. Por ejemplo, este comando crea una nueva tabla llamada Estudiantes:

- ALTER: permite modificar la estructura de una tabla existente, como agregar o eliminar columnas. Por ejemplo, este comando añade una columna de correo electrónico a la tabla Estudiantes:

- DROP: se utiliza para eliminar tablas, bases de datos, índices, etc. Por ejemplo, este comando eliminaría la tabla Estudiantes:

- TRUNCATE: borra todos los registros de una tabla sin eliminar la tabla en sí. Esto es útil para reiniciar rápidamente los datos de una tabla.

En las prácticas asociadas a este apartado, que aparecen a continuación, veremos todas las posibilidades que tenemos cuando trabajamos con estos y otros comandos de SQL para la definición de datos:
8.4.2. Lenguaje de manipulación de datos
El DML permite a los usuarios realizar operaciones sobre los datos almacenados en la base de datos. Los comandos básicos incluyen:
- INSERT: inserta nuevos registros en una tabla. Por ejemplo, este comando inserta un nuevo estudiante en la tabla.

- SELECT: recupera datos de una o más tablas. Por ejemplo, este comando selecciona todos los registros de la tabla Estudiantes.

- UPDATE: modifica los datos existentes en una tabla. Por ejemplo, este comando actualiza el correo electrónico del estudiante con ID 1.

- DELETE: elimina registros de una tabla. Por ejemplo, este comando elimina el registro del estudiante con ID 1.

En las prácticas asociadas a este tema, veremos todas las posibilidades que tenemos cuando trabajamos con estos y otros comandos de SQL:
8.5. Vistas, informes y formularios.
Cuando trabajamos con bases de datos, el diseño de las tablas, la elección de los tipos de datos y la definición de las claves, son tareas que requieren de una formación cualificada, especialmente si se trata de grandes bases de datos que van a gestionar millones de registros.
Por ese motivo y otros -como la privacidad de los datos-, un empleado sin conocimientos técnicos no debería tener acceso a todas esas tareas. Para ello, los SGBD disponen de utilidades que nos permiten encapsular parte de los datos o parte de su administración, con el objetivo de mantener los datos seguros y consistentes.
Las vistas, informes y formularios, permiten a los usuarios visualizar, introducir y manipular datos sin interactuar directamente con las tablas subyacentes.
Vamos a explorar cada uno de estos componentes y su importancia en la gestión de bases de datos.
8.5.1. Vistas
Una vista es una consulta SQL guardada que se presenta como una tabla virtual dentro de la base de datos. Las vistas son especialmente útiles para simplificar consultas complejas, ocultar la complejidad de los datos subyacentes, restringir el acceso a ciertas filas o columnas de datos, y presentar datos agregados o calculados.
Por ejemplo, en un sistema de gestión universitaria, que tiene una tabla Estudiante con esta información:
- DNI.
- Nombre.
- Apellidos.
- Teléfono.
- Email.
- Nota media.
- Ingresos.
- Reconocimientos.
Se podría crear una vista para mostrar la información de contacto de los estudiantes (nombre, teléfono, email) para que la administrativa que gestiona la biblioteca pueda enviarle notificaciones, sin exponer otros datos sensibles como sus calificaciones o información financiera, que en la biblioteca no tienen porqué conocer.
Una vista para este propósito podría definirse como:

Esa vista aparecería en el SGBD como una tabla más, que cualquier persona que trabaje en la universidad y necesite conocer, puede consultar para contactar con un alumno, sin necesidad de exponer todos sus datos personales.
8.5.2. Informes
Los informes son documentos estructurados que presentan datos de la base de datos de manera organizada. Son útiles para análisis, toma de decisiones y comunicación de información.
Los informes pueden incluir datos tabulares, resúmenes, gráficos y otros elementos visuales.
Los sistemas de gestión de bases de datos y herramientas de informes externas permiten diseñar y generar informes basados en datos específicos de la base de datos.
Por ejemplo, un informe mensual de inscripciones podría mostrar el número de estudiantes inscritos por cada grupo, en formato PDF que el equipo directivo puede revisar en una reunión sin necesidad de tener que lanzar consultas a la base de datos:

8.5.3. Formularios
Siguiendo con las mismas precauciones que indicamos en el caso de las vistas, tenemos los formularios.
Los formularios son interfaces de usuario que facilitan la entrada o modificación de datos en la base de datos. Proporcionan una manera controlada y estructurada de recoger información de los usuarios, asegurando que los datos ingresados cumplan con los formatos y restricciones definidos.
En el caso de nuestro sistema universitario, un formulario de inscripción de estudiantes permitiría recoger información como el nombre del estudiante, dirección, número de teléfono, y curso(s) seleccionado(s), asegurando que toda la información necesaria sea capturada de forma correcta y completa.

Esto evita errores en el formato de los datos, campos sin rellenar o valores duplicados.
El formulario está preparado para hacer de filtro de entrada de datos, de manera que todo lo que entre en las tablas de la base de datos, esté correctamente validado.
Recuerda
Las vistas simplifican el acceso y la comprensión de los datos, especialmente en bases de datos complejas con múltiples tablas y relaciones. Los informes son útiles para analizar los datos almacenados, permitiendo a los usuarios finales y a los gestores tomar decisiones informadas basadas en información actualizada. Los formularios, por otro lado, juegan un papel vital en la captura de datos, mejorando la precisión y reduciendo la posibilidad de errores.
Ejercicio 8.7 – Vistas
Crea una base de datos llamada NBA.
Luego importa y ejecuta en esa base de datos el script que encontrarás en el classroom de la asignatura. Ese script creará una tabla llamada enfrentamientos_nba y la cargará con 20 registros. Observa la tabla y los datos que contiene para familiarizarte con ella.
Luego debes crear 5 vistas con los nombres que se indican. Y sobre cada vista debes elaborar las dos consultas que se indican.
Vista 1: partidos_alta_puntuacion (muestra los partidos con más de 100 puntos por equipo).
- Ordena los partidos por fecha, de más a menos reciente.
- Consulta los equipos que han jugado como local.
Vista 2: mvp_partidos (mvp, fecha, local y visitante)
- Consulta qué equipo jugó como local cuando ‘LeBron James’ fue MVP.
- Consulta la cantidad de veces que cada MVP ha sido elegido.
Vista 3: victorias_locales (idpartido, local, puntoslocal, visitante, puntosvisitante, fecha)
- Consulta la fecha de todos los partidos con victoria local.
- Consulta los equipos locales que han ganado partidos.
Vista 4: maximos_anotadores (idpartido, fecha, maximoanotador)
- Consulta cuántas veces cada jugador ha sido el máximo anotador.
- Consulta los partidos donde ‘Stephen Curry’ fue el máximo anotador.
Vista 5: resultados_por_fecha (fecha, local, puntoslocal, visitante, puntosvisitante)
- Consulta los resultados de los partidos que se jugaron el 15 de Abril de 2024.
- Consulta los puntos totales anotados en cada partido.
Entrega: debes entregar un archivo .sql con todas las instrucciones (15 comandos en total).
8.6. Exportación e importación.
La exportación e importación de datos son procesos, a veces, indispensables en la gestión de sistemas gestores de bases de datos relacionales, permitiendo la transferencia de datos entre diferentes sistemas, aplicaciones o formatos de almacenamiento.
Estas operaciones son fundamentales para tareas como la migración de datos, la realización de copias de seguridad, la sincronización de bases de datos entre entornos de desarrollo y producción, y el intercambio de información con otras aplicaciones o sistemas. A continuación, veremos cómo se realizan estos procesos y su importancia.
8.6.1. Exportación
La exportación de datos implica extraer datos de una base de datos y convertirlos en un formato que pueda ser utilizado por otros sistemas o aplicaciones.
Los formatos comunes para la exportación de datos incluyen CSV (valores separados por comas), XML, JSON y archivos de texto plano, aunque muchos SGBD ofrecen también opciones para exportar datos en formatos específicos compatibles con otros sistemas de bases de datos.
Por ejemplo, para exportar datos de una tabla Estudiantes a un archivo CSV, se podría utilizar una herramienta de gestión de base de datos o un comando SQL específico del SGBD utilizado, como el siguiente comando hipotético:

Este comando es un ejemplo genérico; el método exacto para exportar datos puede variar dependiendo del sistema de gestión de base de datos específico.
8.6.2. Importación
La importación de datos es el proceso inverso a la exportación y se refiere a la inserción de datos desde un archivo o fuente externa en una tabla de la base de datos. Este proceso es fundamental cuando se necesitan integrar datos de diferentes fuentes, restaurar datos desde una copia de seguridad o sincronizar bases de datos.
Siguiendo el ejemplo anterior, para importar datos desde un archivo estudiantes.csv a la tabla Estudiantes, se podría utilizar un comando como:

Al igual que con la exportación, el comando específico y las opciones disponibles para la importación de datos pueden variar según el SGBD utilizado.
8.7. Datos masivos. NoSQL.
En la actualidad, el volumen, la variedad y la velocidad de los datos generados por aplicaciones web, redes sociales, dispositivos IoT -Internet de las Cosas- y otros sistemas digitales crecen exponencialmente, y esto supone un enorme hándicap para su gestión.
El aluvión de datos es de tal magnitud que las bases de datos relacionales se quedan cortas para administrarlos.
Este desafío ha llevado al desarrollo y adopción de tecnologías NoSQL, que ofrecen soluciones flexibles y escalables para el manejo de grandes cantidades de datos no estructurados o semiestructurados.
8.7.1. Características de los datos masivos
Los datos masivos -big data-, se caracterizan por las tres “V”: Volumen, Velocidad y Variedad.
- El Volumen se refiere a la cantidad masiva de datos generados.
- La Velocidad, a la rapidez con la que se generan y deben ser procesados.
- La Variedad, a los diferentes tipos de datos, desde estructurados hasta no estructurados, incluyendo texto, imágenes, videos y registros de sensores.
Estas características presentan serias dificultades únicas que los sistemas tradicionales de bases de datos relacionales pueden no ser capaces de manejar de manera eficiente.
8.7.2. Tecnologías NoSQL
Las tecnologías NoSQL –Not Only SQL– surgieron como respuesta a las limitaciones de los sistemas DBMS tradicionales frente a las necesidades de los datos masivos.
Los sistemas NoSQL se caracterizan por su esquema flexible, su capacidad para manejar grandes volúmenes de datos distribuidos y su eficiencia en el procesamiento de datos no estructurados.
Existen varios tipos de bases de datos NoSQL, cada una diseñada para satisfacer diferentes necesidades:
- Bases de datos de documentos: almacenan datos en documentos (generalmente en formatos JSON, BSON, etc.), lo que las hace ideales para aplicaciones que manejan datos semiestructurados. Ejemplos: MongoDB, CouchDB.

- Bases de datos de clave-valor: almacenan los datos como pares de clave-valor, siendo extremadamente rápidas para consultas basadas en clave. Ejemplos: Redis, DynamoDB.

- Bases de datos columnares: optimizadas para lecturas y escrituras rápidas de grandes volúmenes de datos, almacenando datos de manera columnar en lugar de filas. Ejemplos: Cassandra, HBase.

- Bases de datos de grafos: diseñadas para almacenar y navegar relaciones complejas con alta eficiencia. Son ideales para redes sociales, sistemas de recomendación y análisis de grafos. Ejemplos: Neo4j, Amazon Neptune.

La importancia de NoSQL en el contexto de datos masivos radica en su capacidad para proporcionar escalabilidad horizontal, lo que significa que se pueden añadir más servidores para incrementar la capacidad de almacenamiento y procesamiento. Esto es altamente necesario para aplicaciones web de gran demanda, análisis en tiempo real de big data y cualquier aplicación que requiera una gran flexibilidad en el manejo de estructuras de datos.
Además, las tecnologías NoSQL facilitan el desarrollo de aplicaciones capaces de adaptarse rápidamente a cambios en los requisitos de datos, gracias a su esquema flexible. Esto permite a las empresas innovar más rápidamente y adaptarse a las tendencias del mercado con mayor agilidad.
Víctor Rivas
Hola Lope.
Le felicito por esta maravilla de sitio que es una verdadera enciclopedia digital de los contenidos propios de cualquier materia TIC de ESO y Bachillerato. No me puedo imaginar las horas de trabajo que le habrá supuesto, le agradezco que nos ofrezca toda esta información de forma tal altruista.
Aprovecho para hacerle una pregunta respecto a los gestores de bases de datos. Yo trabajo con mis alumnos de 4º ESO y 1º Bach con dispositivos chromebook (con OS Chrome), no encuentro la forma de poder instalar o, mejor, poder trabajar de forma online con algún gestor de bases de datos relacionales sencillo y gratuito. Le agradecería mucho si pudiese orientarme al respecto.
Gracias de nuevo, un saludo.
Lope
Muchas gracias Víctor, la verdad es que si, son muchas horas, pero bueno compensa saber que ayuda a mis compañeros con sus clases.
Con respecto al problema que comentas, es cierto, no hay muchas opciones, aunque dependiendo de lo que busques trabajar con los alumnos podrían servirte algunas de estas opciones: Phpmyadmin (Try Demo), SQL Fiddle, PlanetScale, Supabase, Neon Tech, Oracle Live SQL.
Pruébalas, estoy seguro que alguna o una combinación de ellas te permitirá trabajar los conceptos que buscas.
Saludos.