Vous êtes sur la page 1sur 8

TP : N°2 Module : Bases de données réparties

Filière : 4ème année ISI.


Soit les deux sites représentent les locaux d’une société :
Objectifs : Suite au TP1
- Création des liens entre les sites
- Fragmentation horizontale / verticale/ Mixte

Soit le schéma global de la gestion des projets pour la société :


EMPLOYE(Matr, NomE, Poste, DatEmb, Salaire, Commission,
#NumDept)
DEPT (NumDept, NomDept, Lieu)
PROJET (CodeP, NomP)
PARTICIPATION (#Matr, #CodeP, Fonction)

Création du schéma global :


Site Tanger:

1. Dans le site « Tanger », cré er un compte utilisateur appelé


« AdminTanger » puis lui assigner les droits du rô le « DBA ».
2. Accé der au compte « AdminTanger » et créer le schéma en dessus.

create user AdminTanger identified by tanger1;


grant dba to AdminTanger;

Autorisation de privilÞges (GRANT) acceptÚ e.

SQL> connect AdminTanger/tanger1;


ConnectÚ .
SQL> show user
USER est "AdminTanger"
SQL> create table DEPT (NumDept int primary key,
2 NomDept varchar(20),
3 Lieu varchar(20));

Table crÚ Ú e.

SQL> create table Projet(CodeP int primary key,


2 NomP varchar(20));

Table crÚ Ú e.

SQL> select *from Projet;

aucune ligne sÚ lectionnÚ e

ISGA Casablanca
SQL> desc Projet
Nom NULL ? Type
----------------------------------------- -------- ----------------------------
CODEP NOT NULL NUMBER(38)
NOMP VARCHAR2(20)

SQL> desc DEPT


Nom NULL ? Type
----------------------------------------- -------- ----------------------------
NUMDEPT NOT NULL NUMBER(38)
NOMDEPT VARCHAR2(20)
LIEU VARCHAR2(20)

SQL> create table Employe(Matr int primary key,


2 NomE varchar(20),
3 Poste varchar(20),
4 DatEmb varchar(20),
5 salaire float,
6 Comission float,
7 NumDept int,
8 Constraint fk_Employe_DEPT foreign key(NumDept) references
DEPT(Numdept));

Table crÚ Ú e.

SQL> desc Employe


Nom NULL ? Type
----------------------------------------- -------- ----------------------------
MATR NOT NULL NUMBER(38)
NOME VARCHAR2(20)
POSTE VARCHAR2(20)
DATEMB VARCHAR2(20)
SALAIRE FLOAT(126)
COMISSION FLOAT(126)
NUMDEPT NUMBER(38)

SQL> create table Participation(


2 Matr int,
3 CodeP int,
4 fonction varchar(20),
5 Constraint fk_Employe_Matr foreign key(Matr) references Employe(Matr),
6 Constraint fk_Projet_CodeP foreign key(CodeP) references Projet(CodeP));

Table crÚ Ú e.

SQL> desc Participation


ISGA Casablanca
Nom NULL ? Type
----------------------------------------- -------- ----------------------------
MATR NUMBER(38)
CODEP NUMBER(38)
FONCTION VARCHAR2(20)
3. Toujours dans le site « Tanger » créer un compte utilisateur appelé
« UserTanger » puis lui assigner les droits « All Privileges ».

create user UserTanger identified by tanger2;


grant all_privileges to UserTanger;

Site Fes:
4. De même dans le site « Fè s », cré er un compte utilisateur appelé
« UserFes » puis lui assigner les droits « All Privileges ».

create user UserFes identified by Fes1;


grant all_privileges to Userfes;

Autorisation de privilÞges (GRANT) acceptÚ e.

SQL> connect AdminTanger/tanger1;


ConnectÚ .
SQL> show user
USER est "AdminTanger"
SQL> create table DEPT (NumDept int primary key,
2 NomDept varchar(20),
3 Lieu varchar(20));

Table crÚ Ú e.

SQL> create table Projet(CodeP int primary key,


2 NomP varchar(20));

Table crÚ Ú e.

SQL> select *from Projet;

aucune ligne sÚ lectionnÚ e

SQL> desc Projet


Nom NULL ? Type
----------------------------------------- -------- ----------------------------
CODEP NOT NULL NUMBER(38)
NOMP VARCHAR2(20)

SQL> desc DEPT


Nom NULL ? Type

ISGA Casablanca
----------------------------------------- -------- ----------------------------
NUMDEPT NOT NULL NUMBER(38)
NOMDEPT VARCHAR2(20)
LIEU VARCHAR2(20)

SQL> create table Employe(Matr int primary key,


2 NomE varchar(20),
3 Poste varchar(20),
4 DatEmb varchar(20),
5 salaire float,
6 Comission float,
7 NumDept int,
8 Constraint fk_Employe_DEPT foreign key(NumDept) references
DEPT(Numdept));

Table crÚ Ú e.

SQL> desc Employe


Nom NULL ? Type
----------------------------------------- -------- ----------------------------
MATR NOT NULL NUMBER(38)
NOME VARCHAR2(20)
POSTE VARCHAR2(20)
DATEMB VARCHAR2(20)
SALAIRE FLOAT(126)
COMISSION FLOAT(126)
NUMDEPT NUMBER(38)

SQL> create table Participation(


2 Matr int,
3 CodeP int,
4 fonction varchar(20),
5 Constraint fk_Employe_Matr foreign key(Matr) references Employe(Matr),
6 Constraint fk_Projet_CodeP foreign key(CodeP) references Projet(CodeP));

Table crÚ Ú e.

SQL> desc Participation


Nom NULL ? Type
----------------------------------------- -------- ----------------------------
MATR NUMBER(38)
CODEP NUMBER(38)
FONCTION VARCHAR2(20)

Création des liens entre les deux sites:


ISGA Casablanca
5. A partir du schéma « UserFes », Créer un lien « lienAdminTanger » vers
le sché ma de l’utilisateur « AdminTanger »
Connect UserFes/fes1;
Show user
Create database link lienAdminTanger connect to AdminTanger
identified by tanger1 using ‘nom du service’;
6. Dans le sché ma «UserTanger», créer un lien « lienAdminTanger » vers
le sché ma de l’utilisateur « AdminTanger »
Connect UserTanger/tanger2;
Show user
Create database link lienAdminTanger connect to AdminTanger
identified by tanger1 using ‘nom du service’;

7. Dans le schéma « AdminTanger », cré er un autre lien « lienUserFes »


vers le schéma de l’utilisateur « UserFes »
Connect UserFes/fes1
Show user
Create database link lienUserFes connect to UserFes identified by fes1
using ‘nom du service’;

8. A partir du site « Fès » et en utilisant le lien « lienAdminTanger »,


essayer d’insé rer des jeux dans les différentes tables.

 Insert into Employe @lienAdminTanger


values(00100,’Malahi’,’ChefPro’,’21/3/2015’,7500,3,5);
 Insert into Projet @lienAdminTanger values(00200,’E-Commerce’);
 Insert into Participation @lienAdminTanger
values(00100,00200,’Consultant Web ’);
 Insert into DEPT @lienAdminTanger values(5,’WEB’,’Shore’);

9. Interroger la vue « USER_DB_LINKS » pour sélectionner les propriétés des


liens.

Desc v$user-db-links ;
SELECT DB_LINK, OWNER, USERNAME, HOST, CREATED
FROM USER_DB_LINKS;
10.A partir du site « Tanger» et en utilisant le lien « lienAdminTanger »
sélectionner les données de différentes tables

select *from Employe @lienAdminTanger ;


select *from Projet @lienAdminTanger ;
select *from DEPT@lienAdminTanger ;

select *from Participation @lienAdminTanger ;


ISGA Casablanca
ISGA Casablanca
TP : N°2 Module : Bases de données réparties
Filière : 4ème année ISI.

Création des fragments dans les schémas locaux:

11.Dans le schéma « UserFes », créer un fragment contenant les données de


tous les ingénieurs du département N°1.

CREATE TABLE fragment_ingenieurs_departement_1


AS
SELECT *
FROM Employe
WHERE NumDept= 1 AND NomDept= 'Ingénieur';
12.Dans le schéma utilisateur « UserFes », créer un fragment qui contient
les données des employés du département « DRH »
CREATE TABLE fragment_employes_DRH
AS
SELECT *
FROM Employe
WHERE NomDept = 'DRH';
13.Fragmenter la table EMPLOYE en deux fragments, le 1er contient le nom,
le poste et la date d’embauche des employés et le 2ème contient le
salaire, la commission des employés, ainsi le Numé ro dé partement où
ils appartiennent, puis allouer le 1er fragment dans le schéma « UserFes
» et le 2ème dans le schéma « UserTanger ».
 UserFes
CREATE TABLE fragment_employes_details
AS
SELECT nom, poste, datEmb
FROM Employe;

ALTER TABLE fragment_employes_details


ALLOCATE TO USER UserFes;

CREATE TABLE fragment_employes_salaire_departement


AS
SELECT salaire, commission, NumDept
FROM Employe;
ALTER TABLE fragment_employes_salaire_departement
ALLOCATE TO USER UserTanger;
14.Créer un fragment dans le schéma « UserFes » qui contient seulement
les noms des employés et les noms de leurs projets.
CREATE TABLE fragment_noms_employes_projets
AS
SELECT nom, NomP
FROM Employe
ISGA Casablanca
JOIN projet ON employe.CodeP = projet. CodeP;

ALTER TABLE fragment_noms_employes_projets


ALLOCATE TO USER UserFes;

Réplication des données

15.Insérer les données des ingénieurs nouvellement recrutés à Fès dans le


schéma global « AdminTanger »
INSERT INTO AdminTanger.Engineer (id, name, department)
VALUES (1, 'John Doe', 'Fès');
Reconstruction du schéma global (les employés)

16.Dans le schéma «AdminTanger», cré er une vue « V$Employe » qui


rassemble les donné es des fragments de Fè s et de Tanger.
CREATE VIEW AdminTanger.V$Employe AS
SELECT *
FROM fragment_Employe_fes
UNION ALL SELECT * FROM fragment_employes_tanger;
17.Insérer des données dans les différentes tables puis voir si ces données
sont mises à jour dans la vue.
INSERT INTO AdminTanger.Employees (employee_id, employee_name)
VALUES (1, 'Jane Doe');

SELECT *
FROM AdminTanger.V$Employe;

ISGA Casablanca

Vous aimerez peut-être aussi