SQL Tema 2
Qué es una base de datos
Una base de datos (BBDD) es un sistema que permite guardar un conjunto de datos de forma estructurada y organizada, y que se almacena en un servidor.
El modelo cliente-servidor#
A diferencia de un archivo como un .txt que guardas en tu carpeta, una base de datos real funciona bajo el modelo cliente-servidor:
| Pieza | Qué es | Qué hace |
|---|---|---|
| El servidor | Un programa que está encendido 24/7 | Recibe peticiones de programas como el tuyo y les devuelve la información que han pedido |
| El cliente | Tu programa en Java (o en cualquier otro lenguaje) | Envía mensajes (consultas SQL) al servidor para pedir o guardar cosas |
Este sistema permite que miles de personas usen la misma base de datos al mismo tiempo desde distintas partes del mundo.
Nota
En clase usaremos SQLite, que guarda toda la base de datos en un único fichero (por ejemplo, codemaker.db) y no necesita un servidor encendido. Es perfecta para aprender: el SQL que escribas es el mismo que usarás después con un servidor de verdad.
Conceptos básicos#
Entidades#
Son los objetos o conceptos sobre los que queremos guardar información: Alumno, Profesor, Coche, Libro, etc. En la base de datos, cada entidad se convierte en una tabla.
Atributos#
Son las características que describen a una entidad. Por ejemplo, un Alumno tiene nombre, email, edad, etc. En la tabla, cada atributo es una columna, y cada alumno concreto es una fila (también llamada registro):
| id_alumno | nombre | edad | nivel |
|---|---|---|---|
| 1 | Antonio | 17 | DEV |
| 2 | María | 16 | DEV |
| 3 | Juan | 13 | Senior |
Aquí alumnos es la tabla, nombre es una columna, y 2 | María | 16 | DEV es una fila.
Clave primaria (Primary Key, PK): es el atributo único que identifica a cada fila. No puede repetirse ni estar vacío. En la tabla de arriba es id_alumno: puede haber dos alumnos que se llamen igual, pero nunca con el mismo id_alumno.
Relaciones#
Es la conexión lógica entre dos entidades. Por ejemplo, un Alumno tiene uno o varios Tutores (su madre, su padre…).
El lenguaje de las bases de datos#
Para que nuestro código en Java pueda hablar con la base de datos, usamos un lenguaje común: SQL (Structured Query Language).
Independientemente de si usas Java, Python o C#, el mensaje que enviarás a la base de datos siempre será el mismo. Las bases de datos no entienden lenguajes de programación: entienden SQL.
Ejemplo práctico: la base de datos de Codemaker#
Este es el diagrama de la base de datos que vamos a construir en estos apuntes. Cada caja es una tabla con sus columnas, y la línea dice cómo se relacionan: un alumno puede tener varios tutores, y cada tutor pertenece a un alumno.