42
Les bases de données TP n°1 Objectifs Au terme de la séance, l’étudiant sera capable : - de savoir les limites du système de fichiers ; - de définir une base de données ; - de connaitre les avantages d'une base de données ; - de définir un Système de Gestion de Base de données ; - de connaitre quelques SGBD actuels ainsi leurs fonctions. Questions de cours 1) Qu'est ce qu'une donnée ? 2) Qu'est ce qu'une information ? 3) Qu'est ce qu'un fichier ? 4) Quelles sont les limites du système de fichiers ? 5) Qu'est ce qu'une base de données ? 6) Quelles sont les avantages de la base de données ? 7) Qu'est ce qu'un SGBD ? 8) Quel est le rôle d'un SGBD ? 9) Citez quelques SGBD que vous connaissez ? 10) Quelles sont les fonctions d'un SGBD ?

Les bases de données TP n°1

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Les bases de données TP n°1

Les bases de données

TP n°1 Objectifs

Au terme de la séance, l’étudiant sera capable : - de savoir les limites du système de fichiers ;

- de définir une base de données ;

- de connaitre les avantages d'une base de données ; - de définir un Système de Gestion de Base de données ;

- de connaitre quelques SGBD actuels ainsi leurs fonctions.

Questions de cours

1) Qu'est ce qu'une donnée ?

2) Qu'est ce qu'une information ?

3) Qu'est ce qu'un fichier ?

4) Quelles sont les limites du système de fichiers ?

5) Qu'est ce qu'une base de données ?

6) Quelles sont les avantages de la base de données ?

7) Qu'est ce qu'un SGBD ?

8) Quel est le rôle d'un SGBD ?

9) Citez quelques SGBD que vous connaissez ?

10) Quelles sont les fonctions d'un SGBD ?

Page 2: Les bases de données TP n°1

Correction du TP n°1

1) Qu'est ce qu'une donnée ?

Réponse :

Une donnée est description élémentaire d'une information.

11) Qu'est ce qu'une information ?

Réponse :

(a) Plusieurs données regroupées et se rapportant à un même contexte donnent naissance à

l'information.

(b) L'information est tout renseignement, écrit, sonore, visuel ou audiovisuel, codé susceptible

d'être stocké ou transmis, en vue de déclencher ou de modifier le comportement d'un processus.

2) Qu'est ce qu'un fichier ?

Réponse :

Un fichier est une suite d’informations codé sous forme binaire.

3) Quelles sont les limites du système de fichiers ?

Réponse :

Les inconvénients du système de fichiers sont :

Nécessiter d'écrire des programmes

Manque de sécurité.

La redondance et de MAJ

Accès exclusif (un utilisateur à la fois)

4) Qu'est ce qu'une base de données ?

Réponse :

Une base de données est une collection de données structurées relatives à un ou plusieurs domaines du

monde réel.

Exemple : BD d'une bibliothèque.

5) Quelles sont les avantages de la base de données ?

Réponse :

Les avantages de la base de données sont :

- Centralisation : Les données peuvent êtres utilisées par plusieurs programmes et plusieurs

utilisateurs.

- Indépendance entre données et programmes : Dans une BD les données sont décrites

indépendamment des programmes. Ce qui n'est pas le cas avec les fichiers.

Page 3: Les bases de données TP n°1

- Intégration des liaisons entre les données : Pas besoin d'un programme pour retrouver les

liens entre les données.

- Intégrité des données : Ce sont des règles de sécurité assurant la cohérence des données :

1. Unicité des enregistrements.

2. Interdiction de la suppression des données utilisées par d'autres données.

- Concurrence d'accès : Plusieurs utilisateurs peuvent accéder simultanément à la BD.

6) Qu'est ce qu'un SGBD ?

Réponse :

Un Système de Gestion de Base de Données(SGBD) est un logiciel qui permet de : décrire, modifier,

interroger et administrer les données d'une base de données.

7) Quel est le rôle d'un SGBD ?

Réponse :

Il joue le rôle d’interface entre d’interface entre l’utilisateur et la base de données

8) Citez quelques SGBD que vous connaissez ?

Réponse :

ORACLE

MICROSOFT SQL SERVER

MySQL

Microsoft Access

9) Quelles sont les fonctions d'un SGBD ?

Réponse :

- La définition des données

Le SGBD nous permet de créer et de décrire les objets de la base de données (table, liens,

utilisateur…), grâce au Langage de Description de Données (LDD).

- La manipulation des données

La manipulation des données peut être :

La recherche

La lecture

La suppression

La modification

L'ajout

Le SGBD nous offre un Langage de Manipulation de Données (LMD)

- L'intégrité des données

C'est l'ensemble des opérations de contrôle que le SGBD effectue pour préserver la cohérence des

données.

Page 4: Les bases de données TP n°1

Exemple : Vérification de la validité de la valeur d'un champ.

- La gestion des accès concurrents

Le SGBD gère l'accès simultané des utilisateurs à la base de données.

- La confidentialité

Tous les utilisateurs d'une base de données ne sont pas supposés pouvoir consulter toutes les

informations. Des sous schémas de la base permettent de résoudre ce problème en plus des mots de

passes et droits d'accès.

- La sécurité de fonctionnement

Faire une copie de sauvegarde de la base. Remise en marche de la base en cas de panne

Page 5: Les bases de données TP n°1

TP n°2

Objectifs

Au terme de la séance, l’étudiant sera capable : - de déduire la structure d’une B.D. à partir d’un énoncé décrivant un domaine donné.

- de détecter les anomalies dans la structure des tables.

Exercice n°1

Soit à représenter l’activité d’une bibliothèque disposant d’un ensemble de livres qu’elle met à la disposition de

ses abonnés. Chaque livre de la bibliothèque est décrit à l’aide d’un code unique, un titre, un auteur, un éditeur et

une date de parution. L’enregistrement d’un nouvel abonné consiste à renseigner son numéro qui servira comme

identifiant, son nom et prénom, son adresse et son numéro de téléphone.

Chaque abonné peut emprunter plusieurs livres. A chaque emprunt on enregistre le code du livre, le numéro de

l’abonné et la date d’emprunt. Au retour du livre on enregistre la date de retour.

Questions :

1. Souligner à partir de l’énoncé les noms des colonnes et compléter le tableau ci-dessous. Nom colonne Type de

données Taille Obligatoire Valeur par

défaut Valeurs autorisées Sujet

(1)

(2)

(1)

(2)

Page 6: Les bases de données TP n°1

2. Etablir la liste des tables

Liste des tables

Nom table Description Sujet

3. Affecter les colonnes aux tables et en donner une description textuelle.

…………………(……………….,…...……….,……………….,………..……….,………………)

…………………(……………….,……….………..,…..…….……….,………...……….,….……)

…………………(……………………….,………………….,………………….,………..……….)

4. Préciser les clés primaires des tables.

…………………(……………….,…...……….,……………….,………..……….,………………)

…………………(……………….,……….………..,…..…….……….,………...……….,….……)

…………………(……………………….,………………….,………………….,………..……….)

5. Identifier les liens entre les tables en utilisant le tableau ci-dessous, déduire la description textuelle :

Table mère Table fille Clé primaire Clé étrangère

…………………(……………….,…...……….,……………….,………..……….,………………)

…………………(……………….,……….………..,…..…….……….,………...……….,….……)

…………………(……………………….,………………….,………………….,………..……….)

6. Représenter la structure de cette base de données sous forme graphique.

Page 7: Les bases de données TP n°1

Exercice n°2

