SlideShare une entreprise Scribd logo
Diaporamas du cours :
Bases de données
Préparé par : Hamid BENNIS
Enseignant chercheur au Département TCC, EST-UMI Meknès
Email : h.bennis@umi.ac.ma
Filière (DUT) : Techniques de Son et d’Image-S2
Année Universitaire : 2016– 2017
Plan
 Introduction aux Bases de Données
 Préliminaire
 Système de Gestion de Bases de Données
 Niveaux de représentation d’une Base de Données
 Principaux modèles de données
 Modèle Conceptuel de Données (MCD)
 Définitions
 Règles de construction et Normalisation
 Modèle Relationnel
 Concepts de base du modèle relationnel
 Algèbre relationnelle
 Passage du MCD au modèle relationnel
 Langage SQL
3
Introduction aux Bases de Données
I. Préliminaire
I.1. Information & Donnée
Définitions :
Information : c’est un élément de connaissance concernant des faits,
des sujets ou des éléments particuliers.
Donnée : représentation conventionnelle d’un élément de connaissance
que traite l’ordinateur.
Exemple :
Informations concernant un client : le nom, le prénom l’adresse, le tel…
Bases de données TSI / S2
4
Introduction aux Bases de Données
I. Préliminaire
Besoins :
- Persistance de données.
- Quantité très importante de données à gérer.
- Cohérence de données, intégrité…
- Non redondance de données.
 Organisation logique et physique des données
indépendamment des traitements.
Bases de données TSI / S2
5
Introduction aux Bases de Données
I. Préliminaire
I.2. Historique
Historiquement, l’information a vu deux approches :
• Approche système de fichiers
• Approche base de données
Bases de données TSI / S2
6
Introduction aux Bases de Données
I. Préliminaire
Approche système de fichiers :
•Utiliser un ensemble de fichiers de données.
•Définir les données en fonction des traitements (dépendance
données/programmes).
•Toute application a ses propres fichiers.
Bases de données TSI / S2
8
Exemple : Pour gérer l’ensemble des données d’une entreprise, chaque service
définit ses fichiers en fonction de ses besoins.
• Fichier Client : service "Gestion des clients"
(Code client, Nom client, N°rue, ville)
• Fichier Commande: service commercial
(N°commande, date commande, total commande, code client, nom client, adresse)
• Fichier Détail commande : service commercial
(N° commande, N°ligne commande, code produit, Prix unitaire, Qté commandée)
• Fichier Produit : service "Gestion de stock"
(Code produit, libellé produit, Prix unitaire, Qté en stock)
Bases de données TSI / S2
9
Inconvénients:
•Redondance de données Risque d’incohérence de données lors
de la m.à.j des fichiers.
•Difficulté des traitements (consultation et m.à.j).
•Pas d’intégrité:
-On peut passer une commande d’un client qui n’existe pas
dans le fichier Client.
-Total commande donnée calculée…
•Tout contrôle sur les valeurs des données doit être traité par les
programmes.
•Manque de confidentialité…
Bases de données TSI / S2
10
Introduction aux Bases de Données
I. Préliminaire
Approche base de données :
•Date de 1963-63
•Représentation fidèle du monde réel.
•Intégration des données dans un seul fichier (la Base de Données).
•Indépendance données/programmes.
•Gestion d’une quantité importante de données.
•Organisation et gestion de la BD réalisées par un logiciel spécifique.
Bases de données TSI / S2
12
Introduction aux Bases de Données
II. Bases de données
Définition :
Une base de données (BD) est un ensemble structuré de données peu
redondantes que possible enregistrés (stockées) sur des supports
accessibles par l’ordinateur de façon à être indépendantes des
programmes qui les utilisent.
Par exemple, dans une entreprise constituée de plusieurs services
(service commercial, service d’approvisionnement, etc.), la BD sera
partagée et utilisée par différents services qui n’ont pas les mêmes
besoins.
Bases de données TSI / S2
13
Introduction aux Bases de Données
II. Bases de données
Remarque :
Ne pas confondre Base de données et banque de données.
- Base de données :
• ensemble d’informations d’une entreprise ou administration crée pour des
besoins de gestion.
•données de natures différentes (relatives aux clients, produits, employés…).
- Banque de données :
• rassemble des informations relatives à un domaine (économique, médical,
géographique…) de même nature et de même structure. Par exemple : banque
de données documentaire.
•l’utilisateur ne connaît pas ce qu’il cherche (recherche au moyen d’une clé…).
Bases de données TSI / S2
14
Introduction aux Bases de Données
III. Système de Gestion de Bases de Données
Définition :
Le SGBD est un logiciel (ensemble de programmes) permettant à un
utilisateur d’interagir avec une base de données. Le SGBD assure la
création et l’exploitation des BD.
A titre d’exemple, il permet aux utilisateurs de créer une BD, extraire,
modifier ou supprimer des données…
Bases de données TSI / S2
15
Introduction aux Bases de Données
III. Système de Gestion de Bases de Données
P1 P2 P3
SGBD
Base de
données
Bases de données TSI / S2
16
Introduction aux Bases de Données
III. Système de Gestion de Bases de Données
Le SGBD assure notamment l’interface entre la BD
physique et les programmes d’application (P1, P2,
P3…) qui réalisent des accès, des traitements et des
m.à.j.
Contrairement aux programmes utilisés avec les fichiers
classiques, on ne connaît pas l’implantation physique des
données.
Bases de données TSI / S2
17
Introduction aux Bases de Données
III. Système de Gestion de Bases de Données
Fonctions d’un SGBD :
•Intégration des données sans redondance
•Partage des données
•Intégrité des données
•Indépendance données/programmes
•Sécurité des données
•Confidentialité…
Bases de données TSI / S2
18
IV. Les différents niveaux de représentation
d’une Base de Données
3 niveaux de représentation d’une base de données :
•le niveau interne (schéma physique)
•le niveau conceptuel (schéma conceptuel)
•le niveau externe (le schéma externe).
Quelques exemples de SGBD :
ACCESS, INFORMIX, ORACLE, DBASE IV…
Bases de données TSI / S2
19
IV. Les différents niveaux de
représentation d’une Base de Données
Schéma
externe 1
Schéma
externe 3
Schéma
externe 2
Schéma conceptuel
Base de
données
Niveau externe
Niveau conceptuel
Niveau interne
Bases de données TSI / S2
20
IV. Les différents niveaux de
représentation d’une Base de Données
Niveau interne :
•Existence physique
•Comment les données sont stockées sur le disque dur
•Formats de stockage
Niveau conceptuel :
•Décrire d’une manière abstraite l’ensemble des données
•Organisation logique des données
•Élaboration d’un schéma conceptuel : modèle de données.
Bases de données TSI / S2
21
IV. Les différents niveaux de
représentation d’une Base de Données
Niveau externe :
•Vision de tout ou partie du schéma conceptuel par un groupe
d’utilisateurs concerné par une application
•Sous-schéma conceptuel, mais il peut apporter plus
d’informations.
Bases de données TSI / S2
22
Introduction aux Bases de Données
V. Les principaux modèles de données
- Modèle de données : description logique des données et des
relations qui les associent.
-Il existe plusieurs modèles de données :
•le modèle hiérarchique,
•le modèle réseau,
•le modèle relationnel
•et récemment le modèle objet.
Bases de données TSI / S2
23
Introduction aux Bases de Données
V. Les principaux modèles de données
Le modèle hiérarchique :
•Les données et les relations entre elles sont représentées par un arbre ordonné.
•Les premiers systèmes datent des années 60. Ex. IMS (pour Information
Management System) d’IBM.
•Formalisme de lien hiérarchique entre entités :
Entité 1
Entité 2 Entité 3
Bases de données TSI / S2
24
Introduction aux Bases de Données
V. Les principaux modèles de données
Exemple :
Un client peut effectuer une ou plusieurs commandes concernant un ensemble de pièces.
Nom client Adresse N° Tel
N°commande Date commande
N°pièce Prix unitaire Quantité
Bases de données TSI / S2
25
Introduction aux Bases de Données
V. Les principaux modèles de données
Le modèle réseau :
•Les enregistrements sont liés par des traits formant un graphe.
•Offre plus de liaisons (associations) entre les données.
•Normalisé par le groupe CODASYL : Conference On Data Systems Languages en
1971
•Ex. IDS : Integrated Data Store
•Formalisme du modèle réseau :
Entité 1
Entité 3
Entité 2
Bases de données TSI / S2
26
Introduction aux Bases de Données
V. Les principaux modèles de données
Exemples : N°commande Date commande
Nom client Adresse N° Tel
1 22/04/2003
Alami Adr1 037 -- -- --
2 22/06/2003
Bases de données TSI / S2
27
Introduction aux Bases de Données
V. Les principaux modèles de données
Le modèle relationnel :
•Inventé par CODD à IBM en 1970.
•Repose sur le principe de relation (au sens mathématique) entre les
données
•Traduire le modèle Entité-Association (modèle schématique) en un
modèle réel.
•Données structurées en des tables. (voir chap. 3)
Bases de données TSI / S2
28
Introduction aux Bases de Données
V. Les principaux modèles de données
Le modèle objet :
•date des années 90 et repose sur le concept d’objet.
•Chaque entité est représentée par un objet.
•Représentation fidèle du monde réel.
•Standard ODMG-93 proposé par Object Database Management
Group.
Bases de données TSI / S2
30
Modèle Conceptuel de Données
Objectif:
Après-avoir collecté l’ensemble des données (du système à informatiser) à
partir des documents et des fichiers existants, on doit étudier les liens qui
existent entre ces données afin de proposer une représentation schématique
appelée Modèle Conceptuel de Données (MCD).
Bases de données TSI / S2
31
Modèle Conceptuel de Données
I. Définitions
1-Propriété :
C’est un élément d’information issu du réel perçu susceptible de prendre des
valeurs différentes.
Exemple : nom client, adresse client.
Il y a trois types de propriétés :
- Élémentaire (simple) : Age, N°pièce
- Composée (concaténée) : Adresse =(Rue, Ville)
- Calculée : Montant TVA = Montant HT * Taux TVA
Bases de données TSI / S2
32
2-Entité :
C’est une concrétisation du réel perçu. Elle est décrite par une liste de
propriétés qui lui sont spécifiques.
Exemple :
Client (Code Client, Nom Client, Adresse Client)  acteur du réel
Atelier(N°atelier, Nom Atelier, Nom Chef)  lieu
Commande(N°commande, Date commande,Total)  Objet
Modèle Conceptuel de Données
I. Définitions
Bases de données TSI / S2
33
Modèle Conceptuel de Données
I. Définitions
3- Relation :
Une relation est un ensemble d’interactions semblables qui existent entre les
entités. Elle permet d’associer deux ou plusieurs entités.
Exemple :
Soient les entités Commande(N° commande, Date commande, Total Commande)
et Client(N° Client, Nom Client, Adresse Client).
La Commande Concerne le Client.
"Concerne" est une relation entre les deux entités « Commande » et « Client ».
Bases de données TSI / S2
34
Modèle Conceptuel de Données
I. Définitions
Formalisme du Modèle Entité–Relation :
Nom de l’entité 3
Nom propriété 1
Nom propriété 2
………………….
………………….
………………….
Nom de l’entité 2
Nom propriété 1
Nom propriété 2
………………….
………………….
………………….
Nom de l’entité 1
Nom propriété 1
Nom propriété 2
………………….
………………….
………………….
Nom de la Relation
Nom propriété 1
Nom propriété 2
Bases de données TSI / S2
35
Modèle Conceptuel de Données
I. Définitions
Exemple : Un bon de commande contient un ensemble
de quantités de pièces fabriquées par des machines
spécifiques.
Pièce Machine
N° Pièce
Nom pièce
Prix unitaire
N° machine
Nom machine
Durée de vie
Commande
N° commande
Date commande
Montant HT
Fabriquer
Contenir
Qté fabriquée/j
Qté commandée
Bases de données TSI / S2
36
Modèle Conceptuel de Données
I. Définitions
4- Occurrence :
Une occurrence d’une entité (resp. relation) est un
élément particulier de ce type.
Exemples :
(1, ‘Cylindre’, 300) une occurrence de l’entité « Pièce ».
(350) est une occurrence de la relation « Fabriquer ».
Bases de données TSI / S2
37
Modèle Conceptuel de Données
I. Définitions
5- Identifiant :
L’identifiant d’une entité ou d’une relation est une propriété
permettant d’identifier une et une seule occurrence de ce type.
Exemple :
N° pièce est un identifiant de l’entité « Pièce ».
N.B.
Une entité peut avoir plus d’un identifiant.
Une relation peut ne pas avoir d’identifiant.
Bases de données TSI / S2
38
Modèle Conceptuel de Données
I. Définitions
6- Clé primaire d’une entité :
La clé primaire d’une entité est le groupe minimal de
propriétés qui identifient cette entité.
Exemples :
- N° pièce permet d’identifier Nom pièce et Prix unitaire :
N°pièce est la clé primaire de l’entité "Pièce".
- Les propriétés N°pièce et Nom pièce permettant
d’identifier le prix unitaire, mais elles ne constituent pas
une clé primaire de l’entité «Pièce».
Bases de données TSI / S2
39
7- Clé primaire d’une relation :
La clé primaire d’une relation est composée des clés
primaires des entités formant cette association.
Modèle Conceptuel de Données
I. Définitions
Exemples :
(N°pièce, N°machine) est la clé primaire de la relation
"Fabriquer".
(N°pièce, N°commande) est la clé primaire de la relation
"contenir".
Bases de données TSI / S2
40
Modèle Conceptuel de Données
I. Définitions
8- Cardinalité :
Les cardinalités minimale et maximale d’une entité via
une relation indiquent les nombres minimal et maximal
d’occurrences de la relation pouvant exister pour une
occurrence de cette entité.
Bases de données TSI / S2
41
Modèle Conceptuel de Données
I. Définitions
Exemple 1 : Un bon de commande contient au moins une pièce
fabriquée au moins par une machine. Chaque machine fabrique au
moins une pièce. Une pièce peut ne pas être commandée.
Pièce
Machine
N° Pièce
Nom pièce
Prix unitaire
N° machine
Nom machine
Durée de vie
Commande
N° commande
Date commande
Montant HT
Fabriquer
Contenir
Qté fabriquée/j
Qté commandée
1, n 1, n
0, n
1, n N.B.
0cardinalité minimale1
1cardinalité maximalen
Bases de données TSI / S2
42
Modèle Conceptuel de Données
I. Définitions
Exemple 2 : Une usine contient des machines qui peuvent fabriquer
au moins un type de pièce. Chaque pièce peut être fabriquée par une ou
plusieurs machines. Chaque type de machine est construit par un ou
plusieurs fournisseurs. Le fournisseur peut construire une ou plusieurs
marques de machines.
Pièce Machine
N° Pièce
Nom pièce
Prix unitaire
N° machine
Nom machine
Durée de vie
Fournisseur
N° Fournisseur
Nom Fournisseur
Adresse
Fabriquer
Construire
Qté fabriquée/j
Qté machines
Fabriquées/j
1, n
1, n
1, n
1, n
Bases de données TSI / S2
43
Modèle Conceptuel de Données
I. Définitions
9- Dépendance fonctionnelle entre propriétés :
Deux propriétés p1 et p2 sont reliées par une dépendance
fonctionnelle si la connaissance de p1 détermine une et
une seule valeur de p2. On note : p1—df – p2.
Exemples :
N°pièce – df – Nom pièce
N°pièce – df – prix unitaire
 N°pièce – df – Nom pièce, prix unitaire
N°pièce+N°commande – df – qté commandée
Bases de données TSI / S2
44
Modèle Conceptuel de Données
I. Définitions
10- Dépendance fonctionnelle élémentaire :
p1 et p2 sont reliées par une dépendance
fonctionnelle élémentaire si on a :
-p1—df – p2.
-Aucune partie stricte de p1 ne détermine p2.
On note : p1  p2.
Bases de données TSI / S2
45
Modèle Conceptuel de Données
I. Définitions
Exemples :
 N°pièce+Nom pièce Prix unitaire
(d.f.non élémentaire)
On a : N°pièce  prix unitaire
 N°pièce+N°commande  Qté commandée
Bases de données TSI / S2
46
Modèle Conceptuel de Données
I. Définitions
11- Dépendance fonctionnelle élémentaire directe :
p1 et p2 sont reliées par une dépendance
fonctionnelle élémentaire directe s’il n’existe
aucune propriété p3 telle que : p1  p3 et p3  p2.
Exemple :
 N°commande  Montant TVA n’est pas directe. En effet :
N°commande  Montant HT et Montant HT  Montant TVA
 N° commande  Nom client n’est pas directe
Bases de données TSI / S2
47
Modèle Conceptuel de Données
II. Règles de construction
Étape 1 : Établissement de la liste des propriétés
synonymes =plusieurs signifiants pour un signifié
Exemple : N° pièce et Code Pièce sont des synonymes
Établir la liste des propriétés à partir des documents échangés entre les
différents utilisateurs de la BD.
Supprimer les synonymes:
Supprimer les propriétés de noms différents provenant d’un ou
plusieurs documents ayant la même signification.
Bases de données TSI / S2
48
Modèle Conceptuel de Données
II. Règles de construction
Régler les polysèmes:
polysème =un signifiant pour plusieurs signifiés
Exemples :
 N° dans un document « pièce » signifiant N°pièce et N° dans un
autre document « machine » signifiant N°machine. Il faut donc
régler ce problème en les remplaçant resp. par N°pièce et
N°machine.
 Prix peut signifier prix d’achat et prix de vente dans deux
documents différents.
Un polysème est une propriété qui a plusieurs significations dans un
ou plusieurs documents.
Bases de données TSI / S2
49
Modèle Conceptuel de Données
II. Règles de construction
Codification des entités :
On doit ajouter des codes identifiant les entités s’ils n’existent
pas sur les documents.
Exemple :
Pièce(Nom pièce, Prix unitaire)
 Pièce(N° pièce, Nom pièce, Prix unitaire)
Bases de données TSI / S2
50
Étape 2: Établissement du dictionnaire de données
Tableau dont les colonnes contiennent :
- Le nom abrégé de la propriété,
- Sa signification (description),
- Son type : Numérique(N), Alphabétique(A), Alphanumérique(AN),
Date(D),
- Sa longueur,
- Sa nature : Élémentaire (E), Concaténée (CO), Calculée (CA),
- Observations indiquant les contraintes d’intégrités sur les propriétés,
leurs formats de saisie, etc.
Modèle Conceptuel de Données
II. Règles de construction
Exemple :
Bases de données TSI / S2
51
Modèle Conceptuel de Données
II. Règles de construction
Libellé pièce
N°pièce
N°commande : --------------- Date commande : --/--/---
N° client : -------------- Nom client : --------------------
Adresse : --------------------
--------------------
Prix unitaire Quantité Montant HT
Total : -------------------
Bases de données TSI / S2
52
Modèle Conceptuel de Données
II. Règles de construction
Nom Signification Type Longueur Nature Observation
NCDE
DATEC
NCLI
NOMCLI
ADRCLI
RCLI
VCLI
NPIECE
LIBPIECE
QTEC
PUNIT
MONT
TOTAL
N° commande
Date commande
N° client
Nom client
Adresse
Rue Client
Ville client
N° pièce
Libellé pièce
Quantité commandée
Prix unitaire de pièce
Montant HT
TOTAL HT de commande
N
Date
N
A
AN
AN
A
N
A
N
N
N
N
6
8
6
25
50
30
20
6
30
4
6
10
12
E
E
E
E
CO
E
E
E
E
E
E
CA
CA
jj/mm/aaaa
Rue + Ville
PUNIT*QTE
C
 MONT
Bases de données TSI / S2
53
Étape 3 : dépendances fonctionnelles
élémentaires directes (DFED)
Modèle Conceptuel de Données
II. Règles de construction
•déterminer les dépendances fonctionnelles élémentaires directes entre
les propriétés.
•représenter les DFED dans un graphe
Les propriétés TOTAL, MONTANT et ADRESSE sont supprimés
dans la deuxième étape.
Bases de données TSI / S2
54
Exemple :
- Liste des DFED associées au document « bon de commande » :
NCDE  DATEC, NCLI*
NPIECE  LIBPIECE, PUNIT
NCLI  NOMCLI, RCLI, VCLI
NCDE+NPIECE  QTITEC
Modèle Conceptuel de Données
II. Règles de construction
Bases de données TSI / S2
55
- Graphe des DFED :
NCDE NPIECE
DATEC NCLI LIBPIECE PUNIT
NOMCLI RCLI VCLI
QTEC
Modèle Conceptuel de Données
II. Règles de construction
Bases de données TSI / S2
56
Étape 4 : Élaboration du MCD
- Identifier les entités et les relations à partir du graphe des DFED
- Construire le MCD
- Mettre les cardinalité
Modèle Conceptuel de Données
II. Règles de construction
Commande
Client
NCDE
DATEC NCLI
NOMCLI
RCLI
VCLI
Pièce
NPIECE
LIBPIECE
PUNIT
Concerner
Contenir
QTEC
1, 1 1, n
1, n
0, n
Bases de données TSI / S2
57
Remarque : MCD en cas de plusieurs documents :
Deux possibilités se présentent :
• Établir une liste globale correspondant à l’ensemble des
documents
• Établir le MCD de chaque document. Le MCD global est
le résultat de la fusion de l’ensemble des MCD.
Modèle Conceptuel de Données
II. Règles de construction
Bases de données TSI / S2
58
La normalisation d’un MCD permet d’établir une
conception minimale de la BD (modèle logique).
Tout MCD doit vérifier trois formes normales.
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
59
- Première Forme Normale 1FN :
Définition : Pour toute occurrence d’une entité,
respectivement relation, chaque propriété ne peut
prendre qu’une seule valeur.
Le MCD est dit en 1FN si toutes ses entités et
relations sont en première forme normale.
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
60
Exemple 1 : Passage en première forme normale d’une entité
non normalisée
Pièce
NPIECE
LIBPIECE
PUNIT
QTITEC
L’entité Pièce n’est pas normalisée.
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
61
L’entité pièce devient :
Pièce Commande
N° Pièce
Libellé pièce
Prix unitaire
N° commande
Contenir
QTITEC
0, n
1, n
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
62
Exemple 2 : Passage en 1FN d’une relation non normalisée
Commande Client
NCDE
DATEC
NCLI
NOMCLI
Concerner
1, 1 1, n
QTITEC
La relation « Concerner » n’est pas en 1FN.
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
63
Commande Client
NCDE
DATEC
NCLI
NOMCLI
Concerner
1, 1 1, n
Pièce
NPIECE
Contenir 0, n
1, n
QTITEC
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
64
- Deuxième Forme Normale 2FN :
Définition : Une entité ou relation est en deuxième forme
normale si chaque propriété de cette entité, ou une relation,
dépend de sa clé primaire par une dépendance fonctionnelle
élémentaire. C.à.d., il n’existe pas de df avec une partie de
la clé primaire.
Le MCD est dit en 2FN si toutes ses entités et relations sont
en deuxième forme normale.
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
65
Exemple 1 : Passage en deuxième forme normale
d’une entité en 1FN
Commande
# NCDE
# NPRODUIT
- DATE_CDE
- QTITEC
L’entité « commande » est en 1FN.
Mais n’est pas en 2FN.
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
66
Le MCD en 2FN est :
Commande Produit
NCDE
DATE_CDE
NPRODUIT
Contenir
1, n 0, n
QTITEC
Remarque :
Toute entité en 1FN possédant une clé primaire simple (non composée)
est en 2FN.
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
67
Exemple 2 : Passage en 2FN d’une relation en 1FN
Produit Machine
NPRODUIT
LIBPRODUIT
NMACH
NOMMACH
Fabriquer
1, n 1, n
Quantité fabriquée/ jour
Prix unit. Produit
Prix unit. Machine
La relation « Fabriquer » est en 1FN
Mais n’est pas en 2FN.
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
68
Le MCD en 2FN est :
Produit Machine
NPRODUIT
LIBPRODUIT
Prix unit. Produit
NMACH
NOMMACH
Prix unit. Machine
Fabriquer
1, n 1, n
Quantité fabriquée/ jour
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
69
- Troisième Forme Normale 3FN
Modèle Conceptuel de Données
III. Normalisation
Définition :
Une entité ou relation est en troisième forme
normale si :
•Elle est en 2FN.
•Toute propriété de cette entité ou relation
dépend de sa clé primaire par une dépendance
fonctionnelle élémentaire directe.
Bases de données TSI / S2
70
Exemple 1 : Passage en troisième forme normale d’une entité en 2FN
Règles de gestion :
• Chaque Produit a un code de TVA.
• Chaque code peut identifier le taux de TVA correspondant.
Produit
NPRODUIT
LIBPRODUI
CODTVA
TAUXTVA
L’entité « pièce » est en 2FN.
Mais n’est pas en 3FN car : NPRODUIT  TAUXTVA n’est pas directe.
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
71
Le MCD en 3FN est :
Produit TVA
NPRODUIT
LIBPRODUI
CODTVA
TAUXTVA
Avoir
1, 1 1, n
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
72
Exemple 2 : Passage en 3FN d’une relation en 2FN
Le montant HT d’une ligne de commande est le
produit de la quantité et le prix unitaire du produit.
Commande Produit
NCDE
DATE_CDE
NPRODUIT
PRIX UNIT
Contenir
1, n 0, n
Montant HT
Montant TVA
NPRODUIT+ NCDE  Montant TVA n’est pas directe
Montant TVA=Montant HT*20%
On doit supprimer le MONTANT TVA de la relation
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
73
Commande Produit
NCDE
DATE_CDE
NPRODUIT
PRIX UNIT
Contenir
1, n 0, n
Montant HT
MCD en 3FN:
Modèle Conceptuel de Données
III. Normalisation
Bases de données TSI / S2
74
Modèle Relationnel
I. Présentation
Le modèle relationnel a été inventé en 1970 par CODD à IBM.
Il repose sur le concept de relation entre propriétés.
Il a connu un grand succès grâce à :
- la simplicité : il utilise des structures simples et courantes (tables).
- La rigueur de ses concepts (théorie des ensembles, algèbre relationnelle…)
- Langage de haut niveau (interrogation et manipulation)
 Commercialisation des SGBDR
Bases de données TSI / S2
75
Modèle Relationnel
I. Présentation
N.B. Ne pas confondre le concept de relation du modèle Entité-
Relation et celui du modèle relationnel. En effet, dans le modèle
Entité-Relation une relation exprime une association entre entités
alors que dans le modèle relationnel, il s’agit d’une relation (au
sens mathématique) entre propriétés.
Exemple :
(Code produit, Libellé produit, P.U.) est une relation liant les
propriétés d’une entité « Produit ».
Bases de données TSI / S2
76
1-Domaine :
Un domaine est un ensemble de valeurs que peut prendre une propriété.
Exemples :
- le domaine des entiers.
- le domaine des réels.
- Le domaine des booléens {0, 1}
- Marque_voiture(Renault, FORD, …)=D1
- COULEUR(Bleu, Vert, …)=D2
Modèle Relationnel
II. Concepts de base du modèle relationnel
Bases de données TSI / S2
77
Modèle Relationnel
II. Concepts de base du modèle relationnel
Le produit cartésien d’une liste de domaines D1, D2, …Dn est
l’ensemble des n-uplets ou tuples <u1, u2, …nn> tels que uiDi.
Exemple :
(Peugeot, Vert) est un tuple de D1D2.
Bases de données TSI / S2
78
Modèle Relationnel
II. Concepts de base du modèle relationnel
2- Relation :
une relation est un sous-ensemble du produit cartésien d’une
liste de domaines. Elle est caractérisée par un nom significatif
et appelée table. Plus simplement, une relation ou table peut
être vue comme un tableau à deux dimensions dont les
colonnes correspondent aux domaines et les lignes
contiennent les tuples.
Bases de données TSI / S2
79
Modèle Relationnel
II. Concepts de base du modèle relationnel
Exemple :
D1D2 donne la relation Voiture :
Marque Couleur
Renault
Renault
FORD
FORD
Peugeot
Peugeot
Bleu
Vert
Bleu
Vert
Bleu
Vert
Bases de données TSI / S2
80
Modèle Relationnel
II. Concepts de base du modèle relationnel
3- Attribut :
C’est une colonne d’une relation caractérisée par un nom.
Exemple :
Marque, couleur sont des attributs de la relation voiture.
Bases de données TSI / S2
81
Modèle Relationnel
II. Concepts de base du modèle relationnel
4- Schéma de relation :
Il est composé du nom de la relation, la liste des attributs avec leurs
domaines et la clé primaire (groupe minimal d’attributs permettant de
déterminer un tuple unique dans la relation).
Exemple :
Voiture(N°Voiture : Entier, Marque : Marque_Voiture, Type :
Caractère(10), Couleur : COULEUR).
Bases de données TSI / S2
82
Modèle Relationnel
II. Concepts de base du modèle relationnel
5-Base de données relationnelle :
C’est une base de données dont le schéma est un ensemble de
schémas de relations et dont les occurrences sont des tuples
de ces relations.
Bases de données TSI / S2
83
6- Degré de relation :
Le degré d’une relation est le nombre d’attributs qui participent à
la relation.
Exemple :
Soit la table Voiture suivante :
Modèle Relationnel
II. Concepts de base du modèle relationnel
N°Voiture Marque Type Couleur
11-1 1999
11-2 2000
Renault
Peugeot
R19
306
Bleu
Vert
C’est une relation de degré 4.
Bases de données TSI / S2
84
Modèle Relationnel
II. Concepts de base du modèle relationnel
7- Cardinalité d’une relation :
La cardinalité d’une relation est le nombre de ses tuples.
Exemple :
La cardinalité de la table Voiture de l’exemple précédent est 2.
Bases de données TSI / S2
85
Modèle Relationnel
II. Concepts de base du modèle relationnel
8-Contraintes d’intégrité :
Une contrainte d’intégrité est une règle que doivent respecter les
valeurs de certains attributs ou certains tuples pour assurer la
cohérence du contenu de la BD.
Exemple :
Soit la relation Produit suivante:
Produit(Code prod, Design, Qté_stock, Prix achat, Prix vente)
La quantité en stock doit être supérieure à 0.
Le prix de vente doit être supérieure au prix d’achat.
Bases de données TSI / S2
86
Modèle Relationnel
II. Concepts de base du modèle relationnel
9- Clé primaire :
C’est le plus petit sous-ensemble d’attributs d’une relation permettant
d’identifier chacun de ses tuples (même signification vue dans le MCD).
Exemple :
Soit la relation Produit(Code prod, Design, Qté_stock, Prix unitaire)
L’attribut Code prod est la clé primaire de cette relation.
Bases de données TSI / S2
87
Modèle Relationnel
II. Concepts de base du modèle relationnel
10-Clé étrangère :
Une clé étrangère d’une relation est une clé primaire d’une autre
relation.
Exemple :
Soient les deux relations Dépôt et Produit :
Dépôt(N°dépôt, Nom dépôt, Adresse dépôt).
Produit(Code prod, Design, Qté_stock, Prix unitaire, N°dépôt).
N° dépôt est une clé étrangère dans la relation produit.
Bases de données TSI / S2
88
Modèle Relationnel
II. Concepts de base du modèle relationnel
11-Valeur Nulle :
Une valeur nulle désigne une valeur inconnue que peut avoir un attribut
à un instant donné.
Exemple :
Soit la table Personne :
N°Personne Nom
personne
Date
naissance
adresse Profession
1
2
Ali
Fatima
-
22/04/1975
Rabat
Fès
Étudiant
Docteur
La date de naissance de la personne N°1 est une valeur nulle.
Bases de données TSI / S2
89
Modèle Relationnel
III. L’algèbre relationnelle
L’algèbre relationnelle est un ensemble d’opérations
formelles sur les relations.
Deux types d’opérations à distinguer :
Opérations unaires.
Opérations binaires
Bases de données TSI / S2
90
III. L’algèbre relationnelle
III.1. Opérations unaires
1-Projection :
La projection d’une relation R de schéma R=(A1, A2, …An)
sur les attributs Ai1, Ai2, …Aip (avec pn et ijik) est une
relation T de schéma T=(Ai1, Ai2, …Aip) dont les tuples
sont obtenus par élimination des valeurs des attributs
n’appartenant pas à T et éventuellement par suppression
des tuples en double.
On note : T=(R/Ai1, Ai2, …Aip) ou T=Proj(R/Ai1, Ai2, …Aip).
Bases de données TSI / S2
91
III. L’algèbre relationnelle
III.1. Opérations unaires
Exemple : Personne(N°personne, Nom, Prénom, Ville)
N°personne Nom Prénom Ville
1 Alami Mohamed Rabat
2 Omari Ali Fès
3 Mourchid Mohamed Meknès
4 Mamoune Kamal Rabat
5 Bennani Ali Fès
T1=Proj(Personne/Prénom, Ville)
Bases de données TSI / S2
92
III. L’algèbre relationnelle
III.1. Opérations unaires
T1=Proj(Personne/Prénom, Ville) est la table suivante :
Prénom Ville
Mohamed Rabat
Ali Fès
Mohamed Meknès
Kamal Rabat
Bases de données TSI / S2
93
III. L’algèbre relationnelle
III.1. Opérations unaires
2- Sélection :
La sélection (ou aussi restriction) de la relation R par un
prédicat P est la relation T de même schéma dont les tuples sont
ceux de R vérifiant le prédicat P.
P est une proposition logique faisant intervenir les attributs de R,
des opérateurs relationnels <, >, <, = et/ou des opérateurs
logiques ET, OU, NON…
On note : T=R[P] ou T=select(R/P)
Bases de données TSI / S2
94
Exemple :
T2=select(Personne/Ville= « Rabat »)
III. L’algèbre relationnelle
III.1. Opérations unaires
N°personne Nom Prénom Ville
1 Alami Mohamed Rabat
4 Mamoune Kamal Rabat
Bases de données TSI / S2
95
III. L’algèbre relationnelle
III.2. Opérations binaires
1- Produit cartésien :
Le produit cartésien de deux relations R et S de schéma quelconque est une relation T
ayant pour attributs ceux de R et de S et dont les tuples sont toutes les concaténations
d’un tuple de R à un tuple de S.
On note : T=RS ou T=Product(R, S)
Exemple : Soient les deux relations Produit et Fournisseur :
Référence Libellé
AX01 Cordon
AY02 Piston
Code
Fournisseur
Nom
Fournisseur
AF09 Mourchid
AF08 Alami
Bases de données TSI / S2
96
III. L’algèbre relationnelle
III.2. Opérations binaires
La relation ProduitFournisseur est :
Référence Libellé Code
Fournisseur
Nom
Fournisseur
AX01 Cardan AF09 Mourchid
AX01 Cardan AF08 Alami
AY02 Piston AF09 Mourchid
AY02 Piston AF08 Alami
Bases de données TSI / S2
97
2- Jointure :
La jointure de deux relations R1 et R2 selon une proposition P est la
relation R3 contenant l’ensemble des tuples du produit cartésien R1R2
satisfaisant la proposition P. On note : R3=join(R1, R2/P).
Notons que P est une proposition logique portant sur deux attributs c1 de
R1 et c2 de R2 définis sur le même domaine.
III. L’algèbre relationnelle
III.2. Opérations binaires
Bases de données TSI / S2
98
III. L’algèbre relationnelle
III.2. Opérations binaires
Référenc
e
Libellé Prix
unitaire
M11 Chemise 190
G23 Costume 1400
M5 Chemise 290
L09 Pantalon 400
Num Commande Référence Qté cdée
101 M11 2
102 G23 1
103 M1 3
Exemple :
Bases de données TSI / S2
99
T=Join(Commande, Produit / Commande.Référence=Produit.Référence)
III. L’algèbre relationnelle
III.2. Opérations binaires
Num
Commande
Référence Qté cdée Libellé Prix
unitaire
101 M11 2 Chemise 190
102 G23 1 Costume 1400
103 M11 3 Chemise 190
Bases de données TSI / S2
100
3- Union :
L’union de deux relations R et S ayant le même schéma est une relation T de même
schéma et contenant l’ensemble des tuples de R et de S (sans répétition).
On note : T=RS ou T=Union(R, S).
Exemple : Soient les deux relations « Étudiants » et « Employés » :
III. L’algèbre relationnelle
III.2. Opérations binaires
CIN Nom prénom Adresse
90 772 Omari Aziz Adr 1
89 452 Ziani Ahmed Adr 2
88 396 Hichami
Amina
Adr 3
CIN Nom prénom Adresse
92 411 Agoumy Bahia Adr 11
85 410 Alami Mohamed Adr 22
89 452 Ziani Ahmed Adr 2
98 396 Doumi Kamal Adr 33
Bases de données TSI / S2
101
Personne=Union(Étudiants, Employés)
III. L’algèbre relationnelle
III.2. Opérations binaires
CIN Nom prénom Adresse
90 772 Omari Aziz Adr 1
89 452 Ziani Ahmed Adr 2
88 396 Hichami Amina Adr 3
92 411 Agoumy Bahia Adr 11
85 410 Alami Mohamed Adr 22
98 396 Doumi Kamal Adr 33
Bases de données TSI / S2
102
4- Différence :
La différence de deux relations R et S ayant le même schéma est une
relation T de même schéma et contenant l’ensemble des tuples de
R et n’appartenant pas à S.
On note : T=R-S ou T=Minus(R, S)
Exemple : Soit T=Minus(Étudiants, Employés)
III. L’algèbre relationnelle
III.2. Opérations binaires
CIN Nom prénom Adresse
90 772 Omari Aziz Adr 1
88 396 Hichami Amina Adr 3
Bases de données TSI / S2
103
5- Intersection :
L’intersection de deux relations R et S est une relation de même schéma contenant les
tuples appartenant à la fois à R et S.
On note : T=RS ou T=Intersect(R, S)
Exemple : La relation P=Intersect(Étudiants, Employés) est :
III. L’algèbre relationnelle
III.2. Opérations binaires
CIN Nom prénom Adresse
89 452 Ziani Ahmed Adr 2
Bases de données TSI / S2
104
6- Division :
Le quotient de la relation R de schéma R=(A1, A2, …An) par la relation
S=(Ap+1, Ap+2, …An) est une relation Q de schéma Q=(A1, A2, …Ap)
formée de tous les tuples, qui concaténés à chacun de S donne
toujours un tuple de R.
On note : Q=RS ou Q=Div(R, S).
III. L’algèbre relationnelle
III.2. Opérations binaires
Bases de données TSI / S2
105
Exemple :
Prenons la relation T suivante :
III. L’algèbre relationnelle
III.2. Opérations binaires
Code
Vendeur
Nom
Vendeur
Référence
produit
Libellé
produit
V11 Fatmy X01 Piston
V11 Fatmy X02 Roue
V12 Madani X01 Piston
V12 Madani X02 Roue
V13 Khaldi X02 Roue
Bases de données TSI / S2
106
Et la relation Produit suivante:
La relation Vendeur=Div(T, Produit) est :
III. L’algèbre relationnelle
III.2. Opérations binaires
Référence produit Libellé produit
X01 Piston
X02 Roue
Code Vendeur Nom Vendeur
V11 Fatmy
V12 Madani
Bases de données TSI / S2
107
• Exercice :
Soit le schéma relationnel suivant :
Médicament(Num médic, Nom médic, Dosage)
Pharmacie(Num Phar, Nom phar, dresse)
Achat(Num Pharm, Num médic, Date, quantité)
Expliquer la requête relationnelle suivante :
R1=Select(Achat/quantité>10 et date=”20/04/2001”),
R2=Select(Médicament/Nom medic=”aspirine »)
R3=Join(R1, R2/ R1.Num médic=R2.Num médic),
R4=Proj(R3/Num phar, dosage),
R5=Join(R4, Pharmcie/ R4.numphr=Pharmacie.numphr),
Résultat=Proj(R5/Nom phar, adresse, dosage).
Bases de données TSI / S2
108
Modèle Relationnel
IV- Passage du MCD au modèle relationnel
Règle 1 :
Toute entité du modèle Entité/Association est représentée par une relation dans
le schéma relationnel équivalent. La clé primaire de cette relation est
l’identifiant de cette entité.
Exemple :
Pièce Commande
Num_Pièce
Libellé_pièce
Prix_unit
Num_cde
Date_cde
Contenir
QTITEC
0, n 1, n
Bases de données TSI / S2
109
Les entités Pièce et Commande deviennent des relations dans le modèle
relationnel :
Pièce(Num_Pièce : Numérique(5) ; Libellé_pièce : Caractère(20) ; Prix_unit :
Numérique(10))
Commande(Num_cde : Numérique(5) ; Date_cde : Date)
Modèle Relationnel
IV- Passage du MCD au modèle relationnel
Bases de données TSI / S2
110
Règle 2 :
Toute entité Ei ayant une cardinalité 0,1 ou 1,1 via une association avec
une entité Ej est traduite par l’introduction de l’identifiant Ij de Ej dans
la relation Ri correspondante à Ei.
Ij est une clé étrangère dans la relation Ri.
Exemple :
Modèle Relationnel
IV- Passage du MCD au modèle relationnel
Commande Client
NCDE
DATEC
NCLI
NOMCLI
Concerner
1, 1 1, n
Bases de données TSI / S2
111
L’entité Commande devient dans le modèle relationnel :
Commande(NCDE : Numérique(5) ; DATEC: Date ;
NCLI : Numérique(4))
Modèle Relationnel
IV- Passage du MCD au modèle relationnel
Bases de données TSI / S2
112
Règle 3 :
Toute relation (association) plusieurs à plusieurs du MCD, possédant
éventuellement des propriétés, est traduite par une relation dont la clé
primaire est composée de tous les identifiants des entités participantes
à cette association.
Exemple:
Modèle Relationnel
IV- Passage du MCD au modèle relationnel
Produit Commande
Cod_prod
Libellé_ prod
Prix_unit
Num_cde
Date_cde
Contenir
QTITEC
0, n 1, n
Bases de données TSI / S2
113
La relation contenir sera traduite par une table :
Contenir(Cod_prod : Numérique(5), Num_cde :
Numérique(5), QTITEC : Numérique(7))
1, n
Modèle Relationnel
IV- Passage du MCD au modèle relationnel
Bases de données TSI / S2
1
Le Langage SQL (1)
 INTRODUCTION
 Le SQL est un langage structuré de requêtes qui permet de
créer, de modifier et gérer des informations dans des BDR
 Le sigle SQL signifie "Structured Query Language", soit en français
"Langage de recherche structuré".
 Il a été développé par IBM au cours des années 70 et son
nom était SEQUEL, abréviation de Structured English
QUEry Language
2
Le Langage SQL (2)
 SQL a été normalisé par ANSI (American National Standards
Institute) et par ISO (International Organization for
Standardization).
 Une troisième norme (SQL3) est en cours de rédaction depuis 1999
par l'ANSI et l'ISO,
 Cette normalisation a donné naissance à une 1ère version
(SQL1) en 1987 puis à une 2ème version (SQL2) en 1992
3
Le Langage SQL (3)
 Malgré la normalisation ISO, il existe plusieurs variantes de
SQL sur le marché car chaque éditeur de SGBDR tente d’étendre
le standard pour accroître l’attrait commercial de son produit
 Une requête en SQL commence par les mots clés: SELECT,
DELETE, UPDATE, INSERT INTO, CREATE et DROP
 Chaque requête SQL doit obligatoirement se terminer par un
Point Virgule
 On distingue 2 types de requêtes: Actions et Sélections
4
Le Langage SQL (4)
I. Requêtes Actions
 Sont des requêtes qui permettent de créer des tables, d’ajouter, de
supprimer des enregistrements d’une table, d’ajouter une colonne…
 L’instruction CREATE TABLE permet de créer une nouvelle table
Syntaxe
CREATE TABLE Nom_table (champ1 type CONSTRAINT
nom_contrainte PRIMARY KEY, champ2 type [NOT NULL], …,
champN type [NOT NULL]);
1. Création d’une table avec un seul champ comme clé primaire
5
Le Langage SQL (5)
CREATE TABLE Nom_table (champ1 type [NOT NULL],
champ2 type [NOT NULL], …, champN type, CONSTRAINT
nom_contrainte PRIMARY KEY (champ1, champ2,…)) );
2. Création d’une table avec plusieurs champs comme clé primaire
/* Créez une requête SQL permettant de créer la table EMPLOYES ( Nemployé,
Nom, Prénom, Fonction, Adresse, Codeville) tels que le 1er champ est de type entier
les autres de type texte ayant respectivement une taille de: 25, 20, 15 et 50.
Tandis que le champ Codeville est de type Entier long */
CREATE TABLE EMPLOYES ( Nemployé INTEGER CONSTRAINT nom_index
PRIMARY KEY, Nom TEXT(25), Prénom TEXT(20), Fonction TEXT(15),
Adresse TEXT(50), Codeville LONG) ) ;
6
Le Langage SQL (6)
 Les conventions relatives aux noms des tables et des champs varient quelque
peu d'un SGBD à l'autre. En ce qui concerne plus particulièrement les champs:
 Le nombre de caractères ne doit pas être trop grand (64 dans Access, 18 à 30
dans d'autres SGBD) ;
 Seuls les lettres, les chiffres et le caractère de soulignement sont autorisés.
Access admet les caractères accentués. Il admet aussi l'espace, mais le nom du
champ doit alors être écrit entre crochets ;
 Certains SGBD requièrent que le nom d'un champ commence par une lettre,
mais ce n'est pas le cas d'Access ;
7
Le Langage SQL (7)
 Les termes faisant partie du vocabulaire du langage SQL sont interdits ("date"
par exemple). Ce sont les mots réservés.
 Booléen (Oui / Non) : BIT ;
 Nombre entier : SHORT (entier), SMALLINT (entier), LONG (entier long),
INTEGER (entier long), BYTE (octet) ;
 Voici un échantillon représentatif des différentes façons d'exprimer un type
de données lors de la création d'une table en SQL dans Access :
 Nombre réel : SINGLE (réel simple), DOUBLE (réel double), NUMERIC
(réel double) ;
8
Le Langage SQL (8)
 Monétaire : CURRENCY, MONEY ;
 Date/Heure : DATE, TIME, DATETIME ;
 Texte : VARCHAR (255 caractères), CHAR(n) ou TEXT(n) (n caractères),
LONGTEXT (mémo, 65 535 caractères =32K max.) ;
 Fichier binaire : LONGBINARY (Objet OLE) ;
 Compteur : COUNTER (NuméroAuto).
Remarque:
On notera qu'il n'est pas possible de créer un champ de type hypertexte via
une commande SQL dans Access. Même remarque en ce qui concerne les
listes de choix.
9
Le Langage SQL (9)
/* Créez une requête SQL permettant de créer la table DETAILS ( Ncommande,
Réf, Pu,Quantité, Remise) tels que les champs sont de type respectivement:
entier long, texte de taille 30, monétaire, entier et réel simple et tel que aussi les
champs Pu & Quantité sont non nuls*/
CREATE TABLE DETAILS ( Ncommande Integer, Réf Char(30),
Pu Currency NOT NULL, Quantité Smallint NOT NULL, Remise Single,
CONSTRAINT nom_index PRIMARY KEY ( Ncommande, Réf ) ) ;
 L’instruction ALTER TABLE permet d’ajouter ou de supprimer
un seul champ à une table. Elle permet aussi la création et la suppression
des liens entre les tables d’une base de données.
10
Le Langage SQL (10)
/* Créez une requête SQL permettant de créer la table VILLES ( Codeville, Ville)
tels que le 1er champ est de type NuméroAuto et le deuxième est de type texte
ayant une taille de 20*/
CREATE TABLE VILLES ( Codeville Counter CONSTRAINT nom_index
PRIMARY KEY, Ville Text(20) ) ;
/* Modifiez la table EMPLOYES en déclarant le champ "CodeVille" comme
clé étrangère, puis créez un lien nommé lien_ville sur le champ
CodeVille, en précisant que le côté 1 du lien est le champ Code_Ville
de la table VILLES .*/
11
Le Langage SQL (11)
ALTER TABLE EMPLOYES ADD CONSTRAINT Lien_ville
FOREIGN KEY (Code_Ville) REFERENCES VILLES (Code_Ville);
/* Supprimer le lien nommé lien_ville existant entre la table EMPLOYES et
la table VILLES selon le champ Codeville.*/
ALTER TABLE EMPLOYES DROP CONSTRAINT Lien_ville;
/* Créez une requête SQL permettant d’ajouter le champ Codecli à la table
DETAILS. Ce champ est de type texte, de taille 20 caractères et il est non null
ALTER TABLE DETAILS ADD COLUMN Codecli TEXT(20) NOT NULL;
12
Le Langage SQL (12)
 L’instruction DROP TABLE permet de supprimer une table d’une base
de données
/* Créez une requête SQL permettant de supprimer le champ Codecli de la table
DETAILS.
ALTER TABLE DETAILS DROP COLUMN Codecli ;
Syntaxe
DROP TABLE Nom_table ;
13
Le Langage SQL (13)
Soit la table ACTEURS créée sous ACCESS:
ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films)
/* Créez une requête SQL permettant de supprimer la table DETAILS
définitivement de la base de données
DROP TABLE DETAILS ;
 L’instruction DELETE permet d’effacer des enregistrements d’une
table
/* Effacez tous les enregistrements de la table ACTEURS*/
14
Le Langage SQL (14)
DELETE * FROM ACTEURS ;
(Ou bien )
DELETE N_act FROM ACTEURS ;
/* Effacez tous les acteurs de nationalité marocaine*/
DELETE * FROM ACTEURS WHERE Nationalité= "marocaine";
 L’instruction UPDATE permet la mise à jour d’une table
 Syntaxe : UPDATE table SET nouvellesvaleurs WHERE critères ;
15
Le Langage SQL (15)
/* Créez une requête permettant de modifier l’adresse de l'employé numéro 10
tout en sachant que la nouvelle adresse sera "10 Avenue Mohamed VI, Tanger"*/
UPDATE EMPLOYES SET Adresse = "10 Avenue Mohamed VI, Tanger"
WHERE Nemployé = 10 ;
/* Créez une requête permettant d’augmenter de 3% le salaire de tous les
acteurs */
UPDATE ACTEURS SET Salaire = Salaire * 1.03 ;
 L’instruction INSERT INTO permet d’ajouter un ou plusieurs
enregistrements à une table
16
Le Langage SQL (16)
1. Requête ajout d’un seul enregistrement
INSERT INTO Nom_table [(champ1, champ2, …)]
VALUES (valeur1, valeur2, …) ;
Syntaxe
2. Requête ajout de plusieurs enregistrements
INSERT INTO Nom_table 1 [IN externaldatabase] (Champ1, Champ2, …)
SELECT (Champ1, Champ2, …)
FROM Nom_table 2 ;
17
Le Langage SQL (17)
/* Créez une requête permettant d’ajouter l’enregistrement suivant dans
la table EMPLOYES: (100, BEN AZOUZ, Aziz, Ingénieur, 90050) */
INSERT INTO EMPLOYES (Nemployé, Nom, Prénom, Fonction, Codeville)
VALUES (100, "BEN AZOUZ", "Aziz", "Ingénieur", 90050) ;
/* Soit la table NOUVEAUX_EMPLOYES (Nemployé, Nom, Prénom, Fonction, Adr,
Codeville) Supposons que cette table contient des enregistrements. Question:
Ajoutez tous les enregistrements de la table ci-dessus dans la table EMPLOYES*/
INSERT INTO EMPLOYES
SELECT * FROM NOUVEAUX_EMPLOYES ;
18
Le Langage SQL (18)
I. Requête SELECTION
 Une requête de type SELECTION permet d'interroger une base
de données
 Le résultat d’une telle requête est renvoyé sous forme d’une table
formée d’un ou plusieurs attributs.
19
Le Langage SQL (3)
Syntaxe
SELECT [Prédicat]
{* / table.* /[table.attribut1 As alias1], [table.attribut2 As alias2], …}
FROM Liste de table [IN externaldatabase]
[WHERE Critère de sélection]
[GROUP BY Liste des attributs]
[HAVING Critère de sélection]
[ORDER BY Critère d’ordre]
20
Le Langage SQL (4)
Remarques
 [ ] signale une clause optionnelle, c.à.d on peut utiliser la requête SELECT
sans cette clause
 Chaque instruction SQL doit se terminer par un point-virgule
Elément Description
Prédicat L’un des prédicats suivants: ALL, DISTINCT,
DISTINCTROW ou TOP. Les prédicats permettent de limiter le
nombre d’enregistrements renvoyés. ALL est choisi par défaut
* Indique que tous les champs spécifiés seront
sélectionnés
21
Le Langage SQL (5)
Elément Description
table Nom de la table contenant les
tuples à sélectionner
attribut1, attribut2 Noms des champs à extraire.
alias1, alias2 Utilisés pour renommer un attribut
externaldatabase Nom de la base de données contenant les tables si
elles ne se trouvent pas dans la base de données en cours
22
Le Langage SQL (6)
Exemple 1
Soit la table ACTEURS créée sous ACCESS:
ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films)
/* Afficher tous les champs et tous les enregistrements de la table ACTEURS*/
SELECT * FROM ACTEURS;
/* Afficher uniquement le Nom et Prénom de chaque Acteur */
SELECT Nom, Prénom FROM ACTEURS;
/* Afficher les différentes nationalités sans doublons même si plusieurs acteurs
ont la même nationalité */
SELECT DISTINCT Nationalité FROM ACTEURS;
23
Le Langage SQL (7)
/* Afficher 50% des acteurs de la table ACTEURS*/
SELECT TOP 50 PERCENT * FROM ACTEURS;
/* Afficher les 3 premiers acteurs de la table ACTEURS */
SELECT TOP 3 * FROM ACTEURS;
 Avec l’instruction SELECT, il est possible d’utiliser les fonctions
suivantes pour effectuer des calculs:
SUM () renvoie la somme d’un champ
AVG () renvoie la moyenne d’un champ
MAX () renvoie la valeur maximale d’un champ
MIN () renvoie la valeur minimale d’un champ
COUNT (*) renvoie le nombre d’enregistrements de la table
24
Le Langage SQL (8)
/* Afficher le nombre total d’enregistrements de la table ACTEURS et nommer
le champ retourné Nombre total*/
SELECT COUNT(*) As [Nombre Total] FROM ACTEURS;
/* Afficher le nombre total d’enregistrements de la table ACTEURS */
SELECT COUNT(*) FROM ACTEURS;
/* Afficher le nombre d’enregistrements de la table ACTEURS qui ont une entrée dans
le champ Nom et nommer le champ retourné Nombre d’entrée*/
SELECT COUNT(Nom) As [Nombre d’entrée] FROM ACTEURS;
25
Le Langage SQL (9)
/* Afficher la moyenne des salaires de la table ACTEURS et nommer
le champ retourné Moyenne des salaires*/
SELECT AVG(Salaire) As [Moyenne des salaires] FROM ACTEURS;
/* Afficher le totale des salaires de la table ACTEURS et nommer le champ
retourné Totale des salaires */
SELECT SUM(Salaire) As [Totale des salaires] FROM ACTEURS;
/* Afficher le salaire le plus élevé de la table ACTEURS et nommer le champ retourné
Salaire maximal*/
SELECT MAX(Salaire) As [Salaire maximal] FROM ACTEURS;
26
Le Langage SQL (10)
/* Afficher l’âge de l’acteur le plus jeune et nommer le champ retourné Age minimal */
SELECT MIN(Age) As [Age minimal] FROM ACTEURS;
Les éléments de la clause WHERE
 Ils permettent de définir la condition dans cette clause. La clause peut
être accompagnée des opérateurs logiques AND, OR ou NOT
Comparaison à une valeur (=, <, >, >=, <=, <>)
Comparaison à une fourchette de valeurs (BETWEEN … AND)
Comparaison à une liste de valeur ( IN (. , . ,...) )
Comparaison à un filtre (LIKE)
Test "tous" ou "au moins" (ALL, ANY/SOME)
Test existentiel (EXISTS)
27
Le Langage SQL (11)
/* Afficher tous les noms d’acteur dont l’âge est supérieur à 25*/
SELECT Nom FROM ACTEURS WHERE Age >= 25;
/* Afficher tous les noms d’acteur dont la nationalité est américaine et l’âge est
supérieur à 25*/
SELECT Nom FROM ACTEURS
WHERE (Nationalité="américaine") AND (Age >= 25);
/* Afficher tous les noms d’acteur dont la nationalité est américaine ou l’âge est
supérieur à 25*/
SELECT Nom FROM ACTEURS
WHERE (Nationalité="américaine") OR (Age >= 25);
/* Afficher les acteurs dont l’âge est entre 35 et 50 */
SELECT * FROM ACTEURS WHERE Age BETWEEN 35 AND 50;
28
Le Langage SQL (12)
/* Afficher tous les acteurs dont la nationalité est américaine, française ou marocaine*/
SELECT * FROM ACTEURS
WHERE Nationalité IN ("américaine","française", "marocaine");
/* Afficher tous les noms d’acteurs qui commencent par "DE" */
SELECT Nom FROM ACTEURS WHERE Nom LIKE "DE*";
/* Afficher tous les noms d’acteur ne commençant pas par D et ayant 4 lettres */
SELECT Nom FROM ACTEURS
WHERE Nom NOT LIKE "D*" AND Nom LIKE "????";
/* Afficher le nom d’acteur le plus âgé */
SELECT Nom FROM ACTEURS
WHERE Age >= ALL (SELECT Age FROM ACTEURS );
29
Le Langage SQL (13)
/* Afficher le nom d’acteur le plus jeune*/
SELECT Nom FROM ACTEURS
WHERE Age <= ALL (SELECT Age FROM ACTEURS);
Exemple 2
Soit les tables PRODUITS, COMMANDES, DETAILS et EMPLOYES créées sous
ACCESS:
PRODUITS (Réf , Nompr, Nfournisseur, Pu)
COMMANDES(Ncommande, Codecli, Nemployé, Date commande)
DETAILS(Ncommande, Réf , Quantité, Remise)
EMPLOYES(Nemployé, Nom, Prénom, Fonction, Adresse, Ville)
30
Le Langage SQL (14)
Les éléments de la clause FROM
/* Afficher tous les produits (Réf, Nompr) qui ont été vendus*/
SELECT PRODUITS.Réf, Nompr FROM PRODUITS INNER JOIN DETAILS
ON PRODUITS.Réf = DETAILS.Réf ;
SELECT PRODUITS.Réf, Nompr FROM PRODUITS, DETAILS
WHERE PRODUITS.Réf = DETAILS.Réf ;
(Ou bien )
31
Le Langage SQL (14)
Les jointures
La clause INNER JOIN a fait son apparition avec la version 2 de SQL,
parce que le besoin s'était de préciser à quel type de jointure
appartenait une relation. Plus précisément, on distingue :
la jointure interne, qui utilise INNER JOIN. Ne sont incluses dans le
résultat final que les lignes qui se correspondent dans les deux tables. Ce
cas est celui que nous avons traité précédemment ;
la jointure externe gauche, dans laquelle INNER JOIN est remplacé par
LEFT JOIN. Toutes les lignes de la première table sont incluses dans le
résultat de la requête, même s'il n'existe pas de ligne correspondante
dans la seconde table ;
32
Le Langage SQL (15)
/* Afficher tous les produits (Réf, Nompr, Mois de vente) qui ont été
vendus pendant le mois 6*/
SELECT PRODUITS. Réf, Nompr, Month ([Date commande]) AS [Mois de vente]
FROM PRODUITS INNER JOIN (DETAILS INNER JOIN COMMANDES
ON DETAILS. Ncommande = COMMANDES . Ncommande )
ON PRODUITS . Réf = DETAILS . Réf,
WHERE Month ([Date commande]) =6 ;
(Ou bien )
la jointure externe droite, dans laquelle INNER JOIN est remplacé par
RIGHT JOIN. Toutes les lignes de la seconde table sont incluses dans le
résultat de la requête, même s'il n'existe pas de ligne correspondante dans la
première table.
33
Le Langage SQL (16)
SELECT PRODUITS.Réf, Nompr, Month ([Date commande]) AS [Mois de vente]
FROM PRODUITS, DETAILS, COMMANDES
WHERE PRODUITS.Réf = DETAILS .Réf AND
DETAILS.Ncommande = COMMANDES . Ncommande
AND Month ([Date commande]) =6;
34
Le Langage SQL (17)
/* Afficher tous les produits dont le prix unitaire est supérieur au prix d’au
moins d’un produit vendu avec une remise de 25%*/
SELECT Réf, Nompr FROM PRODUITS
WHERE Pu >= ANY ( SELECT Pu FROM DETAILS Inner Join PRODUITS
ON PRODUITS.Réf=DETAILS.Réf
WHERE Remise = 0.25 );
35
Le Langage SQL (18)
/* Afficher tous les produits (Réf, Nompr) qui ont été vendus par ordre
décroissant selon le champ Réf*/
SELECT PRODUITS. Réf, Nompr
FROM PRODUITS , DETAILS
WHERE PRODUITS. Réf = DETAILS . Réf
ORDER BY PRODUITS.Réf DESC;
Remarque
 Par défaut, le résultat d’une requête sélection est trié selon l’ordre
croissant du premier attribut qui figure dans la clause SELECT
36
Le Langage SQL (19)
 On pourra changer temporairement les noms des tables et de travailler
avec lors de création d’une requête de type sélection
Exemple
/* Afficher tous les produits (Réf, Nompr) qui ont été vendus par ordre
décroissant selon le champ Réf*/
SELECT T1.Réf, Nompr
FROM PRODUITS AS T1 , DETAILS AS T2
WHERE T1.Réf = T2.Réf
ORDER BY T1.Réf DESC;
37
Le Langage SQL (20)
Ncommande Réf Quantité Remise
1 R1 10 0.6
1 R2 20 0.6
2 R1 15 0.5
2 R3 10 0.6
2 R6 25 0.9
3 R3 5 0.6
3 R7 65 0.1
3 R8 10 0.6
DETAILS
38
Le Langage SQL (20)
/* Afficher pour chaque commande le total de quantités des produits vendus*/
SELECT Ncommande, SUM(Quantité) AS [Total quantités vendues]
FROM DETAILS
GROUP BY Ncommande ;
/* Afficher pour chaque commande le total de quantités des produits vendus
et tel que ce total est > 60 */
SELECT Ncommande, SUM(Quantité) AS [Total quantités vendues]
FROM DETAILS
GROUP BY Ncommande
HAVING SUM(Quantité) > 60 ;
39
Le Langage SQL (21)
/* Afficher les commandes qui contiennent plus de 3 produits (>=3)*/
SELECT Ncommande, COUNT(Réf) AS [Nombre de produits]
FROM DETAILS
GROUP BY Ncommande
HAVING COUNT(Réf) >=3 ;
/* Afficher pour chaque commande le total de quantités des produits vendus avec
une remise de 6% et tel que ce total est > 60 */
SELECT Ncommande, SUM(Quantité) AS [Total quantités vendues]
FROM DETAILS
WHERE Remise=0.6
GROUP BY Ncommande
HAVING SUM(Quantité) > 60 ;
40
Le Langage SQL (21)
/* Afficher les employés qui ont vendu plus de 100 commandes*/
SELECT Nemployé, COUNT(Ncommande) AS [Nombre de commandes vendues]
FROM COMMANDES
GROUP BY Nemployé
HAVING COUNT(Ncommande) > 100 ;
/* Afficher les employés de la ville de Rabat qui ont vendu plus de 100 commandes*/
SELECT EMPLOYES.Nemployé, COUNT(*) AS [Nombre de commandes vendues]
FROM COMMANDES, EMPLOYES
WHERE EMPLOYES.Nemployé=COMMANDES.Nemployé AND Ville =« Rabat"
GROUP BY EMPLOYES.Nemployé
HAVING COUNT(*) > 100 ;

Contenu connexe

Tendances

Algorithme chap 1
Algorithme chap 1Algorithme chap 1
Algorithme chap 1
NAWEL_DERBEL
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
Ines Ouaz
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
IbtissameAbbad1
 
Chapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CChapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en C
Abdelouahed Abdou
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
Aziz Darouichi
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partie
kadzaki
 
Cours des bases de données
Cours des bases de données Cours des bases de données
Cours des bases de données
yassine kchiri
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
Aziz Darouichi
 
Cours Base de données relationnelles
Cours Base de données relationnellesCours Base de données relationnelles
Cours Base de données relationnelles
Aymen Kasmi
 
Formation python
Formation pythonFormation python
Formation python
j_lipaz
 
Chapitre i architectures des processeurs récents
Chapitre i architectures des processeurs récentsChapitre i architectures des processeurs récents
Chapitre i architectures des processeurs récents
Sana Aroussi
 
Cours python
Cours pythonCours python
Cours python
salmazen
 
Les structures de données.pptx
Les structures de données.pptxLes structures de données.pptx
Les structures de données.pptx
PROFPROF11
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
Shellmates
 
Architecture des ordinateurs Elaboré par- ABIDA Mounir.ppt
Architecture des ordinateurs Elaboré par- ABIDA Mounir.pptArchitecture des ordinateurs Elaboré par- ABIDA Mounir.ppt
Architecture des ordinateurs Elaboré par- ABIDA Mounir.ppt
wafawafa52
 
Cours langage c
Cours langage cCours langage c
Cours langage c
coursuniv
 
Fascicule tp programmation c
Fascicule tp programmation cFascicule tp programmation c
Fascicule tp programmation c
Missaoui Abdelbaki
 
TP C++ : Correction
TP C++ : CorrectionTP C++ : Correction
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
slimyaich3
 
Cours c#
Cours c#Cours c#
Cours c#
zan
 

Tendances (20)

Algorithme chap 1
Algorithme chap 1Algorithme chap 1
Algorithme chap 1
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Chapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CChapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en C
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Cours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partieCours php & Mysql - 1ére partie
Cours php & Mysql - 1ére partie
 
Cours des bases de données
Cours des bases de données Cours des bases de données
Cours des bases de données
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Cours Base de données relationnelles
Cours Base de données relationnellesCours Base de données relationnelles
Cours Base de données relationnelles
 
Formation python
Formation pythonFormation python
Formation python
 
Chapitre i architectures des processeurs récents
Chapitre i architectures des processeurs récentsChapitre i architectures des processeurs récents
Chapitre i architectures des processeurs récents
 
Cours python
Cours pythonCours python
Cours python
 
Les structures de données.pptx
Les structures de données.pptxLes structures de données.pptx
Les structures de données.pptx
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
Architecture des ordinateurs Elaboré par- ABIDA Mounir.ppt
Architecture des ordinateurs Elaboré par- ABIDA Mounir.pptArchitecture des ordinateurs Elaboré par- ABIDA Mounir.ppt
Architecture des ordinateurs Elaboré par- ABIDA Mounir.ppt
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 
Fascicule tp programmation c
Fascicule tp programmation cFascicule tp programmation c
Fascicule tp programmation c
 
TP C++ : Correction
TP C++ : CorrectionTP C++ : Correction
TP C++ : Correction
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
Cours c#
Cours c#Cours c#
Cours c#
 

Similaire à Diaporamas-Bases de données.pdf

Cours_BD_M1-EAI-2023.pdf
Cours_BD_M1-EAI-2023.pdfCours_BD_M1-EAI-2023.pdf
Cours_BD_M1-EAI-2023.pdf
stephanecoulibaly3
 
1-Intro to DB.pptx
1-Intro to DB.pptx1-Intro to DB.pptx
1-Intro to DB.pptx
salimtayaadine
 
cours base de données
cours base de donnéescours base de données
cours base de données
Yassine Badri
 
Ecosystème Big Data
Ecosystème Big DataEcosystème Big Data
Ecosystème Big Data
Idriss22
 
introNoSQL.pdf
introNoSQL.pdfintroNoSQL.pdf
introNoSQL.pdf
HanenAbbesEpGhorbel
 
Chap1Concepts-FondamentauxBD.pdf
Chap1Concepts-FondamentauxBD.pdfChap1Concepts-FondamentauxBD.pdf
Chap1Concepts-FondamentauxBD.pdf
BoubakerMedanas
 
base de données -note de cours
base de données -note de cours base de données -note de cours
base de données -note de cours
Yassine Badri
 
Base de Données Chapitre I .pptx
Base de Données Chapitre I .pptxBase de Données Chapitre I .pptx
Base de Données Chapitre I .pptx
AbdoulayeTraore48
 
Bases de donnees fondamentaux
Bases de donnees fondamentauxBases de donnees fondamentaux
Bases de donnees fondamentaux
Rokhaya CISSE
 
spatial data infrastructure
spatial data infrastructurespatial data infrastructure
spatial data infrastructure
Desconnets Jean-Christophe
 
Chapt-1-Cours_BdD-Introduction-SEA-M1-2022 -V1.pdf
Chapt-1-Cours_BdD-Introduction-SEA-M1-2022 -V1.pdfChapt-1-Cours_BdD-Introduction-SEA-M1-2022 -V1.pdf
Chapt-1-Cours_BdD-Introduction-SEA-M1-2022 -V1.pdf
EnochBidima3
 
Intro SGBD et BD.ppt
Intro SGBD et BD.pptIntro SGBD et BD.ppt
Intro SGBD et BD.ppt
Bahaty1
 
