Académique Documents
Professionnel Documents
Culture Documents
Exemple :
Une base de données « Gestion_locationVoiture» regroupe toutes les données concernant les
voitures (Matricule, marque, puissance, …) et les clients( NCIN, Nom, Prénom, Adresse, ….)
Centralisation : Les données sont regroupées dans une structure permettant d’éviter la
redondance
Indépendance entre données et programmes : Les données sont décrites indépendamment des
programmes
Intégration des liaisons entre les données : Les relations entre les données font partie de la BD.
Par exemple : dans une bibliothèque on peut savoir tel adhérent a emprunté tel ouvrage, sans
besoin d’écrire un programme.
Intégrité des données : Elle se traduit par un ensemble de règles permettant d’assurer la
cohérence de données. Par exemple deux personnes ne doivent pas avoir le même numéro de
la carte d’identité.
3) Les modèles de BD
Modèle hiérarchique : une BD se présente comme un arbre ordonné dont les sommets sont
des entités et les arcs sont les liens entre eux (voir figure page 23)
Modèle réseau : se présente comme un graphe ou un réseau (voir figure page 23)
Modèle relationnel : consiste à représenter les entités et les liens à l’aide d’une structure
appelée table.
4
Ch2 Notion de SGBD
La recherche
La lecture
La suppression
La modification
L'ajout
Le SGBD nous offre un Langage de Manipulation des Données (LMD) à fin de pouvoir réaliser ces opérations.
Exemple : La commande INSERT INTO nom_table ( ).
3. L'intégrité des données
C'est l'ensemble des opérations de contrôle que le SGBD effectue pour préserver la cohérence des données.
Exemple : Vérification de la validité de la valeur d'un champ.
1/2
Ch2 Notion de SGBD
Le SGBD gère l'accès simultané des utilisateurs à la base de données.
5. La confidentialité
Tous les utilisateurs d'une base de données ne sont pas supposés pouvoir consulter toutes les informations. Des
sous schémas de la base permettent de résoudre ce problème en plus des mots de passes et des droits d'accès.
6. La sécurité du fonctionnement
Faire une copie de sauvegarde de la base. Remise en marche de la base en cas de panne.
V. Intervenants du domaine BD
Utilisateurs
Concepteurs
Administrateurs base de données (DBA)
Développeurs d'application base de données
2/2
Chapitre 3 : Structure d'une Base de Données
1/5
Chapitre 3 : Structure d'une Base de Données
3. Notion de colonne « attribut ou champ »
3.1- définition :
Une colonne (champ) correspond à une propriété élémentaire de l'objet décrit par cette table.
Une colonne est décrite par :
a. Un nom : sous forme de code et il est généralement soumis aux mêmes règles de nommage des variables
dans les langages de programmation.
b. Un type de données : Les types de données les plus connus sont : numérique, caractères (ou texte), date et
booléen. Certains SGBD supportent des types de données multimédias telles que les images, le son et la vidéo.
c. Une taille éventuelle : Pour certains types de données tel que le type numérique ou caractères, indique la
longueur maximale que peut prendre la colonne.
d. Un indicateur de présence obligatoire : indique si cette colonne est obligatoire ou peut être nulle. Il est à
noter que la valeur nulle est différente de zéro pour les colonnes numérique et de
vide pour les chaînes de caractères.
e. Une valeur par défaut éventuelle : Permet de mettre une valeur par défaut lorsqu’aucune valeur n'a été
attribuée à cette colonne.
f. • Une règle éventuelle indiquant les valeurs autorisées : Dans certains cas, une colonne peut être soumise
à certaines règles tel que : une note d’un élève doit être entre 0 et 20.
Exemple :
Nous avons vu dans l'exemple précédent que la table élève regroupe les 4 colonnes suivantes : (Numéro, nom,
prénom et date de naissance). Nous allons décrire chacune de ces colonnes à travers le tableau suivant :
Nom Description Type de Taille Obligatoire Valeur par Valeurs Sujet
colonne données défaut autorisées
Num_e Numéro d’un élève Numérique 2 Oui >0 et <=30 Elèves
Nom_e Nom d’un élève Texte 25 Oui Elèves
Pren_e Prénom d’un élève Texte 25 Oui Elèves
Datnais_e Date de naissance d’un élève Date -- Oui <date() Elèves
2/5
Chapitre 3 : Structure d'une Base de Données
5. Notion de clé primaire « identifiant »
5.1- Définition :
La clé primaire d'une table est une colonne ou un groupe de colonnes permettant d'identifier de façon unique
chaque ligne de la table. Autrement dit, la connaissance de la valeur de la clé primaire, permet de connaitre sans
aucune ambiguïté les valeurs des autres colonnes de la table.
5.2- Remarque :
Les colonnes qui constituent la clé primaire sont obligatoires.
Chaque table doit comporter une et une seule clé primaire.
Une clé primaire peut être composé de deux ou plusieurs colonnes. Exemple pour identifier un lycée il faut
connaître son nom et sa ville.
on peut avoir dans une même table, deux ou plusieurs colonnes qui peuvent jouer le rôle de clé primaires.
Dans ce cas on doit choisir une parmi ces colonnes. Exemple une classe a un code et une désignation unique, on
peut utiliser, le code ou la désignation comme identifiant (et c’est mieux d’utiliser le code)
Pour distinguer la clé primaire des autres colonnes, on la souligne, ou on la met en gras.
3/5
Chapitre 3 : Structure d'une Base de Données
troisième table nommée ASSOCIATION contenant les clés des deux tables qui seront dans cette table en même
temps la clés primaire et clé étrangères référençant les tables d’origines
Exemple :
un auteur peut écrire un ou plusieurs livres
et un livre peut être écrit par un ou plusieurs auteurs.
donne naissance à une association ECRIRE
LIVRE
AUTEUR ECRIRE
1 1
Num_L
Num_a Num_a
Titre_L
Nom_a ∞ ∞
Num_L
…
… …
7. Notion de contrainte d'intégrité
7.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.
Les principaux types de contraintes d'intégrité sont :
Les contraintes de domaines : sont des contraintes appliquées à des colonnes. Elles permettent de fixer
le caractère obligatoire ou pas et les règles de validité des valeurs autorisées.
Exemples :
La note obtenue dans une matière doit être comprise entre 0 et 20.
La quantité commandée dans la table Commande est obligatoire et doit être >0
Les contraintes d'intégrité de tables : Elles permettent d'assurer que chaque table a une clé primaire.
Les contraintes d'intégrité référentielles : Elles permettent de s'assurer que les valeurs introduites dans
une colonne clé étrangère se réfère à une valeur dans la colonne clé primaire dans la table mère.
Exemple :
On n'accepte pas que le Code classe saisi dans la table élève n'existe pas dans la colonne Code
classe de la table classe
4/5
Chapitre 3 : Structure d'une Base de Données
Exemple :
Les deux tables suivantes représentent les Classe et les élèves qui y sont inscrits.
Classe(Code_C ,designation_c)
Eleve (Num_e , Nom_e, Pren_e, Dnais_e, Code_C #)
8.2- Représentation graphique :
classe Elève
1
Code_l Num_e
Nom_l Nom_e
Adr_l Pren_e
Tel_l Dnais_e
Code_l
Les clés primaires sont soulignées et les clés étrangères sont représentées à l'aide d'un lien entre les deux
tables
Le symbole () est placé de la côte de la clé étrangère et le symbole (1) du côté de la clé primaire
référencée.
La relation entre les deux tables est dite de type «un à plusieurs» car à une ligne de Classe peut correspondre
plusieurs lignes de Elève puisque dans une classe on a plusieurs élèves mais un élève appartient à une seule
classe.
5/5
Ch5 : création et modification de la structure d’une BD
NB : EasyPHP indique le début de l’erreur qui engendre l’arrêt de l’exécution de votre requête
II-1
Ch5 : création et modification de la structure d’une BD
Null /not null : pour indiquer si la colonne est obligatoire ou non. Si NOT NULL, le champ est obligatoire et
peut être vide si il est NULL.
Default : permet d’attribuer une valeur par défaut si aucune valeur ne lui a été attribuée.
LES CONTRAINTES :
o Contrainte de clé primaire : indique que la colonne est une clé primaire. La commande est :
METODE 1 :
‘col’ type [(taille)] [null/not null] PRIMARY KEY,
METODE 2 :
[CONSTRAINT ‘nom_contrainte’] PRIMARY KEY (Col1, Col2,…, Coln),
Exemple :
Methode1 Methode2
…………………………………………. ………………………………………….
…………………………………………. ………………………………………….
…………………………………………. ………………………………………….
…………………………………………. ………………………………………….
…………………………………………. ………………………………………….
o Clé étrangère (intégrité référentielle) :
METODE 1 :
‘Nom_col’ type [(taille)] [null/not null] REFERENCES ‘nom_table’[(nom_primaire)] [ON
DELETE CASCADE] [ON UPDATE CASCADE]
METODE 2 :
[CONSTRAINT nom_contrainte] FOREIGN KEY (nom_étrangère ) REFERENCES
‘nom_table’[(nom_primaire)] [ON DELETE CASCADE] [ON UPDATE CASCADE]
Exemple :
Methode1 Methode2
…………………………………………. ………………………………………….
…………………………………………. ………………………………………….
…………………………………………. ………………………………………….
…………………………………………. ………………………………………….
…………………………………………. …………………………………………
o Contrainte de valeur avec la clause CHECK: permet de limiter les valeurs possibles pour une colonne
en vérifiant une certaine condition. Le contrôle se fera lors des insertions des données.
METODE 1 :
‘Nom_col’ type [(taille)] [null/not null] CHECK [Nom_col] (condition)
METODE 2 :
[CONSTRAINT non_contrainte] CHECK ‘Nom_col’ (condition)
II-2
Ch5 : création et modification de la structure d’une BD
3) Modification de la structure d’une base de données en mode commande :
a) Modification de la structure d’une table : ALTER TABLE
II-3
Ch6 : Manipulation d’une BD
1
Ch6 : Manipulation d’une BD
La suppression d’une ou de plusieurs lignes d’une table se fait en utilisant la commande DELETE FROM.
La forme générale de cette commande est la suivante :
DELETE FROM nom_table
[WHERE condition]
Le paramètre condition qui apparaît dans la clause WHERE sert à indiquer la condition qui doit être vérifiée
par les lignes à supprimer. Si elle est absente, toutes les lignes de la table concernée seront supprimées.
En cas où la suppression ne respecte pas une contrainte d'intégrité référentielle, elle ne peut pas aboutir.
La suppression d'une ligne appartenant à une table donnée peut entraîner la suppression d'autres lignes
appartenant à d'autres tables lorsqu'il existe de contraintes d'intégrité référentielles de suppression en cascade :
utilisation de 1a clause ON DELETE CASCADE dans la définition des clés étrangères.
EXEMPLE : supprimer le client dont le code = S0010 de la table client
DELETE FROM client
WHERE code_cl=’S0010’
2.2. Recherche de données : requêtes
La recherche de données peut être réalisée en faisant référence à une ou à plusieurs tables. Elle peut se référer à
une partie ou à la totalité des colonnes des tables concernées tout en étant, éventuellement, conditionnelle. Une
recherche peut consister à effectuer : une projection sur certaines colonnes d’une table, une sélection sur
certaines lignes d'une table, une jointure sur 2 tables ou Toute combinaison de projection, sélection et jointure.
2
Ch6 : Manipulation d’une BD
Donner les chiffres d'affaires de l'année en cours de tous les clients. L'affichage d'un montant doit se faire une
seule fois en cas d'égalité de certains montants.
SELECT DISTINCT chif_Aff
FROM Client
Exemple 6 :
Donner la liste des produits et pour chacun calculer la valeur du stock.
SELECT des_art 'Désignation Produit', PU*Qte_stock 'Valeur Stock'
FROM Article;
Remarque
La colonne résultat, relative à la valeur du stock, sera calculée à partir du prix unitaire et la quantité en stock.
✓ Le paramètre condition sert à préciser le critère (ou prédicat) qui doit être vérifié par les lignes à afficher. Ce
prédicat est donné sous la forme d’une expression logique.
✓ Si le résultat de l'évaluation de l'expression logique est vrai, pour une ligne sera partie du résultat.
Dans l'expression logique, on peut utiliser en particulier :
1. Les opérateurs de comparaison : =, >, <, >=, <= , <>
2. L'opérateur BETWEEN pour les intervalles de valeur;
3. L'opérateur IN pour les listes de valeurs.
4. L'opérateur IS NULL et IS NOT NULL pour les valeurs indéterminées.
5. L'opérateur LIKE pour filtrer une chaîne de caractères
6. Les opérateurs logiques : AND, OR, NOT
EXEMPLES
Exemple 1 :
Donner la liste des clients qui ont atteint ou dépassé un chiffre d’affaire de 50000 dinars de l'année en cours.
SELECT *
FROM client
WHERE Chif_aff >=50000
Seules les lignes qui vérifient la condition indiquée feront parti du résultat.
Exemple 2 :
On demande la même liste que l'exemple précédent sauf qu’on ne s’intéresse qu’aux colonnes relatives aux noms
et aux prénoms
SELECT nom_client 'Nom', prenom_client 'Prénom'
FROM client
WHERE Chif_aff >=50000
Exemple 3 :
Donner la liste des clients qui ont un chiffre d’affaire entre 100000 et 50000 dinars de l'année en cours.
SELECT *
FROM client
WHERE Chif_aff BETWEEN 10000 AND50000
Exemple 4 :
Donner la liste des clients qui ont un chiffre d’affaire égale à 100000, 200000 ou 50000 dinars de l'année en
cours.
ELECT *
FROM client
WHERE Chif_aff IN (10000, 20000, 5000)
Exemple 5 :
3
Ch6 : Manipulation d’une BD
Donner la liste des clients qui ont un nom commence par 'A' et une adresse nulle ou le troisième caractère est ‘U’.
SELECT *
FROM client
WHERE nom_cl LIKE 'A%' AND (adr_cl IS NULL OR adr_cli LIKE '_ _U%'
Remarque :
✓ Le caractère % utilisé avec l’opérateur LIKE sert à remplacer une liste de caractères, y compris le vide.
✓ Le caractère _ utilisé avec l’opérateur LIKE sert à remplacer un caractère, pour remplacer un nombre de
caractères (n) , il suffit de mettre (n) fois successives le caractères _
4
Ch6 : Manipulation d’une BD
Exemple 4 :
Donner la liste des clients qui ont atteint les mêmes montants des chiffres d'affaires de l'année en cours.
SELECT DISTINCT X,Nom_cl, X.Prénom_cl, X.Chif _Aff
FROM Client As X, Client As Y
WHERE (X.Chiff_Aff =Y.Chiffre Affaires Année encours)
Remarque
Dans cet exemple nous avons utilisé deux fois la même table. Il s'agit d'une opération d'auto-jointure. Dans ce
cas l'utilisation d'un alias dans la commande SELECT devient indispensable.
Exemple 5 :
Donner les clients qui ont atteint le même montant des chiffres d'affaires de du client « Mohamed ben Saleh" .
SELECT X,Nom_cl, X.Prénom_cl, X.Chif _Aff
FROM Client As X
WHERE X.code_cl<>Z.code cl and
X.Chiff_Aff = ( SELECT Chif _Aff
FROM Client As Z
WHERE Z,Nom_cl ="Ben Saleh" and Z.Prénom_cl="Mohamed")
D-Recherche de données avec tri :
Certaines requêtes ont besoin de rechercher des données de la Base et d'avoir résultat qui soit trié selon un ordre
croissant ou décroissant des valeurs d'une ou de plusieurs colonnes. La forme générale de la commande de
recherche est la suivante :
SELECT [DISTINCT] */ colonne1 [‘legende1’], colonne2 [‘legende2’], …
FROM nom_table1 [alias1] [ , nom_table2 [alias2] , …]
[WERE condition]
ORDER BY coli/i [Asc/Desc], [colj/j [Asc/Desc],…]
La clause ORDER BY sert à exiger le classement (ou le tri) du résultat. Le classement peut se faire selon un
ordre croissant ( ASC ) ou décroissant ( DESC ) des valeurs d'une ou de plusieurs colonnes. Par défaut l’ordre
est ASC.
Coli : est un nom du champ parmi les propriétés à afficher avec SELECT
Exemple 1 : afficher les clients triés selon dans l’ordre alphabétique de leur nom
SELECT * FROM Client
FROM Client ORDER BY nom_cl
ORDER BY nom_cl ASC
SELECT *
Exemple 2 :
Donner le numéro et la date de chaque commande ainsi que les quantités commandées et les désignations des
articles correspondants en triant le résultat selon les dates dans l’ordre décroissant :
SELECT C.num_com, dte_com, Qte_com, des_art
FROM Commande C, détail_commande D, article A
WHERE (C.num_com=D.num_com) AND (D.code_art=A.code_art)
ORDER BY 2 DESC
E- Requête de calcul :
*calcul simple :
Exemple1 : pour une liste des notes calculer les moyennes de chaque élève en informatique :
SELECT code_e, (nc+ns*2)/3 'moyenne'
FROM note
WHERE code_m = "info"
GROUPE BY code_e
*calcul avec des fonctions agrégats :
Le langage SQL prévoit des fonctions agrégats qui nous permettent de faire du calcul au niveau des requêtes :
❖ COUT : permet de compter le nombre de lignes résultats obtenues par la commande SELECT
Exemple1 : afficher le nombre des clients
SELECT Count(*)
5
Ch6 : Manipulation d’une BD
FROM Client
❖ SUM : permet de faire la somme des valeurs d’une colonne dont le type de données est numérique
Exemple2 : afficher les montants des chiffres d’affaires des clients de « Mahdia »
SELECT Sum(chif_Aff)
FROM Client
WHERE adr_cl = "Mahdia"
❖ MIN : permet d’afficher la valeur minimale
❖ MAX : permet d’afficher la valeur maximale
❖ AVG : permet d’afficher la valeur moyenne arithmétique
Exemple3 : afficher la note de synthèse minimale, la note de synthèse maximale et la moyenne de ses notes en
informatique :
SELECT E.* , Min(note_e) 'moyenne minimale', Avg(note_e) 'moyenne de la classe'
FROM Eleve as E, note as N
WHERE N.code_m = "info" and N. nc >= (S
Exemple4 : afficher les élèves qui ont une note de synthèse supérieure à la moyenne de la classe en informatique :
SELECT E.*
FROM Eleve as E, note as N
WHERE N.code_m = "info" and E.code_e= N.code_e
and N. nc >= (SELECT nc
FROM note
WHERE code_m = "info" )