Vous êtes sur la page 1sur 14

Institut Supérieur des Sciences Appliquées et de Technologie de Sousse

Bases de Données -2ième année préparatoire-


TP2 : Relations entre les tables et Requêtes

Enseignants : Mr. Saidane Mhamed


Mme. Boukadi Ahlem
Année Universitaire : 2020- 2021

1. Relation entre les tables


1.1. Affichage des tables dans les relations

1. Cliquez sur le bouton Microsoft Office , puis sur Ouvrir.

2. Dans la boîte de dialogue Ouvrir, sélectionnez et ouvrez la base de données.


3. Sous l'onglet Outils de base de données, dans le groupe Afficher/Masquer,
cliquez sur Relations.

4. Si la base de données contient des relations, la fenêtre Relations apparaît. Si la base de


données ne contient aucune relation et si vous ouvrez la fenêtre Relations pour la
première fois, la boîte de dialogue Afficher la table apparaît.

5. Cliquez sur Afficher la table. Cette boîte de dialogue apparait :

1
Cliquez deux fois sur T_Client, et également 2 fois sur T_Pays. Cliquez ensuite sur
. Vos deux tables T_Client et T_Pays sont maintenant apparentes sur votre
écran, comme ceci :

1.2. Création d'une relation simple entre 2 tables

Une fois que vous avez sous les yeux les 2 tables avec tous leurs champs (surtout la table
T_Client qui contient pas mal de champs), nous allons essayer de les lier ensemble : Cliquez
sur Pays de T_Pays, et faites le glisser sur IDClient de T_Client :

Vous constatez que quand vous faites glisser la souris, elle se transforme.

Cette boîte de dialogue apparaît :

Cliquez sur . Maintenant, les 2 tables sont liées comme ceci :

Par une petite ligne noire.

1.3. Masquage/apparition des tables dans les relations


Pour supprimer une relation

Cliquez sur T_Pays , et sélectionnez l’option Masquez la table

2
Pour la faire réapparaître

Cliquez sur l'icône , et cliquez 2 fois sur T_Pays : , puis cliquez sur .

En réalité, tout ce qu'on fait, c'est MASQUER la table du tableau des relations. La table est
toujours là, on ne la voit plus.

1.4. Suppression d'une relation entre 2 tables

Il faut cliquer précisément sur la petite ligne noire qui relie les 2 tables :

, et seulement quand la ligne est sélectionnée (elle


devient un tout petit peu plus épaisse quand on clique dessus), on appuyer sur supprimer

Un message de confirmation apparaît :

. Cliquez sur Oui, et la relation a maintenant disparu. Vous vous retrouvez avec vos 2 tables,

comme au début : .

Nous allons maintenant réaliser une relation qui "tient la route" : Nous allons en quelque sorte
"marier" les deux tables T_Client et T_Pays. Il faudrait, pour que notre base de données soit

3
fiable, que tous les clients, SANS EXCEPTION, proviennent d'un pays QUI EXISTE dans la
table de référence T_Pays. Si un client vient de "U.S.A" alors U.S.A DOIT exister dans
T_pays. Pareil pour YoupiLand.

1.5. Application de l'intégrité référentielle

On ne dit pas "Marier les tables". Dans le jargon des informaticiens, nous disons "Appliquer
l'intégrité référentielle". Pour ce faire, créez une relation entre Pays de T_Pays jusque
PaysOrigine de T_client (Le sens dans lequel vous allez n'a aucune importance : Que vous
partiez de T_Client pour aller vers T_Pays ou l'inverse ne change rien). La boite de dialogue

suivante apparaît : .

Cochez "Appliquer l'intégrité référentielle" : . Cliquez sur

Erreur de correspondance entre 2 tables lors de l'application de l'intégrité référentielle :

C'est un des messages d'erreur les plus communs d'Access. De plus, il n'est pas très
compréhensible. On peut le traduire ainsi :

Impossible de créer cette relation et surtout, d'appliquer l'intégrité rérérentielle (Marier


les 2 tables). Les données (ce que vous avez écrit) dans la table "T_Client" ne
respectent pas les règles d'intégrité référentielle. Par exemple, certains enregistrements
(certains clients) font peut-être (même sûrement) référence à un Pays dans la table
associée (T_Pays) sans qu'il y ait d'enregistrement pour ce pays dans la table primaire
(Un ou plusieurs pays existent dans la table T_Client sans qu'ils existent dans T_Pays).

Pour corriger :

1. Fermez les relations


2. Allez dans T_Client

Mr. Saidane 4
3. Précisez que Bill Clunton ne vient PAS de YoupiLand, mais, par exemple de
Belgique.

4. Fermez T_Client (Très important de fermer toutes les tables avant d'aller dans les
relations, sinon, il n'y a rien qui marche)
5. Retournez dans les relations
6. Faites glisser à nouveau Pays de T_Pays sur PaysOrigine de T_Client
7. Cochez la case "Appliquer l'intégrité référentielle"
8. Cliquez sur OK

Si vous avez parfaitement suivi les instructions, vous ne devriez PLUS avoir de message
d'erreur, mais Access devrait vous avoir créé la relation entre les 2 tables comme ceci :

Vous constatez que la relation possède un petit et un petit . C'est le signe que la relation
s'est bien déroulée, et que, surtout, l'intégrité référentielle s'est appliquée correctement. A
partir de maintenant, on peut dire que les deux tables sont liées. Dès cet instant, il va être
SRICTEMENT IMPOSSIBLE d'attribuer pour un client quelconque un pays qui n'existe pas
dans ta table T_Pays.

1.6. Résumé
Il est possible de créer des relations entre tables de 2 manières : avec ou sans intégrité
référentielle. S'il n'y a pas d'intégrité référentielle, les relations ne servent pas à grand chose.
Par contre, quand elle est appliquée, alors, tout est sécurisé : Les 2 champs mis en relation
DOIVENT absolument correspondre sans exception. Pour appliquer l'intégrité référentielle, il
faut que le champ qui sert de "source" (Pays de T_Pays dans notre exemple) soit en clé
primaire, sinon, ça ne marche pas.

2. Les requêtes

2.1. Création d'une requête

Sous l'onglet Créer, dans le groupe Autre, cliquez sur Création de requête :

5
Le Concepteur de requêtes s'ouvre et la boîte de dialogue Afficher la table s'affiche.

Cliquez une fois sur "T_Celebrite", puis sur "Ajouter", et enfin sur "Fermer". Vous êtes
maintenant dans votre requête en mode création :

2.2. Injection de champs dans une requête

Double-cliquez maintenant sur le champ Prenom : .

6
Vous le copiez ainsi dans la grille du bas : .

Cliquez maintenant également deux fois dans NomClient. Vous obtenez maintenant ce

résultat dans la grille du bas : .

En fait, chaque fois que vous cliquez deux fois sur un champ, il se rajoute à la droite des
champs déjà présents.

C'est votre première requête.

2.3. Visualisation du résultat d'une requête

Pour visualiser le résultat, c'est très simple : Cliquez donc sur cette icône , vous

devriez voir apparaître ceci : .

Ce sont simplement les deux colonnes Prénom et Nom qui sont représentées, sans même
être triées, simplement dans l'ordre dans lequel elles sont stockées dans la table sous-jacente.

2.4. Enregistrement d'une requête

7
Nous allons à présent enregistrer cette requête. Allez dans le menu Fichier/Enregistrer :

Appelez cette requête R_PremierTest et cliquez sur OK.

Quittez cette requête (Fichier/Fermer), ou la petite croix en haut à droite.

2.5. Remarque
Il y a une totale interaction entre les tables et les requêtes ! Si je change dans la table, le
résultat de la requête change !
2.6. Manipulation des champs dans une requête
Pour poser, par exemple, le champ NomClient entre Prenom et Domaine, cliquez sur le champ
NomClient dans votre liste de champs, et vous le faites glisser jusque SUR le champ Domaine
que vous avez mis en bas dans la grille (Donc vous cliquez sur NomClient, vous laissez le doigt
appuyé sur le bouton gauche de la souris, et vous vous déplacez jusque sur le mot

Domaine, dans la grille en bas) : .


Vous devriez obtenir le résultat suivant :

8
Pour effacer la colonne Domaine, Vous cliquez juste au dessus de Domaine, dans la grille
(Votre souris devient une grosse flèche noire) Et vous appuyez sur DEL (Suppr) de votre

clavier : . La colonne Domaine a disparu.

2.7. Critères de requête : Le simple "texte"

C'est un premier exemple simple. Pour lister tous les sportifs, créez une nouvelle requête
basée sur T_Celebrite, et placez-y les champs Prenom, NomClient, et Domaine.

Dans cette requête, en mode création, vous allez écrire sport dans le critère de la colonne

Domaine, comme ceci.

Lorsque vous appuyez sur ENTER, ou simplement si vous cliquez dans une autre case, sport

se met automatiquement entre guillemets :

9
Pour constater le résultat de notre première requête un tant soit peu utile, lancez-là en mode

saisie de données : . Vous avez la liste de tous les


prénoms et le nom des célébrités dont le domaine = Sport. Il y en a 17 (le chiffre en bas,
comme dans les tables).

2.8. Critères de requête : >, <, >=, <=


On va à présent créer une requête qui affiche tous les gens qui gagnent plus de 25000 dinars
par mois.
Créez une nouvelle requête, toujours basée sur T_Celebrite, placez-y les champs Prenom,
NomClient, et SalaireMensuel.
Comme critère de SalaireMensuel, Ecrivez >25000 :

.
2.9. Critères de requête Entre X ET Y
Maintenant on va extraire les gens qui gagnent entre 10'000 et 15'000 dinars par mois.

Première manière : Créez une nouvelle requête, toujours basée sur T_Celebrite, contenant
les champs Prenom, NomClient et SalaireMensuel. Comme critère de salaire mensuel, écrivez
littéralement : entre 10000 et 15000

10
Deuxième manière : Remplacez votre critère Entre 10000 et 15000 par >10000 Et <15000

2.10. Critères de requête : Ou

Exemple : Donnez la liste de tous les gens qui appartiennent au domaine Chanson ou
Cinéma.

Créez une nouvelle requête basée sur T_Celebrite, dans laquelle vous insérez le Prénom et le
NomClient, ainsi que le Domaine, et comme critère de domaine, vous écrivez chanson ou

cinéma : . Dès que vous


cliquez dans une autre case, Access installe des guillemets ("chanson" Ou "cinéma").

2.11. Critères de requête : PAS, <>


Exemple : Donnez la liste de tous les gens qui ne sont PAS dans la chanson.
Créez une nouvelle requête, comme d'habitude, toujours basée sur T_Celebrite, avec le
prénom, le nom et le domaine.

Critère de domaine : pas chanson .

Remarque : Pas à la même signification que <>. Vous pouvez


indifféremment écrire Pas cinéma ou <> cinéma

2.12. Critères dans plusieurs champs et dans plusieurs lignes de critères


La liste des célibataires qui ne sont pas sportifs, les sportifs qui ne sont pas célibataires, et
évidemment les célibataires sportifs !

11
Créez une nouvelle requête comme d'habitude. Si vous mettez les critères suivants :

Vous aurez les célibataires sportifs, et rien d'autre. Mais si vous mettez célibataire une ligne
plus bas, comme ceci :

alors cette fois, vous pourrez constater que chaque personne est soit sportive, soit célibataire,

soit les deux : .

Et voilà à quoi sert la ligne Ou :

2.13. Critères de requête : Utilisation de dates


Donnez la liste des gens nés avant 1960.

On ne peut pas mettre <1960 dans le champ DateNaissance car ill s'agit d'une date, donc, vous
ne pouvez pas simplement indiquer l'année. Vous êtes obligé d'écrire comme critère
<1.1.1960.
Créez une nouvelle requête comme d'habitude, et demandez le Prénom, le Nom et la date de

Naissance. Comme critère de la date de naissance, écrivez <01/01/1960 .

Dans la section suivante, on va extraire les gens dont la date de naissance n'est pas connue.
2.14. Critères de requête : Utilisation de Null

12
Bases de Données Issatso. 17/18

Pour obtenir les gens dont la date de naissance n'est pas connue, vous devez écrire null

comme critère de la date de naissance : .

2.15. Masquage des colonnes dans une requête


Créez une requête toute simple qui extrait les sportifs (Le prénom, le nom, le domaine, avec
comme critère de domaine : "sport"). Lancez cette requête : Vous avez la liste de tous les
sportifs. D'ailleurs, dans la colonne Domaine, il est indiqué chaque fois Sport, Sport, Sport,
Sport...! Inutile de le répéter sur toute la colonne !
Nous allons masquer cette colonne. Nous aurons toujours la liste des sportifs, mais seulement
le prénom et le nom. Revenez en mode création de cette requête. Décochez cette case :

Relancez la requête : Cette fois, vous avez les mêmes personnes, mais, la colonne Domaine
n'est plus représentée.

2.16. Les tris et les premières valeurs

Créez une nouvelle requête, comme d'habitude, et placez les champs suivants dans cet ordre :
.

Si vous lancez la requête telle quelle, vous aurez la liste simple de tous les gens, dans l'ordre
dans lequel elles ont été rentrées.

Revenez ou restez en mode création de cette requête. Cliquez dans la zone Tri de Domaine

: .

En cliquant dans cette zone, ça fait apparaître une petite flèche. Si vous cliquez sur cette

petite flèche, vous pouvez choisir entre

13
Bases de Données Issatso. 17/18

 Croissant (Tri alphabétique de A à Z, ou s'il s'agit d'un champ numérique, du plus


petit au plus grand. En cas de dates de la plus ancienne à la plus récente)
 Décroissant (Tri alphabétique de Z à A, ou s'il s'agit d'un champ numérique du plus
grand au plus petit. En cas de dates, de la plus récente à la plus ancienne)

Choisissez Tri croissant ou décroissant pour le domaine :

Lancez la requête : Vous constatez que les domaines sont triés par ordre alphabétique

14