Base de donnees Avancees et Intro à NoSQL.ppt
Base de donnees Avancees et Intro à  NoSQL.pptBase de donnees Avancees et Intro à  NoSQL.ppt
Base de donnees Avancees et Intro à NoSQL.ppt
Idriss22
 
Le "Lac de données" de l'Ina, un projet pour placer la donnée au cœur de l'or...
Le "Lac de données" de l'Ina, un projet pour placer la donnée au cœur de l'or...Le "Lac de données" de l'Ina, un projet pour placer la donnée au cœur de l'or...
Le "Lac de données" de l'Ina, un projet pour placer la donnée au cœur de l'or...
Gautier Poupeau
 
Cours BDD.pptx
Cours BDD.pptxCours BDD.pptx
Cours BDD.pptx
IbrahimaBarry49
 
BD_Decisionnel_fin-2020tjtgenieindustriel.ppt
BD_Decisionnel_fin-2020tjtgenieindustriel.pptBD_Decisionnel_fin-2020tjtgenieindustriel.ppt
BD_Decisionnel_fin-2020tjtgenieindustriel.ppt
marocdakhla135
 
infrastructure de données spatiales: notions et enjeux
infrastructure de données spatiales: notions et enjeuxinfrastructure de données spatiales: notions et enjeux
infrastructure de données spatiales: notions et enjeux
Desconnets Jean-Christophe
 
Dwh udl 2014_2015_v0.22 - student
Dwh udl 2014_2015_v0.22 - studentDwh udl 2014_2015_v0.22 - student
Dwh udl 2014_2015_v0.22 - student
Carlos Sanin
 
cours-intro-base-donnees.pdf
cours-intro-base-donnees.pdfcours-intro-base-donnees.pdf
cours-intro-base-donnees.pdf
djamelbentorkia
 

Similaire à Diaporamas-Bases de données.pdf (20)

Cours_BD_M1-EAI-2023.pdf
Cours_BD_M1-EAI-2023.pdfCours_BD_M1-EAI-2023.pdf
Cours_BD_M1-EAI-2023.pdf
 
1-Intro to DB.pptx
1-Intro to DB.pptx1-Intro to DB.pptx
1-Intro to DB.pptx
 
Si bdd
Si bddSi bdd
Si bdd
 
cours base de données
cours base de donnéescours base de données
cours base de données
 
Ecosystème Big Data
Ecosystème Big DataEcosystème Big Data
Ecosystème Big Data
 
introNoSQL.pdf
introNoSQL.pdfintroNoSQL.pdf
introNoSQL.pdf
 
Chap1Concepts-FondamentauxBD.pdf
Chap1Concepts-FondamentauxBD.pdfChap1Concepts-FondamentauxBD.pdf
Chap1Concepts-FondamentauxBD.pdf
 
base de données -note de cours
base de données -note de cours base de données -note de cours
base de données -note de cours
 
Base de Données Chapitre I .pptx
Base de Données Chapitre I .pptxBase de Données Chapitre I .pptx
Base de Données Chapitre I .pptx
 
Bases de donnees fondamentaux
Bases de donnees fondamentauxBases de donnees fondamentaux
Bases de donnees fondamentaux
 
spatial data infrastructure
spatial data infrastructurespatial data infrastructure
spatial data infrastructure
 
Chapt-1-Cours_BdD-Introduction-SEA-M1-2022 -V1.pdf
Chapt-1-Cours_BdD-Introduction-SEA-M1-2022 -V1.pdfChapt-1-Cours_BdD-Introduction-SEA-M1-2022 -V1.pdf
Chapt-1-Cours_BdD-Introduction-SEA-M1-2022 -V1.pdf
 
Intro SGBD et BD.ppt
Intro SGBD et BD.pptIntro SGBD et BD.ppt
Intro SGBD et BD.ppt
 
Base de donnees Avancees et Intro à NoSQL.ppt
Base de donnees Avancees et Intro à  NoSQL.pptBase de donnees Avancees et Intro à  NoSQL.ppt
Base de donnees Avancees et Intro à NoSQL.ppt
 
Le "Lac de données" de l'Ina, un projet pour placer la donnée au cœur de l'or...
Le "Lac de données" de l'Ina, un projet pour placer la donnée au cœur de l'or...Le "Lac de données" de l'Ina, un projet pour placer la donnée au cœur de l'or...
Le "Lac de données" de l'Ina, un projet pour placer la donnée au cœur de l'or...
 
Cours BDD.pptx
Cours BDD.pptxCours BDD.pptx
Cours BDD.pptx
 
BD_Decisionnel_fin-2020tjtgenieindustriel.ppt
BD_Decisionnel_fin-2020tjtgenieindustriel.pptBD_Decisionnel_fin-2020tjtgenieindustriel.ppt
BD_Decisionnel_fin-2020tjtgenieindustriel.ppt
 
infrastructure de données spatiales: notions et enjeux
infrastructure de données spatiales: notions et enjeuxinfrastructure de données spatiales: notions et enjeux
infrastructure de données spatiales: notions et enjeux
 
Dwh udl 2014_2015_v0.22 - student
Dwh udl 2014_2015_v0.22 - studentDwh udl 2014_2015_v0.22 - student
Dwh udl 2014_2015_v0.22 - student
 
cours-intro-base-donnees.pdf
cours-intro-base-donnees.pdfcours-intro-base-donnees.pdf
cours-intro-base-donnees.pdf
 

Dernier

Webinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdfWebinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdf
Institut de l'Elevage - Idele
 
Webinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdfWebinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdf
Institut de l'Elevage - Idele
 
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
manalishivani8
 
Webinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdfWebinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdf
Institut de l'Elevage - Idele
 
cours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdfcours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdf
afigloria194
 
Présentation Mémoire Cybersecurity .pptx
Présentation Mémoire Cybersecurity .pptxPrésentation Mémoire Cybersecurity .pptx
Présentation Mémoire Cybersecurity .pptx
KODJO10
 

Dernier (6)

Webinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdfWebinaire BL 28_06_01_robots de traite.pdf
Webinaire BL 28_06_01_robots de traite.pdf
 
Webinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdfWebinaire BL 28_06_02_Consommation Energie.pdf
Webinaire BL 28_06_02_Consommation Energie.pdf
 
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
Shimla Girls call Service 000XX00000 Provide Best And Top Girl Service And No...
 
Webinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdfWebinaire BL 28_06_03_Transmissibilité.pdf
Webinaire BL 28_06_03_Transmissibilité.pdf
 
cours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdfcours-sur-les-stations-de-pompageen génie civil.pdf
cours-sur-les-stations-de-pompageen génie civil.pdf
 
Présentation Mémoire Cybersecurity .pptx
Présentation Mémoire Cybersecurity .pptxPrésentation Mémoire Cybersecurity .pptx
Présentation Mémoire Cybersecurity .pptx
 

