Bases de Datos - Ayuda ejercicio disparadores

 
Vista:

Ayuda ejercicio disparadores

Publicado por jorge (2 intervenciones) el 04/04/2016 10:14:43
Tengo que hacer esto:

Los profesores de programación quieren almacenar en una tabla (denominada notas) de una base de datos las prácticas y los exámenes que han realizado los alumnos.

En esta tabla tenemos los siguientes campos:

• Dni del alumno.

• Código del examen / práctica: será un código de la forma E02 (que significa el segundo examen) o P10 que será la pràctica10.

• Nota: Será un valor entero entre 0 y 10.

disparador:

Crea los disparadores necesarios para:

• Guardar automáticamente en una tabla (llamada notas_alumno) el dni del alumno, su media y un código de una letra indicando si en ese momento está aprobado (A) o suspendido (S). Para hacer la media total se pondera con un 75% la nota media de los exámenes y un 25% la nota media de las prácticas. Es necesario que las medias estén redondeadas a un decimal.

• Guardar en otra tabla (llamada notas_prueba) el código de la práctica o examen y la nota más alta obtenida por los alumnos. Esta tabla sólo tendrá dos campos: Código del examen / práctica y la nota (que será la máxima nota obtenida por un alumno).

Ten en cuenta que los disparadores se ejecutarán tanto para introducir nuevas notas, como para modificarlas en caso de revisión como de eliminarlas en caso de error.

Habrá que crear las tablas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Ayuda ejercicio disparadores

Publicado por Gonzalo (16 intervenciones) el 04/04/2016 23:08:00
1
Tengo que hacer esto:

Ok...

¿Hiciste alguna parte, o solamente vienes a conseguir quien lo haga por ti?



Sin ofender...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda ejercicio disparadores

Publicado por jorge (2 intervenciones) el 05/04/2016 10:18:21
Els professors de programació volen emmagatzemar en una taula (anomenada notes) d'una base de dades les pràctiques i els exàmens que han realitzat els alumnes.

En aquesta taula tenim els següents camps:

• Dni de l'alumne.

• Codi de l'examen/pràctica: serà un codi de la forma E02 (que voldrà dir el segon examen) o P10 que serà la pràctica10.

• Nota: Serà un valor enter entre 0 i 10.

DISPARADORS:

Crea els disparadors necessaris per:

• Guardar automàticament en una taula (anomenada notes_alumne) el dni de l'alumne, la seva mitjana i un codi d'una lletra indicant si en aquell moment està aprovat (A) o suspès (S). Per fer la mitjana total es pondera amb un 75% la nota mitjana dels exàmens i un 25% la nota mitjana de les pràctiques. Cal que les mitjanes estiguin arrodonides a un decimal.

• Guardar en una altra taula (anomenada notes_prova) el codi de la pràctica o examen i la nota més alta obtinguda pels alumnes. Aquesta taula només tindrà dos camps: Codi de l'examen/pràctica i la nota (que serà la màxima nota obtinguda per un alumne).

Tingues en compte que els disparadors s'executaran tant per introduir noves notes, com per modificar-les en cas de revisió com d'eliminar-les en cas d'error.

Caldrà crear les taules.*/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
declare media decimal (3,1)
set media:e+p
insert
if (media>=5) then
update notes
 
 
 
DROP DATABASE professors;
CREATE DATABASE professors;
USE professors;
 
 
CREATE TABLE IF NOT EXISTS notes
(dni_alumne varchar(9),
codi_examen varchar(5),
nota integer(2),
primary key(dni_alumne,codi_examen)
);
 
/*• Guardar automàticament en una taula (anomenada notes_alumne) el dni de l'alumne, la seva mitjana i un codi d'una lletra indicant si en aquell moment està aprovat (A) o suspès (S). 
Per fer la mitjana total es pondera amb un 75% la nota mitjana dels exàmens i un 25% la nota mitjana de les pràctiques. Cal que les mitjanes estiguin arrodonides a un decimal.*/
CREATE TABLE IF NOT EXISTS notes_alumne
(dni_alumne varchar(9) PRIMARY KEY,
mitjana decimal(3,1),
codi enum('A','S'),
foreign key (dni_alumne) references notes (dni_alumne)
);
 
 DELIMITER //
 CREATE trigger exercici1 after insert
 on notes for each row
	begin
		declare e decimal (3,1);
        declare p decimal (3,1);
 
            if ((select count(*) from notes_alumne where dni_alumne=new.dni_alumne)=0) then
				set e:=(select avg((nota)*0.75) from notes where (codi like 'E%')and(dni_alumne=new.dni_alumne));
                set p:=(select avg((nota)*0.25) from notes where (codi like 'P%')and(dni_alumne=new.dni_alumne));
				insert into notes_alumne (dni_alumne,mitjana) values (new.dni_alumne,(e+p));
                if (mitjana>=5 and dni_alumne=new.dni_alumne) then
					update notes_alumne set codi=('A') where dni_alumne=new.dni_alumne;
				else
					update notes_alumne set codi=('S') where dni_alumne=new.dni_alumne;
				end if;
			else
				update notes_alumne set mitjana=(e+p) where dni_alumne=new.dni_alumne;
                if (mitjana>=5 and dni_alumne=new.dni_alumne) then
					update notes_alumne set codi=('A') where dni_alumne=new.dni_alumne;
				else
					update notes_alumne set codi=('S') where dni_alumne=new.dni_alumne;
				end if;
			end if;
	END //
 
 DELIMITER;
 
 DELIMITER //
 CREATE trigger exercici1a after insert
 on notes for each row
	begin
		declare e decimal (3,1);
        declare p decimal (3,1);
 
            if (old.nota<>new.nota
			end if;
	END //
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-2
Comentar
sin imagen de perfil

Ayuda ejercicio disparadores

Publicado por Gonzalo (16 intervenciones) el 06/04/2016 03:06:56
Genial...
¿Te das cuenta que en el resto del mundo hispanohablante, incluyendo toda Latinoamérica, salvo los descendientes de catalanes, nadie habla catalán?
¿Y que este foro es en castellano?

Haznos le favor de escribir en la lingua franca de todos. DE lo contrario será muy difícil entenderte para ayudarte.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda ejercicio disparadores

Publicado por jorge (1 intervención) el 06/04/2016 08:23:28
Los profesores de programación quieren almacenar en una tabla (denominada notas) de una base de datos las prácticas y los exámenes que han realizado los alumnos.

En esta tabla tenemos los siguientes campos:

• Dni del alumno.

• Código del examen / práctica: será un código de la forma E02 (que significa el segundo examen) o P10 que será la pràctica10.

• Nota: Será un valor entero entre 0 y 10.

disparador:

Crea los disparadores necesarios para:

• Guardar automáticamente en una tabla (llamada notas_alumno) el dni del alumno, su media y un código de una letra indicando si en ese momento está aprobado (A) o suspendido (S). Para hacer la media total se pondera con un 75% la nota media de los exámenes y un 25% la nota media de las prácticas. Es necesario que las medias estén redondeadas a un decimal.

• Guardar en otra tabla (llamada notas_prueba) el código de la práctica o examen y la nota más alta obtenida por los alumnos. Esta tabla sólo tendrá dos campos: Código del examen / práctica y la nota (que será la máxima nota obtenida por un alumno).

Ten en cuenta que los disparadores se ejecutarán tanto para introducir nuevas notas, como para modificarlas en caso de revisión como de eliminarlas en caso de error.

Habrá que crear las tablas. * /


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
DROP DATABASE professors;
CREATE DATABASE professors;
USE professors;
 
 
CREATE TABLE IF NOT EXISTS notes
(dni_alumne varchar(9),
codi_examen varchar(5),
nota integer(2),
primary key(dni_alumne,codi_examen)
);
 
/*• Guardar automàticament en una taula (anomenada notes_alumne) el dni de l'alumne, la seva mitjana i un codi d'una lletra indicant si en aquell moment està aprovat (A) o suspès (S). 
Per fer la mitjana total es pondera amb un 75% la nota mitjana dels exàmens i un 25% la nota mitjana de les pràctiques. Cal que les mitjanes estiguin arrodonides a un decimal.*/
CREATE TABLE IF NOT EXISTS notes_alumne
(dni_alumne varchar(9) PRIMARY KEY,
mitjana decimal(3,1),
codi enum('A','S'),
foreign key (dni_alumne) references notes (dni_alumne)
);
 
 DELIMITER //
 CREATE trigger exercici1 after insert
 on notes for each row
	begin
		declare e decimal (3,1);
        declare p decimal (3,1);
 
            if ((select count(*) from notas_alumno where dni_alumno=new.dni_alumno)=0) then
				set e:=(select avg((nota)*0.75) from notas where (codi like 'E%')and(dni_alumno=new.dni_alumno));
                set p:=(select avg((nota)*0.25) from notas where (codi like 'P%')and(dni_alumno=new.dni_alumno));
				insert into notas_alumno (dni_alumno,mitjana) values (new.dni_alumno (e+p));
                if (mediana>=5 and dni_alumno=new.dni_alumno) then
					update notas_alumno set codi=('A') where dni_alumno=new.dni_alumno;
				else
					update notas_alumno set codi=('S') where dni_alumno=new.dni_alumno;
				end if;
			else
				update notes_alumno set mediana=(e+p) where dni_alumno=new.dni_alumno;
                if (mediana>=5 and dni_alumno=new.dni_alumno) then
					update notas_alumno set codi=('A') where dni_alumno=new.dni_alumno;
				else
					update notas_alumno set codi=('S') where dni_alumno=new.dni_alumno;
				end if;
			end if;
	END //
 
 DELIMITER;
 
 DELIMITER //
 CREATE trigger ejercicio1a after insert
 on notes for each row
	begin
		declare e decimal (3,1);
        declare p decimal (3,1);
 
            if (old.nota<>new.nota
			end if;
	END //
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda ejercicio disparadores

Publicado por Fran (1 intervención) el 19/04/2016 15:24:40
Y cual es tu problema o fallo? o en que necesitas ayuda?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar