© Your Copyright
On considère l’instance suivante de la relation \(R(A,B,C)\):
R | ||
---|---|---|
A | B | C |
a1 | b1 | c1 |
a2 | b1 | c1 |
a2 | b2 | c2 |
a3 | b3 | c2 |
a3 | b2 | c2 |
Répondre aux questions suivantes :
Quelle(s) Dépendance(s) Fonctionnelle(s) Elémentaire(s) peut-on identifier sur cette instance de relation ? Justifiez votre réponse.
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
A partir de cette instance de relation on ne peut identifier qu’une seule Dépendance Fonctionnelle Elementaire (DFE) :
- \(B \rightarrow C\) car \(B\) est le seul attribut pour lequel à chaque valeur est associé une et une seule valeur d’un autre attribut (\(C\))
Les groupes d’attributs \((A,B),(B,C), (A,C)\) ne sont pas des DFE :
- \((A,B)\rightarrow C\) n’est pas une DFE car il existe un sous-ensemble (\(B\)) des attributs \((A,B)\) qui est identifié comme DFE sur le même attribut $C$
- \((B,C)\rightarrow A\) n’est pas une DFE car il existe des couples de valeurs (ex : \((b1,c1)\)) auxquels correspondent des valeurs différentes de $A$
- \((A,C)\rightarrow B\) n’est pas une DFE car il existe des couples de valeurs (ex : \((a3,c2)\)) auxquels correspondent des valeurs différentes de $B$
En se basant sur cette instance de relation, montrez que \((A,B) \rightarrow C\) peut être considéré comme étant une Dépéndance Fonctionnelle (DF).
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
A partir de l’axiome d’augmentation d’Armstrong on peut ajouter un attribut (\(A\)) du côté source de la DFE \(B \rightarrow C\) qui, par implication logique, produit une nouvelle DF
On considère l’instance de la relation voyages
suivante :
voyages | ||
---|---|---|
touriste | activite | ville |
Christian | Ski | Briançon |
Christophe | Ski | Briançon |
Jean | Voile | Brest |
Jacques | Kite Surf | Brest |
Répondre aux questions suivantes :
Quelle(s) Dépendance(s) Fonctionnelle(s) Elémentaires pouvez-vous identifier sur cette relation ? Argumentez votre réponse à partir de l’instance ci-dessus.
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
on identifie les DFE :
- \(touriste \rightarrow activite\)
- \(touriste \rightarrow ville\)
- \(activite \rightarrow ville\)
car d’après l’instance ci-dessus :
si on connait le \(touriste\) alors on connaît son \(activite\)
si on connait le \(touriste\) alors on sait lans quelle \(ville\) il se trouve
si on connait l” \(activite\) alors on trouve la \(ville\) qui la propose
Par contre selon cette instance de relation :
- \(activite \nrightarrow touriste\) (plusieurs touristes peuvent avoir la même activité)
- \(ville \nrightarrow touriste\) (plusieurs touristes peuvent être dans la même ville)
- \(ville \nrightarrow activite\) (plusieurs acivités peuvent être proposées dans la même ville)
Sur les groupements possibles de deux attributs, le seul qui puisse donc constituer une DFE serait celui ne contenant pas les attributs \(ville\) et \(activite\) du côté cible (à droite) de la DFE :
- \((activite,ville) \rightarrow touriste\)
mais,selon cette instance de relation, ce n’est pas une DFE car on vérifie que 2 touristes différents peuvent avoir la même activité dans la même ville (ce qui paraît raisonnable …).
Proposez une décomposition en deux tables en argumentant votre choix en fonction des DFE que vous aurez identifié.
Représentez les deux instances de tables de la décomposition choisie qui correspondrait à l’instance de la relation de départ.
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
On peut proposer la décomposition suivante :
- \(preferences(\underline{touriste},activite)\)
- \(activites(\underline{activite},ville)\)
Puisque l’on conserve les deux DF :
- \(touriste \rightarrow activite\)
- \(activite \rightarrow ville\)
Et que l’axiome de transivité d’Armstrong :
- \(X \rightarrow Y, Y \rightarrow Z \Longrightarrow X \rightarrow Z\)
nous permet de retrouver la DF :
- \(touriste \rightarrow ville\)
La décomposition donnera les instances de tables suivantes :
preferences | |
---|---|
touriste | activite |
Christian | Ski |
Christophe | Ski | >
Jean | Voile |
Jacques | Kite Surf |
activites | |
---|---|
activite | ville |
Ski | Briançon |
Voile | Brest |
Kite Surf | Brest |
Si on considère la décomposition suivante :
- \(preferences(\underline{touriste},activite)\)
- \(activites(\underline{activite},ville)\)
Répondre aux questions suivantes :
Exprimer la question suivante : « Récupérer les touristes à qui on pourra proposer toutes leurs activités préférées »
en calcul relationnel de domaine
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
Exprimer la question suivante : « Récupérer les touristes à qui on pourra proposer toutes leurs activités préférées »
par une requête SQL
SELECT DISTINCT p1.touriste
FROM preferences p1
WHERE NOT EXISTS (SELECT *
FROM activites a
WHERE NOT EXISTS( SELECT *
FROM preferences p2
WHERE a.activite=p2.activite
AND p1.touriste=p2.touriste
)
);
Exprimer la question suivante : « Récupérer les touristes à qui on pourra proposer toutes leurs activités préférées »
En représentant un arbre de requêtes correspondant
TablesOpérateurs unairesOpérateurs binaires |
Vue d'ensemble | |
---|---|
|
Une école souhaite mettre en place un Système d’Information sur les enseignements de matières par des professeurs dans des salles de classe.
Des salles de classes on connaît leur numéro, leur capacité et leur équipement (vidéoprojecteur, tableau interactif …)
Les informations dont on dispose sur les professeurs sont : le nom, le prénom et leur spécialité (mathématiques,anglais …)
Pour chaque matière on connaît le nom, le domaine concerné (mathématiques,anglais …) et le volume horaire.
Un professeur enseigne plusieurs matières mais une matière n’est enseignée que par un seul professeur.
Un enseignement se fait à une date précise et peut avoir lieu dans différentes salles de classes par différents professeurs
A partir de ce cahier des charges répondre aux questions suivantes :
Proposer une structuration de la base de données, à l’aide du formalisme UML, en justifiant vos choix à partir du cahier des charges.
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
A partir du cahier des charges on identifie trois entités avec leurs propriétés :
- entité
classes
: « Des salles de classes on connaît leur numéro, leur capacité leur equipement (…) . »- entité
professeurs
: « Les informations dont on dispose sur les professeurs sont : le nom, le prénom et leur spécialité (mathématiques, anglais …). »- entité
matieres
: « Pour chaque matière on connaît le nom, le domaine concerné (…) et le volume horaire. »
Ainsi que les associations :
Un à plusieurs entre un
professeur
et desmatieres
:« Un
professeurs
enseigne plusieursmatieres
mais unematieres
n’est enseignée que par un seulprofesseurs
. »plusieurs à plusieurs entre les salles de
classes
et lesprofesseurs
:« Un enseignement se fait à une date précise et peut avoir lieu dans différentes salles de
classes
par différentsprofesseurs
»
L’association « plusieurs à plusieurs » imposera de créer une table associative enseignements
entre les entités classes,professeurs
constitué de clés étrangères sur les clés primaires de ces tables et de la date concernée.
A partir de la modélisation UML issue du cahier des charges faire une représentation sous forme de tables en vous appuyant sur la notation :
\(nom_de_table(\underline{a1,...,\#ai,...}, ...,ak,...,...\#an,...)\)
où:
- \(\underline{a1,...,\#ai,...}\) : attributs représentant la clé primaire de la table
- \(\#ai,...\#an\) : clés étrangères sur des clés primaires (\(ai,...an\)) d’autres tables.
Clavier | Action |
---|---|
F1 | Afficher une aide technique |
F2 | Afficher une aide pédagogique |
Ctrl-A | Tout sélectionner |
Ctrl-C | Copier la sélection dans le presse-papier |
Ctrl-V | Copier le presse-papier dans la sélection |
Ctrl-X | Couper la sélection et la copier dans le presse-papier |
Ctrl-Z | Annuler la modification |
Maj-Ctrl-Z | Rétablir la modification |
Menu | Action |
---|---|
Ré-initialiser les sorties | |
Faire apparaître le menu d'aide | |
Valider la zone de saisie | |
Initialiser la zone de saisie | |
Charger le contenu d'un fichier dans la zone de saisie | |
Sauvegarder le contenu de la zone de saisie dans un fichier | |
Imprimer le contenu de la zone de saisie |
\(classes (\underline{classe\_id},numero,capacite,equipement)\)
\(professeurs (\underline{professeur\_id},nom,prenom,specialite)\)
\(matieres (\underline{matiere\_id},nom,domaine,vol\_horaire,\#professeur\_id)\)
\(enseignements (\underline{\#classe\_id,\#professeur\_id},jour)\)