Diaporamas-Bases de données.pdf

  • 1. Diaporamas du cours : Bases de données Préparé par : Hamid BENNIS Enseignant chercheur au Département TCC, EST-UMI Meknès Email : h.bennis@umi.ac.ma Filière (DUT) : Techniques de Son et d’Image-S2 Année Universitaire : 2016– 2017
  • 2. Plan  Introduction aux Bases de Données  Préliminaire  Système de Gestion de Bases de Données  Niveaux de représentation d’une Base de Données  Principaux modèles de données  Modèle Conceptuel de Données (MCD)  Définitions  Règles de construction et Normalisation  Modèle Relationnel  Concepts de base du modèle relationnel  Algèbre relationnelle  Passage du MCD au modèle relationnel  Langage SQL
  • 3. 3 Introduction aux Bases de Données I. Préliminaire I.1. Information & Donnée Définitions : Information : c’est un élément de connaissance concernant des faits, des sujets ou des éléments particuliers. Donnée : représentation conventionnelle d’un élément de connaissance que traite l’ordinateur. Exemple : Informations concernant un client : le nom, le prénom l’adresse, le tel… Bases de données TSI / S2
  • 4. 4 Introduction aux Bases de Données I. Préliminaire Besoins : - Persistance de données. - Quantité très importante de données à gérer. - Cohérence de données, intégrité… - Non redondance de données.  Organisation logique et physique des données indépendamment des traitements. Bases de données TSI / S2
  • 5. 5 Introduction aux Bases de Données I. Préliminaire I.2. Historique Historiquement, l’information a vu deux approches : • Approche système de fichiers • Approche base de données Bases de données TSI / S2
  • 6. 6 Introduction aux Bases de Données I. Préliminaire Approche système de fichiers : •Utiliser un ensemble de fichiers de données. •Définir les données en fonction des traitements (dépendance données/programmes). •Toute application a ses propres fichiers. Bases de données TSI / S2
  • 7. 8 Exemple : Pour gérer l’ensemble des données d’une entreprise, chaque service définit ses fichiers en fonction de ses besoins. • Fichier Client : service "Gestion des clients" (Code client, Nom client, N°rue, ville) • Fichier Commande: service commercial (N°commande, date commande, total commande, code client, nom client, adresse) • Fichier Détail commande : service commercial (N° commande, N°ligne commande, code produit, Prix unitaire, Qté commandée) • Fichier Produit : service "Gestion de stock" (Code produit, libellé produit, Prix unitaire, Qté en stock) Bases de données TSI / S2
  • 8. 9 Inconvénients: •Redondance de données Risque d’incohérence de données lors de la m.à.j des fichiers. •Difficulté des traitements (consultation et m.à.j). •Pas d’intégrité: -On peut passer une commande d’un client qui n’existe pas dans le fichier Client. -Total commande donnée calculée… •Tout contrôle sur les valeurs des données doit être traité par les programmes. •Manque de confidentialité… Bases de données TSI / S2
  • 9. 10 Introduction aux Bases de Données I. Préliminaire Approche base de données : •Date de 1963-63 •Représentation fidèle du monde réel. •Intégration des données dans un seul fichier (la Base de Données). •Indépendance données/programmes. •Gestion d’une quantité importante de données. •Organisation et gestion de la BD réalisées par un logiciel spécifique. Bases de données TSI / S2
  • 10. 12 Introduction aux Bases de Données II. Bases de données Définition : Une base de données (BD) est un ensemble structuré de données peu redondantes que possible enregistrés (stockées) sur des supports accessibles par l’ordinateur de façon à être indépendantes des programmes qui les utilisent. Par exemple, dans une entreprise constituée de plusieurs services (service commercial, service d’approvisionnement, etc.), la BD sera partagée et utilisée par différents services qui n’ont pas les mêmes besoins. Bases de données TSI / S2
  • 11. 13 Introduction aux Bases de Données II. Bases de données Remarque : Ne pas confondre Base de données et banque de données. - Base de données : • ensemble d’informations d’une entreprise ou administration crée pour des besoins de gestion. •données de natures différentes (relatives aux clients, produits, employés…). - Banque de données : • rassemble des informations relatives à un domaine (économique, médical, géographique…) de même nature et de même structure. Par exemple : banque de données documentaire. •l’utilisateur ne connaît pas ce qu’il cherche (recherche au moyen d’une clé…). Bases de données TSI / S2
  • 12. 14 Introduction aux Bases de Données III. Système de Gestion de Bases de Données Définition : Le SGBD est un logiciel (ensemble de programmes) permettant à un utilisateur d’interagir avec une base de données. Le SGBD assure la création et l’exploitation des BD. A titre d’exemple, il permet aux utilisateurs de créer une BD, extraire, modifier ou supprimer des données… Bases de données TSI / S2
  • 13. 15 Introduction aux Bases de Données III. Système de Gestion de Bases de Données P1 P2 P3 SGBD Base de données Bases de données TSI / S2
  • 14. 16 Introduction aux Bases de Données III. Système de Gestion de Bases de Données Le SGBD assure notamment l’interface entre la BD physique et les programmes d’application (P1, P2, P3…) qui réalisent des accès, des traitements et des m.à.j. Contrairement aux programmes utilisés avec les fichiers classiques, on ne connaît pas l’implantation physique des données. Bases de données TSI / S2
  • 15. 17 Introduction aux Bases de Données III. Système de Gestion de Bases de Données Fonctions d’un SGBD : •Intégration des données sans redondance •Partage des données •Intégrité des données •Indépendance données/programmes •Sécurité des données •Confidentialité… Bases de données TSI / S2
  • 16. 18 IV. Les différents niveaux de représentation d’une Base de Données 3 niveaux de représentation d’une base de données : •le niveau interne (schéma physique) •le niveau conceptuel (schéma conceptuel) •le niveau externe (le schéma externe). Quelques exemples de SGBD : ACCESS, INFORMIX, ORACLE, DBASE IV… Bases de données TSI / S2
  • 17. 19 IV. Les différents niveaux de représentation d’une Base de Données Schéma externe 1 Schéma externe 3 Schéma externe 2 Schéma conceptuel Base de données Niveau externe Niveau conceptuel Niveau interne Bases de données TSI / S2
  • 18. 20 IV. Les différents niveaux de représentation d’une Base de Données Niveau interne : •Existence physique •Comment les données sont stockées sur le disque dur •Formats de stockage Niveau conceptuel : •Décrire d’une manière abstraite l’ensemble des données •Organisation logique des données •Élaboration d’un schéma conceptuel : modèle de données. Bases de données TSI / S2
  • 19. 21 IV. Les différents niveaux de représentation d’une Base de Données Niveau externe : •Vision de tout ou partie du schéma conceptuel par un groupe d’utilisateurs concerné par une application •Sous-schéma conceptuel, mais il peut apporter plus d’informations. Bases de données TSI / S2
  • 20. 22 Introduction aux Bases de Données V. Les principaux modèles de données - Modèle de données : description logique des données et des relations qui les associent. -Il existe plusieurs modèles de données : •le modèle hiérarchique, •le modèle réseau, •le modèle relationnel •et récemment le modèle objet. Bases de données TSI / S2
  • 21. 23 Introduction aux Bases de Données V. Les principaux modèles de données Le modèle hiérarchique : •Les données et les relations entre elles sont représentées par un arbre ordonné. •Les premiers systèmes datent des années 60. Ex. IMS (pour Information Management System) d’IBM. •Formalisme de lien hiérarchique entre entités : Entité 1 Entité 2 Entité 3 Bases de données TSI / S2
  • 22. 24 Introduction aux Bases de Données V. Les principaux modèles de données Exemple : Un client peut effectuer une ou plusieurs commandes concernant un ensemble de pièces. Nom client Adresse N° Tel N°commande Date commande N°pièce Prix unitaire Quantité Bases de données TSI / S2
  • 23. 25 Introduction aux Bases de Données V. Les principaux modèles de données Le modèle réseau : •Les enregistrements sont liés par des traits formant un graphe. •Offre plus de liaisons (associations) entre les données. •Normalisé par le groupe CODASYL : Conference On Data Systems Languages en 1971 •Ex. IDS : Integrated Data Store •Formalisme du modèle réseau : Entité 1 Entité 3 Entité 2 Bases de données TSI / S2
  • 24. 26 Introduction aux Bases de Données V. Les principaux modèles de données Exemples : N°commande Date commande Nom client Adresse N° Tel 1 22/04/2003 Alami Adr1 037 -- -- -- 2 22/06/2003 Bases de données TSI / S2
  • 25. 27 Introduction aux Bases de Données V. Les principaux modèles de données Le modèle relationnel : •Inventé par CODD à IBM en 1970. •Repose sur le principe de relation (au sens mathématique) entre les données •Traduire le modèle Entité-Association (modèle schématique) en un modèle réel. •Données structurées en des tables. (voir chap. 3) Bases de données TSI / S2
  • 26. 28 Introduction aux Bases de Données V. Les principaux modèles de données Le modèle objet : •date des années 90 et repose sur le concept d’objet. •Chaque entité est représentée par un objet. •Représentation fidèle du monde réel. •Standard ODMG-93 proposé par Object Database Management Group. Bases de données TSI / S2
  • 27. 30 Modèle Conceptuel de Données Objectif: Après-avoir collecté l’ensemble des données (du système à informatiser) à partir des documents et des fichiers existants, on doit étudier les liens qui existent entre ces données afin de proposer une représentation schématique appelée Modèle Conceptuel de Données (MCD). Bases de données TSI / S2
  • 28. 31 Modèle Conceptuel de Données I. Définitions 1-Propriété : C’est un élément d’information issu du réel perçu susceptible de prendre des valeurs différentes. Exemple : nom client, adresse client. Il y a trois types de propriétés : - Élémentaire (simple) : Age, N°pièce - Composée (concaténée) : Adresse =(Rue, Ville) - Calculée : Montant TVA = Montant HT * Taux TVA Bases de données TSI / S2
  • 29. 32 2-Entité : C’est une concrétisation du réel perçu. Elle est décrite par une liste de propriétés qui lui sont spécifiques. Exemple : Client (Code Client, Nom Client, Adresse Client)  acteur du réel Atelier(N°atelier, Nom Atelier, Nom Chef)  lieu Commande(N°commande, Date commande,Total)  Objet Modèle Conceptuel de Données I. Définitions Bases de données TSI / S2
  • 30. 33 Modèle Conceptuel de Données I. Définitions 3- Relation : Une relation est un ensemble d’interactions semblables qui existent entre les entités. Elle permet d’associer deux ou plusieurs entités. Exemple : Soient les entités Commande(N° commande, Date commande, Total Commande) et Client(N° Client, Nom Client, Adresse Client). La Commande Concerne le Client. "Concerne" est une relation entre les deux entités « Commande » et « Client ». Bases de données TSI / S2
  • 31. 34 Modèle Conceptuel de Données I. Définitions Formalisme du Modèle Entité–Relation : Nom de l’entité 3 Nom propriété 1 Nom propriété 2 …………………. …………………. …………………. Nom de l’entité 2 Nom propriété 1 Nom propriété 2 …………………. …………………. …………………. Nom de l’entité 1 Nom propriété 1 Nom propriété 2 …………………. …………………. …………………. Nom de la Relation Nom propriété 1 Nom propriété 2 Bases de données TSI / S2
  • 32. 35 Modèle Conceptuel de Données I. Définitions Exemple : Un bon de commande contient un ensemble de quantités de pièces fabriquées par des machines spécifiques. Pièce Machine N° Pièce Nom pièce Prix unitaire N° machine Nom machine Durée de vie Commande N° commande Date commande Montant HT Fabriquer Contenir Qté fabriquée/j Qté commandée Bases de données TSI / S2
  • 33. 36 Modèle Conceptuel de Données I. Définitions 4- Occurrence : Une occurrence d’une entité (resp. relation) est un élément particulier de ce type. Exemples : (1, ‘Cylindre’, 300) une occurrence de l’entité « Pièce ». (350) est une occurrence de la relation « Fabriquer ». Bases de données TSI / S2
  • 34. 37 Modèle Conceptuel de Données I. Définitions 5- Identifiant : L’identifiant d’une entité ou d’une relation est une propriété permettant d’identifier une et une seule occurrence de ce type. Exemple : N° pièce est un identifiant de l’entité « Pièce ». N.B. Une entité peut avoir plus d’un identifiant. Une relation peut ne pas avoir d’identifiant. Bases de données TSI / S2
  • 35. 38 Modèle Conceptuel de Données I. Définitions 6- Clé primaire d’une entité : La clé primaire d’une entité est le groupe minimal de propriétés qui identifient cette entité. Exemples : - N° pièce permet d’identifier Nom pièce et Prix unitaire : N°pièce est la clé primaire de l’entité "Pièce". - Les propriétés N°pièce et Nom pièce permettant d’identifier le prix unitaire, mais elles ne constituent pas une clé primaire de l’entité «Pièce». Bases de données TSI / S2
  • 36. 39 7- Clé primaire d’une relation : La clé primaire d’une relation est composée des clés primaires des entités formant cette association. Modèle Conceptuel de Données I. Définitions Exemples : (N°pièce, N°machine) est la clé primaire de la relation "Fabriquer". (N°pièce, N°commande) est la clé primaire de la relation "contenir". Bases de données TSI / S2
  • 37. 40 Modèle Conceptuel de Données I. Définitions 8- Cardinalité : Les cardinalités minimale et maximale d’une entité via une relation indiquent les nombres minimal et maximal d’occurrences de la relation pouvant exister pour une occurrence de cette entité. Bases de données TSI / S2
  • 38. 41 Modèle Conceptuel de Données I. Définitions Exemple 1 : Un bon de commande contient au moins une pièce fabriquée au moins par une machine. Chaque machine fabrique au moins une pièce. Une pièce peut ne pas être commandée. Pièce Machine N° Pièce Nom pièce Prix unitaire N° machine Nom machine Durée de vie Commande N° commande Date commande Montant HT Fabriquer Contenir Qté fabriquée/j Qté commandée 1, n 1, n 0, n 1, n N.B. 0cardinalité minimale1 1cardinalité maximalen Bases de données TSI / S2
  • 39. 42 Modèle Conceptuel de Données I. Définitions Exemple 2 : Une usine contient des machines qui peuvent fabriquer au moins un type de pièce. Chaque pièce peut être fabriquée par une ou plusieurs machines. Chaque type de machine est construit par un ou plusieurs fournisseurs. Le fournisseur peut construire une ou plusieurs marques de machines. Pièce Machine N° Pièce Nom pièce Prix unitaire N° machine Nom machine Durée de vie Fournisseur N° Fournisseur Nom Fournisseur Adresse Fabriquer Construire Qté fabriquée/j Qté machines Fabriquées/j 1, n 1, n 1, n 1, n Bases de données TSI / S2
  • 40. 43 Modèle Conceptuel de Données I. Définitions 9- Dépendance fonctionnelle entre propriétés : Deux propriétés p1 et p2 sont reliées par une dépendance fonctionnelle si la connaissance de p1 détermine une et une seule valeur de p2. On note : p1—df – p2. Exemples : N°pièce – df – Nom pièce N°pièce – df – prix unitaire  N°pièce – df – Nom pièce, prix unitaire N°pièce+N°commande – df – qté commandée Bases de données TSI / S2
  • 41. 44 Modèle Conceptuel de Données I. Définitions 10- Dépendance fonctionnelle élémentaire : p1 et p2 sont reliées par une dépendance fonctionnelle élémentaire si on a : -p1—df – p2. -Aucune partie stricte de p1 ne détermine p2. On note : p1  p2. Bases de données TSI / S2
  • 42. 45 Modèle Conceptuel de Données I. Définitions Exemples :  N°pièce+Nom pièce Prix unitaire (d.f.non élémentaire) On a : N°pièce  prix unitaire  N°pièce+N°commande  Qté commandée Bases de données TSI / S2
  • 43. 46 Modèle Conceptuel de Données I. Définitions 11- Dépendance fonctionnelle élémentaire directe : p1 et p2 sont reliées par une dépendance fonctionnelle élémentaire directe s’il n’existe aucune propriété p3 telle que : p1  p3 et p3  p2. Exemple :  N°commande  Montant TVA n’est pas directe. En effet : N°commande  Montant HT et Montant HT  Montant TVA  N° commande  Nom client n’est pas directe Bases de données TSI / S2
  • 44. 47 Modèle Conceptuel de Données II. Règles de construction Étape 1 : Établissement de la liste des propriétés synonymes =plusieurs signifiants pour un signifié Exemple : N° pièce et Code Pièce sont des synonymes Établir la liste des propriétés à partir des documents échangés entre les différents utilisateurs de la BD. Supprimer les synonymes: Supprimer les propriétés de noms différents provenant d’un ou plusieurs documents ayant la même signification. Bases de données TSI / S2
  • 45. 48 Modèle Conceptuel de Données II. Règles de construction Régler les polysèmes: polysème =un signifiant pour plusieurs signifiés Exemples :  N° dans un document « pièce » signifiant N°pièce et N° dans un autre document « machine » signifiant N°machine. Il faut donc régler ce problème en les remplaçant resp. par N°pièce et N°machine.  Prix peut signifier prix d’achat et prix de vente dans deux documents différents. Un polysème est une propriété qui a plusieurs significations dans un ou plusieurs documents. Bases de données TSI / S2
  • 46. 49 Modèle Conceptuel de Données II. Règles de construction Codification des entités : On doit ajouter des codes identifiant les entités s’ils n’existent pas sur les documents. Exemple : Pièce(Nom pièce, Prix unitaire)  Pièce(N° pièce, Nom pièce, Prix unitaire) Bases de données TSI / S2
  • 47. 50 Étape 2: Établissement du dictionnaire de données Tableau dont les colonnes contiennent : - Le nom abrégé de la propriété, - Sa signification (description), - Son type : Numérique(N), Alphabétique(A), Alphanumérique(AN), Date(D), - Sa longueur, - Sa nature : Élémentaire (E), Concaténée (CO), Calculée (CA), - Observations indiquant les contraintes d’intégrités sur les propriétés, leurs formats de saisie, etc. Modèle Conceptuel de Données II. Règles de construction Exemple : Bases de données TSI / S2
  • 48. 51 Modèle Conceptuel de Données II. Règles de construction Libellé pièce N°pièce N°commande : --------------- Date commande : --/--/--- N° client : -------------- Nom client : -------------------- Adresse : -------------------- -------------------- Prix unitaire Quantité Montant HT Total : ------------------- Bases de données TSI / S2
  • 49. 52 Modèle Conceptuel de Données II. Règles de construction Nom Signification Type Longueur Nature Observation NCDE DATEC NCLI NOMCLI ADRCLI RCLI VCLI NPIECE LIBPIECE QTEC PUNIT MONT TOTAL N° commande Date commande N° client Nom client Adresse Rue Client Ville client N° pièce Libellé pièce Quantité commandée Prix unitaire de pièce Montant HT TOTAL HT de commande N Date N A AN AN A N A N N N N 6 8 6 25 50 30 20 6 30 4 6 10 12 E E E E CO E E E E E E CA CA jj/mm/aaaa Rue + Ville PUNIT*QTE C  MONT Bases de données TSI / S2
  • 50. 53 Étape 3 : dépendances fonctionnelles élémentaires directes (DFED) Modèle Conceptuel de Données II. Règles de construction •déterminer les dépendances fonctionnelles élémentaires directes entre les propriétés. •représenter les DFED dans un graphe Les propriétés TOTAL, MONTANT et ADRESSE sont supprimés dans la deuxième étape. Bases de données TSI / S2
  • 51. 54 Exemple : - Liste des DFED associées au document « bon de commande » : NCDE  DATEC, NCLI* NPIECE  LIBPIECE, PUNIT NCLI  NOMCLI, RCLI, VCLI NCDE+NPIECE  QTITEC Modèle Conceptuel de Données II. Règles de construction Bases de données TSI / S2
  • 52. 55 - Graphe des DFED : NCDE NPIECE DATEC NCLI LIBPIECE PUNIT NOMCLI RCLI VCLI QTEC Modèle Conceptuel de Données II. Règles de construction Bases de données TSI / S2
  • 53. 56 Étape 4 : Élaboration du MCD - Identifier les entités et les relations à partir du graphe des DFED - Construire le MCD - Mettre les cardinalité Modèle Conceptuel de Données II. Règles de construction Commande Client NCDE DATEC NCLI NOMCLI RCLI VCLI Pièce NPIECE LIBPIECE PUNIT Concerner Contenir QTEC 1, 1 1, n 1, n 0, n Bases de données TSI / S2
  • 54. 57 Remarque : MCD en cas de plusieurs documents : Deux possibilités se présentent : • Établir une liste globale correspondant à l’ensemble des documents • Établir le MCD de chaque document. Le MCD global est le résultat de la fusion de l’ensemble des MCD. Modèle Conceptuel de Données II. Règles de construction Bases de données TSI / S2
  • 55. 58 La normalisation d’un MCD permet d’établir une conception minimale de la BD (modèle logique). Tout MCD doit vérifier trois formes normales. Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 56. 59 - Première Forme Normale 1FN : Définition : Pour toute occurrence d’une entité, respectivement relation, chaque propriété ne peut prendre qu’une seule valeur. Le MCD est dit en 1FN si toutes ses entités et relations sont en première forme normale. Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 57. 60 Exemple 1 : Passage en première forme normale d’une entité non normalisée Pièce NPIECE LIBPIECE PUNIT QTITEC L’entité Pièce n’est pas normalisée. Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 58. 61 L’entité pièce devient : Pièce Commande N° Pièce Libellé pièce Prix unitaire N° commande Contenir QTITEC 0, n 1, n Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 59. 62 Exemple 2 : Passage en 1FN d’une relation non normalisée Commande Client NCDE DATEC NCLI NOMCLI Concerner 1, 1 1, n QTITEC La relation « Concerner » n’est pas en 1FN. Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 60. 63 Commande Client NCDE DATEC NCLI NOMCLI Concerner 1, 1 1, n Pièce NPIECE Contenir 0, n 1, n QTITEC Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 61. 64 - Deuxième Forme Normale 2FN : Définition : Une entité ou relation est en deuxième forme normale si chaque propriété de cette entité, ou une relation, dépend de sa clé primaire par une dépendance fonctionnelle élémentaire. C.à.d., il n’existe pas de df avec une partie de la clé primaire. Le MCD est dit en 2FN si toutes ses entités et relations sont en deuxième forme normale. Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 62. 65 Exemple 1 : Passage en deuxième forme normale d’une entité en 1FN Commande # NCDE # NPRODUIT - DATE_CDE - QTITEC L’entité « commande » est en 1FN. Mais n’est pas en 2FN. Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 63. 66 Le MCD en 2FN est : Commande Produit NCDE DATE_CDE NPRODUIT Contenir 1, n 0, n QTITEC Remarque : Toute entité en 1FN possédant une clé primaire simple (non composée) est en 2FN. Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 64. 67 Exemple 2 : Passage en 2FN d’une relation en 1FN Produit Machine NPRODUIT LIBPRODUIT NMACH NOMMACH Fabriquer 1, n 1, n Quantité fabriquée/ jour Prix unit. Produit Prix unit. Machine La relation « Fabriquer » est en 1FN Mais n’est pas en 2FN. Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 65. 68 Le MCD en 2FN est : Produit Machine NPRODUIT LIBPRODUIT Prix unit. Produit NMACH NOMMACH Prix unit. Machine Fabriquer 1, n 1, n Quantité fabriquée/ jour Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 66. 69 - Troisième Forme Normale 3FN Modèle Conceptuel de Données III. Normalisation Définition : Une entité ou relation est en troisième forme normale si : •Elle est en 2FN. •Toute propriété de cette entité ou relation dépend de sa clé primaire par une dépendance fonctionnelle élémentaire directe. Bases de données TSI / S2
  • 67. 70 Exemple 1 : Passage en troisième forme normale d’une entité en 2FN Règles de gestion : • Chaque Produit a un code de TVA. • Chaque code peut identifier le taux de TVA correspondant. Produit NPRODUIT LIBPRODUI CODTVA TAUXTVA L’entité « pièce » est en 2FN. Mais n’est pas en 3FN car : NPRODUIT  TAUXTVA n’est pas directe. Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 68. 71 Le MCD en 3FN est : Produit TVA NPRODUIT LIBPRODUI CODTVA TAUXTVA Avoir 1, 1 1, n Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 69. 72 Exemple 2 : Passage en 3FN d’une relation en 2FN Le montant HT d’une ligne de commande est le produit de la quantité et le prix unitaire du produit. Commande Produit NCDE DATE_CDE NPRODUIT PRIX UNIT Contenir 1, n 0, n Montant HT Montant TVA NPRODUIT+ NCDE  Montant TVA n’est pas directe Montant TVA=Montant HT*20% On doit supprimer le MONTANT TVA de la relation Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 70. 73 Commande Produit NCDE DATE_CDE NPRODUIT PRIX UNIT Contenir 1, n 0, n Montant HT MCD en 3FN: Modèle Conceptuel de Données III. Normalisation Bases de données TSI / S2
  • 71. 74 Modèle Relationnel I. Présentation Le modèle relationnel a été inventé en 1970 par CODD à IBM. Il repose sur le concept de relation entre propriétés. Il a connu un grand succès grâce à : - la simplicité : il utilise des structures simples et courantes (tables). - La rigueur de ses concepts (théorie des ensembles, algèbre relationnelle…) - Langage de haut niveau (interrogation et manipulation)  Commercialisation des SGBDR Bases de données TSI / S2
  • 72. 75 Modèle Relationnel I. Présentation N.B. Ne pas confondre le concept de relation du modèle Entité- Relation et celui du modèle relationnel. En effet, dans le modèle Entité-Relation une relation exprime une association entre entités alors que dans le modèle relationnel, il s’agit d’une relation (au sens mathématique) entre propriétés. Exemple : (Code produit, Libellé produit, P.U.) est une relation liant les propriétés d’une entité « Produit ». Bases de données TSI / S2
  • 73. 76 1-Domaine : Un domaine est un ensemble de valeurs que peut prendre une propriété. Exemples : - le domaine des entiers. - le domaine des réels. - Le domaine des booléens {0, 1} - Marque_voiture(Renault, FORD, …)=D1 - COULEUR(Bleu, Vert, …)=D2 Modèle Relationnel II. Concepts de base du modèle relationnel Bases de données TSI / S2
  • 74. 77 Modèle Relationnel II. Concepts de base du modèle relationnel Le produit cartésien d’une liste de domaines D1, D2, …Dn est l’ensemble des n-uplets ou tuples <u1, u2, …nn> tels que uiDi. Exemple : (Peugeot, Vert) est un tuple de D1D2. Bases de données TSI / S2
  • 75. 78 Modèle Relationnel II. Concepts de base du modèle relationnel 2- Relation : une relation est un sous-ensemble du produit cartésien d’une liste de domaines. Elle est caractérisée par un nom significatif et appelée table. Plus simplement, une relation ou table peut être vue comme un tableau à deux dimensions dont les colonnes correspondent aux domaines et les lignes contiennent les tuples. Bases de données TSI / S2
  • 76. 79 Modèle Relationnel II. Concepts de base du modèle relationnel Exemple : D1D2 donne la relation Voiture : Marque Couleur Renault Renault FORD FORD Peugeot Peugeot Bleu Vert Bleu Vert Bleu Vert Bases de données TSI / S2
  • 77. 80 Modèle Relationnel II. Concepts de base du modèle relationnel 3- Attribut : C’est une colonne d’une relation caractérisée par un nom. Exemple : Marque, couleur sont des attributs de la relation voiture. Bases de données TSI / S2
  • 78. 81 Modèle Relationnel II. Concepts de base du modèle relationnel 4- Schéma de relation : Il est composé du nom de la relation, la liste des attributs avec leurs domaines et la clé primaire (groupe minimal d’attributs permettant de déterminer un tuple unique dans la relation). Exemple : Voiture(N°Voiture : Entier, Marque : Marque_Voiture, Type : Caractère(10), Couleur : COULEUR). Bases de données TSI / S2
  • 79. 82 Modèle Relationnel II. Concepts de base du modèle relationnel 5-Base de données relationnelle : C’est une base de données dont le schéma est un ensemble de schémas de relations et dont les occurrences sont des tuples de ces relations. Bases de données TSI / S2
  • 80. 83 6- Degré de relation : Le degré d’une relation est le nombre d’attributs qui participent à la relation. Exemple : Soit la table Voiture suivante : Modèle Relationnel II. Concepts de base du modèle relationnel N°Voiture Marque Type Couleur 11-1 1999 11-2 2000 Renault Peugeot R19 306 Bleu Vert C’est une relation de degré 4. Bases de données TSI / S2
  • 81. 84 Modèle Relationnel II. Concepts de base du modèle relationnel 7- Cardinalité d’une relation : La cardinalité d’une relation est le nombre de ses tuples. Exemple : La cardinalité de la table Voiture de l’exemple précédent est 2. Bases de données TSI / S2
  • 82. 85 Modèle Relationnel II. Concepts de base du modèle relationnel 8-Contraintes d’intégrité : Une contrainte d’intégrité est une règle que doivent respecter les valeurs de certains attributs ou certains tuples pour assurer la cohérence du contenu de la BD. Exemple : Soit la relation Produit suivante: Produit(Code prod, Design, Qté_stock, Prix achat, Prix vente) La quantité en stock doit être supérieure à 0. Le prix de vente doit être supérieure au prix d’achat. Bases de données TSI / S2
  • 83. 86 Modèle Relationnel II. Concepts de base du modèle relationnel 9- Clé primaire : C’est le plus petit sous-ensemble d’attributs d’une relation permettant d’identifier chacun de ses tuples (même signification vue dans le MCD). Exemple : Soit la relation Produit(Code prod, Design, Qté_stock, Prix unitaire) L’attribut Code prod est la clé primaire de cette relation. Bases de données TSI / S2
  • 84. 87 Modèle Relationnel II. Concepts de base du modèle relationnel 10-Clé étrangère : Une clé étrangère d’une relation est une clé primaire d’une autre relation. Exemple : Soient les deux relations Dépôt et Produit : Dépôt(N°dépôt, Nom dépôt, Adresse dépôt). Produit(Code prod, Design, Qté_stock, Prix unitaire, N°dépôt). N° dépôt est une clé étrangère dans la relation produit. Bases de données TSI / S2
  • 85. 88 Modèle Relationnel II. Concepts de base du modèle relationnel 11-Valeur Nulle : Une valeur nulle désigne une valeur inconnue que peut avoir un attribut à un instant donné. Exemple : Soit la table Personne : N°Personne Nom personne Date naissance adresse Profession 1 2 Ali Fatima - 22/04/1975 Rabat Fès Étudiant Docteur La date de naissance de la personne N°1 est une valeur nulle. Bases de données TSI / S2
  • 86. 89 Modèle Relationnel III. L’algèbre relationnelle L’algèbre relationnelle est un ensemble d’opérations formelles sur les relations. Deux types d’opérations à distinguer : Opérations unaires. Opérations binaires Bases de données TSI / S2
  • 87. 90 III. L’algèbre relationnelle III.1. Opérations unaires 1-Projection : La projection d’une relation R de schéma R=(A1, A2, …An) sur les attributs Ai1, Ai2, …Aip (avec pn et ijik) est une relation T de schéma T=(Ai1, Ai2, …Aip) dont les tuples sont obtenus par élimination des valeurs des attributs n’appartenant pas à T et éventuellement par suppression des tuples en double. On note : T=(R/Ai1, Ai2, …Aip) ou T=Proj(R/Ai1, Ai2, …Aip). Bases de données TSI / S2
  • 88. 91 III. L’algèbre relationnelle III.1. Opérations unaires Exemple : Personne(N°personne, Nom, Prénom, Ville) N°personne Nom Prénom Ville 1 Alami Mohamed Rabat 2 Omari Ali Fès 3 Mourchid Mohamed Meknès 4 Mamoune Kamal Rabat 5 Bennani Ali Fès T1=Proj(Personne/Prénom, Ville) Bases de données TSI / S2
  • 89. 92 III. L’algèbre relationnelle III.1. Opérations unaires T1=Proj(Personne/Prénom, Ville) est la table suivante : Prénom Ville Mohamed Rabat Ali Fès Mohamed Meknès Kamal Rabat Bases de données TSI / S2
  • 90. 93 III. L’algèbre relationnelle III.1. Opérations unaires 2- Sélection : La sélection (ou aussi restriction) de la relation R par un prédicat P est la relation T de même schéma dont les tuples sont ceux de R vérifiant le prédicat P. P est une proposition logique faisant intervenir les attributs de R, des opérateurs relationnels <, >, <, = et/ou des opérateurs logiques ET, OU, NON… On note : T=R[P] ou T=select(R/P) Bases de données TSI / S2
  • 91. 94 Exemple : T2=select(Personne/Ville= « Rabat ») III. L’algèbre relationnelle III.1. Opérations unaires N°personne Nom Prénom Ville 1 Alami Mohamed Rabat 4 Mamoune Kamal Rabat Bases de données TSI / S2
  • 92. 95 III. L’algèbre relationnelle III.2. Opérations binaires 1- Produit cartésien : Le produit cartésien de deux relations R et S de schéma quelconque est une relation T ayant pour attributs ceux de R et de S et dont les tuples sont toutes les concaténations d’un tuple de R à un tuple de S. On note : T=RS ou T=Product(R, S) Exemple : Soient les deux relations Produit et Fournisseur : Référence Libellé AX01 Cordon AY02 Piston Code Fournisseur Nom Fournisseur AF09 Mourchid AF08 Alami Bases de données TSI / S2
  • 93. 96 III. L’algèbre relationnelle III.2. Opérations binaires La relation ProduitFournisseur est : Référence Libellé Code Fournisseur Nom Fournisseur AX01 Cardan AF09 Mourchid AX01 Cardan AF08 Alami AY02 Piston AF09 Mourchid AY02 Piston AF08 Alami Bases de données TSI / S2
  • 94. 97 2- Jointure : La jointure de deux relations R1 et R2 selon une proposition P est la relation R3 contenant l’ensemble des tuples du produit cartésien R1R2 satisfaisant la proposition P. On note : R3=join(R1, R2/P). Notons que P est une proposition logique portant sur deux attributs c1 de R1 et c2 de R2 définis sur le même domaine. III. L’algèbre relationnelle III.2. Opérations binaires Bases de données TSI / S2
  • 95. 98 III. L’algèbre relationnelle III.2. Opérations binaires Référenc e Libellé Prix unitaire M11 Chemise 190 G23 Costume 1400 M5 Chemise 290 L09 Pantalon 400 Num Commande Référence Qté cdée 101 M11 2 102 G23 1 103 M1 3 Exemple : Bases de données TSI / S2
  • 96. 99 T=Join(Commande, Produit / Commande.Référence=Produit.Référence) III. L’algèbre relationnelle III.2. Opérations binaires Num Commande Référence Qté cdée Libellé Prix unitaire 101 M11 2 Chemise 190 102 G23 1 Costume 1400 103 M11 3 Chemise 190 Bases de données TSI / S2
  • 97. 100 3- Union : L’union de deux relations R et S ayant le même schéma est une relation T de même schéma et contenant l’ensemble des tuples de R et de S (sans répétition). On note : T=RS ou T=Union(R, S). Exemple : Soient les deux relations « Étudiants » et « Employés » : III. L’algèbre relationnelle III.2. Opérations binaires CIN Nom prénom Adresse 90 772 Omari Aziz Adr 1 89 452 Ziani Ahmed Adr 2 88 396 Hichami Amina Adr 3 CIN Nom prénom Adresse 92 411 Agoumy Bahia Adr 11 85 410 Alami Mohamed Adr 22 89 452 Ziani Ahmed Adr 2 98 396 Doumi Kamal Adr 33 Bases de données TSI / S2
  • 98. 101 Personne=Union(Étudiants, Employés) III. L’algèbre relationnelle III.2. Opérations binaires CIN Nom prénom Adresse 90 772 Omari Aziz Adr 1 89 452 Ziani Ahmed Adr 2 88 396 Hichami Amina Adr 3 92 411 Agoumy Bahia Adr 11 85 410 Alami Mohamed Adr 22 98 396 Doumi Kamal Adr 33 Bases de données TSI / S2
  • 99. 102 4- Différence : La différence de deux relations R et S ayant le même schéma est une relation T de même schéma et contenant l’ensemble des tuples de R et n’appartenant pas à S. On note : T=R-S ou T=Minus(R, S) Exemple : Soit T=Minus(Étudiants, Employés) III. L’algèbre relationnelle III.2. Opérations binaires CIN Nom prénom Adresse 90 772 Omari Aziz Adr 1 88 396 Hichami Amina Adr 3 Bases de données TSI / S2
  • 100. 103 5- Intersection : L’intersection de deux relations R et S est une relation de même schéma contenant les tuples appartenant à la fois à R et S. On note : T=RS ou T=Intersect(R, S) Exemple : La relation P=Intersect(Étudiants, Employés) est : III. L’algèbre relationnelle III.2. Opérations binaires CIN Nom prénom Adresse 89 452 Ziani Ahmed Adr 2 Bases de données TSI / S2
  • 101. 104 6- Division : Le quotient de la relation R de schéma R=(A1, A2, …An) par la relation S=(Ap+1, Ap+2, …An) est une relation Q de schéma Q=(A1, A2, …Ap) formée de tous les tuples, qui concaténés à chacun de S donne toujours un tuple de R. On note : Q=RS ou Q=Div(R, S). III. L’algèbre relationnelle III.2. Opérations binaires Bases de données TSI / S2
  • 102. 105 Exemple : Prenons la relation T suivante : III. L’algèbre relationnelle III.2. Opérations binaires Code Vendeur Nom Vendeur Référence produit Libellé produit V11 Fatmy X01 Piston V11 Fatmy X02 Roue V12 Madani X01 Piston V12 Madani X02 Roue V13 Khaldi X02 Roue Bases de données TSI / S2
  • 103. 106 Et la relation Produit suivante: La relation Vendeur=Div(T, Produit) est : III. L’algèbre relationnelle III.2. Opérations binaires Référence produit Libellé produit X01 Piston X02 Roue Code Vendeur Nom Vendeur V11 Fatmy V12 Madani Bases de données TSI / S2
  • 104. 107 • Exercice : Soit le schéma relationnel suivant : Médicament(Num médic, Nom médic, Dosage) Pharmacie(Num Phar, Nom phar, dresse) Achat(Num Pharm, Num médic, Date, quantité) Expliquer la requête relationnelle suivante : R1=Select(Achat/quantité>10 et date=”20/04/2001”), R2=Select(Médicament/Nom medic=”aspirine ») R3=Join(R1, R2/ R1.Num médic=R2.Num médic), R4=Proj(R3/Num phar, dosage), R5=Join(R4, Pharmcie/ R4.numphr=Pharmacie.numphr), Résultat=Proj(R5/Nom phar, adresse, dosage). Bases de données TSI / S2
  • 105. 108 Modèle Relationnel IV- Passage du MCD au modèle relationnel Règle 1 : Toute entité du modèle Entité/Association est représentée par une relation dans le schéma relationnel équivalent. La clé primaire de cette relation est l’identifiant de cette entité. Exemple : Pièce Commande Num_Pièce Libellé_pièce Prix_unit Num_cde Date_cde Contenir QTITEC 0, n 1, n Bases de données TSI / S2
  • 106. 109 Les entités Pièce et Commande deviennent des relations dans le modèle relationnel : Pièce(Num_Pièce : Numérique(5) ; Libellé_pièce : Caractère(20) ; Prix_unit : Numérique(10)) Commande(Num_cde : Numérique(5) ; Date_cde : Date) Modèle Relationnel IV- Passage du MCD au modèle relationnel Bases de données TSI / S2
  • 107. 110 Règle 2 : Toute entité Ei ayant une cardinalité 0,1 ou 1,1 via une association avec une entité Ej est traduite par l’introduction de l’identifiant Ij de Ej dans la relation Ri correspondante à Ei. Ij est une clé étrangère dans la relation Ri. Exemple : Modèle Relationnel IV- Passage du MCD au modèle relationnel Commande Client NCDE DATEC NCLI NOMCLI Concerner 1, 1 1, n Bases de données TSI / S2
  • 108. 111 L’entité Commande devient dans le modèle relationnel : Commande(NCDE : Numérique(5) ; DATEC: Date ; NCLI : Numérique(4)) Modèle Relationnel IV- Passage du MCD au modèle relationnel Bases de données TSI / S2
  • 109. 112 Règle 3 : Toute relation (association) plusieurs à plusieurs du MCD, possédant éventuellement des propriétés, est traduite par une relation dont la clé primaire est composée de tous les identifiants des entités participantes à cette association. Exemple: Modèle Relationnel IV- Passage du MCD au modèle relationnel Produit Commande Cod_prod Libellé_ prod Prix_unit Num_cde Date_cde Contenir QTITEC 0, n 1, n Bases de données TSI / S2
  • 110. 113 La relation contenir sera traduite par une table : Contenir(Cod_prod : Numérique(5), Num_cde : Numérique(5), QTITEC : Numérique(7)) 1, n Modèle Relationnel IV- Passage du MCD au modèle relationnel Bases de données TSI / S2
  • 111. 1 Le Langage SQL (1)  INTRODUCTION  Le SQL est un langage structuré de requêtes qui permet de créer, de modifier et gérer des informations dans des BDR  Le sigle SQL signifie "Structured Query Language", soit en français "Langage de recherche structuré".  Il a été développé par IBM au cours des années 70 et son nom était SEQUEL, abréviation de Structured English QUEry Language
  • 112. 2 Le Langage SQL (2)  SQL a été normalisé par ANSI (American National Standards Institute) et par ISO (International Organization for Standardization).  Une troisième norme (SQL3) est en cours de rédaction depuis 1999 par l'ANSI et l'ISO,  Cette normalisation a donné naissance à une 1ère version (SQL1) en 1987 puis à une 2ème version (SQL2) en 1992
  • 113. 3 Le Langage SQL (3)  Malgré la normalisation ISO, il existe plusieurs variantes de SQL sur le marché car chaque éditeur de SGBDR tente d’étendre le standard pour accroître l’attrait commercial de son produit  Une requête en SQL commence par les mots clés: SELECT, DELETE, UPDATE, INSERT INTO, CREATE et DROP  Chaque requête SQL doit obligatoirement se terminer par un Point Virgule  On distingue 2 types de requêtes: Actions et Sélections
  • 114. 4 Le Langage SQL (4) I. Requêtes Actions  Sont des requêtes qui permettent de créer des tables, d’ajouter, de supprimer des enregistrements d’une table, d’ajouter une colonne…  L’instruction CREATE TABLE permet de créer une nouvelle table Syntaxe CREATE TABLE Nom_table (champ1 type CONSTRAINT nom_contrainte PRIMARY KEY, champ2 type [NOT NULL], …, champN type [NOT NULL]); 1. Création d’une table avec un seul champ comme clé primaire
  • 115. 5 Le Langage SQL (5) CREATE TABLE Nom_table (champ1 type [NOT NULL], champ2 type [NOT NULL], …, champN type, CONSTRAINT nom_contrainte PRIMARY KEY (champ1, champ2,…)) ); 2. Création d’une table avec plusieurs champs comme clé primaire /* Créez une requête SQL permettant de créer la table EMPLOYES ( Nemployé, Nom, Prénom, Fonction, Adresse, Codeville) tels que le 1er champ est de type entier les autres de type texte ayant respectivement une taille de: 25, 20, 15 et 50. Tandis que le champ Codeville est de type Entier long */ CREATE TABLE EMPLOYES ( Nemployé INTEGER CONSTRAINT nom_index PRIMARY KEY, Nom TEXT(25), Prénom TEXT(20), Fonction TEXT(15), Adresse TEXT(50), Codeville LONG) ) ;
  • 116. 6 Le Langage SQL (6)  Les conventions relatives aux noms des tables et des champs varient quelque peu d'un SGBD à l'autre. En ce qui concerne plus particulièrement les champs:  Le nombre de caractères ne doit pas être trop grand (64 dans Access, 18 à 30 dans d'autres SGBD) ;  Seuls les lettres, les chiffres et le caractère de soulignement sont autorisés. Access admet les caractères accentués. Il admet aussi l'espace, mais le nom du champ doit alors être écrit entre crochets ;  Certains SGBD requièrent que le nom d'un champ commence par une lettre, mais ce n'est pas le cas d'Access ;
  • 117. 7 Le Langage SQL (7)  Les termes faisant partie du vocabulaire du langage SQL sont interdits ("date" par exemple). Ce sont les mots réservés.  Booléen (Oui / Non) : BIT ;  Nombre entier : SHORT (entier), SMALLINT (entier), LONG (entier long), INTEGER (entier long), BYTE (octet) ;  Voici un échantillon représentatif des différentes façons d'exprimer un type de données lors de la création d'une table en SQL dans Access :  Nombre réel : SINGLE (réel simple), DOUBLE (réel double), NUMERIC (réel double) ;
  • 118. 8 Le Langage SQL (8)  Monétaire : CURRENCY, MONEY ;  Date/Heure : DATE, TIME, DATETIME ;  Texte : VARCHAR (255 caractères), CHAR(n) ou TEXT(n) (n caractères), LONGTEXT (mémo, 65 535 caractères =32K max.) ;  Fichier binaire : LONGBINARY (Objet OLE) ;  Compteur : COUNTER (NuméroAuto). Remarque: On notera qu'il n'est pas possible de créer un champ de type hypertexte via une commande SQL dans Access. Même remarque en ce qui concerne les listes de choix.
  • 119. 9 Le Langage SQL (9) /* Créez une requête SQL permettant de créer la table DETAILS ( Ncommande, Réf, Pu,Quantité, Remise) tels que les champs sont de type respectivement: entier long, texte de taille 30, monétaire, entier et réel simple et tel que aussi les champs Pu & Quantité sont non nuls*/ CREATE TABLE DETAILS ( Ncommande Integer, Réf Char(30), Pu Currency NOT NULL, Quantité Smallint NOT NULL, Remise Single, CONSTRAINT nom_index PRIMARY KEY ( Ncommande, Réf ) ) ;  L’instruction ALTER TABLE permet d’ajouter ou de supprimer un seul champ à une table. Elle permet aussi la création et la suppression des liens entre les tables d’une base de données.
  • 120. 10 Le Langage SQL (10) /* Créez une requête SQL permettant de créer la table VILLES ( Codeville, Ville) tels que le 1er champ est de type NuméroAuto et le deuxième est de type texte ayant une taille de 20*/ CREATE TABLE VILLES ( Codeville Counter CONSTRAINT nom_index PRIMARY KEY, Ville Text(20) ) ; /* Modifiez la table EMPLOYES en déclarant le champ "CodeVille" comme clé étrangère, puis créez un lien nommé lien_ville sur le champ CodeVille, en précisant que le côté 1 du lien est le champ Code_Ville de la table VILLES .*/
  • 121. 11 Le Langage SQL (11) ALTER TABLE EMPLOYES ADD CONSTRAINT Lien_ville FOREIGN KEY (Code_Ville) REFERENCES VILLES (Code_Ville); /* Supprimer le lien nommé lien_ville existant entre la table EMPLOYES et la table VILLES selon le champ Codeville.*/ ALTER TABLE EMPLOYES DROP CONSTRAINT Lien_ville; /* Créez une requête SQL permettant d’ajouter le champ Codecli à la table DETAILS. Ce champ est de type texte, de taille 20 caractères et il est non null ALTER TABLE DETAILS ADD COLUMN Codecli TEXT(20) NOT NULL;
  • 122. 12 Le Langage SQL (12)  L’instruction DROP TABLE permet de supprimer une table d’une base de données /* Créez une requête SQL permettant de supprimer le champ Codecli de la table DETAILS. ALTER TABLE DETAILS DROP COLUMN Codecli ; Syntaxe DROP TABLE Nom_table ;
  • 123. 13 Le Langage SQL (13) Soit la table ACTEURS créée sous ACCESS: ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films) /* Créez une requête SQL permettant de supprimer la table DETAILS définitivement de la base de données DROP TABLE DETAILS ;  L’instruction DELETE permet d’effacer des enregistrements d’une table /* Effacez tous les enregistrements de la table ACTEURS*/
  • 124. 14 Le Langage SQL (14) DELETE * FROM ACTEURS ; (Ou bien ) DELETE N_act FROM ACTEURS ; /* Effacez tous les acteurs de nationalité marocaine*/ DELETE * FROM ACTEURS WHERE Nationalité= "marocaine";  L’instruction UPDATE permet la mise à jour d’une table  Syntaxe : UPDATE table SET nouvellesvaleurs WHERE critères ;
  • 125. 15 Le Langage SQL (15) /* Créez une requête permettant de modifier l’adresse de l'employé numéro 10 tout en sachant que la nouvelle adresse sera "10 Avenue Mohamed VI, Tanger"*/ UPDATE EMPLOYES SET Adresse = "10 Avenue Mohamed VI, Tanger" WHERE Nemployé = 10 ; /* Créez une requête permettant d’augmenter de 3% le salaire de tous les acteurs */ UPDATE ACTEURS SET Salaire = Salaire * 1.03 ;  L’instruction INSERT INTO permet d’ajouter un ou plusieurs enregistrements à une table
  • 126. 16 Le Langage SQL (16) 1. Requête ajout d’un seul enregistrement INSERT INTO Nom_table [(champ1, champ2, …)] VALUES (valeur1, valeur2, …) ; Syntaxe 2. Requête ajout de plusieurs enregistrements INSERT INTO Nom_table 1 [IN externaldatabase] (Champ1, Champ2, …) SELECT (Champ1, Champ2, …) FROM Nom_table 2 ;
  • 127. 17 Le Langage SQL (17) /* Créez une requête permettant d’ajouter l’enregistrement suivant dans la table EMPLOYES: (100, BEN AZOUZ, Aziz, Ingénieur, 90050) */ INSERT INTO EMPLOYES (Nemployé, Nom, Prénom, Fonction, Codeville) VALUES (100, "BEN AZOUZ", "Aziz", "Ingénieur", 90050) ; /* Soit la table NOUVEAUX_EMPLOYES (Nemployé, Nom, Prénom, Fonction, Adr, Codeville) Supposons que cette table contient des enregistrements. Question: Ajoutez tous les enregistrements de la table ci-dessus dans la table EMPLOYES*/ INSERT INTO EMPLOYES SELECT * FROM NOUVEAUX_EMPLOYES ;
  • 128. 18 Le Langage SQL (18) I. Requête SELECTION  Une requête de type SELECTION permet d'interroger une base de données  Le résultat d’une telle requête est renvoyé sous forme d’une table formée d’un ou plusieurs attributs.
  • 129. 19 Le Langage SQL (3) Syntaxe SELECT [Prédicat] {* / table.* /[table.attribut1 As alias1], [table.attribut2 As alias2], …} FROM Liste de table [IN externaldatabase] [WHERE Critère de sélection] [GROUP BY Liste des attributs] [HAVING Critère de sélection] [ORDER BY Critère d’ordre]
  • 130. 20 Le Langage SQL (4) Remarques  [ ] signale une clause optionnelle, c.à.d on peut utiliser la requête SELECT sans cette clause  Chaque instruction SQL doit se terminer par un point-virgule Elément Description Prédicat L’un des prédicats suivants: ALL, DISTINCT, DISTINCTROW ou TOP. Les prédicats permettent de limiter le nombre d’enregistrements renvoyés. ALL est choisi par défaut * Indique que tous les champs spécifiés seront sélectionnés
  • 131. 21 Le Langage SQL (5) Elément Description table Nom de la table contenant les tuples à sélectionner attribut1, attribut2 Noms des champs à extraire. alias1, alias2 Utilisés pour renommer un attribut externaldatabase Nom de la base de données contenant les tables si elles ne se trouvent pas dans la base de données en cours
  • 132. 22 Le Langage SQL (6) Exemple 1 Soit la table ACTEURS créée sous ACCESS: ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films) /* Afficher tous les champs et tous les enregistrements de la table ACTEURS*/ SELECT * FROM ACTEURS; /* Afficher uniquement le Nom et Prénom de chaque Acteur */ SELECT Nom, Prénom FROM ACTEURS; /* Afficher les différentes nationalités sans doublons même si plusieurs acteurs ont la même nationalité */ SELECT DISTINCT Nationalité FROM ACTEURS;
  • 133. 23 Le Langage SQL (7) /* Afficher 50% des acteurs de la table ACTEURS*/ SELECT TOP 50 PERCENT * FROM ACTEURS; /* Afficher les 3 premiers acteurs de la table ACTEURS */ SELECT TOP 3 * FROM ACTEURS;  Avec l’instruction SELECT, il est possible d’utiliser les fonctions suivantes pour effectuer des calculs: SUM () renvoie la somme d’un champ AVG () renvoie la moyenne d’un champ MAX () renvoie la valeur maximale d’un champ MIN () renvoie la valeur minimale d’un champ COUNT (*) renvoie le nombre d’enregistrements de la table
  • 134. 24 Le Langage SQL (8) /* Afficher le nombre total d’enregistrements de la table ACTEURS et nommer le champ retourné Nombre total*/ SELECT COUNT(*) As [Nombre Total] FROM ACTEURS; /* Afficher le nombre total d’enregistrements de la table ACTEURS */ SELECT COUNT(*) FROM ACTEURS; /* Afficher le nombre d’enregistrements de la table ACTEURS qui ont une entrée dans le champ Nom et nommer le champ retourné Nombre d’entrée*/ SELECT COUNT(Nom) As [Nombre d’entrée] FROM ACTEURS;
  • 135. 25 Le Langage SQL (9) /* Afficher la moyenne des salaires de la table ACTEURS et nommer le champ retourné Moyenne des salaires*/ SELECT AVG(Salaire) As [Moyenne des salaires] FROM ACTEURS; /* Afficher le totale des salaires de la table ACTEURS et nommer le champ retourné Totale des salaires */ SELECT SUM(Salaire) As [Totale des salaires] FROM ACTEURS; /* Afficher le salaire le plus élevé de la table ACTEURS et nommer le champ retourné Salaire maximal*/ SELECT MAX(Salaire) As [Salaire maximal] FROM ACTEURS;
  • 136. 26 Le Langage SQL (10) /* Afficher l’âge de l’acteur le plus jeune et nommer le champ retourné Age minimal */ SELECT MIN(Age) As [Age minimal] FROM ACTEURS; Les éléments de la clause WHERE  Ils permettent de définir la condition dans cette clause. La clause peut être accompagnée des opérateurs logiques AND, OR ou NOT Comparaison à une valeur (=, <, >, >=, <=, <>) Comparaison à une fourchette de valeurs (BETWEEN … AND) Comparaison à une liste de valeur ( IN (. , . ,...) ) Comparaison à un filtre (LIKE) Test "tous" ou "au moins" (ALL, ANY/SOME) Test existentiel (EXISTS)
  • 137. 27 Le Langage SQL (11) /* Afficher tous les noms d’acteur dont l’âge est supérieur à 25*/ SELECT Nom FROM ACTEURS WHERE Age >= 25; /* Afficher tous les noms d’acteur dont la nationalité est américaine et l’âge est supérieur à 25*/ SELECT Nom FROM ACTEURS WHERE (Nationalité="américaine") AND (Age >= 25); /* Afficher tous les noms d’acteur dont la nationalité est américaine ou l’âge est supérieur à 25*/ SELECT Nom FROM ACTEURS WHERE (Nationalité="américaine") OR (Age >= 25); /* Afficher les acteurs dont l’âge est entre 35 et 50 */ SELECT * FROM ACTEURS WHERE Age BETWEEN 35 AND 50;
  • 138. 28 Le Langage SQL (12) /* Afficher tous les acteurs dont la nationalité est américaine, française ou marocaine*/ SELECT * FROM ACTEURS WHERE Nationalité IN ("américaine","française", "marocaine"); /* Afficher tous les noms d’acteurs qui commencent par "DE" */ SELECT Nom FROM ACTEURS WHERE Nom LIKE "DE*"; /* Afficher tous les noms d’acteur ne commençant pas par D et ayant 4 lettres */ SELECT Nom FROM ACTEURS WHERE Nom NOT LIKE "D*" AND Nom LIKE "????"; /* Afficher le nom d’acteur le plus âgé */ SELECT Nom FROM ACTEURS WHERE Age >= ALL (SELECT Age FROM ACTEURS );
  • 139. 29 Le Langage SQL (13) /* Afficher le nom d’acteur le plus jeune*/ SELECT Nom FROM ACTEURS WHERE Age <= ALL (SELECT Age FROM ACTEURS); Exemple 2 Soit les tables PRODUITS, COMMANDES, DETAILS et EMPLOYES créées sous ACCESS: PRODUITS (Réf , Nompr, Nfournisseur, Pu) COMMANDES(Ncommande, Codecli, Nemployé, Date commande) DETAILS(Ncommande, Réf , Quantité, Remise) EMPLOYES(Nemployé, Nom, Prénom, Fonction, Adresse, Ville)
  • 140. 30 Le Langage SQL (14) Les éléments de la clause FROM /* Afficher tous les produits (Réf, Nompr) qui ont été vendus*/ SELECT PRODUITS.Réf, Nompr FROM PRODUITS INNER JOIN DETAILS ON PRODUITS.Réf = DETAILS.Réf ; SELECT PRODUITS.Réf, Nompr FROM PRODUITS, DETAILS WHERE PRODUITS.Réf = DETAILS.Réf ; (Ou bien )
  • 141. 31 Le Langage SQL (14) Les jointures La clause INNER JOIN a fait son apparition avec la version 2 de SQL, parce que le besoin s'était de préciser à quel type de jointure appartenait une relation. Plus précisément, on distingue : la jointure interne, qui utilise INNER JOIN. Ne sont incluses dans le résultat final que les lignes qui se correspondent dans les deux tables. Ce cas est celui que nous avons traité précédemment ; la jointure externe gauche, dans laquelle INNER JOIN est remplacé par LEFT JOIN. Toutes les lignes de la première table sont incluses dans le résultat de la requête, même s'il n'existe pas de ligne correspondante dans la seconde table ;
  • 142. 32 Le Langage SQL (15) /* Afficher tous les produits (Réf, Nompr, Mois de vente) qui ont été vendus pendant le mois 6*/ SELECT PRODUITS. Réf, Nompr, Month ([Date commande]) AS [Mois de vente] FROM PRODUITS INNER JOIN (DETAILS INNER JOIN COMMANDES ON DETAILS. Ncommande = COMMANDES . Ncommande ) ON PRODUITS . Réf = DETAILS . Réf, WHERE Month ([Date commande]) =6 ; (Ou bien ) la jointure externe droite, dans laquelle INNER JOIN est remplacé par RIGHT JOIN. Toutes les lignes de la seconde table sont incluses dans le résultat de la requête, même s'il n'existe pas de ligne correspondante dans la première table.
  • 143. 33 Le Langage SQL (16) SELECT PRODUITS.Réf, Nompr, Month ([Date commande]) AS [Mois de vente] FROM PRODUITS, DETAILS, COMMANDES WHERE PRODUITS.Réf = DETAILS .Réf AND DETAILS.Ncommande = COMMANDES . Ncommande AND Month ([Date commande]) =6;
  • 144. 34 Le Langage SQL (17) /* Afficher tous les produits dont le prix unitaire est supérieur au prix d’au moins d’un produit vendu avec une remise de 25%*/ SELECT Réf, Nompr FROM PRODUITS WHERE Pu >= ANY ( SELECT Pu FROM DETAILS Inner Join PRODUITS ON PRODUITS.Réf=DETAILS.Réf WHERE Remise = 0.25 );
  • 145. 35 Le Langage SQL (18) /* Afficher tous les produits (Réf, Nompr) qui ont été vendus par ordre décroissant selon le champ Réf*/ SELECT PRODUITS. Réf, Nompr FROM PRODUITS , DETAILS WHERE PRODUITS. Réf = DETAILS . Réf ORDER BY PRODUITS.Réf DESC; Remarque  Par défaut, le résultat d’une requête sélection est trié selon l’ordre croissant du premier attribut qui figure dans la clause SELECT
  • 146. 36 Le Langage SQL (19)  On pourra changer temporairement les noms des tables et de travailler avec lors de création d’une requête de type sélection Exemple /* Afficher tous les produits (Réf, Nompr) qui ont été vendus par ordre décroissant selon le champ Réf*/ SELECT T1.Réf, Nompr FROM PRODUITS AS T1 , DETAILS AS T2 WHERE T1.Réf = T2.Réf ORDER BY T1.Réf DESC;
  • 147. 37 Le Langage SQL (20) Ncommande Réf Quantité Remise 1 R1 10 0.6 1 R2 20 0.6 2 R1 15 0.5 2 R3 10 0.6 2 R6 25 0.9 3 R3 5 0.6 3 R7 65 0.1 3 R8 10 0.6 DETAILS
  • 148. 38 Le Langage SQL (20) /* Afficher pour chaque commande le total de quantités des produits vendus*/ SELECT Ncommande, SUM(Quantité) AS [Total quantités vendues] FROM DETAILS GROUP BY Ncommande ; /* Afficher pour chaque commande le total de quantités des produits vendus et tel que ce total est > 60 */ SELECT Ncommande, SUM(Quantité) AS [Total quantités vendues] FROM DETAILS GROUP BY Ncommande HAVING SUM(Quantité) > 60 ;
  • 149. 39 Le Langage SQL (21) /* Afficher les commandes qui contiennent plus de 3 produits (>=3)*/ SELECT Ncommande, COUNT(Réf) AS [Nombre de produits] FROM DETAILS GROUP BY Ncommande HAVING COUNT(Réf) >=3 ; /* Afficher pour chaque commande le total de quantités des produits vendus avec une remise de 6% et tel que ce total est > 60 */ SELECT Ncommande, SUM(Quantité) AS [Total quantités vendues] FROM DETAILS WHERE Remise=0.6 GROUP BY Ncommande HAVING SUM(Quantité) > 60 ;
  • 150. 40 Le Langage SQL (21) /* Afficher les employés qui ont vendu plus de 100 commandes*/ SELECT Nemployé, COUNT(Ncommande) AS [Nombre de commandes vendues] FROM COMMANDES GROUP BY Nemployé HAVING COUNT(Ncommande) > 100 ; /* Afficher les employés de la ville de Rabat qui ont vendu plus de 100 commandes*/ SELECT EMPLOYES.Nemployé, COUNT(*) AS [Nombre de commandes vendues] FROM COMMANDES, EMPLOYES WHERE EMPLOYES.Nemployé=COMMANDES.Nemployé AND Ville =« Rabat" GROUP BY EMPLOYES.Nemployé HAVING COUNT(*) > 100 ;