Inscription / Connexion Nouveau Sujet
Niveau école ingénieur
Partager :

Calcul fragmentation base de donnée

Posté par
kyrian
03-05-21 à 18:28

Bonjour,

J'ai un exercice sur la fragmentation d'une base de donnée, la fragmentation s'effectue avec la table de vérité.

idDestinationPoidsPriorité
1Laon10non
2Soissons5oui
3Lille8non
4Bordeaux12non
5Lyon4oui
6Nantes48oui
7Amiens20non
8Reims15oui
9Paris2oui


Voici la table colis (ci-dessus) d'une base de données relationnelle listant les envois de colis ou lettres. Elle contient la destination d'envoi le poids et si elle est prioritaire ou non.

On souhaite répartir cette table en se basant sur les trois requêtes les plus utilisées :
• R1 : SELECT id, poids FROM colis WHERE prioritaire = 'oui'
• R2 : SELECT * FROM colis WHERE poids > 10
• R3 : SELECT priotitaire, destination FROM colis WHERE prioritaire = 'non' AND poids <= 10

En posant :
• A : prioritaire = 'oui'
• B : poids > 10

Question 1:
Calculer les 8 conjonctions CCj des conditions C1, C2 et C3

J'ai beaucoup de mal à réponde à cette question.

Si vous pouvez m'aider à comprendre. Merci d'avance.

Posté par
Vassillia
re : Calcul fragmentation base de donnée 03-05-21 à 18:52

Bonjour,
Si j'ai bien compris, tu dois donner l'ensemble des 2^3=8 conjonctions de conditions où chaque condition élémentaire est prise dans sa forme positive ou dans sa forme négative
EX : C1 et C2 et C3
C1 et (non C2) et (non C3)
...

Posté par
Leile
re : Calcul fragmentation base de donnée 03-05-21 à 18:57

Bonjour,


je ne suis pas sûre de pouvoir t'aider complétement, mais il faut d'abord lister les 8 conjonctions dont on parle :
si les conditions sont  A, B, C
les conjonctions sont
A et B et C
A et  B et nonC
A et nonB  et C
A et nonB  et  non C
nonA  et B et C
etc....

avec C = "non A et nonB"  
qu'en dis tu ?

Posté par
Leile
re : Calcul fragmentation base de donnée 03-05-21 à 19:50

je rectifie ma réponse :
comme l'a dit Vassillia, les conditions s'appellent C1, C2 et C3, et non A,B, C.

Vassillia  a pris la main avant moi : si elle est disponible, je la laisse continuer !

Posté par
kyrian
re : Calcul fragmentation base de donnée 03-05-21 à 20:58

Bonjour,
Merci de vos retours.
Effectivement les 8 conjonctions que j'ai listé sont :

CC1= C1^C2^C3 =
CC2= ¬C1^C2^C3=
CC3= C1^¬C2^C3=
CC4=C1^C2^¬C3=
CC5=¬C1^¬C2^C3=
CC6=C1^¬C2^C3=
CC7=¬C1^C2^¬C3=
CC8=¬C1^¬C2^¬C3=

Mais ensuite je ne sais pas comment les calculer en utilisant la table de vérité ou en utilisant la lois de la distributivité ou la lois de  deMorgan.

Merci pour votre aide.

Posté par
Leile
re : Calcul fragmentation base de donnée 03-05-21 à 21:19

je suppose que C1 = A,  C2= B    et C3  =  nonA et non B

si c'est cela, il faut simplifier les CCj pour ne retenir que celles qui sont pertinentes.

Au delà, je ne pourrai pas t'aider davantage car je ne sais pas ce que "calculer" veut dire ici. Quand on fragmente une base de données (en vue d'établir des bases de données réparties), on a de grosses bases de données, mais ici tu as 9 t-uples.. c'est peu
désolée.
J'espère que Vassillia pourra revenir. Sinon, je demanderai de l'aide auprès d'autres intervenants, d'accord ?

Posté par
kyrian
re : Calcul fragmentation base de donnée 03-05-21 à 21:31

Merci .
Ta supposition est juste  C1 = A,  C2= B    et C3  =  nonA et non B
Je dois effectivement simplifier pour retenir que les combinaisons pertinentes.Mais je ne sais pas comment m'y prendre :/

Posté par
Vassillia
re : Calcul fragmentation base de donnée 03-05-21 à 21:37

Pas de souci Leile, je n'ai jamais trop compris cet ordre de priorité, si tu te connectes avant moi pour la suite, n'hesite pas à répondre, je ne le prendrai pas mal.
Kyrian sera surement ravi d'avoir une réponse au plus vite.

Tes 8 conjonctions sont correctes mais je n'ai pas la moindre idée de ce qu'il y a dans ton cours. J'imagine que tu dois expliciter les conjonctions que tu viens de trouver en fonction de A et B.
Pour cela tu peux utiliser les lois de Morgan et de distributivité. Il y aura des conjonctions systématiquement fausses et l'usage permet de les supprimer avant de faire la fragmentation avec les tables de vérité.

Posté par
Vassillia
re : Calcul fragmentation base de donnée 03-05-21 à 21:47

Je n'avais pas vu ta réponse, cela confirme mon impression, ouf !
Essaye de simplifier le premier C1^C2^C3 en remplaçant par A et B et montre nous ce que tu trouves.

Posté par
kyrian
re : Calcul fragmentation base de donnée 03-05-21 à 22:10

Merci pour votre réactivité à toutes les deux

Je me lance pour le premier mais j'ai beaucoup de mal à comprendre la méthode de mon cours qui n'est pas assez  explicite pour moi.

Voilà mon résultat pour ma première conjonction:
C1^C2^C3 = A^B(¬A^¬B)

Posté par
Vassillia
re : Calcul fragmentation base de donnée 03-05-21 à 23:20

D'accord mais tu penses quoi de A^(¬A)^... ?  

Posté par
kyrian
re : Calcul fragmentation base de donnée 04-05-21 à 09:16

Comment est tu arrivé à cette déduction ?
Si je remplace je n'arrive à la même déduction que toi ?
Comment as tu fait ?

Merci d'avance.

Posté par
Vassillia
re : Calcul fragmentation base de donnée 04-05-21 à 10:47

Je ne comprends pas ta question, on a A^B^((¬A)^(¬B))=A^(¬A)^B^(¬B).
Tu peux essayer de voir l'intersection comme une multiplication et l'union comme une addition si tu hésites pour savoir ce que tu peux faire ou non.

Posté par
kyrian
re : Calcul fragmentation base de donnée 04-05-21 à 14:15

désolé je me suis exprimer trop vite. Pourrais tu m'expliquer en détail afin que je puisse reproduire ton résultat sur la deuxième conjonction. Je suis à peine entrain de cerner le principe.
Merci

Posté par
kyrian
re : Calcul fragmentation base de donnée 05-05-21 à 20:30

Je souhaiterais savoir comment êtes vous parvenu a résoudre cette conjonction svp ?
Pouvez vous juste détailler le premier calcul afin que je puisse comprendre comme y parvenir seul .
Merci

Posté par
Vassillia
re : Calcul fragmentation base de donnée 05-05-21 à 20:38

Je n'ai même pas fini la résolution car elle est toujours fausse.
Désolée mais je ne comprends toujours pas ton problème A^B=B^A donc j'ai permuté pour regrouper les A entre eux et les B entre eux, c'est tout.

Posté par
kyrian
re : Calcul fragmentation base de donnée 05-05-21 à 22:48

Bonjour,

Voici un extrait de mon cours assez compliqué à comprendre malgré tous mes efforts de trouver une explication.


Table cuisinier

Numeronomprenomnumeq
12DUPONTJean1
34DUPONDJeanne2
17DUBOISRobert1
22DUBALAIAline1
26DUGENOUJean2
11DurandAline2
38DURACUIRERobert2
9DURALUMINRoberte1
13DURDURJean2
20DURALEXJean1


Pour effectuer la fragmentation horizontale on se base sur les critères de recherche, c'est-à-dire les conditions exprimées dans les "WHERE" des ordres SQL.On a C1 = A∧B, C2 = C, C3 = D∧A où  ∧désigne le "ET LOGIQUE" et A, B, C, D représentent les prédicats suivants :
A : prenom = 'Jean'
B : nom LIKE '%R%'
C : numeq = '1'
D : numeq = '2

Les opérations logiques ET LOGIQUE ( ∧) et OU LOGIQUE (∨) sont définies par les tables de vérité suivantes :
XyX ^ y
1
1
111
Xyx V y
1 1
1 1
111


où ∅signifie "Faux" (ou vide de sens) et 1"Vrai".


On a évidemment C∧D = ∅car on ne peut avoir simultanément numeq = '1' et numeq= '2' et aussi ,  <—C∧D = D, C∧<—D = C où  <—C et  <—D désignent les contraires de C et D.


À partir des conditions Ci, on peut construire l'ensemble des conjonctions CCj de conditions C = { ∧Ci* pour i = 1,n et Ci* = Ci ou  <—Ci}

Concrètement :CC = {C1∧C2∧C3, <—C1∧C2∧C3, C1∧<—C2∧C3, C1∧C2∧<—C3, <—C1∧<—C2∧C3, C1∧<—C2∧<—C3, <—C1∧C2∧<—C3, <—C1∧<—C2∧<—C3}


On laisse au lecteur le soin de vérifier que:


