Las prácticas de gib-BD se evalúan a partir de ejercicios basados en los conceptos resaltados en nuestras páginas sobre SQL y la base de datos HOSPITAL.
Supuesto uno de estos ejercicios, teniendo en cuenta que la casuística es bastante extensa y, por tanto, no abarcable en su totalidad, sí podemos dar unas ideas generales de aquello que consideramos errores más frecuentes y su consideración en la corrección. La acumulación de estos errores en la respuesta a un ejercicio es lo que hace que la escala de penalizaciones se haya establecido en:
Sin fallos relevantes (-0 %)
Fallos menores (-10 %)
Fallos leves (-20 %)
Fallos importantes (-50 %)
Fallos graves (-100 %)
Suponiendo una calificación máxima de 1.0 para cada ejercicio, los siguientes factores de corrección serán aplicados para cada uno de los casos expuestos. Cuando un ejercicio tenga varios apartados, cada apartado se valorará de manera independiente, distribuyendo el punto del ejercicio entre los diferentes apartados. Los puntos se descontarán del máximo para cada apartado, sin arrastrar calificaciones negativas de un apartado a otro.
Ejemplo: Ejercicio de 1 punto con 5 apartados. Cada apartado puntuará 0,2. Si un apartado tuviera un fallo que restara 0,3 solamente se restará 0,2 puesto que es la puntuación máxima del apartado.
Se trata de una guía de los errores más frecuentes. No obstante, prevalecerá el criterio del profesor ante situaciones no contempladas, así como los matices que tengan que ser aplicados por la complejidad global del ejercicio.
Usa tablas de más y
no afecta al resultado = -0.1 puntos
sí afecta al resultado = -0.5
Usa tablas mal enlazadas (ej. necesidad de un doble enlace y se hace simple, o enlazan columnas que no son: linea_historial.id=historial.id…) = -0.5
Falta concatenar alguna tabla:
para obtener el filtro correcto (ej. requiere concatenación con médico para saber que un trabajador es médico)= -0.5
para usar sus columnas (ej. usa la columna área.tipo sin tener la tabla área) = -1.0
Faltan tablas intermedias para relacionar las tablas resultado (ej. de historial a paciente sin tiene_un) = -1.0
Tablas sin enlazar = -1.0
Confusión al elegir las columnas en la proyección y/o selección = -0.2
No usar DISTINCT pese a haberlo solicitado = -0.2
Uso de comillas en comparaciones numéricas = -0.1
Uso incorrecto de LIKE = -0.2
Uso incorrecto de AND / OR y afecta levemente al resultado (usa AND cuando necesita OR…) = -0.2
Condición de búsqueda no especificada o incorrecta
hay varias y el resto están ok = -0.2
es única = -0.5
Uso de AND / OR sin paréntesis y afecta gravemente al resultado (ej. provoca que no se concatenen las tablas) = -0.5
Falta de comillas en comparaciones con cadenas de caracteres o fechas = -0.5
ORDER BY mal ordenado (confunde ASC/DESC, …) = -0.1
ORDER BY incompleto (faltan columnas) = -0.1
Sin ORDER BY cuando lo pide el enunciado = -0,2
CREATE / ALTER
Falta columna = -0.2
Tipo de dato incorrecto = -0.2
Falta CP o es incompleta = -0.5
Falta FK o es incorrecta = -0.5
Falta VNN = -0.3
Falta CHECK = -0.3
No se define correctamente la integridad referencial solicitada = -0.5
INSERT / DELETE / UPDATE
La operación no se puede realizar porque incumple alguna restricción y no se detecta = -1.0
Falta columna por insertar o modificar su valor
Condiciones de GROUP BY / HAVING
Faltan columnas necesarias para la agrupación = -1.0
Agrupación por un atributo no clave. PEj. area.tipo en lugar de area.id = -0.5
Sobran columnas en la agrupación pero no afectan al resultado = -0.1
Sobran columnas en la agrupación y afectan al resultado = -0.5
Poner en el WHERE condiciones sobre columnas agrupadas = -0.5
Poner en el HAVING condiciones sobre columnas no agrupadas = -0.5
Functiones / Procedures / Triggers
Faltan parámetros = -0.5
No se entiende el funcionamiento del código = -1.0
No se distingue entre función, procedure y disparador = -1.0
La condición de disparo no es correcta = -1.0
No se controlan las excepciones = -0.5
Cursor incorrectamente declarado = -0.5
Manejo incorrecto del cursor = -0.5
Transacciones
Incorrecta interpretación de ROLLBACK= -0.5
Incorrecta interpretación de COMMIT= -0.5
Incorrecta identificación de transacciones= -0.5
Índices
Faltan columnas en el índice = -1.0
Incorrecta interpretación de EXPLAIN PLAN = -1.0
Error sintáctico no relevante (supuestamente provocado por copy/paste o por escribir rápido, falta cerrar una ‘, etc…):
Si es subsanable fácil = -0.0
Si requiere varios cambios = -0,2
Error sintáctico importante fácilmente subsanable pero afecta a la ejecución (ej. mala estructura de una función o cláusula, …) = -0,5
Error sintáctico grave (estructura del comando mal formada) = -1.0