• Aucun résultat trouvé

[PDF] Initiation aux Systèmes de gestion de bases de données SGBD | Cours informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Initiation aux Systèmes de gestion de bases de données SGBD | Cours informatique"

Copied!
45
0
0

Texte intégral

(1)

Y.DHIBA -FDM- 1

Economie et Gestion

M. DHIBA YOUSSEF

COURS bases de donnes de gestion

- licence fondamentale

- licences professionnelles

(2)

Y.DHIBA -FDM- 2

SOMMAIRE

1. Base de données : Notions de base………..3

1.1 Définition………..………..3

1.2 Types de données……….…..3

1.3 Notions : Tables, Champs et Enregistrement……….……..4

1.4 Notion de clé Primaire et règles de gestion………....5

1.5 Systèmes de Gestion de Bases de Données………..………..6

2 Gestion de bases de données………..………..7

2.1 Gestion d’une BD……….………...7

2.2 Relation entre tables……….………..12

3 Les requêtes : Extraire des informations d’une BD……….16

3.1 Définitions et Types de requêtes………..16

3.2 Requête de sélection……….………..16

3.3 Requête analyse croisée………..………..23

3.4 Requête de mise à jour……….………..24

3.5 Requête de suppression………..………..25

4 Formuler les requêtes en SQL………..………..30

(3)

Y.DHIBA -FDM- 3

1. Base de données : Notions de bases

1.1 Définition d’une base de données

Une base de données (BD) est un ensemble de données structurées, organisées et stockées dans des entités logiques appelées « Tables ». Chaque donnée est caractérisée par un type de données.

Chaque système d’information d’une entreprise repose sur une ou plusieurs BDs pour la gestion des données concernant, par exemple, les clients, les commandes, les produits, les stocks, le personnel, les salariés, les ventes …etc.

1.2 Types de données

Dans une BD, chaque donnée est caractérisée par un type de données permettant de spécifier la nature des valeurs que peut prendre cette donnée. Les types standards de données sont:

- Texte: Concerne les valeurs alphanumériques (Suite de caractères ou de caractères et de chiffres).

- Numérique: Concerne les valeurs numériques (entiers ou réels …etc.).

- Date et heure: Concerne les valeurs de type date (Date d’une commande, date de livraison, date d’embauche, date d’inscription…..etc.) ou les valeurs concernant les heures (heure de départ, heure d’arrivée, heure d’une transaction….).

- Monétaire: Concerne les valeurs numériques contenant des symboles des unités monétaires comme $, €, £, DH….etc. Tous les traitements de calcul qu’on peut faire sur les données numériques sont valables pour les données monétaires.

- Oui/Non : Concerne les données qui ne peuvent avoir que deux valeurs possibles (oui ou non; vrai ou faux…).

- Objet Multimédia ou Objet OLE: concerne les données qui peuvent être des images, des sons, des vidéos ou des fichiers….

1.3 Notions: Tables, Champs et Enregistrements.

- Une Table est une structure qui regroupe un ensemble de données faisant référence à une entité logique (client, produit, fournisseurs…etc.). Elle porte un nom et elle est composée d’un ensemble de colonnes et de lignes.

(4)

Y.DHIBA -FDM- 4

- Champ d’une table: Un champ décrit une donnée d’une table et correspond à une colonne de la table. Il porte un nom et il est caractérisé par un type de données. Chaque colonne d’une table est réservée pour un et un seul champ et porte le nom de ce champ.

- Enregistrement d’une table: Un enregistrement correspond à une ligne d’une table et il est constitué par une suite de valeur de chaque champ de la table. Un enregistrement donne une valeur réelle de l’entité décrite par la table.

Une BD peut être composée d’une ou plusieurs tables. Chaque table a la structure suivante :

Fig 1 : structure d’une Table

(5)

Y.DHIBA -FDM- 5 Fig 2 : Exemple de table d’une BD

1.4 Notion: Clé Primaire d’une table.

- Une clé primaire ou principale d’une table est un ou plusieurs champs de cette table permettant d’identifier d’une manière unique les différents enregistrements de cette

table. Chaque table d’une BD doit avoir une clé primaire.

- Conséquence: une clé ne peut pas avoir une valeur vide (Null) et sa valeur ne peut

pas se répéter dans la même table.

- Exemple –cas d’une table pour gérer les clients-:

Table_Clients( N° Client, Nom, Prénom, Adresse, Ville)

(6)

Y.DHIBA -FDM- 6 Le choix d’une clé primaire dépend des règles de gestion du cas étudié.

Exemple: Dans une base de données de gestion des stocks, on dispose d’une table dont la

structure est:

Table_Marchandise(Code_marchandise, Volume, Poids, N°entrepôt)

- Question: Déterminer la clé primaire de cette table, sachant les règles de gestion suivantes:

- Une marchandise est caractérisé par un et un seul code;

- Une marchandise peut être stocker dans un ou plusieurs entrepôts.

- Solution: La clé primaire est (Code_marchandise, N°entrepôt) et la table devrait s’écrire comme:

Table_Marchandise(Code_marchandise, N°entrepôt, Volume, Poids)

1.5 Système de Gestion de Bases de Données.

Définition : Un SGBD est un logiciel offrant un ensemble d’objets permettant la création et

la gestion des BDs. Il existe plusieurs SGBD sur le marché qui permettent la création des petites, moyennes ou grandes BDS tels que Access, Oracle ou SQL Serveur….etc.

