Gestion de championnat et coupe de football PL/SQL
isettt
Messages postés2Date d'inscriptionjeudi 13 mai 2010StatutMembreDernière intervention 2 juin 2010
-
13 mai 2010 à 21:47
MOSIAB
Messages postés7Date d'inscriptionsamedi 17 décembre 2011StatutMembreDernière intervention21 décembre 2011
-
21 déc. 2011 à 18:07
Enoncé Considérer les schémas de relations suivants :
Nous proposons d’étudier l’informatisation d’un système de gestion de la FFF (Fédération Française de Foot Ball) pour les matches du Championnat et de la Coupe de France.
Soit le modèle physique suivant :
Exercice 1 Ecrire une fonction en PL/SQL qui calcule le nombre total de buts marqués par un joueur
donné par son code, une saison de code donné et une compétition donnée.
Exercice 2 Ecrire une fonction en PL/SQL qui calcule le total des points gagnés par une équipe donnée
par son code et une saison de code donné pour la compétition de ‘Championnat’.
Pour le résultat d’un matche, une équipe aura : pour le gain (3points), pour la perte (0 points)
et pour le nulle (1 point).
Exercice 3 Ecrire une procédure en PL/SQL qui permet de faire les statistiques des équipes pour une
saison donnée et pour la compétition de ‘Championnat’ en insérant dans la table :
Stat_Equipe (Code_Equipe, Nom_Equipe, Code_Saison, Nb_But_Pour, Nb_But_Contre,
Tot_Point, Nb_Match_Jou, Nb_Match_Gain, Nb_Match_Perd, Nb_Match_Nul, Rang)
Nb_But_Pour : le nombre de buts marqués par l’équipe.
Nb_But_Contre : le nombre de buts marqués contre l’équipe.
Tot_Points : le nombre total de points gagnés par l’équipe.
Nb_Match_Joués : le nombre total de matches joués par l’équipe.
Nb_Match_Gain : le nombre total de matches gagnés par l’équipe.
Nb_Match_Perd : le nombre total de matches perdus par l’équipe.
Nb_Match_Nul : le nombre total de matches nulles par l’équipe.
Rang : le rang de l’équipe dans le classement du championnat.
Exercice 4 · Ecrire un Trigger en PL/SQL qui met à jour les champs Nb_But_Eq1 et Nb_But_Eq2
de la table Matches après chaque insertion, modification ou suppression dans la table
Buteurs.
· Ecrire un Trigger en PL/SQL qui vérifie avant chaque insertion ou modification dans la
table Buteurs que le joueur qui a marqué est titulaire (Titulaire= 1) et que la minute de but
est entre 1 et 90 si la compétition est ‘Championnat’ ou entre 1 et 120 si la compétition est
‘Coupe’.
Solutions
exercice 1
CREATE FUNCTION total_buts (cj joueur.code_joueur%type, cs saison.code_saison%type, cp match.competition%type)
RETURN NUMBER IS
V NUMBER;
BEGIN
SELECT COUNT(NB_but_EQ1) into V
FROM match M, buteurs B, JOUEURS j
WHERE M.code_match = B.code_ match
AND B.code_joueurs= cj
AND M.competition= 'cp' and M.code_saison= 'cs';
RETURN V;
END;
Exercice 2
CREATE FUNCTION calcul_points (ce equipe.code_equipe%type, s saison.code_saison%type)
RETURN NUMBER IS
V1 NUMBER;
V2 NUMBER;
BEGIN
SELECT (nb_buts_eq1) INTO V1
FROM match
WHERE codeEq1 =CE AND code_saison= S AND competition='championnat';
SELECT (nb_buts_eq2) INTO V2
FROM match
WHERE codeEq1=CE AND code_saison=S AND competition='championnat';
IF V1>V2 THEN
RETURN 3;
ELSEIF V1=V2 THEN
RETURN 1;
ELSE
RETURN 0;
END;
Exercice 4
CREATE TRIGGER mise_a_jour
after INSERT OR UPDATE OR DELETE ON buteurs
IF INSERT or UPDATE
IF (codeE =codeEq1)
UPDATE match SET nb_but_eq1 = nb_but_eq1 +1;
ELSE
UPDATE match SET nb_but_eq2 = nb_but_eq2 +1;
END IF;
ELSE IF DELETE OR UPDATE
IF (codeE=codeEq1)
UPDATE match SET nb_but_eq1 = nb_but_eq1 -1;
ELSE
UPDATE match SET nb_but_eq2 = nb_but_eq2 -1;
END IF;
END IF;
J'arrive pas a comprendre l'exercice 3, Quelqu'un peut-il m'aider s'il vous plaît?