Introduccion BD Herencia - eliizquierdo/material_programacion_avanzada2026 GitHub Wiki

📦 Proyecto: mini-crud-alumno-sql (Tema 4 — Herencia + MySQL) — ⬇️ Descargar ZIP · ☁️ Abrir en Codespace

El Desafío de Extender el Sistema CRUD

Acabamos de terminar, con gran orgullo, nuestro mini-CRUD básico que gestiona la entidad Persona. Nuestro código es limpio, sigue el patrón MVC, y funciona a la perfección.

Sin embargo, en el demo final, nuestro jefe nos suelta la bomba: "En realidad, este proyecto será algo más ambicioso. Necesitamos gestionar todo el sistema académico: Alumnos y Profesores." 😟

El pánico dura solo un momento. Pensamos rápido: tanto los alumnos como los profesores son, fundamentalmente, personas. ¡No todo está perdido!

Según lo aprendido en Programación Orientada a Objetos y en Modelado de Bases de Datos, podemos aprovechar lo que ya tenemos programado y extenderlo.

El Desafío de la Herencia en el Modelo de Datos

Reconocemos dos grandes tareas por delante:

  1. En Java (Capa VO): Aplicaremos la Herencia. Crearemos la clase AlumnoVO y la futura ProfesorVO que extenderán de la clase base PersonaVO. Esto nos permite reutilizar atributos comunes (codigo, nombre, etc.) y añadir los campos específicos de cada rol (carrera, sueldo, etc.).

  2. En la Base de Datos (Capa DAO): Aplicaremos el patrón de Herencia de Tabla Dividida. Necesitaremos dos tablas relacionadas (Persona y Alumno). Esto nos plantea un desafío crucial: ¿Cómo garantizamos que la inserción o actualización de un Alumno sea atómica?

💡 La Solución en el DAO: Transacciones JDBC

Para superar este desafío y asegurar la integridad de la BD, sabemos que la clave es simple y fundamental:

  • Atomicidad: Debemos utilizar Transacciones JDBC (COMMIT y ROLLBACK) para que la inserción de datos en la tabla Persona y la tabla Alumno ocurra como una única unidad.

Nuestra misión ahora es migrar de un PersonaDAO simple a un sistema robusto y transaccional, empezando por la entidad Alumno.

1. Cambios en la Base de Datos (SQL) 💾

El primer paso es modelar la herencia en la base de datos con una relación uno a uno, donde la tabla hija (alumno) utiliza la clave primaria de la tabla padre (persona) como su propia clave primaria y clave foránea.

/********************************/
DROP DATABASE institutoWeb; -- Opcional, para empezar de cero
CREATE DATABASE institutoWeb;

USE institutoWeb;

/********************************/
-- Crear tabla personas
CREATE TABLE personas (
    codigo INT PRIMARY KEY,
    nombre VARCHAR(10) NOT NULL
);

-- Crear tabla alumnos con FK a persona
CREATE TABLE alumnos (
    codigo INT PRIMARY KEY, -- Es la PK y también la FK
    telefono VARCHAR(10),
    FOREIGN KEY (codigo) REFERENCES personas (codigo) ON DELETE CASCADE
);

Continuemos con Clase-AlumnoVO


📋 Palabras clave

herencia Java · PersonaVO · AlumnoVO · extends · herencia en BD · tabla personas · tabla alumnos · FK · ON DELETE CASCADE · transacciones JDBC · COMMIT · ROLLBACK · Herencia de Tabla Dividida


🧠 Autoevaluación — Herencia en Java y BD


← Resumen Tema 3 · 🏠 Inicio · AlumnoVO y AlumnoDAO →