Pour décrire les employés d’une entreprise et leur répartition entre les différents services la table suivante a été

créée.

emp

Nom Prénom Date

naissance

Service

Nom Service Date

création

Service

1 TOUNSI Safa 01/10/1980 20 Financier 01/01/1970

2 KEFI Ali 12/09/1981 10 Administratif 01/01/1975

3 BEJI Mohamed 14/04/1977 20 Financier 01/01/1970

4 TOUATI Lamia 21/06/1980 20 Financier 01/01/1970

5 SOUSSI Leila 28/11/1982 10 Administrative 01/01/1975

6 SFAXI Nouri 20/08/1990 30 Juridique 01/04/1980

7 GABSI Mouna 04/04/1987 10 Administratif 01/01/1957

8 JERBI Lotfi 09/06/1988 30 Juridique 01/04/1980

9 EZZAR Samia 12/12/1982 20 Financier 01/01/1970

Questions :

1. Identifier les anomalies de cette structure.

………………..............................

……………………………………………………………………………………………

……………………………………………………………………………………………

……………………………………………………………………………………………

…………………………………………………………………………………

……………………………………………………………………………………………

……………………………………………………………………………………………

……………………………………………………………………………………………

…………………………………………………………………………………

………………..............................

……………………………………………………………………………………………

……………………………………………………………………………………………

……………………………………………………………………………………………

…………………………………………………………………………………

Page 8: Les bases de données TP n°1

2. Donner la nouvelle structure.

………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………...….

…..………………..

……………………………

Page 9: Les bases de données TP n°1

Exercice n°1

Correction du TP2

Soit à représenter l’activité d’une bibliothèque disposant d’un ensemble de livres qu’elle met à la disposition

de ses abonnés.

Chaque livre de la bibliothèque est décrit à l’aide d’un code unique, un titre, un auteur, un éditeur et une date

de parution.

L’enregistrement d’un nouvel abonné consiste à renseigner son numéro qui servira comme identifiant, son

nom et prénom, son adresse et son numéro de téléphone.

Chaque abonné peut emprunter plusieurs livres. A chaque emprunt on enregistre le code du livre, le numéro

de l’abonné et la date d’emprunt. Au retour du livre on enregistre la date de retour.

Questions :

1. Souligner à partir de l’énoncé les noms des colonnes et compléter le tableau ci-dessous.

Nom colonne Type de

données

Taille Obligatoire Valeur par

défaut

Valeurs autorisées

Sujet

Code_livre Texte 10 O Livres

Titre Texte 50 O Livres

Auteur Texte 50 N Livres

Editeur Texte 30 N Livres

Date_parution Date N Livres

Num_abonne Numérique 5 O Abonnés

Nom_abonne Texte 20 O Abonnés

Prenom_abonne Texte 20 O Abonnés

Adresse Texte 50 Abonnés

Tel Texte 20 Abonnés

Code_liv_emp Texte 10 O (1) Emprunts

Num_ab_emp Numérique 5 O (2) Emprunts

Date_emprunt Date O (3) Emprunts

Date_retour Date (4) Emprunts

(1) Les valeurs de la colonnes Code_livre_emp doivent exister dans la colonne Code_livre : un livre emprunté doit exister dans la

bibliothèque.

(2) Les valeurs de la colonnes Num_ab_emp doivent exister dans la colonne Num_abonne: une personne ne peut emprunter un

livre que lorsqu'il est déjà existant.

(3) La valeur par défaut de la date d'emprunt est la date système

(4) La date de retour du livre doit être supérieur à la date d'emprunt

Page 10: Les bases de données TP n°1

2. Etablir la liste des tables

Liste des tables

Nom table Description Sujet

Livre Regroupe l'ensemble des livres de la

bibliothèque

Livres

Abonne Regroupe les personnes abonnées à la

bibliothèque

Abonnés

Emprunt Stocke l'historique des emprunts de

livres

Emprunts

3. Affecter les colonnes aux tables et en donner une description textuelle.

Livre(Code_livre,Titre,Auteur,Editeur,Date_parution)

Abonne(Num_abonne,Nom_abonne,Prenom_abonne,Adresse,Tel)

Emprunt(Code_liv_emp,Num_ab_emp,Date_emprunt,Date_retour)

4. Préciser les clés primaires des tables.

Livre(Code_livre,Titre,Auteur,Editeur,Date_parution)

Abonne(Num_abonne,Nom_abonne,Prenom_abonne,Adresse,Tel)

Emprunt(Code_liv_emp,Num_ab_emp,Date_emprunt,Date_retour)

5. Identifier les liens entre les tables en utilisant le tableau ci-dessous, déduire la description textuelle :

Table mère Table fille Clé primaire Clé étrangère

Livre Emprunt Code_livre Code_liv_emp

Abonne Emprunt Num_abonne Num_ab_emp

Livre(Code_livre,Titre,Auteur,Editeur,Date_parution)

Abonne(Num_abonne,Nom_abonne,Prenom_abonne,Adresse,Tel)

Emprunt(Code_liv_emp#,Num_ab_emp#,Date_emprunt,Date_retour)

6. Représenter la structure de cette base de données sous forme graphique.

Page 11: Les bases de données TP n°1

Exercice n°2

Pour décrire les employés d’une entreprise et leur répartition entre les différents services la table suivante a été

créée.

N° emp Nom Prénom Date de

naissance

Service

Nom Service Date création

Service

1 TOUNSI Safa 01/10/1980 20 Financier 01/01/1970

2 KEFI Ali 12/09/1981 10 Administratif 01/01/1975

3 BEJI Mohamed 14/04/1977 20 Financier 01/01/1970

4 TOUATI Lamia 21/06/1980 20 Financier 01/01/1970

5 SOUSSI Leila 28/11/1982 10 Administrative 01/01/1975

6 SFAXI Nouri 20/08/1990 30 Juridique 01/04/1980

7 GABSI Mouna 04/04/1987 10 Administratif 01/01/1957

8 JERBI Lotfi 09/06/1988 30 Juridique 01/04/1980

9 EZZAR Samia 12/12/1982 20 Financier 01/01/1970

Questions :

3. Identifier les anomalies de cette structure.

Incohérence de données :

On remarque que le service N°10, le nom du service n'est pas le même pour les

employés N°2,5 et 7 (Administratif, Administrative).

Pour ce même service, la date de création diffère entre les employés N°2,5 et 7

(01/01/1975).

Redondance de données

On remarque que lorsqu'il y a plusieurs employés appartenant au même service, les

informations relatives) ce dernier sont dupliquées ce qui a entraîner les incohérences

précédentes.

4. Donner la nouvelle structure.

Nous proposons d'éclater la table actuelle en deux tables:

Service(Num_serv,Nom_serv,Date_creat_serv)

Employe (Num_emp,Nom_emp,Prenom_emp,Date_naiss_emp,Num_serv#)

Page 12: Les bases de données TP n°1

Service

N° Service Nom service Date création Service

10 Administratif 01/01/1975

20 Financier 01/01/1970

30 Juridique 01/04/1980

Employe

N°emp Nom Prénom Date naissance N° Service

1 TOUNSI Safa 01/10/1980 20

2 KEFI Ali 12/09/1981 10

3 BEJI Mohamed 15/04/1977 20

4 TOUATI Lamia 21/06/1980 20

5 SOUSSI Leila 28/11/1982 10

6 SFAXI Nouri 20/08/1990 30

7 GABSI Mouna 04/04/1987 10

8 JERBI Lotfi 09/06/1988 30

9 EZZAR Samia 12/12/1982 20

Page 13: Les bases de données TP n°1

TP n°3 (Les tables)

Objectifs de la séance

Au terme de la séance, l’étudiant sera capable : - de créer des tables, les relations entre ces tables et de saisir des enregistrements via le logiciel Access

- de vérifier que le SGBD Access assure une cohérence des données par la contrainte d’intégrité

référentielle

Travail à réaliser :

1) Lancer le logiciel Access et créer une nouvelle base de données.