(7)

Y.DHIBA -FDM- 7 2. Gestion de bases de données sous Access.

2.1 Création d’une base de données.

- Access est un SGBD pour la gestion de petites et moyennes BDs. Chaque BD porte un nom et l’extension « .mdb ».

- Etapes pour créer une BD:

1) Lancer l’environnement Access;

2) Cliquer sur le bouton de menu est choisir l’option « Nouveau »;

3) Donner un nom à la BD et choisir l’emplacement de stockage de la BD ; 4) Cliquer sur « Créer » pour la création de la BD.

(8)

Y.DHIBA -FDM- 8 A) Création d’une Table: Pour créer une table dans une BD:

-- Ouvrir la BD;

-- Afficher la liste des « Objets Access » et cliquer sur l’objet « Tables »;

--Dans la barre de menu, cliquer sur « Créer » puis sur l’élément « Création de

Table » ;

Exemple: Dans la BD « gestion des clients et commandes », créer la table suivante:

(9)

Y.DHIBA -FDM- 9

-- Ouvrir la table « T_clients » en mode création et ajouter un nouveau champ « Adresse»;

Remarque sur le type « NumAuto »: Le type de données « NumAuto » est un type

numérique dont les valeurs sont attribuées et gérées par le SGBD. La première valeur est 1, la deuxième est 2 ….etc.

Exemple: Dans la table « T_Clients», modifier le type de données du champ « N°Client »

pour qu’il devient « NumAuto ». Ouvrir la table en mode affichage, des enregistrements et vérifier les valeurs attribués par le SGBD à ce champ. Supprimer un enregistrement et ajouter un nouvel enregistrement. Que remarquez-vous?

B) Quelques propriétés d’un champ:

-- Taille: Permet de limiter le nombre de caractères pour un champ texte.

-- Valeur par défaut: permet de spécifier une valeur que va attribuer le SGBD à un

champ

-- Null interdit: Cette propriété peut avoir deux valeurs: oui (cad le champ accepte

une valeur

vide) ou non (cad le champ n’accepte pas une valeur vide).

-- Masque de saisie: Permet de spécifier une manière contrôlée pour saisir les valeurs

d’un

champ ( Cas du Tél: (##) ## / ## / ## / ## ).

-- Dans la table « T_Clients », limiter le nombre de caractères à 15 pour les champs « Nom »,

« Prénom » et à 25 pour le champ « Adresse ». Définir la valeur « Rabat » comme valeur par défaut pour le champ « Ville ». Choisir les champs pour lesquels Null interdit est non. Définir un masque de saisi pour le champ « Tél ».

-- Propriété: Liste de choix: Permet d’affecter une liste de valeurs à un champ donné. Par

exemple, dans la table « T_Clients, on peut affecter une liste de valeur pour le champ « ville » de la façon suivante:

(10)

Y.DHIBA -FDM- 10 C) Ajout et modification des enregistrements

-- Ouvrir la table en mode création et: Définir un masque de saisi pour le champ tél; Choisir les champs pour lesquels la propriété « Null interdit » doit avoir la valeur « Non »; Définir la propriété « Taille » pour les champs Nom, Prénom et adresse; définir la valeur « Rabat » pour la propriété « Valeur par défaut » du champ « Ville ».

-- Passer en mode « Affichage » et Créer les enregistrements suivants:

Exercice 1:

Dans la base de données « gestion des clients et commandes », créer la ou les tables permettant de gérer les commandes des clients sur les différents produits sachant que: -- Une commande est caractérisé par un numéro de commande et la date de la commande;

(11)

Y.DHIBA -FDM- 11

-- Une commande est faite par un et un seul client; -- une commande porte sur un ou plusieurs produits;

-- Un client peut faire une ou plusieurs commandes mais à des dates différentes; -- Un produit peut être commandé plusieurs fois et par plusieurs clients.

Solution:

Dans la base de données « gestion des clients et commandes », pour gérer les commandes des clients sur les différents produits selon les règles proposées, on doit créer les deux tables suivantes :

Remarque: Utilisation de la propriété « Liste de choix » pour avoir des informations provenant d’une autre table

Dans la table « T_commandes », on aimerait faciliter la saisie du champ « Num_Client » en fournissant des informations sur ce champ à partir de la table « Clients » de la manière suivante:

(12)

Y.DHIBA -FDM- 12 Pour réaliser l’exemple précédent:

-- Ouvrir la table « Commandes » en mode création;

-- Sélectionner le champ « Num_Client », cliquer sur la propriété « liste de choix » et procéder de la façon suivante:

2.2 Relation entre tables et Intégrité référentielle

Une relation entre deux tables d’une BD permet d’exprimer le lien logique qui existe entre ces tables. L’application de l’intégrité référentielle, permet au SGBD de faire tous les contrôles nécessaires pour que le lien logique soit respecté au moment de l’exploitation des tables.

(13)

Y.DHIBA -FDM- 13 Exemple des incohérences dues au manque de relations entre tables :

Pour établir une relation entre deux tables :

Dans le cas de la BD « gestion des clients et commandes », pour établir une relation entre les deux tables « Clients » et « Commandes » ayant en commun le champ « N° Client » :

-- fermer toutes les tables et dans la barre de menu cliquer sur « Outils de base de données »;

-- Cliquer sur l’élément « relations »

-- Un espace « relations » sera affiché, cliquer ensuite sur l’élément « Afficher la table » -- Ajouter les deux tables « Clients » et « Commandes »;

-- Glisser le champ « N° Clt » de la table « Clients » jusqu’au champ « N° Client » de la table « Commandes »;

-- Une fenêtre « Modifier les relations » apparait, cocher alors la case « Appliquer l’intégrité référentielle »;

-- Enfin, cliquer sur le bouton « Créer » pour obtenir la relation suivante :  Cas d’une relation Père/Fils

(14)

Y.DHIBA -FDM- 14

 Signification de cette relation:

-- Le « 1 » signifie qu’une commande correspond à un et un seul client. Le SGBD va refuser de créer une commande avec un « N° Client » qui n’existe pas dans la table « T_Clients »;

-- L’ « ∞ » signifie qu’un client peut faire une ou plusieurs commandes. Le SGBD va refuser de supprimer un client ayant encore des commandes.

Remarque: Une relation entre deux tables suppose qu’il y a un champ en commun entre

ces tables et dont le nom peut être différent dans les deux tables mais qui doit avoir le même type de données dans ces tables.

Exercice: Dans la base de données « gestion clients commandes », créer les relations

possibles entres les différentes tables. Expliquer la signification des deux relations suivantes:

Exercice: On veut gérer les approvisionnements et les entrées en stocks des différents

produits fournis par les fournisseurs d’une société. Pour cela :

(15)

Y.DHIBA -FDM- 15

2) Créer les trois tables suivantes:

