Implementación y Consultas SQL Avanzadas en Modelos de Datos Relacionales

Enviado por Chuletator online y clasificado en Magisterio

Escrito el en español con un tamaño de 5,69 KB

Ejercicios Prácticos de SQL y Diseño de Bases de Datos

A continuación, se presentan soluciones y correcciones a una serie de ejercicios que abarcan la construcción de consultas SQL (DML), la definición de estructuras de datos (DDL) y la comprensión de conceptos clave del Modelo Entidad-Relación (MER).

1. Consultas SQL (DML)

1.1. Conteo de Cursos por Profesor (INNER JOIN)

Instrucción: Construya una consulta que resuelva el número de cursos que imparte cada profesor usando la cláusula INNER JOIN.

SELECT
    P.NOMBRE,
    P.APELLIDOS,
    COUNT(C.ID_CURSO) AS CURSOS
FROM
    PROFESORES P
INNER JOIN
    CURSOS C ON P.ID_PROFE = C.ID_PROFE
GROUP BY
    P.NOMBRE, P.APELLIDOS;

1.2. Alumnos Matriculados por Curso (Incluyendo Cursos Vacíos)

Instrucción: Realice una consulta entre las tablas CURSOS, ALUMNOS y ALUMNOS_CURSOS de modo que aparezcan los alumnos matriculados en cada curso, mostrando todos los cursos aunque no tengan alumnos matriculados.

SELECT
    C.TITULO AS CURSO,
    A.NOMBRE,
    A.APELLIDOS
FROM
    CURSOS C
LEFT JOIN
    ALUMNOS_CURSOS AC ON C.ID_CURSO = AC.ID_CURSO
LEFT JOIN
    ALUMNOS A ON AC.ID_ALUMNO = A.ID_ALUMNO;

Nota: Se utiliza LEFT JOIN para asegurar que todos los registros de la tabla CURSOS (la tabla izquierda) sean incluidos, independientemente de si tienen coincidencias en ALUMNOS_CURSOS o ALUMNOS.

1.3. Inserción y Eliminación de un Registro en CURSOS

Instrucción: Construya una instrucción de inserción en la tabla CURSOS para guardar un nuevo curso de pintura y asígnele una clave que no entre en conflicto con las existentes. Posteriormente, construya la instrucción para eliminar de la tabla el registro que acaba de crear.

Inserción:

INSERT INTO CURSOS (ID_CURSO, TITULO)
VALUES (6, 'Pintura');

Eliminación:

DELETE FROM CURSOS
WHERE ID_CURSO = 6;

1.4. Actualización Condicional de Salarios (Prevención de Exceso)

Instrucción: Construya una instrucción de actualización, que se debería ejecutar previamente a la actualización de sueldos, de modo que evite que para estos empleados el sueldo tras el incremento sea superior a 3000 euros. Para ello, la instrucción que se le pide debe actualizar el salario de los empleados afectados a 3000 euros, para que cuando se realice el incremento no se les aplique la subida puesto que su sueldo será entonces de 3000 euros justos.

UPDATE EMPLEADOS
SET SALARIO = 3000
WHERE SALARIO < 3000
  AND SALARIO * 1.02 > 3000;

2. Definición de Datos (DDL) y Metadatos

2.1. Incorporación de Tutoría a la Tabla ALUMNOS

Instrucción: Modifique el modelo Entidad-Relación de la academia para que considere la siguiente premisa: todo alumno tendrá un profesor que lo tutele. Construya las instrucciones DDL que permitan incorporar al modelo definido en la BD ACADEMIA dicha premisa. Recuerde que el nuevo campo es una referencia a la tabla PROFESORES.

ALTER TABLE ALUMNOS ADD (ID_TUTOR INT);

ALTER TABLE ALUMNOS ADD CONSTRAINT ALUMNOS_ID_TUTOR_FK
FOREIGN KEY (ID_TUTOR) REFERENCES PROFESORES (ID_PROFE);

2.2. Consulta de Claves Foráneas en Metadatos

Instrucción: Suponiendo que las restricciones de la BD academia se guardan en la tabla de metadatos TABLE_CONSTRAINTS_ACADEMIA, construya una consulta que devuelva las claves foráneas que presenta la tabla ALUMNOS_CURSOS.

SELECT *
FROM TABLE_CONSTRAINTS_ACADEMIA
WHERE TABLE_NAME = 'ALUMNOS_CURSOS'
  AND CONSTRAINT_TYPE = 'FOREIGN KEY';

3. Conceptos del Modelo Entidad-Relación (MER)

3.1. Entidad Débil: JUGADORES y EQUIPOS

Contexto: La cardinalidad de esta relación es 1 a N, puesto que un equipo tiene una plantilla de N jugadores mientras que un jugador milita en un solo equipo.

Pregunta: ¿Es JUGADORES una entidad débil?

Respuesta: No.

Justificación: JUGADORES es una entidad fuerte porque un jugador no está siempre en el mismo equipo y su identificación principal (clave primaria) es independiente de la existencia del equipo al que pertenece en un momento dado.

3.2. Entidad Débil: REPARACIONES y FAROLAS

Contexto: La cardinalidad de esta relación es 1 a N, puesto que a una farola se le realizan N reparaciones mientras que una reparación se practica a una farola.

Pregunta: ¿Es REPARACIONES una entidad débil?

Respuesta: Sí.

Justificación: REPARACIONES es una entidad débil. Esto es habitual si su clave primaria depende del identificador de la farola (entidad fuerte) para ser única.

3.3. Entidad Débil: ARTÍCULOS y FAMILIAS

Contexto: La cardinalidad de esta relación es 1 a N, puesto que una familia agrupa N artículos mientras que un artículo pertenece a una sola familia.

Pregunta: ¿Es ARTICULOS una entidad débil?

Respuesta: No.

Justificación: ARTICULOS es una entidad fuerte. Generalmente, un artículo tiene un código o SKU único que lo identifica globalmente, independientemente de la familia a la que pertenezca.

Entradas relacionadas: