Vous êtes sur la page 1sur 19

Etablissement Inter – Etats d’Enseignement Supérieur

BP 2263 Libreville (Gabon) Tél. (241) 07 70 55 00 - 07 70 56 00


Site web: www.iaisiege.net E-mail: contact@iaisiege.net

Base de Données
d’une société de réalisation des projets

Réalisé par : NDIKYEM Innocent Sous la supervision de :

Etudiant en 1ière année de MIAGE Dr. NAMBILA Ange

Année académique 2011- 2012


Maîtrise en Informatique Appliquée à la Gestion des Entreprises(MIAGE)
Base de données d’une société

Sommaire
Introduction ...................................................................................................... 3
I-Structure de données ..................................................................................... 4
II-Implémentation des tables et les résultats .................................................. 4
1- Création de la table département ................................................................... 4
2- Création de la table projet ............................................................................. 5
3- Création de la table bureau ............................................................................ 6
4- Création de la table téléphone ....................................................................... 6
5- Création de la table employé ......................................................................... 6
6- Création de la table tâche .............................................................................. 7
7- Création de la table effectuer ......................................................................... 8
8- Modification de la table département ............................................................ 8
III- Insertion et mise à jour des données dans les tables ................................ 9
A-Insertion des données...................................................................................... 9
B- Mise à jour des tables .................................................................................... 14
IV- Requêtes .................................................................................................... 16
Conclusion ....................................................................................................... 19

NDIKYEM Innocent Page 2


Base de données d’une société

Introduction
Les bases de données sont aujourd’hui d’une importance capitale. Elles permettent
de mémoriser de façon durable les données et d’avoir un accès rapide à celles-ci.
La réalisation d’une base de données nécessite la maîtrise d’un système de gestion
de base de données(SGBD). Le SGBD est donc la structure d’accueil d'une ou de
plusieurs bases de données. C’est ainsi que dans le cadre de notre cours de Base de
Données 1 en première année du cycle de Maîtrise en Informatique Appliquée à la
Gestion des Entreprises(MIAGE), le chargé de cours de base des données nous a
donné un TP sous Oracle .Nous procéderons d’abord à la présentation de la
structure des données du TP et ensuite à la création des tables en définissant toutes
les contraintes d’intégrités possibles sur ces tables. Pour finir il sera question
d’exécuter les requêtes faisant intervenir différentes tables.
Le but de ces travaux pratiques est de réaliser un SGBD pouvant permettre la
gestion des informations d’une société. Ce SGBD devra permettre à la société de
réaliser différents projets.
A cet effet, nous allons utiliser oracle 10g. C’est ce qui nous amènera à utiliser le
langage SQL et le SGBD i SQL*PLUS.

NDIKYEM Innocent Page 3


Base de données d’une société

I-Structure de données
Une société spécialisée dans la réalisation des projets gère des informations dont
voici leurs schémas relationnels:

 Déduction des schémas relationnels équivalents


Département (code_dep, lib_dep, budget_dep, #matri_emp) ;

Projet (code_proj, lib_proj, budget_proj, #matri_emp, #code_dep) ;


Employé (matri_emp, nom_emp, pren_emp, datenais_emp, sexe_emp, sal_emp,
#code_dep, #code_dep_d, #num_tel, #code_bur) ;

Tâche (code_tc, design_tc, courtunit_tc, #code_proj) ;


Bureau (code_bur, lib_bur, #code_dep) ;

Téléphone (num_tel, #code_bur) ;


Effectuer (#matri_emp, #code_tc , nbre_heur) ;

II-Implémentation des tables et les résultats

1- Création de la table département


A cause de la clé étrangère #matri_emp qui apparait dans la table département
avant la création de la table employé où elle est clé primaire, nous allons créer la
table département avec matri_emp comme attribut simple puis nous ferons une
modification de celle-ci en clé étrangère après la création de la table employé où elle
apparaît comme clé primaire.
CREATE TABLE departement

(code_dep VARCHAR2(6) CONSTRAINT pk_departement PRIMARY KEY,

lib_dep VARCHAR2(30) NOT NULL,

budget_dep NUMBER(13),
matri_emp VARCHAR2(6));

NDIKYEM Innocent Page 4


Base de données d’une société

 Résultat

2- Création de la table projet


A cause de la clé étrangère #matri_emp qui apparait dans la table projet avant la
création de la table employé où elle est clé primaire, nous allons créer la table projet
avec matri_emp comme un attribut simple puis nous ferons une modification de
celle-ci en clé étrangère après la création de la table employé où elle apparaît
comme clé primaire.

CREATE TABLE projet


(code_proj VARCHAR2(6) CONSTRAINT pk_projet PRIMARY KEY,
lib_proj VARCHAR2(30),

budget_proj NUMBER(13),
matri_emp VARCHAR2(6),
code_dep VARCHAR2(6) CONSTRAINT fk_projet_to_departement
REFERENCES departement(code_dep));

 Résultat

NDIKYEM Innocent Page 5


Base de données d’une société

3- Création de la table bureau


CREATE TABLE bureau

(code_bur VARCHAR2(6) CONSTRAINT pk_bureau PRIMARY KEY,


lib_bur VARCHAR2(30),

code_dep VARCHAR2(6) CONSTRAINT fk_bureau_to_departement


REFERENCES departement(code_dep));

 Résultat

4- Création de la table téléphone


CREATE TABLE telephone

(num_tel VARCHAR2 (13) CONSTRAINT pk_telephone PRIMARY KEY,


code_bur VARCHAR(6) CONSTRAINT fk_telephone_to_bureau
REFERENCES bureau (code_bur));

 Résultat

5- Création de la table employé


CREATE TABLE employe

(matri_emp VARCHAR2(6) CONSTRAINT pk_employe PRIMARY KEY,


nom_emp VARCHAR2(30) NOT NULL,

pre_emp VARCHAR2(30),
datenais_emp DATE,
NDIKYEM Innocent Page 6
Base de données d’une société

sexe_emp CHAR,
salaire_emp NUMBER(9),

code_dep VARCHAR2(6) CONSTRAINT fk_employe_to_departement


REFERENCES departement(code_dep),
code_dep_d VARCHAR2(6) CONSTRAINT fk_employe_to_departement
REFERENCES departement(code_dep),
num_tel VARCHAR2 (13) CONSTRAINT fk_employe_to_telephone
REFERENCES telephone (num_tel),
code_bur VARCHAR2(6) CONSTRAINT fk_employe_to_bureau
REFERENCES bureau (code_bur));

 Résultat

6- Création de la table tâche


CREATE TABLE tache
(code_tc VARCHAR2(6) CONSTRAINT pk_table PRIMARY KEY,

design_tc VARCHAR2(30),

courtunit_tc VARCHAR2(30),
code_proj VARCHAR2(6) CONSTRAINT fk_tache_to_projet REFERENCES
projet (code_proj));

NDIKYEM Innocent Page 7


Base de données d’une société

 Résultat

7- Création de la table effectuer


CREATE TABLE effectuer
(matri_emp VARCHAR2(6) CONSTRAINT fk_effectuer_to_employe
REFERENCES employe(matri_emp),

code_tc VARCHAR2(6) CONSTRAINT fk_effectuer_to_tache REFERENCES


tache(code_tc),
nbreheure NUMBER(7));

 Résultat

8- Modification de la table département et de la table projet


On modifie l’attribut matri_emp de la table département en une clé étrangère :

ALTER TABLE departement


(MODIFY matri_emp VARCHAR2(6) CONSTRAINT
fk_departement_to_employe REFERENCES employe(matri_emp));

ALTER TABLE projet


MODIFY matri_emp VARCHAR2(6) CONSTRAINT fk_projet_to_employe
REFERENCES employe(matri_emp);

NDIKYEM Innocent Page 8


Base de données d’une société

III- Insertion et mise à jour des données


dans les tables
A-Insertion des données
1- Insertion des données dans la table département
INSERT INTO departement (code_dep, lib_dep, budget_dep)

VALUES ('D00001', 'ETUDE', '10000000');

INSERT INTO departement (code_dep, lib_dep, budget_dep)


VALUES ('D00002', 'DEVELOPPEMENT', '1000000');

INSERT INTO departement (code_dep, lib_dep, budget_dep)


VALUES ('D00003', 'RECHERCHE', '17000000');
INSERT INTO departement (code_dep, lib_dep, budget_dep)

VALUES ('D00004', 'FORMATION', '18000000');

INSERT INTO departement (code_dep, lib_dep, budget_dep)

VALUES ('D00005', 'EVALUATION', '20000000');

2- Insertion des données dans la table projet


INSERT INTO projet (code_proj, lib_proj, budget_proj,code_dep)

VALUES ('P00001', 'AIDE', '7000000','D00001');

INSERT INTO projet (code_proj, lib_proj, budget_proj, code_dep)


VALUES ('P00002', 'ASSISTANCE', '20000000', 'D00003');

INSERT INTO projet (code_proj, lib_proj, budget_proj, code_dep)


VALUES ('P00003', 'INTEGRATION', '17000000', 'D00005');

NDIKYEM Innocent Page 9


Base de données d’une société

3- Insertion des données dans la table bureau


INSERT INTO bureau (code_bur, lib_bur,code_dep)

VALUES ('B00001', 'SERVICE1','D00001');


INSERT INTO bureau (code_bur, lib_bur,code_dep)

VALUES ('B00002', 'SERVICE2','D00002');

INSERT INTO bureau (code_bur, lib_bur,code_dep)

VALUES ('B00003', 'SERVICE3','D00003');

INSERT INTO bureau (code_bur, lib_bur,code_dep)

VALUES ('B00004', 'SERVICE4','D00004');

INSERT INTO bureau (code_bur, lib_bur,code_dep)


VALUES ('B00005', 'SERVICE5','D00005');

 Résultat

4- Insertion des données dans la table téléphone


INSERT INTO telephone (num_tel,code_bur)
VALUES ('04166451','B00001');

INSERT INTO telephone (num_tel,code_bur)

VALUES ('04166452','B00002');

INSERT INTO telephone (num_tel,code_bur)

VALUES ('04166453','B00003');
INSERT INTO telephone (num_tel,code_bur)

NDIKYEM Innocent Page 10


Base de données d’une société

VALUES ('04166454','B00004');
INSERT INTO telephone (num_tel,code_bur)

VALUES ('04166455','B00005');

 Résultat

5- Insertion des données dans la table employé

INSERT INTO employe (matri_emp, nom_emp, pre_emp, datenais_emp,


sexe_emp, salaire_emp, code_dep, code_dep_d, num_tel, code_bur)
VALUES ('E00001','MAKAYA','RENE','10/01/1980','M','500000', 'D00001',
'D00001','04166451', 'B00001');
INSERT INTO employe (matri_emp, nom_emp, pre_emp, datenais_emp,
sexe_emp, salaire_emp, code_dep, code_dep_d, num_tel, code_bur)

VALUES ('E00002','MABA','DANIEL','18/04/1984','M','600000', 'D00002',


'D00002','04166452', 'B00002');
INSERT INTO employe (matri_emp, nom_emp, pre_emp, datenais_emp,
sexe_emp, salaire_emp, code_dep, code_dep_d, num_tel, code_bur)
VALUES ('E00003','ALTENGAR','RAYMOND','12/11/1982','M','400000',
'D00003','D00003','04166453', 'B00003');
INSERT INTO employe (matri_emp, nom_emp, pre_emp, datenais_emp,
sexe_emp, salaire_emp, code_dep, code_dep_d, num_tel, code_bur)
VALUES ('E00004','MADALLAH','ADELE','30/09/1981','F','700000',
'D00004','D00004','04166454', 'B00004');

INSERT INTO employe (matri_emp, nom_emp, pre_emp, datenais_emp,


sexe_emp, salaire_emp, code_dep, code_dep_d, num_tel, code_bur)

NDIKYEM Innocent Page 11


Base de données d’une société

VALUES ('E00005','MAVUATA','DAVID','15/02/1987','M','450000', 'D00005',


'D00005','04166455', 'B00005');
INSERT INTO employe (matri_emp, nom_emp, pre_emp, datenais_emp,
sexe_emp, salaire_emp, code_dep, num_tel, code_bur)
VALUES ('E00006','AIME','NOUBA','20/04/1988','M','650000',
'D00005','04166455', 'B00005');

INSERT INTO employe (matri_emp, nom_emp, pre_emp, datenais_emp,


sexe_emp, salaire_emp, code_dep, num_tel, code_bur)
VALUES ('E00007','MOMBO','ALI','11/04/1985','M','700000',
'D00005','04166452', 'B00002');

 Résultat

6- Insertion des données dans la table tâche

INSERT INTO tache (code_tc, design_tc, code_proj)

VALUES ('T00001', 'ACTION1','P00001');


INSERT INTO tache (code_tc, design_tc, code_proj)

VALUES ('T00002', 'ACTION2','P00002');

INSERT INTO tache (code_tc, design_tc, code_proj)

VALUES ('T00003', 'ACTION3','P00003');

INSERT INTO tache (code_tc, design_tc, code_proj)

VALUES ('T00004', 'ACTION4', 'P00001');

INSERT INTO tache (code_tc, design_tc, code_proj)

NDIKYEM Innocent Page 12


Base de données d’une société

VALUES ('T00005', 'ACTION5','P00003');

 Résultat

7- Insertion des données dans la table effectuer

INSERT INTO effectuer (matri_emp, code_tc , nbreheure)

VALUES ('E00001', 'T00002','50');

INSERT INTO effectuer (matri_emp, code_tc , nbreheure)


VALUES ('E00002', 'T00002','60');

INSERT INTO effectuer (matri_emp, code_tc , nbreheure)

VALUES ('E00003', 'T00003','40');

INSERT INTO effectuer (matri_emp, code_tc , nbreheure)

VALUES ('E00004', 'T00004','40');

INSERT INTO effectuer (matri_emp, code_tc , nbreheure)


VALUES ('E00005', 'T00005','30');

INSERT INTO effectuer (matri_emp, code_tc , nbreheure)


VALUES ('E00007', 'T00005','70');

 Résultat

NDIKYEM Innocent Page 13


Base de données d’une société

B- Mise à jour des tables


1-TABLE departement
UPDATE departement
SET matri_emp='E00001'
WHERE code_dep='D00001';
UPDATE departement
SET matri_emp='E00002'
WHERE code_dep='D00002';
UPDATE departement
SET matri_emp='E00003'
WHERE code_dep='D00003';
UPDATE departement
SET matri_emp='E00004'
WHERE code_dep='D00004';
UPDATE departement
SET matri_emp='E00005'
WHERE code_dep='D00005';

 Résultat

NDIKYEM Innocent Page 14


Base de données d’une société

2- TABLE projet
UPDATE projet

SET matri_emp='E00001'
WHERE code_proj='P00001';

UPDATE projet

SET matri_emp='E00003'

WHERE code_proj='P00002';

UPDATE projet

SET matri_emp='E00007'

WHERE code_proj='P00003';

 Résultat

NDIKYEM Innocent Page 15


Base de données d’une société

IV- Requêtes
1- Lister les employés ayant effectué les tâches (matri_emp,
nom_emp, code_tc, nbreheure, code_proj) :
SELECT e.matri_emp,nom_emp,ef.code_tc, code_proj, nbreheure

FROM employe e, effectuer ef, tache t

WHERE (ef.code_tc=t.code_tc) AND (e.matri_emp=ef.matri_emp);

 Résultat

2- Lister les projets où ‘MAKAYA’ et ‘MABA’ ont participé


ensemble à ces projets (code_proj, lib_proj) :
(SELECT p.code_proj, lib_proj
FROM projet p, tache t, effectuer ef, employe e

WHERE t.code_proj=p.code_proj AND

ef.code_tc=t.code_tc AND
ef.matri_emp=e.matri_emp AND nom_emp='MABA')

INTERSECT

(SELECT p.code_proj, lib_proj

FROM projet p, tache t, effectuer ef, employe e

WHERE t.code_proj=p.code_proj AND

ef.code_tc=t.code_tc AND
ef.matri_emp=e.matri_emp AND nom_emp='MAKAYA');
NDIKYEM Innocent Page 16
Base de données d’une société

 Résultat

3- Donner l’employé qui est responsable du département


‘ETUDE’ (nom_emp, pre_emp) :
SELECT nom_emp, pre_emp
FROM employe e, departement d

WHERE e.code_dep_d=d.code_dep

e.matri_emp=d.matri_emp

AND lib_dep='ETUDE';

 Résultat

4- Lister les projets qui ont un budget supérieur à celui du


département (code_proj, budget_proj, code_dep,
budget_dep) :
SELECT code_proj, d.code_dep, budget_dep
FROM projet p, departement d

WHERE d.code_dep=p.code_dep AND

budget_proj>budget_dep;

 Résultat

NDIKYEM Innocent Page 17


Base de données d’une société

5- Lister les employés qui ont travaillé sur les projets dont
‘MOMBO’ a dirigé (matri_emp, nom_emp, code_proj,
lib_proj) :
SELECT e1.matri_emp, e1.nom_emp,

p.code_proj, lib_proj
FROM employe e1, projet p, tache t, effectuer ef, employe e2

WHERE ef.matri_emp=e1.matri_emp AND

t.code_tc=ef.code_tc AND

p.code_proj=t.code_proj AND

e2.matri_emp=p.matri_emp AND
e2.nom_emp='MOMBO';

 Résultat

6- Lister les départements où aucun projet n’est réalisé


(code_dep, lib_dep) :
(SELECT code_dep, lib_dep
FROM departement)
MINUS
(SELECT d.code_dep, lib_dep
FROM projet p, departement d
WHERE p.code_dep=d.code_dep);

 Résultat

NDIKYEM Innocent Page 18


Base de données d’une société

Conclusion
Ce TP nous a permis de mettre en pratique les notions de création des tables avec
leurs attributs et l’exécution des requêtes SQL vues aux cours. Malgré les difficultés
liées à la maîtrise de l’outil SGBD Oracle rencontrées et à la compréhension du
langage SQL, ce travail nous a permis à mieux appréhender les notions qui sont
indispensables pour la réalisation d’une base de données. Nous nous sommes
attardés sur les rudiments de SQL pour Oracle afin de mieux comprendre ce qu’est
une base de données et particulièrement une base de données relationnelle. Nous
avons compris comment mettre en place une base de données avec le serveur
oracle 10g et comment s’en servir pour manipuler les données.

NDIKYEM Innocent Page 19