¡Hola Yahadad, espero que estés bien!
Tu sugerencia sobre utilizar TINYINT UNSIGNED para el campo de edad es bastante acertada. Como bien mencionas, las edades no pueden ser negativas y el rango de TINYINT UNSIGNED (0 a 255) es más que suficiente para representar la edad de una persona, dado que es poco probable que alguien viva más de 255 años.
En el contexto del ejercicio, se utiliza SMALLINT para el campo de edad, lo cual también es válido, aunque TINYINT UNSIGNED sería una opción más eficiente en términos de uso de memoria. Este tipo de optimización es especialmente útil cuando se trabaja con grandes volúmenes de datos.
Por ejemplo, si estás creando una base de datos para una aplicación que maneja millones de registros de clientes, cada byte cuenta. Cambiar de SMALLINT (que utiliza 2 bytes) a TINYINT UNSIGNED (que utiliza 1 byte) puede suponer un ahorro significativo en el almacenamiento.
Espero que esta explicación te sea útil y que sigas adelante con tus estudios en SQL. ¡Bons estudos!