Necesito ayuda con tres ejercicios y si me pudierais ayudar os lo agradecería.
Enunciado:
El siguiente modelo conceptual representa parte del sistema de información de una empresade trenes. Los empleados pueden clasificarse en empleados, conductores y revisores. Losconductores pueden conducir uno o varios trenes. Los revisores pueden ser revisores o responsables del tren, en este caso su cargo es revisor o responsable.
El diseño lógico realizado es el siguiente:
Empleados(cod_empleado, nombre, e-mail, edad)
Conductores(cod_empleado, horas_Act,horas_max)
Revisores (cod_empleado, turno, cargo)
Trenes (Cod_tren, nombre, origen, destino, duración, cod_empleado, horario)
Controla (cod_tren, cod_empleado)
Ejercicio 1. Crea una vista que se llame Infotrenes y que muestre la
información de los trenes con origen en Castellón. El resultado debe ser similar al siguiente:
Ejercicio 2.Crea un disparador que permita actualizar el conductor del tren (solo el id) mediante la vista. Independientemente de cómo la hayas creado, el disparador mantener la restricción WITH CHECK OPTION a la vista. ¿Qué crees que pasará con el nombre del conductor? Razona tu respuesta.
Ejercicio 3. Ante un nuevo requisito planteado por la empresa llegamos a la conclusión de que debemos añadir una nueva columna a la base de datos que refleje siempre, y de modo automático (lo haremos mediante disparadores), el número de trenes que conduce cada empleado. Este nuevo dato es un dato derivado ya que se obtiene a partir de datos que se encuentran en la base de datos.
1)Determina la tabla a la que debes añadir la nueva columna y el tipo de datos que deberá tener. Da argumentos para justificar tu elección.
2) Teniendo en cuenta el dato derivado que se desea mantener siempre
actualizado ¿cuál es el predicado que se debe respetar en todo momento? Usa el
lenguaje SQL para expresar este predicado.
3) ¿Ante qué eventos (INSERT, UPDATE, DELETE) sobre qué tablas se
puede violar el predicado establecido en el apartado 2?
4) ¿Qué acciones se han de realizar ante los eventos establecidos en el
apartado 3? Describe las acciones a realizar usando el lenguaje natural.
5)Escribe la sentencia ALTER TABLE que añade la nueva columna a la
base de datos. Teniendo en cuenta que el mantenimiento de este dato derivado ha de ser transparente para la aplicación que actualmente se usa en la empresa de alquiler
de vehículos (no vamos a modificar el código ya implementado puesto que habría que volver a instalarlo en múltiples ordenadores), explica si resulta necesario o no el
asignar un valor por defecto (DEFAULT) a la nueva columna, y en su caso, tenlo en
cuenta en la sentencia ALTER TABLE.
6) Escribe el código de los disparadores correspondientes a los eventos y las acciones del apartado 4. Es importante que tengas en cuenta la respuesta que has
dado en el apartado anterior. Para comprobar el correcto funcionamiento de los
disparadores seguramente necesitarás inicializar la nueva columna con el valor
correspondiente al estado actual de la base de datos. Una sola sentencia UPDATE te
servirá para llevar a cabo esta inicialización.
7)Como sabes, cuando escribimos una sentencia INSERT podemos
indicar después del nombre de la tabla (entre paréntesis) los nombres de las
columnas a las que corresponden los valores que vamos a insertar. Por ejemplo:
INSERT INTO tabla(col1,col2,col3) VALUES (1,2,3);
Explica qué problemas se podrían producir al trabajar con la aplicación que está
usando la empresa, trar ejecutar la sentencia ALTER TABLE del apartado 5 sobre la
base de datos, si al escribir el código de la aplicación no hubiéramos especificado los
nombres de las columnas en las sentencias INSERT. Por ejemplo:
INSERT INTO tabla VALUES (1,2,3)