2) Nommer cette base "biblio01" et l'enregistrer.

3) Créer les tables :

Classes comprenant les champs :

CODCLA de type NuméroAuto (à mettre en clé primaire)

LIBELCLA de type Texte

Elèves comprenant les champs :

CODELE de type NuméroAuto (à mettre en clé primaire)

CODCLA de type Numérique

TITELE de type Texte

NOMELE de type Texte

PRENOMELE de type Texte

Emprunts comprenant les champs :

CODLIV de type Numérique (à mettre en clé primaire)

CODELE de type Numérique (à mettre en clé primaire)

DATEMPRUNT de type Date/Heure

DATRETOUR de type Date/Heure

Livres comprenant les champs :

CODLIV de type NuméroAuto (à mettre en clé primaire)

TITLIV de type Texte

AUTLIV de type Texte

ANPARUTIONLIV de type Texte

ETATLIV de type Texte

4) Mettre les champs :

TITELE en zone de liste comprenant les valeurs : "M", "Mlle" et "Mme" avec comme valeur par

défaut "M" et valide uniquement pour les valeurs "M", "Mlle" et "Mme".

ETATLIV en zone de liste modifiable comprenant les valeurs : "Neuf" ; "Bon" ; "Moyen" ;

"Mauvais"

DATEMPRUNT et DATRETOUR avec un masque de saisie de type / /

ANPARUTIONLIV avec une taille de 4 caractères, une condition de validité (compris entre 2000

et 2011) et le message d'erreur : "Année non valide !" en cas de non-conformité.

Page 14: Les bases de données TP n°1

5) Créer les liens entre les tables (ne pas oublier d'appliquer les intégrités référentielles si nécessaire).

6) Saisir les enregistrements suivant dans les tables correspondantes :

Classes :

CODCLA LIBELCLA

1 2LAEGQ

2 2APTCI

3 2LFECO

4 2LFCOP

Elèves :

CODELE CODCLA TITELE NOMELE PREELE

1 1 M Zayeti Salah

2 4 Mlle Abidi Maha

3 4 M Hosni Walid

4 2 Mme Bouraoui Besma

Livres :

CODLIV TITLIV AUTLIV ANPARUTIONLIV ETATLIV

1 Ouioui à la montagne Rousseau 1960 Moyen

2 Nonnon fait du ski De la fontaine 1968 Bon

3 Toto Tartampion 1975 Mauvais

4 Les pingoins Cousteau 1950 Bon

Emprunts :

CODLIV CODELE DATEEMPRUNT DATERETOUR

1 1 16/09/2009 15/12/2009

4 1 23/12/2009 11/01/2010

1 2 01/01/2005 01/02/2005

2 3 10/02/2006 15/02/2006

7) Supprimer l'emprunt concernant M Hosni dans la table Emprunts et remplacer l'année de parution du livre

du livre Toto par l'année 1986.

8) Effectuer la mise en forme suivante sur la feuille de données de la table Emprunts :

Appliquer la police Comic sans MS de taille 11.

Mettre une couleur de texte rouge

Appliquer une apparence de cellules 3D relâché

Ajuster les colonnes au texte et masquer la colonne "code du livre" (CODLIV)

Renommer la colonne "code élève" (CODELE) en "Numéro de l'élève"

9) Ouvrir la table Elève en mode feuille de données et appliquer un filtre permettant d'obtenir tous les élèves

appartenant au code classe "4". Appliquer un nouveau filtre permettant d'afficher toutes les demoiselles

appartenants à la classe "4".

Page 15: Les bases de données TP n°1

TP n°4

Objectifs de la séance

Au terme de la séance, l’étudiant sera capable d'interroger une base de données en utilisant l'algèbre relationnelle.

Exercice

On donne le schéma relationnel suivant :

PILOTE (NUMPIL, NOMPIL, ADR, SAL) AVION (NUMAV, NOMAV, CAPACITE, LOC) VOL (NUMVOL#, NUMPIL#, NUMAV, VILLE_DEP, VILLE_ARR, H_DEP, H_ARR)

NUMPIL: clé de PILOTE, nombre entier NOMPIL: nom du pilote, chaîne de caractères ADR: ville de la résidence du pilote, chaîne de caractères SAL: salaire du pilote, nombre entier NUMAV: clé de AVION, nombre entier CAPACITE: nombre de places d'un avion, nombre entier

Extension des tables

LOC: ville de l'aéroport d'attache de l'avion, chaîne de caractères NUMVOL: clé de VOL, nombre entier VILLE_DEP: ville de départ du vol, chaîne de caractères VILLE_ARR: ville d'arrivée du vol, chaîne de caractères H_DEP: heure de départ du vol, nombre entier entre 0 et 23 H_ARR: heure d'arrivée du vol, nombre entier entre 0 et 23

PILOTE AVION

NUMPIL NOMPIL ADR SAL NUMAV NOMAV CAPACITE LOC 1 ZIGHED Tunis 21000 1 A300 300 Monastir

2 BOUSSAID Djerba 21000 2 A310 300 Monastir

3 BOUSLIMI Monastir 18000 3 B707 250 Tunis

4 JBELI Tunis 17000 4 A300 280 Sousse 5 ZAGHDOUDI Djerba 19000 5 Concorde 160 Monastir

6 NASRAOUI Tunis 18000 6 B747 460 Tunis

7 GARBAA Monastir 17000 7 B707 250 Tunis

8 CHALGHOUM Sousse 15000 8 A310 300 Djerba

9 ARBI Monastir 18000 9 Mercure 180 Sousse

10 HOSNI Tunis 20000 10 Concorde 160 Tunis

NUMVOL NUMPIL NUMAV VILLE_DEP VILLE_ARR H_DEP H_ARR

1 1 1 Monastir Djerba 11:00 12:00

2 1 8 Tunis Djerba 17:00 19:00

3 2 1 Djerba Sousse 14:00 15:30

4 5 3 Djerba Sousse 18:00 19:30

5 9 1 Tunis Monastir 06:00 08:00

6 10 2 Sousse Monastir 11:00 11:30

7 1 4 Tunis Djerba 08:00 09:00

8 8 4 Monastir Tunis 07:00 08:00

9 1 8 Tozeur Djerba 09:00 10:00

10 8 2 Monastir Tunis 12:00 14:00

11 9 2 Tunis Tabarka 15:00 16:00

12 1 2 Monastir Tozeur 16:00 17:00

13 4 5 Monastir Tabarka 11:00 13:00

14 3 5 Tabarka Tunis 15:00 16:00

15 8 9 Tunis Djerba 17:00 19:00

16 7 5 Tunis Djerba 18:00 20:00

VOL

Page 16: Les bases de données TP n°1

Exprimer en algèbre relationnelle les requêtes suivantes :

1. Expression des projections et sélections

(a) Donnez la liste des avions dont la capacité est supérieure à 350 passagers.

(b) Quels sont les numéros et noms des avions localisés à Monastir ?

(c) Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?

(d) Donnez toutes les informations sur les pilotes de la compagnie.

(e) Quel est le nom des pilotes domiciliés à Tunis dont le salaire est supérieur à 15000 dt ?

2. Utilisation des opérateurs ensemblistes

(a) Quels sont les avions (numéro et nom) localisés à Monastir ou dont la capacité est inférieure à 350

passagers ?

(b) Liste des vols au départ de Monastir allant à Tunis après 18 heures ?

(c) Quels sont les numéros des pilotes qui ne sont pas en service ?

(d) Quels sont les vols (numéro, ville de départ) effectués par les pilotes de numéro 100 et 204 ?

3. Expression des jointures

(a) Donnez le numéro des vols effectués au départ de Monastir par des pilotes de Monastir?

(b) Quels sont les vols effectués par un avion qui n’est pas localisé à Monastir ?

(c) Quels sont les pilotes (numéro et nom) assurant au moins un vol au départ de Monastir avec un avion de

capacité supérieure à 300 places ?

(d) Quels sont les noms des pilotes domiciliés à Tunis assurant un vol au départ de Monastir avec un Airbus ?

(e) Quels sont les numéros des vols effectués par un pilote de Monastir au départ ou à l’arrivée de Monastir

avec un avion localisé à Tunis ?

(f) Quels sont les pilotes (numéro et nom) habitant dans la même ville que le pilote ZAGHDOUDI ?

(g) Quels sont les numéros des pilotes en service différents de celui de BOUSLIMI ?

(h) Quelles sont les villes desservies (VILLE_ARR) à partir de la ville d’arrivée d’un vol au départ de Tunis ?

(i) Quels sont les appareils (leur numéro) localisés dans la même ville que l’avion numéro 100 ?

(j) Quels sont les pilotes (leur nom) de Tunis qui ont volé avec tous les avions ?

Page 17: Les bases de données TP n°1

Correction du TP n°4

1. Expression des projections et sélections

(a) Donnez la liste des avions dont la capacité est supérieure à 350 passagers.

CAPACITE>350(AVION)

(b) Quels sont les numéros et noms des avions localisés à Monastir ?

NUMAV, NOMAV (LOC='Monastir'(AVION)) (c) Quels sont les numéros des pilotes en service et les villes de départ de leurs vols ?

NUMPIL, VILLE_DEP (VOL) (d) Donnez toutes les informations sur les pilotes de la compagnie.

NUMPIL, NOMPIL, ADR, SAL (PILOTE) (e) Quel est le nom des pilotes domiciliés à Tunis dont le salaire est supérieur à 15000 dt ?

NOMPIL (ADR='Tunis' SAL>15000 (PILOTE)) 2. Utilisation des opérateurs ensemblistes

(a) Quels sont les avions (numéro et nom) localisés à Monastir ou dont la capacité est inférieure à 350

passagers ?

Solution possible avec une projection et sélection

NUMAV,NOMAV (LOC='Monastir' CAPACITE<350 (AVION)) Solution avec les opérateurs ensemblistes

R1 = NUMAV,NOMAV (LOC='Monastir' (AVION))

R2 = NUMAV,NOMAV (CAPACITE<350 (AVION)) R = R1 R2

(b) Liste des vols au départ de Monastir allant à Tunis après 18 heures ?

Solution possible avec une sélection

VILLE_DEP='Monastir' VILLE_ARR='Tunis' H_DEP>'18:00' (VOL) Solution avec les opérateurs ensemblistes

R1 = VILLE_DEP='Monastir' (VOL)

R2 = VILLE_ARR='Tunis' H_DEP>'18:00' (VOL)

R3 = H_DEP>'18:00' (VOL) R4 = R1 R2

R = R4 R3

Page 18: Les bases de données TP n°1

(c) Quels sont les numéros des pilotes qui ne sont pas en service ?

R1 = NUMPIL (PILOTE) // Les numéros de tous les pilotes

R2 = NUMPIL (VOL) // Les numéros des pilotes qui sont affectés à des voles

R = R1 − R2

(d) Quels sont les vols (numéro, ville de départ) effectués par les pilotes de numéro 100 et 204 ?

Solution possible avec une projection et sélection

NUMVOL,VILLE_DEP (NUMPIL=100 NUMPIL=204 (AVION)) Solution avec les opérateurs ensemblistes

R1 = NUMVOL,VILLE_DEP(NUMPIL=100(AVION))

R2 = NUMVOL,VILLE_DEP(NUMPIL=204(AVION))

R = R1 R2 Remarque : Il n'aura pas de doublons avec l'opérateur.

3. Expression des jointures

(a) Donnez le numéro des vols effectués au départ de Monastir par des pilotes De Monastir ?

R1 = VILLE_DEP='Monastir' (VOL) R2 = ADR='Monastir' (PILOTE)

R = NUMVOL(R1 R2)

R1.NUMPIL = R2.NUMPIL

(b) Quels sont les vols effectués par un avion qui n’est pas localisé à Monastir ?

R = LOC≠'Monastir' (AVION VOL)

AVION.NUMAV = VOL.NUMAV

(c) Quels sont les pilotes (numéro et nom) assurant au moins un vol au départ de Monastir avec un avion

de capacité supérieure à 300 places ?

R1 = VILLE_DEP='Monastir' (VOL) R2 = CAPACITE>300 (AVION)

R = PILOTE.NUMPIL,NOMPIL(PILOTE R1 R2 )

PILOTE.NUMPIL = R1.NUMPIL R1.NUMAV = R2.NUMAV

(d) Quels sont les noms des pilotes domiciliés à Tunis assurant un vol au départ de Monastir avec un

Airbus ?

R1 = ADR='Tunis' (PILOTE) R2 = VILLE_DEP='Monastir' (VOL) R3 = NOMAV='Airbus' (AVION)

R = NOMPIL(R1 R2 R3 )

R1.NUMPIL = R2.NUMPIL R2.NUMAV = R3.NUMAV

Page 19: Les bases de données TP n°1

(e) Quels sont les numéros des vols effectués par un pilote de Monastir, au départ ou à l’arrivée de

Monastir avec un avion localisé à Tunis ?

R1 = ADR='Monastir' (PILOTE) R2 = VILLE_DEP='Monastir' ∨ VILLE_ARR='Monastir' (VOL)

R3 = LOC='Tunis' (AVION)

R = NUMVOL(R1 R2 R3 )

R1.NUMPIL = R2.NUMPIL R2.NUMAV = R3.NUMAV

(f) Quels sont les pilotes (numéro et nom) habitant dans la même ville que le pilote ZAGHDOUDI ?

R1 = PILOTE R2 = NOMPIL='ZAGHDOUDI' (PILOTE)

R = R1.NUMPIL,R1.NOMPIL(R1 R2) R1.ADR = R2.ADR

(g) Quels sont les numéros des pilotes en service différents de celui de BOUSLIMI ?

R1 = NOMPIL≠'BOUSLIMI' (PILOTE)

R2 = VOL

R = R1.NUMPIL (R1 R2) R1.NUMPIL = R2.NUMPIL

(h) Quels sont les numéros des pilotes en service différents de celui de BOUSLIMI ?

R1 = NOMPIL≠'BOUSLIMI' (PILOTE)

R2 = VOL

R = R1.NUMPIL (R1 R2) R1.NUMPIL = R2.NUMPIL

(i) Quelles sont les villes desservies (VILLE_ARR) à partir de la ville d’arrivée d’un vol au départ de Tunis ?

R1 = VILLE_DEP='TUNIS' (VOL)

R2 = VOL

R = R1.VILLE_ARR (R1 R2) R1.VILLE_DEP = R2.VILLE_ARR

(j) Quels sont les appareils (leur numéro) localisés dans la même ville que l’avion numéro 100 ?

R1 = NUMAV=100 (AVION)

R2 = AVION

R3 = R1.NUMAV (R1 R2) R1.LOC = R2.LOC

R = NUMAV≠100 (R3)

(k) Quels sont les pilotes (leur nom) de Tunis qui ont volé avec tous les avions ?

R1 = ADR='TUNIS' (PILOTE)

R2 = R1 VOL) R1.NUMPIL = VOL.NUMPIL

R = NOMPIL,NUMAV(R2) ÷ NUMAV(AVION)

Page 20: Les bases de données TP n°1

TP n°5 (Les requêtes)

Correspondance entre le vocabulaire employé en cours et le vocabulaire d’Access

Cours Access

Relation, Table

Attribut Champ

N-uplet Enregistrement

Création et manipulation de la base de données

Soit le schéma relationnel suivant :

JOUEUR (NoJoueur, NomJ, Sexe, NoEq#)

EQUIPE (NoEq)

TOURNOI (NoTour, NomT, Date, Coef, NoPays#)

PAYS (NoPays, NomP)

JOUE_J (NoJoueur#, NoTour#, Score_J)

JOUE_E (NoEq#, NoTour#, Score_E)

1. Créer une nouvelle base de données. Lancer Access. Sélectionner l’option « Nouvelle base de données », puis donner

un nom à la base de données pour l’enregistrer.

La base de données est maintenant créée. Il s’agit d’un fichier portant l’extension .mdb et contenant sept types

d’objets : tables, requêtes, formulaires, états, pages (web), macros et modules. Ces différents objets sont

accessibles en cliquant sur les onglets appropriés de la fenêtre de gestion de la base (voir ci- dessous).

Page 21: Les bases de données TP n°1

2. Définir la structure des tables. Cliquer sur l’onglet « Tables », puis sur « Créer une table en mode Création

» (ou utiliser le bouton et sélectionner le mode création). Le mode création est utilisé pour paramétrer la

structure d’une table : nom de chaque champ et type, principalement. Renseigner les colonnes « Nom du champ »

et « Type de donnée », ainsi que la propriété « Taille du champ » (fenêtre du bas). Définir la clé primaire de la table en

sélectionnant la ligne du champ adéquat, puis en cliquant sur l’icône dans la barre d’outils. Fermer la table en

cliquant sur le bouton de fermeture ou par le menu Fichier/Fermer. Si la sauvegarde n’a pas été effectuée auparavant,

le système vous préviendra.

3. Renseigner chaque table avec quelques enregistrements. Dans l’onglet « Tables » de la fenêtre de gestion

de la base, sélectionner une table et cliquer sur le bouton « Ouvrir » ( ). En mode «Feuille de

données», il est possible de saisir, modifier ou supprimer les données. Expérimenter la modification et la

suppression d’enregistrements.

4. Définir les relations entre les tables (Menu Outils / Relations ou icône ). Cet outil Access définit

implicitement les contraintes de clés étrangères et permet de faciliter les opérations de jointure. Pour cela,

ajouter successivement toutes les tables, puis fermer la boite de dialogue. Pour définir une relation, par

exemple celle qui est associée à la clé étrangère NumCli de la table Commande de l’exemple ci-dessous,

cliquer sur le champ NumCli dans la table Commande et le glisser sur le champ auquel il fait référence :

NumCli dans la table Client (ou vice-versa). Cocher la case « Appliquer l’intégrité référentielle ».

Interrogation de la base

Formuler les requêtes suivantes avec le formalisme graphique d’Access (QBE, Query By Example). Cliquer sur

l’onglet « Requêtes » de la fenêtre de gestion de la base, puis sélectionner le mode création.

Page 22: Les bases de données TP n°1

Σ

Choisir la ou les tables ou requêtes sources de la requête.

Utiliser la grille de création pour spécifier la requête en faisant glisser les champs à projeter dans la grille de

création, en indiquant les critères de tri ou de restriction, etc.

1. Liste de tous les tournois avec toutes leurs caractéristiques (pseudo-champ *).

2. Noms des tournois classés par importance (i.e., par coefficient d’importance décroissant).

3. Nom des joueuses.

4. Caractéristique d’un joueur dont le numéro est saisi au clavier (=[Message] en critère).

5. Liste des tournois en précisant Nom du tournois / Nom du pays.

6. Maximum des coefficients de tournois (fonction d’agrégat Max() accessible par le bouton ).

7. Nombre total de tournois (fonction d’agrégat Compte()).

8. Nombre de tournois, par pays (fonction d’agrégat Compte() + regroupement).

9. Pour chaque équipe, nom des joueurs de cette équipe. Veiller à ne pas inclure dans la liste les joueurs de simple

uniquement.

10. Nom du joueur qui fait équipe avec un joueur dont le nom est saisi au clavier.

11. Pour chaque tournoi, scores obtenus par un joueur dont le nom est saisi au clavier.

12. Copier/coller la requête 13. Ajouter à cette requête un champ calculé Score_Pondéré tel que

Score_Pondéré = Score_Joueur x Coef.

Page 23: Les bases de données TP n°1

13. À partir de la requête 14, calculer le score total (fonction d’agrégat Somme() sur les scores pondérés) d’un joueur

dont le nom est saisi au clavier.

14. Pour chaque joueur de sexe masculin, son score total. Trier les scores totaux par ordre décroissant.

15. À partir des requêtes 15 et 16, afficher les noms des joueurs dont le score total est supérieur au score d’un joueur

dont le nom est saisi au clavier.

16. Par numéro de tournoi, le plus haut score obtenu pour ce tournoi.

17. À partir de la requête 18, afficher, pour chaque tournoi, la gagnante (la joueuse dont le score est égal au plus haut

score obtenu pour ce tournoi).

Annexe 1 : Principaux types de données sous Access

Texte Texte ou combinaison de texte et de chiffres, ou chiffres ne servant pas à faire des calculs (numéros de

téléphone, codes postaux…) ; taille maximum : 255 caractères.

Mémo Textes longs (résumés, appréciations…) ; taille maximum : 32 000 caractères.

Numérique Plusieurs types de nombres :

octet : valeur entière comprise entre 0 et 255

entier : valeur entière comprise entre –32 768 et 32 768

entier long : valeur entière comprise entre –2 147 483 648 et 2 147 483 647

réel simple: valeur décimale comprise entre –3,40282E38 et 3,402823E38 avec une

précision de six chiffres

réel double : valeur décimale comprise entre –1,79769313486232E308 et 1,79769313486232E308 avec une précision

de six chiffres.

Date/Heure Dates et/ou heures.

Monétaire Nombres en style monétaire (ex. 1 000 000,00 €).

NuméroAuto (Numérotation Automatique)

Oui/Non Booléen (seulement deux valeurs possibles).

Annexe 2 : Principales propriétés des champs sous Access

Taille du champ Pour un champ de type texte, il s’agit du nombre maximal de caractères autorisé dans le champ

(valeur par défaut : 50 ; limites : de 1 à 255). Pour un champ de type numérique, il faut choisir parmi octet, entier, etc.

Format Pour les nombres, choix d’un format monétaire ou pourcentage, par exemple ; pour les dates et heures, choix de l’affichage entre 01/01/2011, 01/01/11, 01-jan-11, etc.

Décimales Pour un nombre, saisir les nombre de décimales désiré.

Masque de saisie Guide et assiste l’opérateur dans la saisie des données ; par exemple, un masque de saisie sur un code postal contraint l’opérateur à saisir 5 caractères de type numérique.

Légende Spécifie le libellé à afficher dans l’en-tête de colonne de la feuille de données ou dans l’étiquette de contrôle du formulaire de saisie.

Valeur par défaut C’est une constante, une expression ou une fonction qui est automatiquement validée si aucune autre n’est entrée.

Valide si C’est une constante, une expression ou une fonction qui définit les conditions de validation d’un champ (contrainte de domaine).

Message si erreur Dans le cas d’une utilisation de la propriété Valide si, définit le message à envoyer en cas de non- respect des conditions de validité.

Null interdit Spécifie si la saisie de donnée dans ce champ est obligatoire ou non (pas de saisie = valeur Null)

Chaîne vide autorisée Indique si une chaîne de caractères ne contenant aucun caractère est valide ou non. Indexé Champ indexé (avec ou sans doublons) ou non

Page 24: Les bases de données TP n°1

TP n°6

(Les requêtes)

La requête est un objet employé fréquemment pour le calcul. En effet, afin de minimiser la taille des bases

de données, il est recommandé de ne pas stocker dans des champs d’une table les valeurs issues d’un calcul. Pour

visualiser ces dernières, on préfère exécuter une requête : ainsi c’est mémorisée que la formule du calcul mais non

son résultat.

1. Mise en place de la base de données

Une société de vente par correspondance souhaite effectuer quelques calculs sur les commandes

passées par ses clients. Elle emploie une base Access nommée vpc.mdb.

La base contient une seule table Ligne de commandes qui possède la structure suivante :

Ligne de commandes(NuméroVente,CodeClient,NomClient,PrenomClient,DateVente,

NombreArticle,PrixUnitaire)

1.1. Saisie de données dans la table

Ouvrir la table Ligne des commandes et saisir dans le champ DateVente pour chaque enregistrement une valeur

: vous n’entrez pas l’expression « Aujourd’hui – 7 », mais la date correspondant au jour effectif du TP moins 7

jours (par exemple 17/04/2011 si la séance de travaux pratiques a lieu le 24/04/2011).

2. Champ calculé dans une requête

Un champ calculé est constitué d’un identificateur (le nom du champ), d’un opérateur (le symbole : pour un

champ calculé dans un formulaire) et d’une formule de calcul construite à partir d’identificateurs d’autres champs

et de constantes. Des champs calculés peuvent être insérés dans les requêtes, les formulaires et les états ; ils ne

peuvent pas l’être dans une table.

Page 25: Les bases de données TP n°1

2.1. Calcul à partir de deux champs de la table

Nous allons créer une première requête permettant de calculer le montant hors taxe de chaque ligne

de commandes.

2.1.1. Création d’une requête de calcul

a) Cliquez sur le bouton Requêtes de la fenêtre de Base de données puis double cliquez sur la proposition

« Créer une requête en mode création ». Ajoutez la table Ligne de commandes.

b) Créez la structure de la requête en suivant les étapes ci-dessous :

– Inscrire dans la première ligne de la grille de création les sept champs de la table, un par colonne.

– Entrer comme titre du huitième champ l’expression suivante :

« Montant : PrixUnitaire*NombreArticle ».

– « Montant » est l’identificateur du champ calculé ;

– «:» est l’opérateur d’affectation ;

– « PrixUnitaire*NombreArticle » est la formule de calcul.

c) Cliquez sur le bouton pour exécuter la requête et vérifier son bon fonctionnement.

Attention ! Si le calcul n’est pas effectué et si la requête agit comme une requête paramétrée, cela

signifie que vous avez mal orthographié le nom d’un champ dans la formule du calcul.

d) Enregistrez cette requête sous le nom CalculHT.

2.1.2. Modifier les propriétés du champ calculé

Attention ! Pour modifier une propriété d’une requête, vous devez avoir enregistré cette requête. Toute

modification d’une requête qui n’a pas été enregistrée au préalable n’est pas prise en compte par Access.

L’objectif est de changer une propriété du champ calculé de manière à faire apparaître comme titre du champ

calculé « Montant hors taxe », titre plus explicite que « Montant » pour l’utilisateur.

En mode de création, sélectionnez dans la grille de création la colonne contenant le champ calculé, activez le

bouton de propriété de la barre d’outils et dans la fenêtre de propriétés du champ écrire comme légende :

« Montant hors taxe ».

Page 26: Les bases de données TP n°1

2.2. Calcul à partir de champs calculés

L’objectif est de créer une requête permettant de calculer et d’afficher le montant de la TVA et le montant TTC

de chaque commande à partir du montant hors taxes que vous venez de calculer.

a) Créez une nouvelle requête à partir non pas de la table Ligne de commandes, mais de la requête

CalculHT.

b) Placez les huit noms de champs de la requête CalculHT en première ligne de la grille de création de la

nouvelle requête.

c) Placez le pointeur dans la première colonne vide (la neuvième). Ecrivez l’expression du champ calculé :

« TVA :Montant*0,196 ».

Le champ TVA est calculé à partir du champ calculé Montant de la requête CalculHT.

d) Dans la dixième colonne, écrire la formule suivante :

MontantTTC : Montant+TVA

e) Exécutez la requête. Vous devez obtenir le résultat suivant :

Si aucun calcul n’est effectué, vérifiez l’orthographe des champs employés dans les calculs.

Si l’unité monétaire est erronée, enregistrez la requête sous le nom CalculTTC, puis modifiez le format

des deux nouveaux champs calcul´es pour que les valeurs soient exprimées en euros.

f) Enregistrez la requête sous le nom CalculTTC.

3. Les fonctions d’agrégats : les fonctions somme, moyenne, min et max appliquées à l’ensemble des

données

Une fonction d’agrégation permet d’obtenir une valeur issue d’un calcul sur l’ensemble de valeurs d’un

même champ pour une table déterminée. Par exemple : recherche du maximum, somme des valeurs,

dénombrement des valeurs, etc. La liste des opérations disponibles est reproduite dans le document en annexe.

L’exercice consiste à créer une requête permettant d’afficher sur une seule ligne le total des montants TTC, les

montants TTC maximum, minimum et moyen, le nombre de commandes passées jusqu’à ce jour.

Page 27: Les bases de données TP n°1

a) Créez une nouvelle requête à partir de la requête CalculTTC.

b) Dans la première ligne de la grille de création, sélectionnez, dans les 5 premières colonnes, le nom du

champ MontantTTC.

c) Cliquez sur le bouton Opérations de la barre d’outils. Apparait comme troisième ligne de la grille de

création une nouvelle ligne intitulée Opérations.

d) Sélectionnez dans la première colonne l’opération de sommation (somme), dans la deuxième l’opération

du maximum (max), dans la troisième l’opération du minimum (min), dans la quatrième l’opération de

moyenne (moyenne) et dans la cinquième l’opération de dénombrement (compte).

e) Enregistrez la requête sous le nom Statistiques sur commandes et l’exécuter.

f) En vous inspirant de la copie d’écran ci-dessous, modifiez la propriété Légende des différents calculs pour

faire apparaître un message conforme à l’usage correct de la langue française.

Page 28: Les bases de données TP n°1

4. Les fonctions de regroupement

Les fonctions de calcul peuvent porter sur des sous-ensembles d’enregistrements groupés selon un critère

au lieu de porter, comme dans le paragraphe précédent, sur tous les enregistrements d’une table. Le logiciel

recherche dans un champ que choisit l’utilisateur toutes les valeurs qui sont différentes les unes des autres ;

pour chacune de ces valeurs, l’application crée un sous-ensemble des enregistrements possédant cette valeur

unique ; il existe donc autant de sous-ensembles que de valeurs uniques ; sur chacune de ces sous-ensembles,

Access exécute enfin un calcul à un champ choisi par l’utilisateur.

Les opérations disponibles sont décrites dans le document en annexe.

4.1. Le regroupement selon les valeurs uniques d’un seul champ

Vous devez créer une requête qui permet d’afficher le total des montants TTC dû par chaque client.

a) Créez une nouvelle requête basée sur la requête CalculTTC.

b) Insérez les champs CodeClient et MontantTTC en première ligne de la grille de création.

c) Cliquez sur le bouton Opérations de la barre d’outils pour faire apparaître la ligne des opérations.

d) Dans la ligne Opération, sélectionner l’opération Regroupement pour le champ CodeClient. Pour le champ

calculé MontantTTC, sélectionner la fonction Somme.

Le logiciel recherchera les valeurs uniques du champ CodeClient, regroupera les enregistrements ayant la

même valeur dans le champ CodeClient, puis fera pour chaque groupe la somme des valeurs du champ

calculé MontantTTC.

e) Testez la requête. L’enregistrer sous le nom Total des montants par client.

f) Modifiez la propriété du deuxième champ de la requête pour faire afficher la légende suivante : « Total des

commandes par client ».

Page 29: Les bases de données TP n°1

4.2. Le regroupement selon les valeurs uniques de plusieurs champs

Il est possible d’obtenir le même résultat en regroupant les factures selon le nom puis pour chaque valeur

identique du nom selon le prénom du client. Le résultat est plus facile à lire.

a) Créez une nouvelle requête basée sur la requête CalculTTC.

b) Insérez les champs NomClient, PrenomClient et MontantTTC en première ligne de la grille de création.

c) Dans la ligne Opération, sélectionner l’opération de Regroupement pour les deux premiers champs

et la fonction Somme pour le dernier.

d) Demandez le tri par ordre alphabétique des noms, puis des prénoms.

e) Testez la requête. L’enregistrer sous le nom Total des montants par client 2.

4.3. Les limites des sous-ensembles de regroupements

Attention : La multiplicité des critères de regroupement peut entraîner des résultats contraires `a ceux esp´er´es.

En effet, le regroupement des informations se fait d’abord à partir du premier champ auquel est appliquée

l’opération de regroupement. Puis, chaque groupe est scindé selon le critère du deuxième champ et ainsi de suite.

La multiplicité des sous-groupes peut aboutir `a l’absence, de fait, de regroupements.

a) Créez une nouvelle requête basée sur la requête CalculTTC.

b) Insérez les champs DateVente, NomClient, PrenomClient et MontantTTC.

c) Sélectionnez l’opération de Regroupement pour les trois premiers champs et la fonction Somme pour le

dernier.

d) Nommez la requête Trop c’est trop et testez-la. Vous constatez que le logiciel édite les mêmes valeurs que

celles de la requête CalculTTC. En effet, du fait du nombre trop important de critères retenus, il n’y a aucun

enregistrement qui ne puisse être sommé à un autre.

4.4. La combinaison de regroupements et de critères de sélection

4.4.1. Regroupement selon les valeurs uniques d’un champ et selon un critère pour ne retenir que

certaines de ces valeurs

La requête suivante a pour objet d’éditer le montant quotidien des commandes effectuées depuis 4 jours.

a) Créez une requête à partir de la requête CalculTTC.

b) La requête est fondée sur le champ DateVente auquel on applique l’opération de Regroupement et le

champ MontantTTC auquel on applique la fonction Somme.

c) Sur le champ DateVente, insérez le critère >=Date()-3.

Page 30: Les bases de données TP n°1

d) Enregistrez la requête et la nommer Chiffre d’affaires quotidien sur 3 jours. Vous devez obtenir un résultat

conforme à ce qui suit, aux dates de vente près :

4.4.2. Regroupement selon les valeurs uniques d’un champ et selon un critère pour ne retenir qu’une

de ces valeurs

La requête suivante emploie d’une part le calcul par regroupement pour obtenir la somme des ventes réalisées

chaque jour et d’autre part la recherche sur critère pour ne faire apparaître que la somme des commandes passées

un jour déterminé.

a) Créez une requête à partir de la requête CalculTTC

b) La requête est fondée sur le champ DateVente auquel on applique le critère de Regroupement et le champ

MontantTTC auquel on applique la fonction Somme.

c) Insérez le critère paramétré «[Entrer une date : ] » sur le champ DateVente de manière à ce que

ne soit affiché que le résultat du jour choisi par l’utilisateur.

d) Enregistrez la requête et nommez-la Total des montants perçus par jour.

4.4.3. Combinaison d’un regroupement selon les valeurs uniques d’un champ et d’un critère

portant sur le résultat du calcul

La requête suivante a pour objet d’éditer les chiffres d’affaires quotidiens supérieurs à 4000 euros.

a) Créez une requête à partir de la requête CalculTTC.

b) La requête est fondée sur le champ DateVente auquel on applique le critère de Regroupement et le champ

MontantTTC auquel on applique la fonction Somme.

c) Dans le champ MontantTTC, insérez le critère de sélection.

Page 31: Les bases de données TP n°1

d) Enregistrez la requête et nommez-la Chiffres d’affaires supérieurs à 4000.

4.4.4. Combinaison d’un regroupement selon les valeurs uniques d’un champ et d’un critère

portant sur un champ autre que celui du résultat et du regroupement

La requête a pour objet d’éditer le chiffre d’affaires journalier effectué avec les personnes qui portent le nom de

Bouslimi. Le critère de sélection ne porte pas sur un des champs nécessaires au calcul.

a) Créez une requête à partir de la requête CalculTTC.

b) La requête est fondée sur le champ DateVente auquel on applique le critère de Regroupement, le champ

NomClient auquel on applique l’opération Où et le champ MontantTTC auquel on applique la fonction

Somme.

c) Dans le champ NomClient, insérez le critère de sélection.

d) Enregistrez la requête et la nommer Bouslimi. Vous devez obtenir un résultat conforme à ce qui suit, aux

dates de vente près :

Page 32: Les bases de données TP n°1

5. Exercices complémentaires

5.1. Le montant le plus élevé par date

Créez une requête permettant d’afficher la plus élevée des lignes de facture faites chaque jour. Enregistrez

la requête sous le nom Montant maximal par date.

5.2. Liste de toutes les commandes effectuées depuis moins de 5 jours

Nous allons vérifier dans cette requête qu’un critère peut être mémorisé sous la forme d’un champ calcul´e de

type booléen. Créez une nouvelle requête CalculDate. Déplacez le champ astérisque de la requête CalculTTC vers

la grille de création de requête.

Entrez dans le champ suivant l’expression Calcul : [DateVente]>Date()-6.

Calcul est un champ calcul´e de type booléen. Calcul prend la valeur Vrai si la date de vente est supérieure à la

date d’aujourd’hui moins 6 jours. Pour ne retenir que les dates de vente comprises dans les cinq jours précédents

aujourd’hui, il faut imposer la valeur logique Vrai dans la propriété Critères du champ Calcul.

Ne pas afficher ce champ lors de la présentation du résultat de la requête.

5.3. Statistiques sur les commandes faites par chaque personne dont le code commence par R

Editez le chiffre d’affaire total, le chiffre d’affaire moyen, le nombre d’articles total et le nombre de commande

de chacune des personnes dont le code client commence par R. Nommez cette requête Statistiques Code R.

5.4. Statistiques sur l’ensemble des personnes dont le code commence par R

Editez le chiffre d’affaire total, le chiffre d’affaire moyen, le nombre d’articles total et le nombre de commande

de l’ensemble des personnes dont le code client commence par R. Nommez cette requête Statistiques R.

5.5. Ristourne

L’entreprise décide d’offrir un chèque d’un montant de 10% du chiffre d’affaire fait avec chaque client qui a

achet´e pour plus de 1000 dinars. Construisez la requête qui édite le nom, le prénom, le montant total du chiffre

d’affaire et le montant de la ristourne pour les seuls clients qui bénéficient de la ristourne.

Nommez cette requête Ristourne.

Page 33: Les bases de données TP n°1

TP n°7

(Formulaire et État)

L’objectif de cette séance est de montrer l’utilisation des formulaires sous Access.

1. Base de données

Nous utilisons dans cette séance la base de données Salarie. La base salarie.mdb se trouve dans le bureau

de windows.

Lancez ACCESS et ouvrez la base de données salarie.mdb.

2. Les formulaires

Un formulaire est une grille de présentation, de saisie et de modification des données d’une base sans avoir

à manipuler les tables directement. Un formulaire est obtenu à partir d’une table ou d’une requête. Sous Access, il

existe deux façons pour créer un formulaire : (1) à l’aide de l’assistant ou (2) manuellement.

2.1. Créer un formulaire à l’aide de l’assistant

L’assistant permet de guider l’utilisateur pendant toute la phase de création du formulaire. Pour créer un

formulaire `a l’aide de l’assistant, suivez les étapes suivantes :

1. Cliquez sur le bouton Formulaires ;

2. Choisir l’option Créer un formulaire à l’aide de l’assistant ;

3. Dans la liste des Tables/Requêtes choisissez la table Personnel ;

4. Dans la liste des champs disponibles, faîtes déplacer les champs vers la zone Champs sélectionnés à

l’aide des boutons ou ;

Page 34: Les bases de données TP n°1

5. Cliquez sur le bouton suivant, choisissez le format d’affichage de votre formulaire à colonne simple

;

6. Cliquez sur le bouton suivant et choisissez le style d’affichage de votre formulaire, sélectionnez l’option

Expédition ;

7. Cliquez sur suivant et nommez le formulaire F liste personnel, appuyez sur le bouton Terminer. Le

résultat de cette manipulation est un formulaire d’affichage qui contient tous les champs de la table

sélectionnée.

Page 35: Les bases de données TP n°1

Remarquez que Access a ajouté des boutons de navigation en bas du formulaire servant à la navigation

dans la base de données. Cette barre est illustrée dans la figure ci-dessous.

Attention : Le formulaire obtenu permet l’insertion de nouveaux enregistrements dans la table Personnel. Pour

cela, cliquez sur le bouton Ajouter un enregistrement et remplissez les champs du formulaire. La saisie directe

d’un enregistrement sans l’utilisation du bouton Ajouter un enregistrement provoque la modification du contenu

des champs de l’enregistrement en cours.

2.2. Création d’un formulaire pour le résultat d’une requête

1. Créez une nouvelle requête qui permet d’afficher la liste des employés qui résident dans une rue. Pour

cela, insérez l’expression *rue* dans le critère du champ adresse ; nommez la requête Rue.

2. Créez un formulaire, à l’aide de l’assistant, permettant de visualiser le contenu de la requête Rue.

Nommez le formulaire F_rue. Ajoutez en utilisant le formulaire l’enregistrement suivant :

3. Vérifiez

données

requête Rue et de la table Personnel. Remarques !

les

de la

2.3. Création manuelle d’un formulaire

Pour créer un formulaire manuellement, Access met à votre disposition une “boîte à outils” comme sur la figure

suivante :

3801 09-dec-83 Jendoubi Amel 98 rue des roses Jendouba 8100 20-mars-65

Page 36: Les bases de données TP n°1

Commencez par sélectionner l’option Créer un formulaire en mode création afin d’avoir la possibilité de le créer

manuellement. La boîte `a outils s’affiche automatiquement ; si ce n’est pas le cas, cliquez sur le bouton . La

première opération à faire dans ce cas est d’associer au formulaire une source de données.

1. Sélectionnez le formulaire (la zone grisée et non pas celle avec des rectangles !) et allez dans le menu

Affichage/Propriétés ou cliquez sur le bouton dans la barre d’outils.

2. Sélectionnez l’onglet Toutes pour voir toutes les propriétés du formulaire.

3. Choisissez la table Personnel comme source de données.

4. Choisissez comme Légende du formulaire F_Liste_Personnel_bis.

Une fois la table sélectionnée, ses champs apparaissent et il suffit de glisser/déplacer les champs sur le

formulaire pour l’instancier. Reproduisez alors manuellement le formulaire automatique, obtenu

précédemment, et enregistrez le sous le nom de F_Liste_Personnel_bis.

Page 37: Les bases de données TP n°1

Maintenant que vous vous êtes familiarisé avec les composants, reproduisez avec des boutons la barre

de déplacement qu’offre Access à la création d’un formulaire. Utilisez pour cela le composant

“Boutons de commande” de la boîte à outils.

5. Verrouillez le champ N˚ employé afin qu’il ne puise pas être modifié par le formulaire. Pour cela,

sélectionnez le champ, allez dans propriétés (cliquez sur le bouton ou Affichage >

propriétés) puis l’onglet Données. Mettez la valeur du champ Verrouillé à Oui.

6. Ajoutez au formulaire, `a l’aide des boutons de la boîte à outils, un bouton qui permet de fermer le

formulaire.

Remarques : On peut aussi créer un formulaire instantané à partir d’une table ou d’une requête.

Pour cela, sélectionnez la table ou la requête et cliquez sur le bouton nouvel objet : formulaire automatique.

3. Les états

Les formulaires permettent d’afficher les données à l’écran, de naviguer dans une base de données et de modifier

ou d’ajouter des données dans des tables. Une autre fonction importante est l’´edition des états. Un état permet de

mettre en forme le contenu d’une base de données pour des fins d’impression.

Nous allons illustrer l’utilisation des états dans ce qui suit.

1. Créez un Etat à l’aide de l’assistant, reprendre les informations de la table Personnel.

2. Dans la fenêtre Etats, choisissez Créer un état à l’aide de l’assistant, glissez l’ensemble des champs

de la table Personnel dans la fenêtre “Champs sélectionnés” (bouton ).

Page 38: Les bases de données TP n°1

3. Choisissez ensuite la disposition des données et le mode de présentation.

4. Choisissez un affichage Tabulaire et nommez votre Etat E_Liste_Personnel.

Page 39: Les bases de données TP n°1

Vous obtenez alors un état contenant toutes les informations du personnel et prêt à l’impression.

La présentation de l’état peut être modifiée en passant en mode création (position des contrôles,

étiquettes, formules, etc.).

Page 40: Les bases de données TP n°1

4. Exercices complémentaires

1. Créez un formulaire qui retourne les informations d’une personne saisie au clavier.

2. Créez une requête permettant de calculer le salaire de chaque membre du personnel.

Sachant que le salaire de base de chaque employé est de 1000 euros, ce salaire est augmenté par le produit

du nombre d’année d’expérience et de 10% du salaire de base. Nommez la requête P_Salaire.

Fonctions utiles : Pour calculer l’arrondi d’un réel, Access dispose de la fonction ENT(réel).

Remarque : Access exprime la différence entre deux dates par le nombre de jours.

3. A partir de la requête P_Salaire, créez un état éditant les fiches de paye des employés.

Page 41: Les bases de données TP n°1
Page 42: Les bases de données TP n°1