-- T_Stock (Référence, Désignation, Qte_Stock); -- T_Fournisseurs(N°Fournisseur, Nom, Ville, tél)

-- T_Approvisionnements( Référence, N°Fournisseur, Date, Qte_Livrée, PU). Sachant que:

-- Un produit en stock est identifié par sa référence qui est de type Texte;

-- Un fournisseur est identifié par son N°Fournisseur qui est de type numérique et qui peut être attribué par le SGBD;

-- Un produit peut être livré par un ou plusieurs fournisseurs; Un fournisseur peut livrer un ou plusieurs et peut livrer le même produit mais à des dates différentes (la date est limitée au JJ-Mois-Année).

3) Appliquer la propriété « Liste de choix » pour les champs de la table « T-Approvisionnements» qui ont en besoin.

Définir les relations entre les tables et donner la signification de chacune de ces relations.

(16)

Y.DHIBA -FDM- 16 3. Les requêtes : Extraire des informations d’une BD

3.1 Définition et types de requêtes

A) Définition: Une requête est une interrogation ou consultation de la BD pour extraire des

informations selon différents points de vue ou pour la mise à jour des données ou la mise à jour de la structure de la BD.

-- En générale, le langage utilisé pour formuler les requêtes est le langage SQL (Structured Querry Language). Access propose, en plus de ce langage, un mode appelé mode « QBE (Querry By Example) » pour faciliter l’expression des requêtes. Une fois la requête est exprimé dans ce mode, Access se charge de la traduire en SQL avant de l’exécuter.

B) Type de requêtes: On distingue principalement les types de requêtes suivantes:

- Requête de sélection: Permet de sélectionner des enregistrements à partir d’une ou plusieurs tables d’une BD avec la possibilité d’exprimer des critères ou de faires des traitements de calcul.

- Requête de mise à jour: Permet de modifier les valeurs de certains champs. - Requête de suppression: Permet de supprimer des enregistrements selon des

critères.

- Requête d’analyse croisée: Favorise l’analyse de données en permettant de transformer le résultat d’une requête de sélection en un jeu de deux valeurs

3.2 Requête de sélection:

- Création d’une requête de sélection Pour créer une requête de sélection: -- Fermer toutes les tables ouvertes de la BD;

-- Sélectionner l’objet « Requêtes » dans la liste « Tous les objets Access » et cliquer sur « Créer » dans la barre de menu;

-- Cliquer sur l’élément « Création de requête »:

C) Requête de sélection:

 Création d’une requête de sélection Pour créer une requête de sélection:

(17)

Y.DHIBA -FDM- 17

-- Fermer toutes les tables ouvertes de la BD;

-- Sélectionner l’objet « Requêtes » dans la liste « Tous les objets Access » et cliquer sur « Créer » dans la barre de menu;

-- Cliquer sur l’élément « Création de requête »:

-- Ajouter, à partir de la fenêtre « Afficher la table », la ou les tables concernées par la requête; -- On obtient ensuite l’interface suivante:

Structure d’une requête de sélection:

Remarque : -- Une fois la requête est créée, on peut l’enregistrer sous un nom significatif;

-- A chaque fois qu’une requête est exécutée elle consulte l’état courant de la BD tenant compte de toutes les mises à jour.

(18)

Y.DHIBA -FDM- 18 Exemple 1: Dans la BD « gestion clients et commandes », on veut créer une requête

permettant d’afficher le n°, le nom, le prénom et la ville des clients dont le nom commence par « S » et qui sont de casa ou Rabat. Le résultat doit être trié par ville :

Principe: Les critères qui sont sur une même sont automatiquement liés par l’opérateur

« Et » et ceux qui sont placés sur deux lignes différentes sont liés par l’opérateur « Ou ».

Requête de sélection avec des critères:

L’exemple 1 peut aussi être formulé de la façon suivante:

Critères sur les données de type « Texte »:

Le symbole « * » remplace une suite de caractères et le symbole « ? » remplace un seul caractère.

(19)

Y.DHIBA -FDM- 19 Exemple 2: Dans la BD « gestion clients et commandes », on veut sélectionner le n°, le nom,

le prénom des clients dont le nom ne commence ni par « S » ni par « M » et qui sont de casa, Marrakech, Kenitra ou Rabat:

Exemple 3: Dans la BD « gestion clients et commandes », on veut sélectionner le n°, le nom,

le prénom des clients qui ne sont pas de « Rabat» et ayant fait des commandes entre le « 01/09/2010 » et le « 30/09/10»:

Requête de sélection paramétrée:

Exemple: Dans la BD « gestion clients et commandes », on veut sélectionner les clients dont

la ville est un paramètre (variable) qui sera déterminé au moment de l’exécution de la requête:

(20)

Y.DHIBA -FDM- 20 Exercice: Dans la BD « Gestion clients commandes », Créer les requêtes suivantes:

1) Afficher les produits non disponibles en stock et qui sont commandés avec une quantité supérieur à 10.

2) Afficher les clients de « Casa » ou « Rabat » ayant passé des commandes entre deux dates données comme paramètres;

3) Afficher les produits disponibles en stock dont le PU est soit entre 100 et 300 soit entre 500 et 1000; et qui ont été commandés au cours de l’année 2009.

4) Afficher les clients dont la ville est un paramètre et ayant passé des commandes contenant le produit R1 ou R2 ou R4 ou R5 au cours du mois de janvier 2010.

5) Afficher les commandes d’un client dont le nom et le prénom sont des paramètres. 6) Afficher les commandes faites au cours des 45 derniers jours!.

Requête de sélection avec les fonctions de traitement des dates: Quelques fonctions de traitement des dates:

(21)

Y.DHIBA -FDM- 21 Remarque: Le premier paramètre de la fonction « Diffdate» peut avoir les valeurs suivantes:

aaaa (différence en nombre d’années); t (trimestre); ww (semaine); m (mois); h (heure); n (minute); s (seconde).

Exemple1: Dans la BD « gestion clients et commandes », on veut sélectionner les clients

ayant passé des commandes aujourd’hui :

Exemple2: Dans la BD « gestion clients et commandes », on veut sélectionner les clients

ayant passé des commandes au cours du premier trimestre de l’année 2010:

Exemple3: Dans la BD « gestion clients et commandes », on veut sélectionner les

commandes faites le lundi ou le Mardi ou le Jeudi du premier semestre de l’année 2010 (afficher les mois en lettres alphabétiques):

Exemple4: Dans la BD « gestion clients et commandes », on veut sélectionner les produits

commandés au cours des derniers 60 Jours avec une quantité par commande inférieure à 100:

(22)

Y.DHIBA -FDM- 22 Requête de sélection avec les fonctions de calcul:

- Il s’agit d’introduire dans une requête des fonctions de calcul telles que: somme, moyenne, min, max …etc. Ou des fonctions réservées au BD telles que: compte et regroupement. - Pour introduire des fonctions de calcul dans une requête en mode création, il suffit de cliquer sur l’élément:

Une ligne « opération » sera alors ajoutée dans la structure de la requête.

Exemple1: la fonction compte: Dans la BD « gestion clients et commandes », on veut

compter le nombre total de clients:

Exemple2: la fonction regroupement: Dans la BD « gestion clients et commandes », on veut

compter le nombre de clients par ville:

Remarque : La fonction « regroupement » permet de factoriser un traitement effectué sur

un champ en fonction de chaque valeur d’un autre champ. Dans l’exemple 2, la fonction « regroupement » permet de factoriser l’opération « compte » effectuée sur le champ « N° Client » en fonction de chaque valeur du champ « Ville ».

(23)

Y.DHIBA -FDM- 23 Exemple3: Dans la BD « gestion clients et commandes », on veut afficher pour chaque

produit: la référence, la désignation, la quantité moyenne, la qté minimale, la quantité maximale, la quantité totale. On s’intéresse aux quantités commandées par ville.

3.3 Requête analyse croisée:

Une requête Analyse croisée permet de calculer et de restructurer des données afin d'en faciliter l'analyse. Elle permet d’effectuer des calculs (somme, moyenne, compte etc.) pour des données regroupées en lignes ou en colonnes.

Exemple1: Dans la BD « gestion clients et commandes », Pour chaque ville, calculer la

quantité totale commandée, par les clients de cette ville, pour chaque produit. Chaque désignation d’un produit doit être affiché dans une seule colonne et chaque ville doit être placer dans une seule ligne :

- Créer une nouvelle requête en introduisant les tables : «Clients », « Commandes », « Lignes commandes » et produits.

- Dans la zone « type de requête », cliquez sur le bouton «Analyse Croisée»:

- Dans la ligne « Analyse » de la grille de la requête, choisir « en tête de ligne » pour le champ « Ville » et « en tête de colonne » pour le champ « Référence ». Tout champ défini en ligne ou en colonne doit avoir «Regroupement» dans la zone «Opération». Choisir « Valeur » pour le champ « Quantité » et définir l’opération somme pour ce champ dans la ligne « Opération »:

(24)

Y.DHIBA -FDM- 24 Exemple2: Dans la BD « gestion clients et commandes », on veut créer une requête analyse

croisée permettant d’afficher les quantités totales mensuelles commandées pour chaque produit au cours du premier semestre de l’année 2010. Les mois doivent être affichés en lettres alphabétiques et les produits doivent être affichés par leur désignation :

Avant d’exécuter cette requête et pour avoir les mois dans l’ordre chronologique, cliquer avec le bouton droit sur la deuxième colonne et puis sur « propriétés ». Ensuite, saisir les mois dans la propriété « En-têtes des colonnes » de la façon suivante:

3.4 Requête de mise à jour:

Une requête de mise à jour permet d’effectuer des modifications globales sur un ou plusieurs enregistrements dans une ou plusieurs tables. Ces modifications peuvent être conditionnées par un ou plusieurs critères.

- Création de requêtes de mise à jour :

- Créer une nouvelle requête en mode création et sélectionner la ou les tables contenant les champs concernés par la mise à jour.

(25)

Y.DHIBA -FDM- 25

- Dans la grille de la requête, placer les champs concernés par la mise à jour et

spécifier l’expression ou la valeur de mise à jour dans la cellule « mise à jour ». Placer aussi les champs concernés éventuellement par les critères.

- - Pour afficher la liste des enregistrements qui seront mis à jour, cliquez sur

Affichage dans la zone « Résultats ».

- - Pour réaliser la mise à jour sur les enregistrements, cliquez sur Exécuter dans la zone « Résultats ».

- Remarque: Une mise à jour une fois exécutée ne pourra pas être annulée.

Exemple 1: Dans la BD « gestion clients et commandes », on veut Augmenter de 20% le prix

unitaire pour chaque produit dont le PU actuel est compris entre 20 Dh et 260 Dh:

Exemple 2: Dans la BD « gestion clients et commandes », on veut doubler les quantités

commandées par les clients de « casa » ou « rabat » pour les commandes du mois de Février 2010.

3.5 Requête de suppression:

Une requête suppression permet de supprimer un ou plusieurs enregistrements d'une ou plusieurs tables. Une requête de suppression, supprime des enregistrements entiers, et non uniquement certains champs dans ces enregistrements.

- Créer une nouvelle requête en mode création et sélectionner la ou les tables contenant les champs concernés par la mise à jour.

(26)

Y.DHIBA -FDM- 26

- Dans la zone « type de requête », cliquer sur l’icône « suppression »:

- -Cliquer sur le symbole (*) dans la table à partir de laquelle la suppression sera réalisé. Si la suppression est conditionnée par des critères alors placer les champs de cette table ou des autres tables concernées par ces critères.

- Pour afficher la liste des enregistrements qui seront mis à jour, cliquez sur Affichage dans la zone « Résultats ».

- Pour réaliser la mise à jour sur les enregistrements, cliquez sur Exécuter dans la zone « Résultats ».

Exemple 1: Dans la BD « gestion clients et commandes », on veut supprimer le client

« SLIMANI Omar » sachant qu’il n’a pas de commandes:

Remarque: Pour autoriser la suppression des enregistrements annexes dans le cas d’une

.relation père/fils, il faut choisir dans la relation: l’option « Effacer en cascade les enregistrements correspondants »:

Exercice: Dans la BD « Gestion clients commandes », Créer les requêtes suivantes:

1) Pour chaque client, afficher la commande la plus récente et la commande la plus ancienne.

2) Afficher le nombre de commandes faites mensuellement au cours des deux dernières années. Les mois doivent être affichés en lettres. Formuler la même requête pour que le nombre des dernières années soit un paramètre.

(27)

Y.DHIBA -FDM- 27

3) Pour chaque client, afficher le nombre de commandes faites au cours d’une année donnée et au cours d’un mois dont le nom est un paramètre. (le nom et le prénom du client doivent être affichés dans une seule colonne).

4) Pour chaque commande, calculer le montant HT et le montant TTC avec taux de tva=20%. Formuler la même requête avec taux de tva variable.

5) Afficher les produits dont la dernière commande remonte à deux mois ou plus. 6) Pour chaque ville, afficher le nombre de commandes faites au cours des mois de

janvier, mars, juin et septembre d’une année donnée comme paramètre.

7) Créer une requête analyse croisée permettant d’afficher le nombre de commandes faites annuellement par client. Le numéro, le nom et le prénom d’un client doivent être placées dans une seule ligne.

8) Créer une requête mise à jour paramétrée permettant de modifier l’adresse ou le numéro de tél d’un client dont le nom et prénom sont des paramètres.

9) Réduire de 10% les prix unitaires des produits qui ont été commandés au moins une fois avec une quantité inférieure à 5 au cours de mois de janvier 2010.

10) Le client n°1 décide de supprimer de la commande n°1 deux produits dont les désignations sont : « Vidéo Projecteur » et « Caméra Sony ».

11) Supprimer les commandes du client n°3 faites au cours de mois de janvier 2010. 12) Créer une requête suppression paramétrée permettant de saisir le nom et prénom du client est de supprimer les commandes de ce client.

Etudes de cas

Etude de cas 1: Le schéma simplifié d’une base de données pour la gestion des commandes

(28)

Y.DHIBA -FDM- 28

Questions:

1) Que se passe t-il si on prend uniquement la « Référence » comme clé primaire de la

table « Détail_livraisons » ? Que se passe t-il si on prend uniquement « Num_livraison » comme clé de cette même table.

2) Donner la relation avec l’intégrité référentielle entre la table fournisseurs et

livraisons. Donner la signification et l’utilité de l’intégrité référentielle dans ce cas.

3) On suppose qu’on a établit les relations avec l’intégrité référentielle entre les

différentes tables. Parmi les enregistrements suivants lesquels seront rejetés par le SGBD et pourquoi ?

4) Formuler en mode QBE les requêtes suivantes:

A- Afficher le numéro et la date des livraisons faites au cours du dernier mois de

chaque trimestre d’une année donnée.

B- Pour chaque livraison, afficher le numéro, la date, le nombre de jours qui sont

passés depuis la création de la livraison et le montant. Limiter la sélection uniquement pour les livraisons dont la durée est supérieur à 100 jours et ayant un montant < 5000 DH ou les livraisons faites au cours des 100 derniers jours avec un montant supérieur 10000 DH.

(29)

Y.DHIBA -FDM- 29

C- Afficher, à l’aide d’une requête analyse croisée, les bénéfices mensuelles réalisés

pour chaque produit au cours du premier semestre des deux derniers années. La référence et la désignation des produits doivent être affichées dans une même colonne.

D- Effectuer une augmentation de prix de vente de 10% pour les produits dont la

quantité en stock est comprise entre 1 et 100 et qui ont été commandés au cours des mois de janvier, mai ou septembre de l’une des deux dernières années.

5) Comment faire pour avoir le ou les fournisseurs ayant réalisés le nombre maximum de livraison au cours d’une année donnée?

6) A travers le schéma de cette BD, peut –on connaitre les moments de pénurie de stock pour un produit donné?

7) Peut-on connaître les clients n’ayant pas passés de commandes au cours d’une période donnée?

Etude de cas 2: Les ventes des produits d’une entreprise sont gérées par une BD

« gestion_ventes » où Chaque vente est assurée par un et un seul représentant et concerne un seul client. Le schéma simplifié de cette BD est le suivant :

Questions:

1) Une vente peut-elle contenir deux ou plusieurs produits ? (Justifier la réponse). Que se passe t-il si on prend (N°vente, N°représentant) comme clé de la table ventes? Proposer une amélioration de cette BD pour qu’une vente puisse contenir plusieurs produits.

2) A partir des relations entre les tables, préciser les cas où une vente ne sera pas acceptée par le SGBD. Quels sont les champs de la table « vente » ayant besoin de la propriété « List de Choix ».

(30)

Y.DHIBA -FDM- 30

4) Formuler en mode QBE les requêtes suivantes:

A-Pour chaque produit, afficher le numéro, le nom et la quantité totale vendue au cours des lundi, mardi et mercredi du deuxième trimestre d’une année donnée comme paramètre.

B-Pour chaque représentant, afficher le numéro, le nom, l’âge et l’ancienneté. Limiter la recherche pour les représentants embauchés il y a plus que 20 ans.

C- Donner une requête permettant d’afficher pour chaque produit la quantité totale vendue quotidiennement au cours des 7 premiers jours du mois de janvier 2010. Limiter la recherche pour les produits dont le PU est entre 2089 et 6000 ou ceux dont la Qte totale dépasse 2000.

D- Donner une requête de mise à jour permettant de modifier le prix unitaire d’un produit dont le nom est un paramètre.

E- Donner une requête mise à jour permettant de faire une augmentation de 25% sur les salaires bruts des représentants dont l’ancienneté dépasse 7 ans ou dont l’âge est entre à 30 et 35 ans.

F-Donner une requête analyse croisée permettant d’afficher le chiffre d’affaire réalisée mensuellement par représentant et par catégorie de produit au cours du deuxième semestre des 5 dernières années. Les noms des mois doivent être affichés en colonne. G- Donner une requête analyse croisée permettant d’afficher la quantité moyenne commandée par produit et par ville au cours des deux dernières semaines. Placer les villes en ligne.

4. Langage de requêtes structuré SQL (Structured Querry Language)

SQL est un langage de requêtes structuré permettant la création et la gestion de bases de

(31)

Y.DHIBA -FDM- 31

1986. SQL est passé de plusieurs normes et est aujourd’hui considéré le langage standard des systèmes de gestion des bases de données relationnelles.

SQL est composé de plusieurs parties contenant chacune un ensemble de commandes appelées « Clauses »:

Dans ce cours, on s’intéresse à la partie de SQL permettant l’interrogation d’une BD (Requêtes avec Clause SELECT…).

A) Clause: Select … From… Syntaxe:

Exemples:(Cas de la BD « gestion commandes et livraisons)

1) Afficher tous les champs de la table Clients:

2) Afficher la référence, la désignation et le prix unitaire de chaque produit:

3) Afficher la liste des villes des clients:

B) Clauses « WHERE » et « ORDER By »: Pour exprimer respectivement des conditions sur

(32)

Y.DHIBA -FDM- 32 Exemples:(Cas de la BD « gestion commandes et livraisons »)

- Afficher tous les clients de la ville « Casa » ou « Rabat »:

- Afficher les clients dont le nom commence par « S » et qui ne sont pas de « Rabat ». Trier le résultat par ordre croissant sur ville:

- Afficher les commandes faites au cours de janvier 2012:

C) Clause « WHERE » et Jointures entre deux tables

Exemples:(Cas de la BD « gestion commandes et livraisons)

- Afficher les commandes faites par les clients de casa ou rabat:

(33)

Y.DHIBA -FDM- 33 D) Les fonctions de calcul: Count, Sum, Avg, Min et Max

Exemple: Afficher le nombre total de clients

E) Clause: « Group by » : Pour regrouper le résultat d’un calcul sur des champs en fonctions

d’autres champs.

Exemples:(Cas de la BD « gestion commandes et livraisons)

- Afficher le nombre de clients par ville:

- Afficher le nombre de commandes faites par client:

- Pour chaque produit commandé, afficher la quantité moyenne, la quantité minimale, la quantité maximale et la quantité totale commandée:

(34)

Y.DHIBA -FDM- 34

- Pour chaque commande, donner le MHT et MTTC sachant que Taux TVA=14%:

D) Clause « Having »: Permet d’exprimer des critères sur des champs calculés. Elle est

utilisée avec la clause « Group by ».

Exemples:

- Afficher les villes ayant mois que 3 Clients:

(35)

Y.DHIBA -FDM- 35 D) Fonctions traitement des date:.

Remarque: Le premier paramètre de la fonction « Diffdate» peut avoir les valeurs suivantes: yyyy (différence en nombre d’années); ww (semaine); m (mois); h (heure); n (minute); s (seconde).

Exemples :

Cas de la BD gestion des commandes et livraison dont le schéma relationnel est le suivant :

(36)

Y.DHIBA -FDM- 36

- Calculer et afficher le nombre de commandes faites par client au cours du mois courant:

- Afficher la liste des produits commandés au cours du mois précédent:

E) Requêtes imbriquées: Il s’agit d’introduire une deuxième requête à l’intérieure d’une

requête.

Exemples:

(37)

Y.DHIBA -FDM- 37

- Afficher le produit dont la quantité commandée est maximale:

5. Etudes de cas Etude de cas

Une entreprise dispose de plusieurs entrepôts pour stocker ses différents produits. La gestion des approvisionnements en produits (livrés par les fournisseurs) et les sorties des produits destinées aux clients, repose principalement sur une base de données dont le schéma simplifié est le suivant :

Questions:

1) A quoi sert une clé primaire et qu’est ce qu’une requête de sélection? Que se passe

t-il si on prend le couple (N°Sortie, N°Entrepôt) comme clé primaire de la table « Sortie » ?

(38)

Y.DHIBA -FDM- 38

si on n’établit pas de relation entre les deux tables « Entrepôt » et « Sortie » ?

3) Donner l’explication et l’utilité de la relation entre les deux tables « Produit » et

« Lignes_Approvisionnement».

4) Dites ce que permet de faire la requête suivante :

5) Formuler en mode QBE les requêtes suivantes :

A- Afficher les sorties effectuées un Lundi ou Mardi ou Vendredi du troisième trimestre de l’année en cours.

B- Afficher les produits qui ont été approvisionnés avec une quantité comprise entre 1000 et 2400 au cours des 15 premiers jours d’un mois et d’une année données comme paramètres

C- Pour chaque approvisionnement, afficher le numéro, la date et le nombre de mois qui se sont passés depuis la création de l’approvisionnement. Limiter la sélection uniquement pour les approvisionnements dont la durée dépasse trois mois et qui ne concernent pas les villes de « casa » et « rabat » ou les approvisionnements dont la durée ne dépasse pas un mois et qui ne concernent pas les produits dont la référence contienne les lettres « RS ».

D- Afficher les sorties effectués quotidiennement au cours de la première semaine du mois de Mars d’une année donnée comme paramètre. Les jours doivent

(39)

Y.DHIBA -FDM- 39

être affichés en lettres alphabétiques.

Etude de cas

Une compagnie aérienne dispose d’un système d’information pour gérer les billets des passagers et les différents vols qu’elle propose. Ce système d’information repose principalement sur une base de données dont le schéma simplifié est le suivant :

Questions:

1) Comment sont organisées les données dans une Base de données ? Citer six types de données disponibles dans les SGBD.

2) Un même billet peut-il contenir plusieurs vols ? (Justifier la réponse).

3) Peut-on associé le type « Texte» au champ « Prix_vol » de la table « Detail-Billets » ? 4) Donner l’explication et l’utilité de la relation entre les deux tables « Avions » et « Vols ». Que se passe t-il si on prend le couple (« N° Vol », « N° Avion ») comme clé de la table « Vols» ?

(40)

Y.DHIBA -FDM- 40

6) Formuler en mode QBE les requêtes suivantes

A- Pour chaque passager, afficher le numéro, le nom et le numéro de billet dont le nombre de vols est entre 2 et 5. Limiter la recherche pour les billets achetés au cours du troisième trimestre d’une année donnée comme paramètre.

B- Afficher les vols effectués dans les 15 premiers jours du mois de juin 2011 et dont la durée en nombre d’heures dépasse 10 heures ou dont la ville de départ est « Tanger » ou « Agadir ».

C- Donner une requête mise à jour permettant de réduire de 15% le prix d’un vol prévu pour un lundi ou mardi du mois de décembre 2011 et dont la ville d’arrivée est un paramètre.

D- Donner une requête analyse croisée permettant d’afficher par ville de départ et par nationalité, le nombre de vols réalisés mensuellement au cours du premier

(41)

Y.DHIBA -FDM- 41

semestre des trois dernières années. Les noms des mois doivent être affichés en colonne.

E- Donner une requête de suppression permettant de supprimer les vols à destination de « Damas » prévus pour la première semaine du mois de décembre 2011.

Etude de cas :

Une société dispose de plusieurs vendeurs qui sont des salariés chargés d’effectuer des visites aux clients pour leur vendre les différents produits qu’elle propose. Chaque visite, effectuée par un vendeur à un client, engage des frais de déplacement et de restauration. Pour gérer les visites et les frais, la société dispose d’un système d’information qui repose principalement sur une base de données dont le schéma simplifié est le suivant :

La table « T_Frais_Engagés » permet de stocker les frais de déplacement et de restauration engagés par les visites effectuées par un vendeur au cours d’une période d’une semaine. Dans la table « T_Périodes », on décrit une période (semaine) par un numéro, la date de début et la date de fin de la semaine.

(42)

Y.DHIBA -FDM- 42

1) Qu’est ce qu’une base de données et à quoi sert une requête d’analyse croisée ?

2) Que se passe t-il si on prend le couple (N°Visite, N°Client) comme clé de la table « T_Visites » ?

3) Donner l’explication et l’utilité de la relation entre les deux tables « T_Vendeurs » et « T_Frais_Engagés ».

4) Dites ce que permet de faire la requête suivante :

5) Formuler en mode QBE les requêtes suivantes :

A- Pour chaque vendeur, afficher le numéro, le nom, le prénom et le total des frais de déplacements engagés au cours d’une année donnée comme paramètre. Limiter la recherche pour les vendeurs dont l’ancienneté est supérieur à 10 ans.

B- Afficher le nombre de visites effectuées par vendeur un Lundi ou Mardi ou Vendredi du troisième trimestre de l’année en cours. Limier la recherche pour les visites ne concernant pas les clients de Casa et de Marrakech.

C- Donner une requête mise à jour permettant de réduire de 15% les frais de déplacement engagés au cours du mois d’août ou septembre d’une année donnée comme paramètre.

(43)

Y.DHIBA -FDM- 43

D- Donner une requête analyse croisée permettant d’afficher le total des frais de restauration engagés annuellement par vendeur. Limiter cette requête pour les cinq dernières années. Afficher, par ligne, le nom et prénom de chaque vendeur. Les années doivent être affichées en colonne.

L’établissement ELECTROMEN est chargé de la maintenance de matériels électroménagers de haut de gamme. Outre le directeur, le personnel se compose de 4 secrétaires et d’une trentaine de techniciens regroupés par spécialité dans sept ateliers. Pour gérer les réparations de matériels des clients, la société dispose d’un système d’information qui repose principalement sur une base de données dont le schéma simplifié est le suivant :

Questions :

1) Définir les notions suivantes : SGBD; Table ; Clé primaire et requête.

2) Peut-on avoir une réparation faite dans deux ateliers ? Un même matériel peut-il être sujet à plusieurs réparations ? Que se passe t-il si on prend le couple (N°Réparation, N°Série) comme clé de la table « REPARATION » ?

(44)

Y.DHIBA -FDM- 44

« MATERIEL».

4) Dites ce que permet de faire la requête suivante :

5) Formuler en mode QBE les requêtes suivantes :

A- Pour chaque atelier, afficher le nom et la moyenne des frais de réparations effectuées au cours du premier semestre d’une année donnée comme variable. B- Pour chaque atelier, afficher le numéro, le nom et le nombre de réparations faites

au cours d’une année donnée comme paramètre pour les clients de « Casa » ou « Rabat ». Limiter la recherche pour les ateliers dont le nombre de techniciens est supérieur à 4.

C- Afficher le nombre de matériels réparés par atelier au cours du troisième trimestre de l’année 2015. Limier la recherche pour le matériel dont la durée de réparation n’a pas dépassé 5 jours.

(45)

Y.DHIBA -FDM- 45

D- Donner une requête mise à jour permettant de réduire de 25% les frais de réparations ayant une durée qui dépasse 10 jours ou celles faites au cours des mois d’août ou septembre de 2015.

E- Donner une requête analyse croisée permettant d’afficher la durée moyenne de réparations (en nombre de jours) par type de matériel et par atelier. Limiter cette requête pour les cinq dernières années. Afficher le type de matériel en-tête de ligne et le nom de l’atelier en-tête de colonne.

Figure

Fig 1 : structure d’une Table
Fig3 : Exemple de clé primaire d’une table

Références

Documents relatifs

La notion de statut migratoire permet ici de désigner à la fois la situation administrative particulière des personnes en demande d’asile et ses conséquences, ainsi que

Le Nil trace un chapelet de villes dans le désert, alors que le Delta montre une organisation beaucoup plus régulière.. On retrouve quelques petites villes le long des côtes

Par exemple, lorsque l’on souhaite passer d’un semis de points à un maillage continu, on va utiliser une partition de Voronoï (aussi parfois appelée tessellation de Dirichlet),

Visivamente, es- sa rimanda all'immagine di uguale dimensione della villa romana del cardinale rappresentata sulla parete opposta, e alla grande veduta della villa di Tivoli,

On croit l’avoir montré, et en avoir trouvé la confirmation chez Hjelmslev : quoique non mis en forme par un terme, le concept de métalangage est au plus haut point présent dans

Il semble, au terme de cette analyse, que les traducteurs regroupés par des listes constituent bel et bien des ‘communautés’, regroupement d’individus ayant en commun une

deux expressions reprennent dans le titre même la manière dont les informateurs réunionnais de la communauté tamoule désignent et nomment l’entrée dans le

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des