Vous êtes sur la page 1sur 7

Université de de Bordj Bou-Arréridj 2021 – 2022

Faculté des Mathématiques et Informatiques BDA


Département d’Informatique Master 1 TIC

BDA – Base de Données Avancée

Solutions du TD 2
Base de Données Répartie

Consignes

Exercice 01
Soit la base de données distribuée d’une école de langues qui a des annexes dans trois villes
(V1, V2, V3). La base contient les tables suivantes :
⊲ Etd (idEtd, nomEtd, prenomEtd, dateN);
⊲ Langues (idLang, intitule, designation, Prix, ville);
⊲ Notes (idEtd, idLang, note);
⊲ Insc (idEtd, idLang, annee); //Inscription de l’étudiant à une formation d’une langue
pendant telle année.
et soit l’ensemble de prédicats : P𝑟 = {ville="V1", ville="V2", ville="V3"}, permettant
de fragmenter la relation Langues en Lang1 , Lang2 , Lang3 en se basant sur la localisation.

1. Définir les fragments Lang1 , Lang2 , Lang3 en utilisant les symboles de l’algèbre relation-
nel.
⊲ Lang1 = 𝜎(𝑣𝑖𝑙𝑙𝑒=”𝑉1”) (Langues)
⊲ Lang2 = 𝜎(𝑣𝑖𝑙𝑙𝑒=”𝑉2”) (Langues)
⊲ Lang3 = 𝜎(𝑣𝑖𝑙𝑙𝑒=”𝑉3”) (Langues)
2. S’il y a une seule application qui cherche à accéder aux tuples des fragments selon leurs
locations, l’ensemble P𝑟 est-il complet ? Dites pourquoi ?
⊲ P𝑟 est complet, parce que la probabilité d’accès par l’application à n’importe quel
tuple de n’importe quel fragment est égale.
3. Quel type de fragmentation doit-on utiliser pour grouper les étudiants inscrits pour
la langue no 1 en 2 groupes (1er groupe : note < 10, 2ème groupe : note ≥ 10) ?
Montrez comment.
I On utilise la fragmentation horizontale dérivée de la relation Etd qui est basée sur les
fragments horizontaux de la relation Notes en utilisant la semi-jointure, comme suit :
(a) On fragmente la relation Notes(idEtd, idLang, note) en trois fragments :
⊲ Notes1 = 𝜎(𝑖𝑑𝐿𝑎𝑛 𝑔 =1 ∧ 𝑛𝑜𝑡𝑒<10) (Notes)
⊲ Notes2 = 𝜎(𝑖𝑑𝐿𝑎𝑛 𝑔=1 ∧ 𝑛𝑜𝑡𝑒 ≥10) (Notes)
⊲ Notes3 = 𝜎(𝑖𝑑𝐿𝑎𝑛 𝑔≠1) (Notes)
(b) puis par semi-jointure on définit les fragments comme suit :

Responsable de module : Dr. Oussama Senouci - oussama.senouci@univ-bba.dz.


1.0
8 janvier 2022
⊲ Etd1 = Etd n Notes1
⊲ Etd2 = Etd n Notes2
⊲ Etd3 = Etd n Notes3 //Le reste des étudiants pour ne pas les perdre
(complétude + reconstruction).
4. Créer une vue qui présente la liste des noms et prénoms des étudiants nés avant l’an
2000 avec les identifiants des langues qu’ils étudient (en SQL).
 
1 CREATE VIEW Etd2000 AS
2 SELECT nomEtd, prenomEtd, idLang
3 FROM Etd, Insc
4 WHERE Etd.idEtd = Insc.idEtd
5 AND dateN < ’2000-01-01’;
 
5. Que représente-t-il, le code SQL suivant ?
 
1 CREATE VIEW exo01_5 AS
2 SELECT nomEtd, prenomEtd, intitule, note
3 FROM Etd E, Langues L, Notes N
4 WHERE (E.idEtd=N.idEtd) AND (L.idLang=N.idLang) AND (N.note >=10) AND (L.Prix
↩→ < 2000);
 
