0% ont trouvé ce document utile (0 vote)
30 vues3 pages

Calavie

Examen

Transféré par

neladigbe
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
30 vues3 pages

Calavie

Examen

Transféré par

neladigbe
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

​Pour répondre à cet exercice, voici la solution complète :

Dossier 1 : Implémentation d'une base de données

1. Script de création de la base de données "GESCAB" :

-- Création de la base de données


CREATE DATABASE GESCAB;
USE GESCAB;

-- Table TEST
CREATE TABLE TEST (
NumTest INT PRIMARY KEY,
intitule VARCHAR(100),
datedebut DATE,
datfin DATE,
CodStr INT
);

-- Table STRUCTURE
CREATE TABLE STRUCTURE (
CodStr INT PRIMARY KEY,
NomStruct VARCHAR(100),
Adresse VARCHAR(255)
);

-- Table CANDIDAT
CREATE TABLE CANDIDAT (
NumCand INT PRIMARY KEY IDENTITY(100, 1), -- Numéros candidats auto-incrémentés à partir de 100
Nom VARCHAR(100),
Prenom VARCHAR(100)
);

-- Table EPREUVE
CREATE TABLE EPREUVE (
NumEpr INT PRIMARY KEY,
DatEpreuve DATE,
duree INT,
NoteMin DECIMAL(4,2) DEFAULT 10, -- Par défaut la note minimum est 10
NumTest INT,
FOREIGN KEY (NumTest) REFERENCES TEST(NumTest)
);

-- Table COMPOSER
CREATE TABLE COMPOSER (
NumCand INT,
NumEpr INT,
Note DECIMAL(4,2) CHECK (Note BETWEEN 0 AND 20), -- La note doit être entre 0 et 20
PRIMARY KEY (NumCand, NumEpr),
FOREIGN KEY (NumCand) REFERENCES CANDIDAT(NumCand),
FOREIGN KEY (NumEpr) REFERENCES EPREUVE(NumEpr)
);

Dossier 2 : Procédures et fonctions stockées

1. Procédure TESTSPER : Cette procédure retourne la liste des épreuves dans une période donnée.

CREATE PROCEDURE TESTSPER(@DateDebut DATE, @DateFin DATE)


AS
BEGIN
SELECT *
FROM EPREUVE
WHERE DatEpreuve BETWEEN @DateDebut AND @DateFin;
END;

2. Procédure TESTSTR : Cette procédure retourne les tests organisés par une structure donnée dans les deux
dernières années.

CREATE PROCEDURE TESTSTR(@CodStr INT)


AS
BEGIN
SELECT T.NumTest, T.intitule, T.datedebut, T.datfin, S.NomStruct
FROM TEST T
JOIN STRUCTURE S ON T.CodStr = S.CodStr
WHERE T.CodStr = @CodStr AND T.datedebut >= DATEADD(YEAR, -2, GETDATE());
END;

3. Fonction NBTEST : Cette fonction retourne le nombre de tests déjà enregistrés.

CREATE FUNCTION NBTEST()


RETURNS INT
AS
BEGIN
DECLARE @nbTests INT;
SELECT @nbTests = COUNT(*) FROM TEST;
RETURN @nbTests;
END;

4. Procédure NBCAND : Cette procédure retourne le nombre de candidats ayant composé pour chaque épreuve
d’un test donné.

CREATE PROCEDURE NBCAND(@NumTest INT)


AS
BEGIN
SELECT E.NumEpr, COUNT(C.NumCand) AS NbCandidats
FROM EPREUVE E
LEFT JOIN COMPOSER C ON E.NumEpr = C.NumEpr
WHERE E.NumTest = @NumTest
GROUP BY E.NumEpr;
END;

5. Procédure LISTCAND : Cette procédure retourne la liste des candidats ayant obtenu une moyenne
supérieure ou égale à 10.

CREATE PROCEDURE LISTCAND(@NumTest INT)


AS
BEGIN
SELECT C.NumCand, C.Nom, C.Prenom, AVG(Co.Note) AS Moyenne
FROM CANDIDAT C
JOIN COMPOSER Co ON C.NumCand = Co.NumCand
JOIN EPREUVE E ON Co.NumEpr = E.NumEpr
WHERE E.NumTest = @NumTest
GROUP BY C.NumCand, C.Nom, C.Prenom
HAVING AVG(Co.Note) >= 10;
END;

Voilà une solution complète pour l'exercice de gestion de la base de données avec SQL Server.

Vous aimerez peut-être aussi