🧩 Criterio de Evaluación: CE1.1 – Se han descrito las características de los modelos de datos conceptuales, lógicos y físicos.
🧩 Criterio de Evaluación: CE2.2 – Se han identificado las entidades y relaciones de un supuesto planteado.
ENTIDADES PRINCIPALES: - LIBRO (ISBN*, título, autor, editorial, año_publicación, ejemplares) - USUARIO (id_usuario*, nombre, apellidos, dirección, teléfono, email) - PRÉSTAMO (id_préstamo*, fecha_préstamo, fecha_devolución_prevista, fecha_devolución_real) RELACIONES: - REALIZA: Un USUARIO realiza varios PRÉSTAMOS (1:N) - CONTIENE: Un PRÉSTAMO puede contener varios LIBROS (M:N) → se implementa con tabla intermedia: DETALLE_PRÉSTAMO (id_préstamo*, ISBN*, estado) ATRIBUTOS ADICIONALES: - LIBRO: categoría, idioma, disponibilidad - USUARIO: tipo (estudiante, profesor, etc.), fecha_registro - PRÉSTAMO: estado (activo, devuelto, retrasado), multa
🧩 Criterio de Evaluación: CE3.1 – Se han descrito los distintos operadores del álgebra relacional.
σ(ciudad='Madrid')(CLIENTES) → Devuelve todos los clientes de Madrid
Ejemplo práctico: Seleccionar productos con stock menor a 10 unidades:
σ(stock < 10)(PRODUCTOS)
π(nombre, teléfono)(CLIENTES) → Devuelve solo nombre y teléfono de todos los clientes
Ejemplo práctico: Obtener solo códigos y nombres de productos:
π(cod_producto, nombre)(PRODUCTOS)
🧩 Criterio de Evaluación: CE4.2 – Se han transformado las entidades y relaciones en tablas relacionales.
-- Tablas base para entidades PROFESOR ( dni VARCHAR(9) PRIMARY KEY, nombre VARCHAR(100) NOT NULL, fecha_contratacion DATE, departamento VARCHAR(50) ) ASIGNATURA ( cod_asig VARCHAR(10) PRIMARY KEY, nombre VARCHAR(100) NOT NULL, creditos INT, curso VARCHAR(20) ) -- Tabla para relación IMPARTE (considerando que es N:M con atributo) IMPARTE ( dni VARCHAR(9), cod_asig VARCHAR(10), horario VARCHAR(50) NOT NULL, aula VARCHAR(20), semestre VARCHAR(20), PRIMARY KEY (dni, cod_asig, horario), FOREIGN KEY (dni) REFERENCES PROFESOR(dni) ON DELETE CASCADE, FOREIGN KEY (cod_asig) REFERENCES ASIGNATURA(cod_asig) ON DELETE CASCADE ) -- Ejemplo de índices para mejorar consultas frecuentes CREATE INDEX idx_profesor_nombre ON PROFESOR(nombre); CREATE INDEX idx_asignatura_curso ON ASIGNATURA(curso);
CLIENTE(id, nombre, producto, precio)
🧩 Criterio de Evaluación: CE4.4 – Se han detectado dependencias funcionales y aplicado normalización.
-- Tabla CLIENTE (datos del cliente) CLIENTE ( id INT PRIMARY KEY, nombre VARCHAR(100) NOT NULL, direccion VARCHAR(200), telefono VARCHAR(15), email VARCHAR(100) ) -- Tabla PRODUCTO (catálogo de productos) PRODUCTO ( cod_producto VARCHAR(10) PRIMARY KEY, nombre VARCHAR(100) NOT NULL, descripcion TEXT, precio DECIMAL(10,2) NOT NULL, categoria VARCHAR(50) ) -- Tabla VENTA (transacciones) VENTA ( id_venta INT PRIMARY KEY, id_cliente INT, fecha DATE NOT NULL, total DECIMAL(10,2), FOREIGN KEY (id_cliente) REFERENCES CLIENTE(id) ) -- Tabla DETALLE_VENTA (productos por venta) DETALLE_VENTA ( id_venta INT, cod_producto VARCHAR(10), cantidad INT NOT NULL, precio_unitario DECIMAL(10,2) NOT NULL, descuento DECIMAL(5,2) DEFAULT 0, PRIMARY KEY (id_venta, cod_producto), FOREIGN KEY (id_venta) REFERENCES VENTA(id_venta), FOREIGN KEY (cod_producto) REFERENCES PRODUCTO(cod_producto) )
🧩 Criterio de Evaluación: CE2.3 – Se han representado gráficamente las entidades y relaciones.
ENTIDADES PRINCIPALES: ---------------------- INSTRUCTOR ( id_instructor*: INT nombre: VARCHAR(100) especialidad: VARCHAR(50) email: VARCHAR(100) telefono: VARCHAR(15) ) ALUMNO ( id_alumno*: INT nombre: VARCHAR(100) apellidos: VARCHAR(100) fecha_nacimiento: DATE direccion: VARCHAR(200) ) CURSO ( id_curso*: INT titulo: VARCHAR(100) descripcion: TEXT duracion_horas: INT nivel: VARCHAR(30) ) AULA ( id_aula*: VARCHAR(10) capacidad: INT equipamiento: TEXT ubicacion: VARCHAR(50) ) RELACIONES: ----------- IMPARTE: INSTRUCTOR → CURSO (1:N) - Un instructor puede impartir varios cursos - Un curso es impartido por un solo instructor - Atributos: periodo_academico, horario MATRÍCULA: ALUMNO → CURSO (M:N) - Un alumno puede matricularse en varios cursos - Un curso puede tener muchos alumnos matriculados - Implementada como tabla intermedia: MATRICULA ( id_alumno*: INT (FK) id_curso*: INT (FK) fecha_matricula: DATE calificacion: DECIMAL(3,1) estado: VARCHAR(20) PRIMARY KEY (id_alumno, id_curso) ) ASIGNADO: CURSO → AULA (M:N) - Un curso puede asignarse a varias aulas (ej. teoría y laboratorio) - Un aula puede albergar varios cursos en distintos horarios - Tabla intermedia: HORARIO ( id_curso*: INT (FK) id_aula*: VARCHAR(10) (FK) dia_semana: VARCHAR(10) hora_inicio: TIME hora_fin: TIME PRIMARY KEY (id_curso, id_aula, dia_semana) ) ENTIDADES DÉBILES: ------------------ MODULO ( id_modulo*: INT id_curso*: INT (FK) nombre: VARCHAR(100) descripcion: TEXT PRIMARY KEY (id_modulo, id_curso) )