(C1∧C2∧C3)∨(<—C1∧C2∧C)∨(C1∧<—C2∧C3)∨(C1∧C2∧<—C3)∨(<—C1∧<—C2∧C3)∨(C1∧<—C2∧<-C3)∨(<—C1∧C2∧<—C3)∨(<—C1∧<—C2∧<—C3) = "vrai"

Évaluons chacun des termes :


C1∧C2∧C3 = A∧B∧C∧D∧A = A∧B∧∅∧A = ∅

¬C1∧C2∧C3 = ¬(A∧B)∧C∧D∧A = ¬(A∧B)∧∅∧A = ∅

C1∧¬C2∧C3 = A∧B∧¬C∧D∧A = A∧B∧D∧A = A∧B∧D

C1∧C2∧¬C3 = A∧B∧C∧<—(D∧A) = A∧B∧C∧(¬D∨¬A) = (A∧B∧C∧¬D)∨(A∧B∧C∧¬A) = (A∧B∧C)∨∅= A∧B∧C

¬C1∧¬C2∧C3 = ¬(A∧B)∧¬C∧D∧A = ¬(A∧B)∧D∧A = (¬A∨¬B)∧D∧A =              (¬A∧D∧A)∨(¬B∧D∧A) = ∅∨(A∧¬B∧D) = A∧¬B∧D


C1∧¬C2∧¬C3 = A∧B∧¬C∧(¬D∨¬A) = (A∧B∧¬C∧¬D)∨(A∧B∧¬C∧¬A) = (A∧B∧¬C∧¬D)∨∅= A∧B∧¬C∧¬D


C1∧C2∧¬C3 = A∧B∧C∧¬(D∧A) = A∧B∧C∧(¬D∨¬A) = (A∧B∧C∧¬D)∨(A∧B∧C∧¬A) = (A∧B∧C)∨∅= A∧B∧C


¬C1∧¬C2∧C3 = ¬(A∧B)∧¬C∧D∧A = ¬(A∧B)∧D∧A = (¬A∨¬B)∧D∧A =              (¬A∧D∧A)∨(¬B∧D∧A) = ∅∨(A∧¬B∧D) = A∧¬B∧D


C1∧¬C2∧¬C3 = A∧B∧¬C∧(¬D∨¬A) = (A∧B∧¬C∧¬D)∨(A∧B∧¬C∧¬A) = (A∧B∧¬C∧¬D)∨∅= A∧B∧¬C∧¬D


¬C1∧C2∧¬C3 = (¬A∨¬B)∧C∧(¬D∨¬A) = (¬A∨¬B)∧[(C∧¬D)∨(C∧¬A)] = (¬A∨¬B)∧[C∨(C∧¬A)] = (¬A∨¬B)∧C


¬C∧¬C2∧¬C3 = (¬A∨¬B)∧¬C∧(¬D∨¬A) = (¬A∨¬B)∧[(¬C∧¬D)∨(¬C∧¬A)] = [(¬A∨¬B)∧(¬C∧¬D)]∨[(¬A∨¬B)∧(¬C∧¬A)] = [(¬
A∧¬C∧¬D)∨(¬B∧¬C∧¬D)]∨[(¬A∧¬C∧¬A)∨(¬B∧¬C∧¬A)] = (¬A∧¬C)∨(¬B∧¬C∧¬D)∨(¬A∧¬C)∨(¬B∧¬C∧¬A) = (¬A∧¬C)∨(¬B∧¬C∧¬D)∨(¬B∧¬C∧¬A) = (¬A∧¬C)∨(¬A∧¬C∧¬B)∨(¬B∧¬C∧¬D) = (¬A∧¬C)∨(¬B∧¬C∧¬D)


o∧nous avons utilisé la distributivité de chacune des lois ∧et ∨par rapport à l'autre, les lois deMorgan :

et aussi :X∨(X∧Y) = X (à vérifier avec les tables de vérité)


Comme vous pouvez le voir mon cours  qui traite le sujet est assez complexe.
J'ai beau le tourner dans tous les sens, je n'arrive à trouver une méthode pour comprendre cela.

Merci pour votre aide.

Posté par
Leile
re : Calcul fragmentation base de donnée 05-05-21 à 23:17

C1 = A,  C2= B    et C3  =  nonA et non B

donc CC1 :   C1  et C2   et C3  =     A et B et (nonA et non B) =  A et B et nonA et nonB  = ∅
en effet, A et nonA  donne ∅  (on ne peut pas etre prioritaire   et  non prioritaire en même temps).
c'est ce que dit ta table de verité de l'opérateur "ET" :   1  et  ∅   donne   ∅
ainsi, CC1 se réduit à ∅.

les tables de vérité te donne juste les règles des opérateurs ET  et OU.
pour plus de facilité, tu peux remplacer ET  par  *          et   OU  par + (comme le disait Vassilia)
ainsi les tables sont faciles à appliquer
pour ET :
0 * 0  = 0
0 * 1  = 0
1 * 0  = 0
1 * 1 = 1

et pour OU
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1  = 1   (et non 2   !).

CC2 =  nonA  et  B  et  nonA   et  nonB
à ton avis, elle se réduit à quoi ?

Posté par
kyrian
re : Calcul fragmentation base de donnée 06-05-21 à 15:37

Merci pour vos explications qui m'ont beaucoup aidé.

Si j'ai bien compris, pour résoudre CC2 =  nonA  et  B  et  nonA   et  nonB  =  ∅
car ¬A et B = 1  et ¬A et ¬B = 0
Donc  1 * 0 =   ∅

Donc pour CC1 ça devrait donné : A et B et ¬A et ¬B = A et  B = 1 et   ¬A et ¬B  = 0
Donc 1 * 0 = ∅


Si le résultat est OK
Comment faire pour le calculer  sous cette forme : ¬C1∧C2∧C3 = ¬(A∧B)∧C∧D∧A = ¬(A∧B)∧∅∧A = ∅ (c'est un exemple)

Merci énormément

Posté par
Leile
re : Calcul fragmentation base de donnée 06-05-21 à 16:03

je ne comprends pas ta question.. il n'y a pas de D dans ton exercice..
ensuite   tu as bien vu, je pense, que j'ai écrit   'et'  à la place de ∧  
donc   A et B   est identique à  A∧B ...

nous sommes d'accord   sur CC1 = ∅      pourquoi dis tu "ca devrait donner" ?
par contre, je ne suis pas ta façon de faire :
"A et B et ¬A et ¬B = A et  B = 1 et   ¬A et ¬B  = 0"

¬A et ¬B  = 0   est faux  (non A  et non B :   non prioritaire et poids 10,  ça ne donne pas un ensemble vide à priori).
par contre  ¬A et A  = ∅   ça c'est vrai (on ne peut pas etre A  et non A  en meme temps).

ensuite  CC2 = ∅    aussi, c'est OK (mais pas a façon de faire).
CC2=∅  parce que   (B  ∧  non B)  = ∅

je te laisse continuer les autres CC
bon courage.

Posté par
kyrian
re : Calcul fragmentation base de donnée 10-05-21 à 17:05

Bonjour Leile

Merci de ton retour.

J'ai pu terminé mes CCj:
Voici comment j'ai calculé, je peux me tromper dans ma méthode, j'ai remplacé les C1,C2,C3 par mes prédicats : A et B

CC1 =    C1^C2^C3 = A^B^(¬A  ^ ¬B) = ∅
CC2 = ¬C1^C2^C3 = ¬A^B^¬A^¬B = ∅
CC3 = C1^ ¬C2^C3 = A^¬B^¬A^¬B=∅
CC4=  C1^C2^ ¬C3 = A^B ^ ¬A^¬B = 1
CC5=  C1^ ¬C2^C3 = A^¬B ^ ¬A^¬B= ∅
CC6=  C1^C2^ ¬C3 = A^B ^ ¬A^¬B = 1
CC7= ¬C1^ C2 ^ ¬C3 = A^B^¬A^¬B =∅
CC8 =¬C1^ ¬C2 ^ ¬C3 = ¬A^¬B^¬A^¬B  = 1

Je me suis mal exprimé dans mon précédent poste, je voulais savoir comment calculer mes CCj sous forme algébrique.
Je ne fais que remplacer les conjonctions par mes prédicats en m'aidant de la table de vérité. Comment déterminé a quel moment je dois utiliser des parenthèses
Par exemple CC1 = A^B^(¬A^¬B)


Merci d'avance

Posté par
kyrian
re : Calcul fragmentation base de donnée 10-05-21 à 22:52

Après correction j'obtiens :

CC1 =    C1^C2^C3 = A^B^(¬A  ^ ¬B) = ∅
CC2 = ¬C1^C2^C3 = ¬A^B^¬A^¬B = ∅
CC3 = C1^ ¬C2^C3 = A^¬B^¬A^¬B=∅
CC4=  C1^C2^ ¬C3 = A^B ^ ¬A^¬B = 1
CC5=  C1^ ¬C2^C3 = A^¬B ^ ¬A^¬B= ∅
CC6=  C1^C2^ ¬C3 = A^B ^ ¬A^¬B = ∅
CC7= ¬C1^ C2 ^ ¬C3 = A^B^¬A^¬B =∅
CC8 =¬C1^ ¬C2 ^ ¬C3 = ¬A^¬B^¬A^¬B  = 1

Je n'obtiens que 2 fragmentations CC4 et CC8



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1674 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !