0% ont trouvé ce document utile (0 vote)
40 vues24 pages

Livre BD Prof

Transféré par

Fayza Akermi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
40 vues24 pages

Livre BD Prof

Transféré par

Fayza Akermi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 24

Matière : systèmes et

technologies de l’ informatiques
Prof : HAMMAMI Fatima classe : 4ème SI

Notion de base de
données

I- Les bases de données : les notions de base

1. Définition

Une base de données est une collection de données structurées, persistantes, non redondante
stockés ensemble pour servir une ou plusieurs domaines du monde réel.

Exemple :

Base de données « Gestion-lycée » regroupe toutes les données concernant les enseigants, les
élèves, les matières etc…

2. Avantages d'une BD

a. centralisation

Les données peuvent être utilisées par plusieurs programmes et plusieurs utilisateurs.

b. Indépendance entre données et programmes:

Dans une base de données sont décrites indépendamment des programmes. Ce qui n'est pas le
cas avec les fichiers.

c. Intégration des liaisons entre les données

Les relations entre les données font partie de la base de données et non pas des programmes.

d. Intégrité de données :

Un ensemble de règles qui doivent être vérifié pour assurer la cohérence de la base.

e. Concurrence d'accès

Plusieurs utilisateurs peuvent Accéder simultanément à la BD

2
Prof : HAMMAMI Fatima classe : 4ème SI

Notion de système de gestion de


bases de données
1. Définition d’un SGBD
Un SGBD (Système de Gestion de Base de Données) est un logiciel qui permet de créer, modifier,
interroger et administrer une base de données.

I. Les fonctions d’un SGBD


1. Définition de données (LDD)

Un SGBD permet la description des :

- Entités : élève, classe,…


- Propriétés ou attributs de l’entité : exemple : date de naissance d’un élève, effectif d’une
classe,….
- Liens entre les entités : exemple un élève est inscrit dans une classe,…
- Contraintes : exemple l’effectif d’une classe de baccalauréat ne doit pas dépasser 30 élèves.
Pour assurer cette fonction, les SGBD offrent un langage spécifique nommé langage de définition de
données (LDD).

2. La manipulation des données (LMD)

Les SGBD offrent des capacités de création, recherches, modification et de suppression de


données grâce à un langage dit « langage de manipulation des données (LMD).

Exemple : - insertion d’un nouvel élève.

- modification de l’adresse d’un élève suite à un déménagement.


- la recherche de la moyenne d’un élève.
3. L’intégrité des données

Il s’agit d’assurer que les contraintes (règles) d’intégrités définies par le LDD soient respectées à
chaque manipulation de la base de données.

Exemple : l’âge d’un élève de bac ne doit pas dépasser 23 ans, ou une adresse e-mail doit contenir le
caractère @ ….

4. La gestion d’accès concurrents :

Le SGBD gère l’accès simultané des utilisateurs à la base de données. Le SGBD doit offrir des
mécanismes de gestion des conflits d’accès. (Autorisation des accès multiples en consultation,
verrouillage lors d’accès en modification….).

3
Prof : HAMMAMI Fatima classe : 4ème SI

Exemple : : lors de la mise à jour des données concernant un élève, le SGBD interdit la
modification de ces données par autre utilisateurs non autorisés.

5. La confidentialité :

Tous les utilisateurs d’une base de données ne sont pas supposés pouvoir consulter ou modifier
toutes les informations donc il faut établir des règles de droit d’accès et de modification de
données par le biais des mots de passe et des privilèges d’accès.

Exemple : Seul le directeur peut changer l’affectation d’un élève d’une classe à une autre.

6. La sécurité de fonctionnement :

Offrir des mécanismes de récupération des données comme la journalisation et les procédures
de reprise après panne en cas d’incident matériel ou logiciel.

Exemple : sauvegarde de la base de données une fois par semaine.

II. Les principaux « SGBD » :


MySQL, MS.Access, Oracle…

Structure d’une base de données


Relationnelle
Selon ce modèle, une BD est composée essentiellement de :

Tables
Colonnes
lignes
Clé primaire
Clé étrangère
Contraintes d’intégrités

III.Notion de table
Les données dans une base de données relationnelle sont réparties sur un ensemble de tables.

1. Définition :
Une table est un ensemble de données relatives à un même sujet (ou entité) et structurées sous
forme de tableau.

4
Prof : HAMMAMI Fatima classe : 4ème SI

- Une table est composée horizontalement d’un ensemble de lignes correspondent aux
occurrences du sujet et verticalement d’un ensemble de colonnes qui décrivent les propriétés
(attributs) de la table.

Exemple : table élève

Colonnes (champs)

ELEVE

IdE nom prenom datn


Lignes (enregistrements)
1032 Mensi Azmi 15-10-1992

2103 dhahri fatma 11-11-1991

3210 ouini Maissa 12-12-1990

IV.Notion de colonnes
1. Définition :
Une colonne appelée aussi attribut ou champ, correspond à une propriété élémentaire de l’objet
(entité) décrit par cette table.