I C’est une vue qui présente la liste des noms et prénoms des étudiants avec les intitulés
et les notes des langues ayant un prix inférieur à 2000, où l’étudiant a obtenu une note
supérieure ou égale à 10.

Exercice 02
Un vendeur enregistre ses ventes sur la base de données suivante :
⊲ Produit (idPdt, nomPdt, prix, stock);
⊲ Client (idClient, Nom, Prenom, date_nais, ville);
⊲ Achat (idAchat, idClient, idPdt, date, quantite);
Le vendeur possède 3 magasins de vente localisés dans trois villes différentes (Setif, Alger et
BBA).

1. Soit les prédicats simples p1 : 20 < stock < 50 et p2 : stock > 50. Effectuez une
fragmentation horizontale de la relation Produit en deux fragments Produit1 et Produit2 ,
en se basant sur l’ensemble de prédicats p1 , p2 .
⊲ Produit1 = 𝜎(𝑠𝑡𝑜𝑐𝑘>20 ∧ 𝑠𝑡𝑜𝑐𝑘<50) (Produit)
⊲ Produit2 = 𝜎(𝑠𝑡𝑜𝑐𝑘>50) (Produit)
2. Soit trois applications qui utilisent la relation Produit, tel que la 1ère application utilise
les tuples des stocks entre 20 et 50, la 2ème application utilise les tuples des stocks
> 50 et la 3ème application utilise les tuples des stocks vides ou presque vides (<
20). Expliquez pourquoi la fragmentation de la question 1 n’est pas bonne ?
I L’ensemble de prédicat {p1 , p2 } n’est pas complet donc la fragmentation n’est pas
bonne.
I Justification : malgré que l’ensemble soit minimal parce que p1 et p2 sont pertinents
(Les fragments générés par ces prédicats sont accédés par au-moins une application),
l’ensemble n’est pas complet parce que l’application 3 à une probabilité 0 pour accéder
au tuples ayant un stock <20.
3. Proposez des prédicats simples pour avoir une bonne fragmentation horizontale, puis
refaites la fragmentation.
I L’ensemble des prédicats simples pour une bonne fragmentation :

BDA – Solutions du TD 2 – page 2


⊲ p1 : (stock > 20) ∧ (stock < 50);
⊲ p2 : stock ≥ 50;
⊲ p3 : stock ≤ 20;
I La fragmentation est comme suit :
⊲ Produit1 = 𝜎(𝑠𝑡𝑜𝑐𝑘>20 ∧ 𝑠𝑡𝑜𝑐𝑘<50) (Produit)
⊲ Produit2 = 𝜎(𝑠𝑡𝑜𝑐𝑘≥50) (Produit)
⊲ Produit3 = 𝜎(𝑠𝑡𝑜𝑐𝑘≤20) (Produit)

Exercice 03
Une relation des employés (EMP) est définie comme suit :

Soit les deux prédicats simples p1 : TITLE < "Programmer" et p2 : TITLE > "Programmer".
Supposons que les chaînes de caractères aient un ordre parmi elles, basé sur l’ordre alphabé-
tique.

1. Effectuer une fragmentation horizontale de la relation EMP (en EMP1 et EMP2 ) par rapport
à {p1 , p2 }.
I Puisqu’il y a deux prédicats, il y aura les deux fragments suivants (selon l’ordre
alphabétique par rapport au mot "Programmer") :
⊲ EMP1 = 𝜎(𝑇𝐼𝑇𝐿𝐸<”𝑃𝑟𝑜 𝑔𝑟𝑎𝑚𝑚𝑒𝑟”) (EMP)

⊲ EMP2 = 𝜎(𝑇𝐼𝑇𝐿𝐸>”𝑃𝑟𝑜 𝑔𝑟𝑎𝑚𝑚𝑒𝑟”) (EMP)


2. Expliquer pourquoi l’ensemble des fragments résultante (EMP1 , EMP2 ) ne remplit pas
les règles de correctitude (correctness) de la fragmentation.
I La fragmentation qui en résulte est incomplète car le tuple E4, est un programmeur,
qui ne peut être trouvé dans aucun des fragments (dans ce cas la completude n’est pas
verifiée par ce qu’il y a une perte de donnée + la reconstruction est impossible).

BDA – Solutions du TD 2 – page 3


3. Modifier les prédicats p1 et p2 afin qu’ils partitionnent EMP en respectant les règles de
correctitude (correctness) de la fragmentation. Justifier votre réponse.
I Ceci peut être accompli en changeant p1 en TITRE ≤ "Programmeur" ou en changeant
p2 en TITRE ≥ "Programmeur". Si p1 est modifié, le tuple E4 sera ajouté à EMP1 ; si p2
est modifié, tuple E4 sera ajouté à EMP2 .

Exercice 04
Considérons la relation des affectations (ASG) suivante :

Supposons que deux applications accèdent à ASG. L’application no 1 s’exécute sur cinq sites et
tente de trouver la durée d’affectation des employés compte tenu de leur nombre. Supposons
que les managers, les consultants, les ingénieurs et les programmeurs se trouvent sur quatre
sites différents. L’application no 2 s’exécute sur deux sites où les employés dont la durée
d’affectation est inférieure à 20 mois sont gérés sur un même site, tandis que ceux dont la
durée est plus longue sont gérés sur un second site.

1. Effectuer la fragmentation horizontale primaire de la relation ASG en utilisant les infor-


mations précédentes.
I Pour la première application, nous avons les prédicats simples suivants :
⊲ p1 : RESP = "Manager";
⊲ p2 : RESP = "Consultant";
⊲ p3 : RESP = "Engineer";
⊲ p4 : RESP = "Programmer";
⊲ p5 : RESP = "Analyst";
I Pour la deuxième application, nous avons les prédicats simples suivants :
⊲ p6 : DUR ≤ 20;
⊲ p7 : DUR > 20;
I En conséquence, nous pouvons former les mintermes suivants :
⊲ m1 : RESP = "Manager" ∧ DUR ≤ 20;
⊲ m2 : RESP = "Manager" ∧ DUR > 20;

BDA – Solutions du TD 2 – page 4


⊲ m3 : RESP = "Consultant" ∧ DUR ≤ 20;
⊲ m4 : RESP = "Consultant" ∧ DUR > 20;
⊲ m5 : RESP = "Engineer" ∧ DUR ≤ 20;
⊲ m6 : RESP = "Engineer" ∧ DUR > 20;
⊲ m7 : RESP = "Programmer" ∧ DUR ≤ 20;
⊲ m8 : RESP = "Programmer" ∧ DUR > 20;
⊲ m9 : RESP = "Analyst" ∧ DUR ≤ 20;
⊲ m10 : RESP = "Analyst" ∧ DUR > 20;
I Notez que m4 , m5 et m8 sont vides, donc à la fin nous obtenons les fragments suivants
(respectivement pour les mintermes : m1 , m2 , m3 , m6 , m7 , m9 et m10 ) :
⊲ ASG1 = 𝜎(𝑅𝐸𝑆𝑃=”𝑀𝑎𝑛𝑎 𝑔𝑒𝑟”∧𝐷𝑈𝑅≤20) (ASG)

⊲ ASG2 = 𝜎(𝑅𝐸𝑆𝑃=”𝑀𝑎𝑛𝑎 𝑔𝑒𝑟”∧𝐷𝑈𝑅>20) (ASG)

⊲ ASG3 = 𝜎(𝑅𝐸𝑆𝑃=”𝐶𝑜𝑛𝑠𝑢𝑙𝑡𝑎𝑛𝑡”∧𝐷𝑈𝑅≤20) (ASG)

⊲ ASG6 = 𝜎(𝑅𝐸𝑆𝑃=”𝐸𝑛 𝑔𝑖𝑛𝑒𝑒𝑟”∧𝐷𝑈𝑅>20) (ASG)

⊲ ASG7 = 𝜎(𝑅𝐸𝑆𝑃=”𝑃𝑟𝑜 𝑔𝑟𝑎𝑚𝑚𝑒𝑟”∧𝐷𝑈𝑅≤20) (ASG)

⊲ ASG9 = 𝜎(𝑅𝐸𝑆𝑃=”𝐴𝑛𝑎𝑙𝑦𝑠𝑡”∧𝐷𝑈𝑅≤20) (ASG)

BDA – Solutions du TD 2 – page 5


⊲ ASG10 = 𝜎(𝑅𝐸𝑆𝑃=”𝐴𝑛𝑎𝑙𝑦𝑠𝑡”∧𝐷𝑈𝑅>20) (ASG)

2. Est-ce que la fragmentation résultante remplit les règles de correctitude (correctness)


de la fragmentation ? Justifier votre réponse.

I Oui, la fragmentation respecte les principes de la la fragmentation horizontale primaire


(FHP : complet + minimal) et remplit les règles générale de fragmentation.
I Justification :
1. Principes de la FHP :
⊲ Complet : Les deux applications accèdent aux tuples de chaque fragment-minterm
avec une probabilité égale.
⊲ Minimal : Les fragments-minterms générés sont accédés par au-moins une appli-
cation individuellement (tous les prédicats sont pertinents).
2. Règles générales de la fragmentation :
⊲ Complétude : chaque tuple dans la relation globale ASG peut également être trouvé
dans certains fragments ASG𝑖 .
∀ tuple ∈ ASG, ∃ ASG𝑖 tel que tuple ∈ ASG𝑖 .
⊲ Reconstructions : La reconstruction de la relation globale ASG à partir de ses frag-
ments est réalisée par l’opérateur union :
ASG = ASG1 ∪ ASG2 ∪ ASG3 ∪ ASG6 ∪ ASG7 ∪ ASG9 ∪ ASG10
⊲ Disjonction : La relation globale ASG est décomposé en fragments ASG1 ,...,ASG10 , et
un tuple est dans ASG 𝑗 , alors tuple ne devrait pas être dans un autre fragment ASG 𝑘
(𝑗 ≠ 𝑘) :
∀ tuple ∈ ASG 𝑗 , n’existe pas ASG 𝑘 (𝑗 ≠ 𝑘) tel que tuple ∈ ASG 𝑘 .

Exercice 05
Considérons les deux relations des employés et des salaires (EMP et PAY) suivante :

Nous voulons grouper les employés de la relation Emp en 2 groupes selon leurs salaires. Un
groupe pour ceux qui ont un salaire inférieur à 25000, et les autres dans le deuxième groupe.

1. Effectuer la fragmentation horizontale dérivée de la relation EMP et définir les fragments


résultante EMP1 et EMP2 en utilisant les symboles de l’algèbre relationnel.
(a) On fragmente la relation PAY en deux fragments selon le salaire :
⊲ PAY1 = 𝜎𝑆𝐴𝐿<25000 (PAY)

BDA – Solutions du TD 2 – page 6


⊲ PAY2 = 𝜎𝑆𝐴𝐿≥25000 (PAY)
(b) puis, par semi-jointure on définit les fragments de la relation EMP comme suit :
⊲ EMP1 = EMP n PAY1
⊲ EMP2 = EMP n PAY2
2. Afficher les fragments résultantes (EMP1 et EMP2 ).
3. Est-ce que la fragmentation résultante remplit les règles de correctitude (correctness)
de la fragmentation ? Justifier votre réponse.
I Oui, la fragmentation résultante respecte remplit les règles générale de fragmentation.
I Justification :
(a) Règles générales de la fragmentation :
⊲ Complétude : chaque tuple dans la relation globale EMP peut également être
trouvé dans certains fragments EMP𝑖 .
∀ tuple ∈ EMP, ∃ EMP𝑖 tel que tuple ∈ EMP𝑖 .
⊲ Reconstructions : La reconstruction de la relation globale EMP à partir de ses
fragments est réalisée par l’opérateur union :
EMP = EMP1 ∪ EMP2
⊲ Disjonction : La relation globale EMP est décomposé en deux fragments EMP1
et EMP2 , et un tuple est dans EMP 𝑗 , alors tuple ne devrait pas être dans un autre
fragment EMP 𝑘 (𝑗 ≠ 𝑘) :
∀ tuple ∈ EMP 𝑗 , n’existe pas EMP 𝑘 (𝑗 ≠ 𝑘) tel que tuple ∈ EMP 𝑘 .

BDA – Solutions du TD 2 – page 7

Vous aimerez peut-être aussi