Creando tablas

Por medio de comandos SQL o de una herramienta gráfica como MySQL Workbench podéis crear las tablas SQL necesarias para poder seguir el resto de la serie desde Java usando la API JDBC. Script SQL usado: https://gist.github.com/danirod/482584904e41e1ec3422266776a9ea61

Hay una versión nueva de este curso. Haz clic aquí para revisar JDBC, la versión actualizada de este curso.

Para comenzar a trabajar con bases de datos en MySQL, una herramienta muy útil que podemos utilizar es MySQL Workbench. Aunque es posible usar la consola de MySQL para ejecutar comandos SQL, Workbench nos ofrece una interfaz gráfica cómoda y multiplataforma, disponible para Ubuntu, Mac y Windows, que facilita la creación y gestión de bases de datos.

Una vez instalado MySQL Workbench, lo primero que hacemos es establecer una conexión con nuestra base de datos. Para ello, registramos una nueva conexión proporcionando un nombre, el usuario, la contraseña y el esquema o base de datos con la que queremos trabajar. En nuestro caso, podemos usar nombres sencillos como ejemplo para todos estos campos, lo que nos permitirá acceder rápidamente a la interfaz donde escribiremos nuestros comandos SQL.

El objetivo es crear una base de datos sencilla para gestionar una escuela. Para ello, diseñaremos varias tablas: una para alumnos, otra para profesores, una tercera para asignaturas y finalmente una tabla para las matrículas, que relacionará a los alumnos con las asignaturas en las que están inscritos.

Empezamos creando la tabla alumnos. Esta tabla tendrá un campo id_alumno de tipo entero, que no puede ser nulo y que se autoincrementa para asignar automáticamente un identificador único a cada alumno. Además, incluimos campos para el nombre y los apellidos del alumno, usando varchar con longitudes adecuadas (por ejemplo, 32 para el nombre y 64 para los apellidos). También añadimos un campo para la fecha de nacimiento, de tipo date. Aunque en este caso creamos un índice único para el id_alumno, no es estrictamente necesario, pero puede ser útil para mantener la integridad de los datos.

CREATE TABLE alumnos (
  id_alumno INT NOT NULL AUTO_INCREMENT,
  nombre VARCHAR(32),
  apellidos VARCHAR(64),
  fecha_nacimiento DATE,
  PRIMARY KEY (id_alumno),
  UNIQUE KEY id_alumno_uq (id_alumno)
);

A continuación, creamos la tabla profesores, que tendrá una estructura similar. Incluye un campo id_profesor como clave primaria autoincremental, y campos para el nombre y los apellidos del profesor. También definimos un índice único para el identificador del profesor.

CREATE TABLE profesores (
  id_profesor INT NOT NULL AUTO_INCREMENT,
  nombre VARCHAR(32),
  apellidos VARCHAR(64),
  PRIMARY KEY (id_profesor),
  UNIQUE KEY id_profesor_uq (id_profesor)
);

La tabla asignaturas es un poco más compleja porque relaciona cada asignatura con un profesor que la imparte. Por eso, además del id_asignatura y el nombre de la asignatura, incluimos un campo profesor que almacena el identificador del profesor responsable. Este campo es una clave foránea que referencia al campo id_profesor de la tabla profesores, asegurando la integridad referencial.

CREATE TABLE asignaturas (
  id_asignatura INT NOT NULL AUTO_INCREMENT,
  nombre VARCHAR(64),
  profesor INT NOT NULL,
  PRIMARY KEY (id_asignatura),
  CONSTRAINT profesor_asignatura FOREIGN KEY (profesor) REFERENCES profesores(id_profesor)
);

Finalmente, la tabla matriculas registra qué alumnos están inscritos en qué asignaturas y en qué año. Para ello, contiene los campos alumno y asignatura, que son claves foráneas que referencian a las tablas alumnos y asignaturas respectivamente. También incluye un campo anio para el año de matrícula, de tipo YEAR, y un campo nota para la calificación, que en este caso definimos como un entero que puede ser nulo para representar que el alumno aún no ha terminado o no tiene nota asignada. La clave primaria de esta tabla es compuesta, formada por alumno, asignatura y anio, lo que garantiza que no haya duplicados en las matrículas para un mismo alumno, asignatura y año.

CREATE TABLE matriculas (
  alumno INT NOT NULL,
  asignatura INT NOT NULL,
  anio YEAR NOT NULL,
  nota INT,
  PRIMARY KEY (alumno, asignatura, anio),
  CONSTRAINT alumno_matriculado FOREIGN KEY (alumno) REFERENCES alumnos(id_alumno),
  CONSTRAINT asignatura_matriculada FOREIGN KEY (asignatura) REFERENCES asignaturas(id_asignatura)
);

Con estas tablas creadas, ya tenemos una estructura básica para gestionar la información de una escuela, incluyendo los profesores, alumnos, asignaturas y las matrículas que los relacionan. Para facilitar el seguimiento y la reutilización, es recomendable guardar este código SQL y, si queremos, añadir datos de prueba para comenzar a trabajar con la base de datos.

Más adelante, podremos conectar esta base de datos con aplicaciones en Java para manipular y consultar estos datos desde un entorno de programación, lo que nos permitirá construir sistemas más completos y funcionales.

Lista de reproducción
  1. 1
    Presentación de JDBC
    4 minutos
  2. 2
    Instalando MySQL
    7 minutos
  3. 3
    Creando tablas
    9 minutos
  4. 4
    Agregando el driver JAR
    7 minutos
  5. 5
    Estableciendo la conexión
    8 minutos
  6. 6
    Statement y ResultSet
    9 minutos
  7. 7
    Bobby Tables y PreparedStatement
    8 minutos
  8. 8
    Transacciones y MySQL
    6 minutos
  9. 9
    Transacciones, commits y rollbacks (parte 1)
    7 minutos
  10. 10
    Transacciones, commits y rollbacks (parte 2)
    6 minutos
  11. 11
    Ejemplo: Crear modelos
    9 minutos
  12. 12
    Ejemplo: Crear los DAO (parte 1)
    10 minutos
  13. 13
    Ejemplo: Crear los DAO (parte 2)
    12 minutos
  14. 14
    Ejemplo: Crear los DAO (parte 3)
    13 minutos
  15. 15
    Ejemplo: DAO Manager
    12 minutos
  16. 16
    Ejemplo: CRUD Alumnos (parte 1)
    15 minutos
  17. 17
    Ejemplo: CRUD Alumnos (parte 2)
    14 minutos
  18. 18
    Ejemplo: CRUD Alumnos (parte 3)
    13 minutos
  19. 19
    Ejemplo: CRUD Profesores
    25 minutos
  20. 20
    Ejemplo: CRUD Asignaturas
    alrededor de 1 hora
  21. 21
    Ejemplo: Login (final adelantado)
    17 minutos
  22. 22
    Conectar a PostgreSQL en Java con JDBC
    8 minutos
  23. 23
    Conectar a PostgreSQL en Kotlin con JDBC
    7 minutos
  24. 24
    Conectar a PostgreSQL en Java con JDBC (con NetBeans)
    10 minutos