0% ont trouvé ce document utile (0 vote)
96 vues6 pages

Examen NFP107 : Systèmes de Gestion DB

Ce document décrit un examen sur les systèmes de gestion de bases de données. Il contient quatre parties portant sur la création de schémas, des requêtes SQL, des triggers et divers sujets liés aux droits sur les bases de données.

Transféré par

Gil DCece
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)
96 vues6 pages

Examen NFP107 : Systèmes de Gestion DB

Ce document décrit un examen sur les systèmes de gestion de bases de données. Il contient quatre parties portant sur la création de schémas, des requêtes SQL, des triggers et divers sujets liés aux droits sur les bases de données.

Transféré par

Gil DCece
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

CONSERVATOIRE NATIONAL DES ARTS ET METIERS

Samedi 11 Février 2006


2 heures
10 H 45 – 12 H 45

SYSTEMES DE GESTION DE BASES DE DONNEES


Code UE NFP107

EXAMEN
Première session

Documents autorisés : aucun

Le sujet doit impérativement être remis dans la copie

1/6
Centre d’Enseignement à Distance
Laurent MOREAU
CONSERVATOIRE NATIONAL DES ARTS ET METIERS

PARTIE 1 : Création de schéma (5 points)

Le Modèle Conceptuel de Données suivant permet de modéliser le domaine de gestion d’un parc informatique

Travail à réaliser :

1. Donnez les scripts de création de tables correspondant à ce schéma.

Il ne fallait pas oublier d’insérer les clés étrangères dans les bonnes tables
CREATE TABLE reparation (
id_reparation uniqueidentifier NOT NULL,
date_envoi datetime,
date_ret datetime,
prix decimal,
id_panne uniqueidentifier,
id_tiers uniqueidentifier );
ALTER TABLE reparation ADD CONSTRAINT PK_reparation PRIMARY KEY (id_reparation);
ALTER TABLE reparation ADD CONSTRAINT FK_reparation_id_panne FOREIGN KEY (id_panne)
REFERENCES panne (id_panne);

2/6
Centre d’Enseignement à Distance
Laurent MOREAU
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
ALTER TABLE reparation ADD CONSTRAINT FK_reparation_id_tiers FOREIGN KEY (id_tiers) REFERENCES
tiers (id_tiers);

2. Expliquez les choix de modélisation effectués par l’analyste. Vous concentrerez vos explications sur les
choix de cardinalités.

Explication des cardinalités particulières 1,1 ou 0,1

PARTIE 2 : SQL (5 POINTS)

Vous disposez d’un script de création de tables

-- CREATION DE TABLES

CREATE TABLE menu_type (


id_menu uniqueidentifier NOT NULL,
libelle_aliment_compose varchar(25),
qte_commandee decimal ,
code_espece uniqueidentifier,
CONSTRAINT PK_menu_type PRIMARY KEY (id_menu),
CONSTRAINT FK_menu_type_code_espece FOREIGN KEY (code_espece) REFERENCES espece
(code_espece)
);

CREATE TABLE element_de_base (


code_element uniqueidentifier NOT NULL,
libelle_element varchar(50),
CONSTRAINT PK_element_de_base PRIMARY KEY (code_element)
);

CREATE TABLE espece (


code_espece uniqueidentifier NOT NULL,
libelle_espece varchar(50),
CONSTRAINT PK_espece PRIMARY KEY (code_espece )
);

CREATE TABLE animal (


nom_bapteme uniqueidentifier NOT NULL,
sexe varchar(5),
date_naissance datetime,
date_deces datetime,
code_espece uniqueidentifier,
CONSTRAINT PK_animal PRIMARY KEY (nom_bapteme),
CONSTRAINT FK_animal_code_espece FOREIGN KEY (code_espece) REFERENCES espece
(code_espece)
);

CREATE TABLE enclos (


num_enclos uniqueidentifier NOT NULL,
nom_enclos varchar(50),
CONSTRAINT PK_enclos PRIMARY KEY (num_enclos )
);

CREATE TABLE periode (


id_periode uniqueidentifier NOT NULL,
date_debut datetime,
date_fin datetime,
CONSTRAINT PK_periode PRIMARY KEY (id_periode)
);

CREATE TABLE se_composer (


code_element uniqueidentifier NOT NULL,
id_menu uniqueidentifier NOT NULL,
pourcentage decimal,
CONSTRAINT PK_se_composer PRIMARY KEY (code_element, id_menu),

3/6
Centre d’Enseignement à Distance
Laurent MOREAU
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
CONSTRAINT FK_se_composer_code_element FOREIGN KEY (code_element) REFERENCES
element_de_base (code_element),
CONSTRAINT FK_se_composer_id_menu FOREIGN KEY (id_menu) REFERENCES menu_type
(id_menu)
);

CREATE TABLE recevoir (


id_menu uniqueidentifier NOT NULL,
nom_bapteme uniqueidentifier NOT NULL,
qte_absorbee decimal,
date_repas datetime,
heure_repas datetime,
CONSTRAINT PK_recevoir PRIMARY KEY (id_menu, nom_bapteme),
CONSTRAINT FK_recevoir_id_menu FOREIGN KEY (id_menu) REFERENCES menu_type (id_menu),
CONSTRAINT FK_recevoir_nom_bapteme FOREIGN KEY (nom_bapteme) REFERENCES animal
(nom_bapteme)
);

CREATE TABLE pouvoir_vivre (


code_espece uniqueidentifier NOT NULL,
num_enclos uniqueidentifier NOT NULL,
CONSTRAINT PK_pouvoir_vivre PRIMARY KEY (code_espece, num_enclos),
CONSTRAINT FK_pouvoir_vivre_code_espece FOREIGN KEY (code_espece) REFERENCES espece
(code_espece),
CONSTRAINT FK_pouvoir_vivre_num_enclos FOREIGN KEY (num_enclos ) REFERENCES enclos
(num_enclos)
);

CREATE TABLE occuper (


nom_bapteme uniqueidentifier NOT NULL,
id_periode uniqueidentifier NOT NULL,
num_enclos uniqueidentifier NOT NULL,
CONSTRAINT PK_occuper PRIMARY KEY (nom_bapteme, id_periode, num_enclos),
CONSTRAINT FK_occuper_nom_bapteme FOREIGN KEY (nom_bapteme) REFERENCES animal
(nom_bapteme),
CONSTRAINT FK_occuper_id_periode FOREIGN KEY (id_periode) REFERENCES periode
(id_periode),
CONSTRAINT FK_occuper_num_enclos FOREIGN KEY (num_enclos) REFERENCES enclos
(num_enclos)
);

Travail à réaliser : Ecrivez les requêtes correspondantes

1. Requête 1 : Quels sont les tigres mâles qui reçoivent un menu composé de 40% de protides ?
SELECT nom baptême
FROM Animal, Recevoir, Menu Type, Se composer, Eléments de base, Espece
WHERE [Link] = « Male »
AND Se [Link] = 40
AND Element de [Link]é aliment = « Protides »
AND [Link]é espèce = « Tigre »
2. Requête 2 : Pendant quelle période les rhinocéros vivent-ils dans un enclos ?
SELECT date début, date fin
FROM Période, Enclos, Espèce, Pouvoir vivre, Occuper
WHERE Espè[Link]é espèce = « Rhinocéros »
3. Requête 3 : Quels sont les menus qui sont composés de moins de 10% de glucides ?
SELECT id menu
FROM Menu type, Se composer, Eléments de base
WHERE Eléments de [Link]é éléments = « Glucides »
AND Se [Link] >= 10
4. Requête 4 : Lister les animaux dont le nom ressemble à « PUMBA »
SELECT Nom baptême
FROM Animal
4/6
Centre d’Enseignement à Distance
Laurent MOREAU
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
WHERE Nom baptême LIKE « %PUMBA% »
5. Requête 5 : Combien d’espèces peuvent vivre en enclos ?
SELECT COUNT(Code espèce)
FROM Espèce, Pouvoir vivre, Enclos

PARTIE 3 : TRIGGERS (6 POINTS)

On dispose de :
CREATE TABLE dept(
nodept NUMERIC(2) NOT NULL CONSTRAINT dept_nodept_pk PRIMARY KEY,
nom VARCHAR(25),
noregion NUMERIC(1) NOT NULL
);

CREATE TABLE emp(


noemp NUMERIC(7) NOT NULL CONSTRAINT emp_noemp_pk PRIMARY KEY,
nom VARCHAR(25),
prenom VARCHAR(25) ,
embauche DATE,
nosupr NUMERIC(7) ,
titre VARCHAR(25) ,
nodept NUMERIC(2) NOT NULL ,
salaire NUMERIC(11, 2) ,
tx_commission NUMERIC(4, 2) CONSTRAINT emp_tx_commission_ck CHECK (tx_commission
BETWEEN 10 AND 20) ,
CONSTRAINT emp_nodept_fk FOREIGN KEY (nodept) REFERENCES dept(nodept)
);

1. Écrire une fonction moySalaire sans paramètre qui renvoie le salaire moyen des employés.
CREATE OR REPLACE FUNCTION moySalaire() RETURNS NUMERIC AS ’
DECLARE
Moyennne NUMERIC
BEGIN
SELECT INTO moyenne AVG(salaire) FROM emp;
RETURN moyenne;
END;
‘ LANGUAGE plpgsql;
2. Utiliser ensuite cette fonction pour afficher les noms et le salaire des employés qui gagnent plus que le
salaire moyen,
SELECT nom, salaire FROM emp
WHERE salaire > moySalaire() ;
3. puis ceux dont le salaire est égal au salaire moyen à 10% près (c'est-à-dire ceux dont le salaire est
compris entre 90% et 110% du salaire moyen).
SELECT nom, salaire FROM emp
WHERE ABS(salaire-moySalaire()) < 0.10*moySalaire() ;

PARTIE 4 : DIVERS (2 POINTS)

Une table ayant été créée, son propriétaire peut accorder ou retirer à un autre utilisateur (ou à tous) les droits
suivants :

¾ SELECT : Accès en lecture à toutes les colonnes d'une table ou d'une vue.

¾ INSERT : Insérer des données dans toutes les colonnes d'une table.

¾ UPDATE : Mettre à jour dans toutes les colonnes d'une table.

¾ DELETE : Supprimer des enregistrements d'une table.

5/6
Centre d’Enseignement à Distance
Laurent MOREAU
CONSERVATOIRE NATIONAL DES ARTS ET METIERS

¾ RULE : Définir une règle sur une table ou une vue.

¾ ALL : Donner tous les privilèges.

1. Créer une vue relative au numéro, nom, titre, numéro de département des employés.
Puis accorder les droits de SELECT sur la vue à un autre user
CREATE VIEW EMPVUE AS
SELECT NOEMP, NOM, TITRE, NODEPT
FROM EMP;
GRANT SELECT
ON EMPVUE
TO <nom de l’utilisateur>
2. Accorder tous les droits sur la table DEPT à un autre user

GRANT ALL ON DEPT TO <nom de l’utilisateur>

PARTIE 5 : REPRISE DUR PANNE (2 POINTS)

Expliquez les différentes techniques de reprises sur panne

Cf cours

6/6
Centre d’Enseignement à Distance
Laurent MOREAU

Vous aimerez peut-être aussi