Bonsoir tout le monde, voilà j'ai un exercice d'informatique que j'arrive pas à faire , j'aurais besoin d'aide pour la première question. Merci d'avance !
Bonsoir tout le monde, voilà j'ai un exercice d'informatique que j'arrive pas à faire , j'aurais besoin d'aide pour la première question. Merci d'avance !
personne pour me dire si je suis au moins sur la bonne voie ?
Bonsoir helene12,
On va tâcher de trouver 5 minutes pour regarder votre problème...
A plus tard
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Super merci , sinon j'ai apporté quelques modifications
Je selle mon cheval et j'arrive au galop !
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Bonjour helene12,
On vous demande de présenter un graphe de dépendances fonctionnelles :
Manifestement, il ne s’agit pas des dépendances fonctionnelles telles qu’on les entend au sens de la théorie relationnelle (inventée par E. F. Codd en 1969), mais plutôt d’un de leurs avatars, leur version merisienne en l’occurrence.
Cela dit, il est toujours bon de disposer des définitions des concepts que nous utilisons.
Si vous vous situez dans le contexte de la théorie relationnelle, vous trouverez la (vraie) définition de la dépendance fonctionnelle dans The Relational Database Dictionary (functional dependency).
A nouveau, si vous vous situez dans le contexte de la théorie relationnelle, vous trouverez la (vraie) définition de la 3e forme normale dans The Relational Database Dictionary (Third Normal Form).
Mais l’utilisation des dépendances fonctionnelles et des formes normales dans le contexte de la théorie relationnelle passe par l’acquisition de prérequis dont la description minutieuse prend du temps, aussi faudra-t-il, hélas ! se contenter d’approximations.
Afin d’éviter les quiproquos, merci se fournir la définition vous a-on-donné des concepts suivants :
Dépendance fonctionnelle
Dépendance fonctionnelle directe
Dépendance fonctionnelle élémentaire
Troisième forme normale
On vous pose la question suivante :
« Donnez la commande SQL nécessaire pour créer la table définissant les électeurs »
Il est nécessaire que vous nous précisiez si vous faites référence à la norme SQL ou, à défaut, quel est le SGBD que vous utilisez.
On vous pose la question suivante :
« Cette commande peut-elle être la 1re commande utilisée pour la création de la base ? »
Et vous écrivez : « Non, car il faut avant créer la base de données ».
Ça n’est pas faux, toutefois, le terme « database » étant trop nébuleux, la norme SQL ne propose pas d’instruction CREATE DATABASE, mais CREATE SCHEMA, et chaque table y est élément d’un schéma. Cela dit, un SGBD comme MySQL permet de coder indifféremment « CREATE DATABASE » ou « CREATE SCHEMA », pour lui « database » et « schema » sont synonymes. Pour sa part, PostgreSQL permet aussi de coder ces deux instructions, mais « database » et « schema » n'y sont pas synonymes, un schéma n’est qu’un composant d’une base de données (même chose pour Microsoft SQL Server) ; DB2 for z/OS ne propose pas d’instruction « CREATE SCHEMA » : bref, tout ça c’est un peut Babel et je repose la question : de votre côté, vous calez-vous sur la norme ? sinon, sur quel SGBD ?...
AU sujet de la notation des dépendances fonctionnelles (DF)
Le déterminant (partie gauche} et le dépendant (partie droite) d’une dépendance fonctionnelle (DF) ne sont pas directement des attributs (ou propriétés ou caractéristiques selon le vocabulaire que vous utilisez), mais des ensembles (au sens de la théorie des ensembles), dont les éléments sont des noms d’attributs. Pour cette raisons, j’utiliserai la notation relationnelle, qui consiste à faire figurer les noms des attributs entre des accolades (« {« et « } ») :
{Nom11, Nom12, ..., Nom1i, ..., Nom1m} -> { Nom21, Nom22, ... , Nom2j, ..., Nom2n}
(Nom1i et Nom2j ne sont pas nécessairement distincts)
Passons à votre graphe.
(1) Il est écrit qu’un candidat peut ne pas être membre d’un parti, cependant, vous établissez la DF suivante : {NoCandidat -> {PartiPolitique} (puis, dans votre 2e message, la variante {NoCandidat} -> {SiglePartiPolitique}), c'est-à-dire que chaque candidat détermine un parti politique : il y a là une contradiction, car « déterminer » sous-entend que la relation entre un candidat et un parti n’est pas facultative, tout comme lorsqu'on écrit 5*3 -> 15, on ne lit pas 5*3 donne facultativement 15. Autrement dit, il faut distinguer les candidats adhérant à un parti des candidats sans parti, par exemple avec les DF du genre :
{NoCandidatAparti} -> {PartiPolitique}
{NoCandidatAparti} -> {NoCandidat}
Où NoCandidat représente le candidat au sens large, qu’il soit membre d’un parti ou non.
Cela peut vous désarçonner, mais il n’y a rien à faire, un candidat apolitique ne peut pas se réclamer d’un parti... Je ne sais pas quelle elle la position de votre professeur, mais en tout cas la théorie relationnelle est inflexible sur ce point et je m’interdis d’aller contre.
De la même façon, du point de vue de la logique classique des prédicats, on écrit :
Le candidat identifié par son numéro NoCandidat a pour nom NomCandidat et pour prénom PrenomCandidat
Mais on n’écrit pas :
Le candidat identifié par son numéro NoCandidat ayant pour nom NomCandidat et pour prénom PrenomCandidat, est peut-être membre du parti PartiPolitique
(2) Vous avez établi la dépendance fonctionnelle suivante :
{NoElection} -> {NoTour}
C'est en contradiction avec l’énoncé qui dit qu’une élection peut faire l’objet de plus d’un tour : cette prétendue DF doit disparaître.
(3) Dans votre 1er message, vous avez établi la dépendance fonctionnelle suivante :
{NoCandidat} -> {NoListe}
En réalité elle n’existe pas, puisque d’un tour à l’autre d’une élection, un candidat peut changer de liste. Par exemple, le candidat Raoul s’est présenté à l’élection de numéro 123, c'est-à-dire aux municipales de 1989, au 1er tour ce fut sur la liste PCF et au 2e tour sur la liste FN. A partir de cet exemple (peu réaliste, j’en conviens...), la DF est plutôt la suivante :
{NoCandidat, NoElection, NoTour} -> {NoListe}
Dans votre 2e message, vous avez presque rattrapé le coup :
{NoCandidat, NoTour} -> {NoListe}
A ceci près que le déterminant doit être enrichi de l’attribut NoElection.
Je ne suis pas familier des patatogrammes merisiens, mais ça devrait ressembler à quelque chose comme ceci :
(4) Il est écrit :
« Les électeurs peuvent appartenir à un ou plusieurs partis politiques »
Peut-être, mais dans le cadre des élections je m’insurge, cette phrase est hors sujet, on ne doit pas en tenir compte (du moins en France...) La DF ci-dessous n’a pas lieu d’être, même si, mathématiquement parlant, elle n’est pas fausse :
{PartiPolitique, NoElecteur} -> ø
(5) Problème du vote par procuration
Toujours peu familier des patatogrammes merisiens, j’ai des doutes sur celui-ci :
En effet, on est en droit de l’interpréter ainsi :
{NoElecteur} -> {NoElecteur}
Ce qui représente une DF triviale, c'est-à-dire : Raoul détermine Raoul (par procuration), mais certainement pas Raoul détermine Fernand (par procuration)...
Selon l’approche analytique merisienne que vous utilisez, le plus simple est peut-être de partir du prédicat suivant :
A l’occasion du tour NoTour de l’élection NoElection, l’électeur mandant (l’absent, qui donne procuration) NoElecteurMandant a donné procuration à l’électeur mandataire (destinataire de la procuration) NoElecteurMandataire
Avec les DF suivantes :
{NoElecteurMandant} -> {NoElecteur}
{NoElecteurMandataire} -> {NoElecteur}
{NoElection, NoTour, NoElecteurMandant} -> {NoElecteurMandataire}
La 1ere de ces DF permet par transitivité de connaître les caractéristiques (nom, prénom, etc.) de l’électeur mandant (qui donne procuration) ;
La 2e DF permet par transitivité là aussi de connaître les caractéristiques de l’électeur mandataire ;
La 3e DF reflète le prédicat ci-dessus.
Je suis désolé, je ne suis pas pratiquant de cette l’approche patatographique, analytique à la sauce Merise...
Cela dit, le diagramme merisien (MLD) devrait tendre vers quelque chose comme ceci :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133 CREATE TABLE BUREAU_VOTE ( NoBureau INT NOT NULL, AdresseBureau VARCHAR(64) NOT NULL, CONSTRAINT BUREAU_VOTE_PK PRIMARY KEY (NoBureau) ) ; CREATE TABLE ELECTION ( NoElection INT NOT NULL, LibelleElection VARCHAR(64) NOT NULL, CONSTRAINT ELECTION_PK PRIMARY KEY (NoElection) ) ; CREATE TABLE TOUR ( NoElection INT NOT NULL, NoTour SMALLINT NOT NULL, DateTour DATE NOT NULL, CONSTRAINT TOUR_PK PRIMARY KEY (NoElection, NoTour), CONSTRAINT TOUR_ELECTION_FK FOREIGN KEY (NoElection) REFERENCES ELECTION (NoElection) ) ; CREATE TABLE LISTE ( NoListe INT NOT NULL, Slogan VARCHAR(64) NOT NULL, Budget INT NOT NULL, Score INT NOT NULL, CONSTRAINT LISTE_PK PRIMARY KEY (NoListe) ) ; CREATE TABLE ELECTEUR ( NoElecteur INT NOT NULL, NoBureau INT NOT NULL, NomElecteur VARCHAR(64) NOT NULL, PrenomElecteur VARCHAR(64) NOT NULL, DateNaissanceElecteur DATE NOT NULL, AdresseElelecteur VARCHAR(64) NOT NULL, CONSTRAINT ELECTEUR_PK PRIMARY KEY (NoElecteur), CONSTRAINT ELECTEUR_BUREAU_VOTE_FK FOREIGN KEY (NoBureau) REFERENCES BUREAU_VOTE (NoBureau) ) ; CREATE TABLE CANDIDAT ( NoCandidat INT NOT NULL, NomCandidat VARCHAR(64) NOT NULL, PrenomCandidat VARCHAR(64) NOT NULL, CONSTRAINT CANDIDAT_PK PRIMARY KEY (NoCandidat) ) ; CREATE TABLE PARTI_POLITIQUE ( NoPartiPolitique INT NOT NULL, NoElecteurDirigeant INT NOT NULL, SiglePartiPolitique VARCHAR(64) NOT NULL, AdressePartiPolitique VARCHAR(64) NOT NULL, CONSTRAINT PARTI_POLITIQUE_PK PRIMARY KEY (NoPartiPolitique), CONSTRAINT PARTI_POLITIQUE_AK UNIQUE (SiglePartiPolitique), CONSTRAINT PARTI_POLITIQUE_ELECTEUR_FK FOREIGN KEY (NoElecteurDirigeant) REFERENCES ELECTEUR (NoElecteur) ) ; CREATE TABLE CANDIDAT_PARTI ( NoCandidat INT NOT NULL, NoPartiPolitique INT NOT NULL, CONSTRAINT CANDIDAT_PARTI_PK PRIMARY KEY (NoCandidat), CONSTRAINT CANDIDAT_PARTI_PARTI_POLITIQUE_FK FOREIGN KEY (NoPartiPolitique) REFERENCES PARTI_POLITIQUE (NoPartiPolitique), CONSTRAINT CANDIDAT_PARTI_CANDIDAT_FK FOREIGN KEY (NoCandidat) REFERENCES CANDIDAT (NoCandidat) ) ; CREATE TABLE CANDIDAT_TOUR ( NoElection INT NOT NULL, NoTour SMALLINT NOT NULL, NoCandidat INT NOT NULL, NoListe INT NOT NULL, CONSTRAINT CANDIDAT_TOUR_PK PRIMARY KEY (NoElection, NoTour, NoCandidat), CONSTRAINT CANDIDAT_TOUR_LISTE_FK FOREIGN KEY (NoListe) REFERENCES LISTE (NoListe), CONSTRAINT CANDIDAT_TOUR_TOUR_FK FOREIGN KEY (NoElection, NoTour) REFERENCES TOUR (NoElection, NoTour), CONSTRAINT CANDIDAT_TOUR_CANDIDAT_FK FOREIGN KEY (NoCandidat) REFERENCES CANDIDAT (NoCandidat) ) ; CREATE TABLE ELECTEUR_TOUR ( NoElection INT NOT NULL, NoTour SMALLINT NOT NULL, NoElecteur INT NOT NULL, CONSTRAINT ELECTEUR_TOUR_PK PRIMARY KEY (NoElection, NoTour, NoElecteur), CONSTRAINT ELECTEUR_TOUR_TOUR_FK FOREIGN KEY (NoElection, NoTour) REFERENCES TOUR (NoElection, NoTour), CONSTRAINT ELECTEUR_TOUR_ELECTEUR_FK FOREIGN KEY (NoElecteur) REFERENCES ELECTEUR (NoElecteur) ) ; CREATE TABLE PROCURATION ( NoElection INT NOT NULL, NoTour SMALLINT NOT NULL, NoElecteurMandant INT NOT NULL, NoElecteurMandataire INT NOT NULL, CONSTRAINT PROCURATION_PK PRIMARY KEY (NoElection, NoTour, NoElecteurMandant), CONSTRAINT PROCURATION_TOUR_FK FOREIGN KEY (NoElection, NoTour) REFERENCES TOUR (NoElection, NoTour), CONSTRAINT PROCURATION_MANDATAIRE_FK FOREIGN KEY (NoElecteurMandataire) REFERENCES ELECTEUR (NoElecteur), CONSTRAINT PROCURATION_MANDANT_FK FOREIGN KEY (NoElecteurMandant) REFERENCES ELECTEUR (NoElecteur) ) ; CREATE TABLE HORAIRE ( NoElection INT NOT NULL, NoTour SMALLINT NOT NULL, NoBureau INT NOT NULL, HeureOuvertureBureau TIME NOT NULL, HeureFermetureBureau TIME NOT NULL, CONSTRAINT HORAIRE_PK PRIMARY KEY (NoElection, NoTour, NoBureau), CONSTRAINT HORAIRE_TOUR_FK FOREIGN KEY (NoElection, NoTour) REFERENCES TOUR (NoElection, NoTour), CONSTRAINT HORAIRE_BUREAU_VOTE_FK FOREIGN KEY (NoBureau) REFERENCES BUREAU_VOTE (NoBureau) ) ;
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Avant tout merci de ton aide ,
en ce qui concerne les définitions , la 3 forme normales et le language sql tout est résumé dans la pièce jointe. Ceci étant , je pense savoir faire la question 2 et 3 mais je dois d'abord être sûr de mon graphe.
En ce qui concerne le graphe je vais en faire un autre en tenant compte des modifications à apporter , je vous joint aussi le sujet et corrigé de l'année dernière pour avoir un apecu de la methode de la prof qui je pense doit être particulière .
Le MLD était passé à l'as : c'est réparé, j'ai modifié mon message précédent en conséquence.
J'ai parcouru rapidement le PDF ayant trait à la normalisation : je vous ferai part des erreurs qu'on y trouve...
A l'occasion, n'obliez pas de voter pour les messages qui vous ont été utiles...
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Je dois avouer que je ne comprend pas votre diagramme (encore jamais vu en cours), ceci étant j'ai essayer de modifier le graphe
J’ai vu le corrigé de l’exercice au tableau noir :
Cette réflexive est insuffisante, car non dérivable en tant que telle au niveau MLD (ou SQL). De votre côté, il serait néanmoins prudent conserver celle que vous aviez représentée :
Même si c’est à contre cœur...
Sinon, c'est bien parti dans votre dernier diagrmme, simplement, il manque les flèches allant vers NoElecteur :
NoElecteurMandant -> NoElecteur
NoElecteurMandataire -> NoElecteur
Et n’oubliez pas de représenter une flèche dans le sens NoElecteurDirigeant -> NoElecteur.
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
J'ai oublié une chose :
J’ai relevé dans le PDF (normalisation) les erreurs habituelles qui traînent depuis des décennies...
Je vous en toucherai un mot.
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Ah d'accord , du coup si j'utilise la forme
je devrais enlever "electeur mandant " et "electeur mandataire" non ?
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Super merci beaucoup de ton aide , en ce qui concerne les erreurs dans le cours ca doit être par soucis de simplicité ( c'est la premier cours d'informatique sur les bases de données) sinon tu devrais prendre sa place
(a) Faites simple, mais pas plus simple ! (A. Einstein)
(b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
=> La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)
__________________________________
Bases de données relationnelles et normalisation : de la première à la sixième forme normale
Modéliser les données avec MySQL Workbench
Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager