Livre BD Prof
Livre BD Prof
technologies de l’ informatiques
Prof : HAMMAMI Fatima classe : 4ème SI
Notion de base de
données
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.
Dans une base de données sont décrites indépendamment des programmes. Ce qui n'est pas le
cas avec les fichiers.
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
2
Prof : HAMMAMI Fatima classe : 4ème SI
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 @ ….
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.
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.
Colonnes (champs)
ELEVE
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
5
Prof : HAMMAMI Fatima classe : 4ème SI
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 :
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).
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
- La quantité commandée dans la table Commande est obligatoire et doit être > 0
1- Représentation textuelle :
Consiste à décrire les tables, les colonnes et les liens en utilisant du texte.
Exemple :
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
2/Remplir les tables par des données en respectant les contraintes d’intégrité.
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
2/Ecrire les commandes SQL qui permettent de créer les tables de cette BD, sachant que :
La forme générale de la commande qui permet la création d’une table est définit comme suit :
- L’option contrainte_colonne permet de donner une contrainte d’intégrité à la colonne. Elle est
définit comme suit :
[CONSTRAINT contrainte]
| CHECK (condition)
- 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
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 :
Q1/ ajouter à la table ‘ELEVE’ la colonne ‘CIN’ de type chaine de caractères (taille =8)
Q5/ Modifier le type de la colonne ‘Note’ de la table ‘DEVOIR’ par le type entier (de 2
chiffres)
Tp 3 BD (LMD)
(Manipulation des lignes d’une BD en mode
commande (SQL))
A/Insertion 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 :
Q5/ Supprimer de la table ‘ELEVE’ tous les élèves nés avant 2003
[MODIFY définition_colonne]
1. Mise à jour des données d’une table (appliqués sur les enregistrements d’une table) :
11
Prof : HAMMAMI Fatima classe : 4ème SI
[WHERE condition]
A/ Requête de projection :
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.
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 :
R10/ Afficher la moyenne de tous les élèves qui ont une note supé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.
R17/ Afficher les élèves qui ont une note supérieur à 12 en anglais groupés par notes.
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
13
Prof : HAMMAMI Fatima classe : 4ème SI
[WHERE condition]
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
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
Table Contrat_Location
14
Prof : HAMMAMI Fatima classe : 4ème SI
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 :
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
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
Exercice 3 : Soit le modèle relationnel suivant relatif à la gestion simplifiée des étapes
du Tour de France.
15
Prof : HAMMAMI Fatima classe : 4ème SI
16
Prof : HAMMAMI Fatima classe : 4ème SI
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.
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.
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 »
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.
19
Prof : HAMMAMI Fatima classe : 4ème SI
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.
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.
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é.
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;
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 ;
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.
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 ».
22
Prof : HAMMAMI Fatima classe : 4ème SI
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
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
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
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
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
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.
24