2. Caractéristiques :

 Un nom : c’est le nom de la colonne (sous forme de code) , il soumit aux mêmes règles
de nomination des variables dans les langages de programmation. Exemple : Datn,
Num….
 Un type de données : c’est le type de données prises par cette colonne : numérique(INT,
DECIMAL ou FLOAT), chaîne de caractère (VARCHAR), DATE, booléen (BOOLEAN)…
 Une taille éventuelle : Pour le type numérique ou chaînes de caractères, la taille indique
la longueur maximale que peut prendre la colonne.
 Un indicateur de présence : indique si cette colonne est obligatoire (NOT NULL)ou
peut être nulle (NULL).
 Une valeur par défaut éventuelle (DEFAULT): permet d’attribuer une valeur par
défaut lorsqu’aucune valeur n’a été attribuée à cette colonne.
 Une règle éventuelle indiquant les valeurs autorisées (CHECK): dans certain cas une
colonne peut être soumise à certaines valeur tel que : un prix il doit être positif >0, les
valeurs attribuées à une colonne doivent être supérieur à une valeur ou comprise entre
deux valeurs. (exp moy d’un élève comprise entre 0 et 20)
V. Notion de ligne :
1. Définition :
Une ligne appelée aussi enregistrement ou n-uplet, correspond à une occurrence du sujet
représenté par la table. On dit aussi qu’elle correspond à un objet du monde réel

VI.Notion de clé primaire (identifiant):


Activité1 :
Dans chacun des tableaux suivants, cocher chaque case permettant d’identifier d’une manière
unique l’entité :

5
Prof : HAMMAMI Fatima classe : 4ème SI

Article désignation PU Code-art Qté-stock

personne Nom prénom NCIN adresse

voiture Modèle N-immatricule Nb- chaises Lieu de fabrication

1) Quelles sont les caractéristiques des champs que vous avez cochés.
a. unique, non nulle, obligatoire
1. Définition :
La clé primaire d’une table est une colonne ou un groupe de colonne permettant d’identifier
de façon unique chaque ligne de la table.

Remarque :

a. La connaissance de la valeur de clé primaire, permet de connaître les valeurs des autres
colonnes de la table.
b. La clé primaire doit êtres Unique, non nulle et il obligatoire
c. Pour désigner une colonne qui représente une clé primaire, on la souligne.
VII. Liens entre les tables :
1. Définition :
Un lien entre deux tables A et B est représenté par l’ajout dans la table B d’une nouvelle colonne
correspondant à la clé primaire de la table A. cette nouvelle colonne est appelée clé étrangère.

Remarques :

a. une table peut comporter Zéro, une ou plusieurs clés étrangères

b. le nom de la colonne clé étrangère doit être identique au nom de la colonne clé primaire à
laquelle elle se réfère.

c. Pour désigner une colonne qui représente une clé étrangère on la double souligne ou bien
on la fait suivre d’une dièse #.

d. Un lien entre deux tables est orienté : il part de la table contenant la clé étrangère (table
fille) vers la table contenant la clé primaire (table mère).

e. On peut parler d’un lien de type (1 - n) appelé aussi (1 - ∞) exp


un élève est inscrit dans une seule classe
une classe peut comporter plusieurs élèves

f. On peut parler des liens de type plusieurs à plusieurs (non défini, ou (n,m)) cela donne
naissance à une troisième table qui aura les deux clés primaires des deux autres tables et ils
sont considérées comme clés étrangères dans cette dernière table. Exp
une matière est étudiée par un ou plusieurs élèves
un élève peut étudier une ou plusieurs matières

6
Prof : HAMMAMI Fatima classe : 4ème SI

VIII. Notion de contrainte d’intégrité :


1. Définition :
Une contrainte d’intégrité est une règle appliquée à une colonne ou à une table et qui doit être
toujours vérifiée.

2. Les types de contrainte d’intégrité :

 Les contraintes de domaines : ce sont des contraintes appliquées à des


colonnes. Elle vérifie la validité des valeurs prises par la colonne comme elle fixe le
caractère obligatoire ou pas d’une colonne.
Exemple : -la note d’une matière doit être comprise entre Zéro et Vingt.

- La quantité commandée dans la table Commande est obligatoire et doit être > 0

 Les contraintes d’intégrité de tables : elle permet d’assurer que chaque


table à une clé primaire.
 Les contraintes d’intégrité référentielles : un champ clé étrangère ne peut
contenir qu’une valeur déjà existante dans la clé primaire correspondante.
La suppression d’un enregistrement d’une table mère A utilisé par une table fille B est
interdit.

IX. Représentation de la structure d’une base de données :


La représentation d’une base de données est appelée aussi modèle ou schéma de la base de
données. Une base de données peut être présentée selon deux formalismes :

1- Représentation textuelle :
Consiste à décrire les tables, les colonnes et les liens en utilisant du texte.

Exemple :

Lycée (Code-lyc , Nom-lyc , Adr-lyc , tel-lyc)

Elève (IdE , Nom , Prénom , datn , code-lyc #)

2- Représentation graphique :
La représentation graphique consiste à décrire les tables, les colonnes et les liens en utilisant des
symboles graphiques.

Exemple :

Lycée Elève
Code-lyc 1 IdE
Nom-lyc Nom
Adr-lyc Prénom
tel-lyc
∞ Datn
code-lyc #

7
Prof : HAMMAMI Fatima classe : 4ème SI

Tp1 BD (LDD)
(Création d’une BD en mode commande
(SQL))
Exercice 1 :
Soit la représentation graphique d’une base de données des notes des élèves pour chaque matière
étudiée.

Représentation graphique :
ELEVE DEVOIR MATIERE

Id_elv Id_elv# Id_mat


nom Id_mat# Nom_mat
prenom note
date_naiss

1/Donner la représentation textuelle correspondante.

2/Remplir les tables par des données en respectant les contraintes d’intégrité.

3/Donner le type de donnée convenable à chaque champ.

4/Créer la base de données « Gestion_ELEVE » dans le dossier « C:\ nom et prénom\Activité 1 ».

5/Créer les tables ELEVE, DEVOIR et MATIERE :

 en précisant les clés primaires et les clés étrangères


 en choisissant les types de champs adéquats
 le nom et le prénom de l’élève ne doivent pas être null
 la note doit être entre 0 et 20
6/Remplir les tables ELEVE, DEVOIR et MATIERE par les données ci-dessus(en question 2).

Exercice 2 :
Soit la représentation textuelle d’une base de données d’un club qui permet d’organiser la projection des
films dans plusieurs salles du cinéma.
Représentation textuelle :
Film(numF, TitreF,Genre)

Cinéma(numC,NomC,AdresseC)

Projection(NumF,NumC,DateP,HeureP)

8
Prof : HAMMAMI Fatima classe : 4ème SI

1/donner la représentation graphique correspondante.

2/Ecrire les commandes SQL qui permettent de créer les tables de cette BD, sachant que :

 la date de projection du film est en 2022


 l’heure de projection du film est par défaut à 10 :00

Requête SQL pour

La forme générale de la commande qui permet la création d’une table est définit comme suit :

CREATE TABLE nom_table

(nom_colonne1 type [[NOT] NULL] [DEFAULT valeur] [contrainte_colonne], … ) ;

Les types de données sont :

 INT(n) : numérique de n chiffres.


 DECIMAL (n, m) : numérique de n chiffres dont m décimales.
 VARCHAR(n) : chaîne de caractères de longueur variable dont la taille maximale est n.
 CHAR(n) : chaîne de caractères de longueur fixe (n caractères).
 DATE : date et/ou heure.
- L’option NULL permet de dire que la colonne n’est pas obligatoire. L’option NOT NULL permet de
dire que la colonne est obligatoire.

- L’option DEFAULT permet de donner une valeur par défaut à la colonne.

- L’option contrainte_colonne permet de donner une contrainte d’intégrité à la colonne. Elle est
définit comme suit :

[CONSTRAINT contrainte]

| PRIMARY KEY (nom_colonne)

| FOREIGN KEY(nom_colonne) REFERENCES nom_table[(nom_colonne)] [ON DELETE CASCADE]

| CHECK (condition)

- Le mot clé CONSTRAINT est optionnel, il permet de donner un nom à la contrainte.

- PRIMARY KEY indique que la colonne est une clé primaire.

- REFERENCES indique que la colonne est une clé étrangère, nom_table est la table mère et
nom_colonne est la clé primaire de la table mère et il est donné lorsque le nom de la clé primaire de
la table mère est différent du nom de la clé étrangère.

- ON DELETE CASCADE permet de supprimer automatiquement les lignes dans la table fille
correspondant à une ligne supprimée de la table mère.

9
Prof : HAMMAMI Fatima classe : 4ème SI

- CHECK permet de préciser des valeurs autorisées pour la colonne.

Tp2 BD (LDD)
(Manipulation d’une BD en mode commande
(SQL))
Exercice 1 (Manipulation des colonnes) (LDD)
On va travailler sur la même base de données de l’exercice 1 du TP1 (Gestion_Elève).

Représentation graphique :

ELEVE DEVOIR MATIERE

Id_elv Id_elv# Id_mat


nom Id_mat# Nom_mat
prenom note
date_naiss

A/ Ajout d’une colonne :

Q1/ ajouter à la table ‘ELEVE’ la colonne ‘CIN’ de type chaine de caractères (taille =8)

B/Suppression d’une colonne :

Q2/ Supprimer la colonne ‘date_naiss’ de la table ‘ELEVE’

C/Ajout d’une contrainte :

Q3/ Rendre la colonne ‘CIN’ clé primaire de la table ‘ELEVE’

D/ suppression d’une contrainte :

Q4/ supprimer la contrainte clé primaire de la table ‘ELEVE’

E/ Modification des propriétés d’une colonne :

Q5/ Modifier le type de la colonne ‘Note’ de la table ‘DEVOIR’ par le type entier (de 2
chiffres)

F/ Activer ou désactiver une contrainte :

Q6/ Désactiver la contrainte clé primaire de la table ‘ELEVE’

Q7/ Réactiver la contrainte clé primaire de la table ‘ELEVE’

G/ Suppression d’une table :

Q8/ supprimer la table ‘DEVOIR’


10
Prof : HAMMAMI Fatima classe : 4ème SI

Tp 3 BD (LMD)
(Manipulation des lignes d’une BD en mode
commande (SQL))
A/Insertion d’une ligne :

Q1/ Insérer dans la table ‘ELEVE’ l’enregistrement suivant :


Id_elv nom prénom Date_naiss
006 riahi nour 16/02/2003
Q2/ Insérer dans la table ‘ELEVE’ l’enregistrement suivant :

Id_elv nom prénom Date_naiss


007 riahi nour

B/Modification d’une ligne :

Q3/ dans la table ‘DEVOIR’, ajouter +2 pour tous les élèves qui ont une note supérieur à 10

Q4/ mettre à jour les données de l’élève nommé ‘nour’ comme suit :

Nom= ‘riahi ben Amor’ et date de naissance=04/11/2004

C/Suppression d’une ligne :

Q5/ Supprimer de la table ‘ELEVE’ tous les élèves nés avant 2003

Q6/ supprimer tous les élèves

Requête SQL pour manipuler

1. Modification de la structure d’une table :


ALTER TABLE nom_table

[ADD COLUMN définition_colonne]

[DROP COLUMN nom_colonne]

[MODIFY définition_colonne]

[ADD CONSTRAINT définition_contrainte]

[DROP CONSTRAINT nom_contrainte]

[ENABLE | DISABLE CONSTRAINT nom_contrainte]

1. Mise à jour des données d’une table (appliqués sur les enregistrements d’une table) :

Insertion d’un enregistrement Modification des données Suppression des données


INSERT INTO nom_table UPDATE nom_table DELETE FROM nom_table
VALUES ( les valeurs à insérer) ; SET nom_champ= nouvelle valeur [WHERE condition]

11
Prof : HAMMAMI Fatima classe : 4ème SI

[WHERE condition]

Tp4 BD (LMD) (Les requêtes


de recherche)
(Manipulation d’une BD en mode
commande (SQL))
Exercice 1 (Les requêtes de recherche)
On va travailler sur la même base de données de l’exercice 1 du TP1 (Gestion_Elève).

A/ Requête de projection :

R1/ Afficher toutes les informations des élèves.

R2/ Afficher l’identifiant, le nom et le prénom de tous les élèves.

B/ Requête de sélection :

R3/ Afficher le nom et le prénom des élèves nés avant 2004, triés selon le nom dans l’ordre
croissant.

R4/ Afficher les noms des élèves commençant par ‘R’.

R5/ Afficher les identifiant, les noms et les prénoms des élèves dont l’avant dernier caractère
est ‘m’.

C/ Requête de jointure :

R6/ Afficher tous les élèves qui ont une note supérieur à 10

R7/ Afficher tous les élèves qui ont une note supérieur à 10 en math

R8/ Afficher le nom et le prénom et la matière, dont l’élève a une note entre 12 et 15.

D/ Requête de calcul :

R9/ Afficher la somme des notes des élèves.

R10/ Afficher la moyenne de tous les élèves qui ont une note supérieur à 10

R11/ Afficher le nom et le prénom de l’élève qui a la note la plus élevé.

R12/ Afficher le nom et le prénom de l’élève qui a la note minimale.

R13/ Afficher le nombre d’élèves

R14/ Afficher le nombre d’élèves qui ont une note inférieur à 10

12
Prof : HAMMAMI Fatima classe : 4ème SI

R15/ Afficher les noms et les prénoms et les notes des élèves dont la note est supérieur à
la moyenne des notes.

R16/ Afficher tous les élèves groupés par nom.

R17/ Afficher les élèves qui ont une note supérieur à 12 en anglais groupés par notes.

Requête SQL pour


Une requête est une opération de recherche de données à partir d’une ou plusieurs tables.

Il y a plusieurs types de recherche :

a- Recherche de colonne à partir d’une table : Projection


SELECT [DISTINCT] * /Liste_de_champs [[AS]ALIAS] / nom_table champ .
FROM nom_table ;

DISTINCT : pour éliminer les doublons.


Alias : ce sont les noms des colonnes de la table résultat.

b- Recherche d’une ligne à partir d’une table : Sélection


SELECT [DISTINCT] * /Liste_de_champs/ nom_table champ .
FROM nom_table
WHERE condition ;

Noter bien
- Le critère (ou appelé aussi prédicat) est donné sous la forme d’une expression logique
dans laquelle on peut utiliser :
 Les opérateurs de comparaison : =, <, >, >=, <= et <>.
 L’opérateur BETWEEN pour les intervalles de valeurs.
 L’opérateur [NOT] IN pour les listes de valeurs.
 L’opérateur IS NULL et IS NOT NULL pour les valeurs indéterminées.
 L’opérateur [NOT] LIKE pour filtrer une chaîne de caractères.
 Les opérateurs logiques : AND, OR, NOT.
c- Recherche de données à partir de plusieurs tables : Jointure

SELECT [DISTINCT] * /Liste_de_champs / nom_table champ .


FROM nom_table1 [Alias], nom_table2 [Alias] …
WHERE condition ;
d- Recherche tout en utilisant des fonctions de calculs (Fonctions Agrégat) : requêtes
de calcul
Les fonctions agrégat réalisent un calcul sur les enregistrements d’une table :

SUM () : Somme f- recherche de données groupés selon un critère :


AVG () : Moyenne
MAX () : Maximum Select [DISTINCT] * / Liste _nom _ colonne
MIN () : Minimum
 COUNT (*) : Nombre FROM nom _table1 [alias], nom _table2 [alias]…

e- Recherche de données avec Tri : GROUP BY nom _ colonne1 …


Select [DISTINCT] * / Liste _nom _ colonne
HAVING condition;
FROM nom _table1 [alias], nom _table2 [alias]…

13
Prof : HAMMAMI Fatima classe : 4ème SI

[WHERE condition]

ORDER BY nom _ colonne1 [ASC/DESC][nom _ colonne2 [ASC/DESC]… ;

Série 1 (BD)
Exercice 1 : Ci dessous, on présente le contenu de trois tables Client, Voiture,
Contrat_Location d’une base de données qui présente certaines anomalies :

Table Client

Adresse_C
NCIN_C Nom_C Prénom_C Code_P_C Ville_C
06188456 Hammadi Makrem 2100 Gafsa
20 rue de la liberté
09677221 Tounsi Safa 45 rue Elbortoukal 2123 Tunis

07827382 Kefi Ali 36 place Barcelone 1001 Tozeur

02172571 Hammadi Makrem 5 rue de la république 1000 Gafsa

06232322 Beji Mohamed 8 rue Enasr 1706 Sousse

09878888 Jerbi Lotfi 3 rue Farhat Hached 1521 Sfax

Table Voiture

Date_Achat
Immatriculation Désignation Marque Classe
1234 AA 62 Renault Mégane F
18/12/1997
1436 TO 62 Citroën Xantia 08/12/1997 C

3597 HA 60 Peugeot 406 02122009 D

6541 CG 62 Citroën Xsara 26/12/1997 C

9876 ZZ 62 Peugeot 106 22/12/1997 A

Table Contrat_Location

Date_Location Immatriculation NCIN_C Km_départ Km_retour


12/01/2002 1234 AA 62 02172571 145 658

12/01/2002 9876 ZZ 62 09677221 259 357

14/01/2002 6541 CG 61 06232322 33 330

16/01/2002 1436 TO 62 09878888 214 1058

12/01/2002 9876 ZZ 62 09677221 658 756

21/01/2002 6541 CG 62 07827382 330 701

14
Prof : HAMMAMI Fatima classe : 4ème SI

21/01/2002 1234 AA 62 02172571 890 1200

Questions : En se basant sur les contenus de ces tables, il apparaît que trois contraintes d’intégrité
n’ont pas été respectées. Dresser un tableau sous la forme suivante en expliquant l’anomalie
rencontrée et en précisant la contrainte d’intégrité non respectée :

Anomalie rencontrée Contrainte d’intégrité non respectée

Exercice 2 :
Soit la description textuelle suivante de la base de données « STOCKAGE »
ARTICLE ( NumArt, LibArt, PriArt, CodRay #)
Rayon ( CodRay, DescRay)

Article Rayon
NumArt LibArt PriArt CodRay CodRay DescRay
Art1 Télévision 560.500 006 001 Rayon électroménager
Art5 Table Télé 280.000 001 002 Rayon Meuble

1 - Votre collègue a définis les valeurs ci-dessus, commenter ?

En se basant sur le langage SQL :

2 - Créer la table ARTICLE

3 - Ecrire la commande nécessaire qui nous permet d’ajouter le champ ObsRay de type
alphanumérique dans la table RAYON de longueur maximale 60

4 – Répondre par Vrai ou Faux en justifiant votre réponse :

- Peut-on changer la taille du champ « LibArt » de la table « Article» à 10 caractères ?

- Peut-on changer le type du champ « PrixArt » de la table « Article » au type texte?

- Peut-on supprimer le champ « CodRay » de la table « Rayon » ?

Exercice 3 : Soit le modèle relationnel suivant relatif à la gestion simplifiée des étapes
du Tour de France.

EQUIPE (CodeEquipe, NomEquipe, DirecteurSportif)


COUREUR (NuméroCoureur, NomCoureur, CodeEquipe, CodePays)
PAYS (CodePays, NomPays)
TYPE_ETAPE (CodeType, LibelléType)
ETAPE (NuméroEtape, DateEtape, VilleDép, VilleArr, NbKm, CodeType)
PARTICIPER (NuméroCoureur, NuméroEtape, TempsRéalisé, Date_P)
1. Identifier pour chaque table les clés primaires, justifier votre réponse.
2. Identifier les liens éventuels entre les tables.
3. Donner la représentation textuelle et graphique de la base de données finale.
4. Répondre aux questions suivantes en justifiant votre réponse en fonction des caractéristiques du
schéma de la BD.

15
Prof : HAMMAMI Fatima classe : 4ème SI

a. Un même coureur peut-il participer à la même étape plus qu’une fois ?

b. Un même coureur peut il appartenir à plus qu’une équipe ?

c. Combien de types peut-on avoir pour chaque étape ?

Exercice 4: (bac 2021 _ session de contrôle)

Exercice 5: (bac 2021 _ session de contrôle)

16
Prof : HAMMAMI Fatima classe : 4ème SI

Exercice 6: soit les la BD suivante contenant deux tables :

Table lycée Table eleve


codelycée Nomlycée Nb_eleves Adr codelycée Id_eleve
L1 2Mars 600 Goubellat L1 001
L2 Technique 800 Medjez Elbeb L2 002
L3 Azima 600 Medjez Elbeb L3 003
L1 004
L1 002
Questions :
1) Est-ce qu’il-y-a une anomalie dans cette BD
2) Donner la représentation graphique de cette BD, ainsi que les relations entre les tables.
3) Pour chaque résultat donner la question correspondant et la requête correspondante :

Résultat 1 Résultat 2 Résultat 3


codelycée Nomlycée Nb_eleves Adr
codelycé Id_eleve L2 800 Medjez Total Nombre
e Techniqu Elbeb eleves de
L1 001 e lycées
L1 004 L3 Azima 700 Medjez 2000 3
L1 002 Elbeb

17
Prof : HAMMAMI Fatima classe : 4ème SI

Série 2 (BD)

Exercice 1 :
Soit la base de données d’un festival de musique : Dans une représentation peut participer un ou plusieurs
musiciens. Un musicien ne peut participer qu’à une seule représentation.

Representation (Num_Rep , titre_Rep , lieu)


Musicien (Num_mus , nom , #Num_Rep)
Programmer (Date , #Num_Rep , tarif)
Ecrire les commandes SQL permettant de rechercher :

1) Les titres des représentations.

2) La liste des titres des représentations ayant lieu au « théâtre allissa ».

3) La liste des noms des musiciens et les titres des représentations auxquelles ils participent.

4) La liste des titres des représentations, les lieux et les tarifs du 25/07/2008.

5) Le nombre de musiciens.

6) Le nombre des musiciens qui participent à la représentation n°20.

7) Les représentations et leurs dates dont le tarif ne dépasse pas 20 dinars.


Exercice 2 : Soit la base de données intitulée "gestion_projet" permettant de gérer les projets
relatifs au développement de logiciels. Elle est décrite par la représentation textuelle simplifiée suivante :

Developpeur (NumDev, NomDev, AdrDev, EmailDev, TelDev)


Projet (NumProj, TitreProj, DateDeb, DateFin)
Logiciel (CodLog, NomLog, PrixLog, #NumProj)
Realisation (#NumProj, #NumDev)
Ecrire les requêtes SQL permettant :
1) D’afficher les noms et les prix des logiciels appartenant au projet ayant comme titre « gestion de stock
», triés dans l’ordre décroissant des prix.

18
Prof : HAMMAMI Fatima classe : 4ème SI

2) D’afficher le total des prix des logiciels du projet numéro 10. Lors de l’affichage, le titre de la colonne
sera « cout total du projet ».

3) Afficher le nombre de développeurs qui ont participé au projet intitulé « gestion de stock »

4) Afficher les projets qui ont plus que 5 logiciels

5) Afficher les numéros et les noms des développeurs de chaque projet réalisé en 2022.
6) Afficher tous les informations des développeurs qui ont participé dans plus que 5 projets.

Exercice3:
Une société veut modéliser son système de gestion des ventes, pour cela elle élabore le
modèle relationnel suivant
Client (clt_num, clt_nom, clt_prenom, clt_pays, clt_loc, clt_type)
Commandes(cmd_num, cmd_date, #clt_num, #mag_num)
Magasin(mag_num, mag_loc, mag_gerant)
Ligne_cmd(#cmd_num, #art_num, lcd_qte, lcd_liv, lcd_pu, lcd_date_liv)
Article(art_num, art_nom, art_poids, art_stock, art_pa, art_pv)
. Ecrire les requêtes SQL pour afficher ces informations
1) Donner le numéro des articles vendus, avec pour chacun le prix moyen de vente et le nombre
de ventes
2) Donner par magasin les statistiques de vente en 2019, à savoir le nombre de vente, le nombre de
clients différents, et le nombre de jours ou il y a eu des ventes
3) Donner les numéros des clients qui ont acheté plus qu'une fois dans la semaine du 6 au 10 juin
4) Donner pour chaque année entre 2017 à 2019, le nombre de clients différents
5) Afficher les noms des clients classés par localités ou ils habitent.
6) Donner le numéro et la date d'achat des clients n'ayant acheté qu'une fois
7) Donner la liste des clients qui n'ont pas encore acheté des articles
8) Donner le numéro des articles dont la quantité vendue est supérieur à la moyenne des quantités
vendues en 2022.

Exercice 4 : Soit la représentation textuelle suivante :


Client (code_cli, nom_cli, prénom_cli, Ville, tel, email, chifr_affA, cumul_ChA)

Commande (num_cmd, date_cmd, code_cli#)

Article (code_art, des_art, pu_art, Qte_stock)

Detail_commande (num_cmd#, num_ligne, code_art #, Qte_cmd)

 Question : Ecrire les commandes SQL permettant de rechercher :

1 : la liste de tous les clients.

2 : le code, la désignation et le prix total (PU * Qte) de chaque article.

3 : les différentes villes des clients.

4 : la liste des clients ayant des prénoms qui contiennent la lettre « a ».

19
Prof : HAMMAMI Fatima classe : 4ème SI

5 : la liste des clients dont leurs noms commencent par la lettre « A »

6 : la liste des clients qui ont un chiffre d'affaire compris entre 10000 DT et 50000 DT

7 : la liste des commandes qui ont été commandé durant le mois de Janvier 2008.

8 : les noms et les prénoms des clients de Tunis qui ont un chiffre d'affaire qui dépasse 30000DT et qui ont un
nom qui commence par « A » ou bien le troisième caractère est « G ».

9 : les numéros, noms, prénoms et téléphones des clients qui ont passé des commandes.

10 : la liste des clients, avec leurs numéros de commandes, qui ont commandé leurs commandes le
10/10/2007.

11 : le numéro et la date de chaque commande ainsi que les quantités commandées et les désignations des
articles correspondants.

12 : la liste des commandes qui contiennent l'article Flash disque.

13 : la liste des clients qui ont passés des commandes, classés par ordre croissant des noms des clients puis par
ordre décroissant des dates commandes.

14 : la quantité en stock totale de tous les articles.

15 : la moyenne des chiffres d'affaires des clients.

16 : le chiffre d’affaire le plus élevé.

17 : le nombre des clients de Gafsa seulement

Exercice 5 (bac 2013) :


Soit la base de données simplifiée relative à la gestion des associations actives dans la région, décrite par la
représentation textuelle suivante :
ASSOCIATION (IdAss, NomAss, DatCrAss, IdAct )
ACTIVITE (IdAct, NomAct)
ADHERENT (IdAd, NomAd, ProfAd, DatNaisAd, AdrAd, IdAss)

Questions :
1. En tenant compte des règles de gestion suivantes, donner la représentation graphique de cette base de
données en indiquant les clés primaires et les clés étrangères de chaque table.
- Un adhérent doit s’inscrire dans une seule association.
- Une association possède un seul type d’activité.

2. Ecrire les requêtes SQL permettant :


a. de supprimer toutes les associations ayant comme code activité « C12 ».

20
Prof : HAMMAMI Fatima classe : 4ème SI

b. de modifier le nom d’activité des associations ayant comme valeur « Education » par la valeur «
Apprentissage ».

c. d’afficher la liste des associations (nom et date de création) ayant comme nom d’activité « Culture » et
qui sont crées à partir du « 01/01/2013 » au « 30/06/2013 ».

d. d’afficher les différents noms d’activités des associations qui sont crées après le 14/01/2011.

e. d’afficher le nombre d’adhérents qui sont inscrits dans l’association ayant comme nom « LIBERTE ».

Correction

21
Prof : HAMMAMI Fatima classe : 4ème SI

Correction de la
série 2 (BD)
Correction de l’exercice1:
1) Les titres des représentations.
SELECT titre_Rep FROM Representation;

2) La liste des titres des représentations ayant lieu au « théâtre allissa ».


SELECT titre_Rep FROM Representation WHERE lieu="theatre␣allissa";

3) La liste des noms des musiciens et des titres et les titres des représentations auxquelles
ils participent.
SELECT M.nom, R.titre_Rep FROM Musicien, Representation R
Where R.Num_rep=M.Num_rep ;

4) La liste des titres des représentations, les lieux et les tarifs du 25/07/2008.
SELECT R.titre_Rep, R.lieu,P.tarif
FROM Programmer P ,Representation R
WHERE P.Num_rep=R.Num_rep AND P.date="25-07-2008";

5) Le nombre de musiciens
SELECT COUNT (*) FROM Musicien ;

6) Le nombre des musiciens qui participent à la représentation n°20.


SELECT COUNT (*) FROM Musicien
WHERE Num_rep =20 ;

7) Les représentations et leurs dates dont le tarif ne dépasse pas 20 dinars.


SELECT R.Num_Rep , R.titre_Rep , P.Date
FROM Representation R , Programmer P
WHERE R.Num_Rep=P.Num_Rep AND P.tarif<=20 ;

Correction de l’exercice 2 :
1) D’afficher les noms et les prix des logiciels appartenant au projet ayant comme titre «
gestion de stock », triés dans l’ordre décroissant des prix.

SELECT L.NomLog, L.PrixLog FROM Logiciel L , Projet P


WHERE L.NumProj=P.NumProj AND P.TitreProj="gestion␣de␣stock"
ORDER BY L.PrixLog DESC;

2) D’afficher le total des prix des logiciels du projet numéro 10. Lors de l’affichage, le titre de
la colonne sera « cout total du projet ».

SELECT SUM(PrixLog) as "cout␣total␣du␣projet"


FROM Logiciel
WHERE NumPRoj=10 ;

3) Afficher le nombre de développeurs qui ont participé au projet intitulé«gestion de stock »

22
Prof : HAMMAMI Fatima classe : 4ème SI

SELECT count(*) FROM Developpeur D , Realisation R , Projet P


WHERE D.NumDev=R.NumDev AND P.NumProj=R.NumProj ;

4) Afficher les projets qui ont plus que 5 logiciels

SELECT NumProj, TitreProj FROM PRojet P , Logiciel L


WHERE P.NumProj=L.NumProj
GROUP BY NumProj, TitreProj
HAVING count(codLog)>5 ;

5) Les numéros et les noms des développeurs de chaque projet réalisé en 2022.
SELECT NumDev, NomDev FROM Developpeur D , Realisation R , Projet P
WHERE D.NumDev=R.NumDev AND P.NumProj=R.NumProj
GROUP BY NumProj
HAVING dateDeb> ‘2022-01-01’ AND dateFin˂ ‘2022-12-31’ ;
6) Afficher tous les informations des développeurs qui ont participé dans plus que 5 projets

SELECT D.* , NumProj FROM Developpeur D , Projet P , Realisation R


WHERE P.NumProj=R.NumProj AND D.NumDev=R.NumDev
GROUP BY NumProj
HAVING count(NumProj)˃ 5 ;

2ème solution:
SELECT D.* , NumProj FROM Developpeur D , Projet P , Realisation R
WHERE P.NumProj=R.NumProj AND D.NumDev=R.NumDev
AND ( SELECT count(NumProj) FROM Projet )˃ 5;

Correction de l’exercice3:
1) Donner le numéro des articles vendus, avec pour chacun le prix moyen de vente et le
nombre de ventes

SELECT art_num, AVG(lcd_pu), COUNT(*)


FROM Ligne_cmd
GROUP BY art_num ;

2) Donner par magasin les statistiques de vente en 2022, à savoir le nombre de vente, le
nombre de clients différents, et le nombre de jours ou il y a eu des ventes

SELECT mag_num, COUNT(*) AS "Nombre de ventes",


COUNT(DISTINCT clt_num) AS "Nombre de clients",
COUNT(DISTINCT cmd_date) AS "Nombre de jours"
FROM Commandes
WHERE YEAR(cmd_date)=2022 GROUP BY mag_num ;

3) Donner les numéros des clients qui ont acheté plus qu'une fois dans la semaine du 6 au
10 juin
select clt_num from Commandes
where cmd_date between "2019-06-06" and "2019-06-10"
group by clt_num having count(*)>1 ;

4) Donner pour caque année entre 2017 à 2019, le nombre de clients différents

23
Prof : HAMMAMI Fatima classe : 4ème SI

select YEAR(cmd_date), count(DISTINCT clt_num) from Commandes


where YEAR(cmd_date) between 2017 and 2019
group by YEAR(cmd_date);

5) Afficher les noms des clients classés par localités ou ils habitent, triés par ordre
décroissant des localités.
SELECT clt_loc , clt_nom FROM client
GROUP BY clt_loc
ORDER BY clt_loc DESC;

6) Donner le numéro et la date d'achat des clients n'ayant acheté qu'une fois

select cmd_num, cmd_date from Commandes


where clt_num in(select clt_num from Commandes
group by clt_num
having count(*)=1);

7) Donner la liste des clients qui n'ont pas encore acheté des articles

SELECT * FROM Client


WHERE clt_num NOT IN (select DISTINCT clt_num FROM Commandes);

8) Donner le numéro des articles dont la quantité vendue est supérieur à la moyenne des
quantités vendues en 2022.

SELECT art_num FROM Ligne_cmd GROUP BY art_num


HAVING lcd_qte>(SELECT AVG(lcd_qte) FROM Ligne_cmd)
AND YEAR(date_liv)= ‘2022’;

24

Vous aimerez peut-être aussi