Vous êtes sur la page 1sur 197

1

SYSTÈME D’INFORMATION
& BASE DE DONNÉES
Plan de la formation:
Partie théorique
Chap. 1 - Notions de base : Système d’Information
Chap. 2 - Notions de base : Base de données;
Chap. 3 – Notions de base: Base de données relationnelles;
Chap. 3 - Langage SQL
Partie pratique
Création/manipulation des Tables
Les requêtes
Les formulaires
Les états
Les macros/commandes

8-déc.-16 ENCG Kénitra**Gestion des bases de données


Prof. M. AIT KERROUM
Introduction
Notion de système pour l’entreprise

 Un système est un ensemble d’éléments matériels ou


immatériels (hommes, machines, méthodes, recettes,
règles, etc.)
 Ces éléments sont unis par des relations qui
transforme, par un processus, des éléments (les
entrées) en d’autres éléments (les sorties).

2
Introduction
Notion de système pour l’entreprise
3

 Exemple :
Pièces détachées Automobiles
Système
Entrées Sorties
 Modèle d’un atelier de fabrication :

Matières premières Produits finis


Système
Entrées Sorties
Introduction
Notion de système pour l’entreprise
4

 Le système qui correspond à l’activité de l’entreprise


(transformation de flux) est appelé : système
opérant (SO).
 L’entreprise a aussi besoin d’un système de prise de
décision qui lui permet de réaliser les objectifs fixés.
Ce système est appelé système de pilotage (SP).
Introduction
Notion de système pour l’entreprise
5

 Le SP procède à la régulation et au contrôle du


système opérant en décidant du comportement de
celui-ci.

Système de Pilotage
Informations Décision sur le SO
sur l’état du SO

Flux entrant Flux sortant


Système Opérant
Introduction
Notion de système pour l’entreprise
6

 Avec l’augmentation en quantité et en complexité


des informations échangées entre ces deux systèmes,
on a besoin d’avoir un autre système qui stocke et
traite de façon plus efficace ces informations.
 Ce système est appelé système d’information (SI).
Notion de Système d’Information (SI)

Système de Pilotage

Système d’Information

Entrée Sortie
Système Opérant
7
Notion de Système d’Information (SI)

 Le SI est composé d’éléments divers :


 Employés;

 Ordinateurs;
 Procedures;

 Règles et méthodes;

 etc.

 Le SI collecte et de traite les informations relatives


au système opérant (SO) afin de les mettre à la
disposition du système de pilotage (SP).
Notion de Système d’Information (SI)
9

Le SI possède deux aspects :


 Aspect statique (ou aspect données) :

 based’information,
 modèle (ou structure) de données.

 Aspect dynamique (ou aspect traitement) :


 circulationde l’information entre les différents acteurs,
 évolution chronologique et causale des opérations
provoquées par des évènements.
Système Automatisé d’Information (SAI)
10

 Dans un SI, on retrouve


 desdécisions (homme)
 des actions programmées (machine)
 partie automatisable du SI.
 Un SAI est un sous-système d’un SI dans lequel toutes
les transformations significatives d’information sont
effectuées par des ordinateurs.
 Un SAI permet une conservation et un traitement
automatique des informations.
Système Automatisé d’Information (SAI)
11

 Un SAI doit être


 intégré : une même information n’est saisie
qu’une fois en un point du système et est
récupérée dans tous les fichiers concernés.
 durable et adaptable : les logiciels de
traitement des données (programmes) sont
indépendant des données.
Composition
12

 Le SI se divise en deux parties :


 Le SI automatisé
 Procédures répétitives
 Gestion des documents de l’entreprise
 Tâches coordonnées

 Le SI non automatisé
 Discussionsinformelles
 Informations non écrites
Fonctions du SI
13

Un SI a deux fonctions principales


 La production d’information

 Collecter des informations


 Traiter et transmettre des informations
 Mémoriser des informations

 La mise en œuvre d’outils de gestion


 Fonction technologiques (matériels, logiciels,
méthodes, savoir-faire, …)
 Fonction économique
 Fonction sociale
Composition actuelle des SI
14

 Dans un SI d'une grande entreprise, on trouve :


 un ERP - Enterprise Resource Planning (PGI pour
progiciel de gestion intégré) - qui intègre tous les
systèmes informatisés autour d’une Base de Données
commune pour soutenir le fonctionnement de l'entreprise;

 des systèmes appelés « spécifiques » (non standards),


où l'on rencontrera davantage d'applications dans les
domaines du calcul de coûts, de la facturation, de l'aide
à la production, ou de fonctions annexes.
Composition actuelle des SI
15

 La proportion entre ERP et systèmes spécifiques est très variable d'une


entreprise à l'autre.
 Dans les ERP, on trouve des modules couvrant différents domaines
d'activité (comme la gestion de la production, la gestion de la relation
commerciale avec la clientèle, la gestion des ressources humaines, la
comptabilité, ...) autour d'une base de données commune.
 Il est fréquent qu'une entreprise soit équipée de plusieurs progiciels
différents selon ses domaines d'activité. Dans ce cas, les progiciels ne
sont pas totalement intégrés comme dans un PGI, mais interfacés entre
eux ainsi qu'avec des applications spécifiques.
Composition actuelle des SI
16

 CRM - Customer Relationship Management (GRC: Gestion de la


relation client) : regroupe toutes les fonctions pour intégrer les clients
dans le SI de l'entreprise
 XRM - eXtended Relationship Management (Gestion de la Relation
Tiers) : est un SI d'entreprise dont les processus relationnels constituent
le socle de l'organisation de l'information.
 SCM - Supply Chain Management (GCL : Gestion de la chaîne
logistique) : regroupe toutes les fonctions permettant d'intégrer les
fournisseurs et la logistique au SI de l'entreprise
 HRM - Human Resource Management (SIRH pour la GRH)
 PDM - Product Data Management (SGDT : Système de gestion de
données techniques) : fonctions d'aide au stockage et à la gestion des
données techniques. Surtout utilisé par les bureaux d'études.
Chap. 2
Notion de Bases de données
17

 Plan de la leçon:
1. Introduction;
2. Définition d’une base de données et d’un SGBD;
3. Différents types de bases de données;
4. Quelques SGBD existants;
5. Objectifs et avantages des BD et SGBD;
6. Les niveaux ANSI/SPARC.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Définition d’une BD et d’un SGBD
18

Une BD:
- Ensemble structuré de données indépendant des
traitements à effectuer.
- Représente le monde réel.
- Interrogée et mise à jour par des utilisateurs.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Définition d’une BD et d’un SGBD
19

Un SGBD:
- logiciel permettant à un utilisateur d’interagir avec
une BD.
- Interface entre la BD et les programmes
d’applications qui communiquent avec la BD.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Introduction aux Bases de données
20

 Deux approches:
- Approche Fichiers (Ancienne): données en fonction
du traitement risque d’incohérence;
- Approche (récente) base de données: intégration
des données dans des fichiers indépendamment des
traitements.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Différents types de BD
21

Il existe quatre grands types de bases de données :


-Les bases hiérarchiques;
-Les bases réseaux;
-Les bases relationnelles;
-Les bases objet.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modèle hiérarchique
22

 Appartient à la deuxième génération 1965 – 70 s’appelle aussi,


SGBD navigationnelle;
 Présente les données sous forme d’un arbre;
 Une donnée peut référencer une autre donnée dans une relation
père/fils;
 Lien entre enregistrements par des pointeurs

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modèle hiérarchique
23

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modèle hiérarchique
24

 Inconvénients :
 Redondance de données.
 Manipulation difficile de données hétérogènes.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modèle réseau
25

 Appartient aussi à la 2ème génération;


 Possibilité des liens entre enregistrements dans différents sens
 Avantage: rapidité

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modèle réseau
26

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modèle réseau
27

 Un avantage par rapport aux SGBD hiérarchique :


la non redondance de données est assurée.
 Inconvénients :
 Laschéma de la BD devient vite complexe quand la
base de données est importante (combien de pointeurs
gérés ?).
 Modèle très rigide pour une exploitation future.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


28
Modèle relationnel
 3ème génération 1969-…
 les données sont représentées dans des tables
 Manipulation suivant les règles mathématiques des
ensembles

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modèle relationnel
29

ENCG Kénitra**Gestion des bases de données 8-déc.-16


30
Le modèle Objet
 Apparition entre 1990 - 1999
 Les données sont représentées en tant qu’instances
de classes hiérarchisées

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Différents types de BD
31

 Aujourd’hui, le modèle relationnel est le plus utilisé il


occupe environ 75%

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Quelques SGBD existants
32

 Hiérarchiques : IMS;

 Réseaux : IDS2, Socrate-Clio;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Quelques SGBD existants
33

 Bases relationnelles :
Pour les petites BD:
• FileMaker Pro
• Access
• FoxPro
• 4e dimension
• MySQL
• Paradox

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Quelques SGBD existants
34

Bases relationnelles:
Les grosses BD
• Oracle
• Informix
• Sybase
• ProsgreSQL
• DB2
• Ingres
• (SQLServer)

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Quelques SGBD existants
35

 Bases objet :
• O2
• Gemstone
• ObjectStore
• Jasmine

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Objectifs et avantages
36

Les principales fonctions d’un SGBD:


- Indépendance données/programme (indépendance

physique);
- Indépendance logique;

- Intégration des données sans redondance;

- Partage de données;

- Intégrité des données;

- Sécurité des données et confidentialité.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Indépendance physique
37

 Ils ne sont pas apparents:


 Lesdisques, la machine, les méthodes d’accès, les
modes de placement, les méthodes de tri, le codage
des données.
 Le SGBD offre une structure canonique permettant
la représentation des données réelles sans se
soucier de l’aspect matériel du système.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Indépendance logique
38

 Chaque groupe de travail doit pouvoir se concentrer sur ce qui l’intéresse


uniquement.
 Il doit pouvoir arranger les données comme il le souhaite, même si d’autres
utilisateurs ont une vue différente. L’administrateur doit pouvoir faire évoluer
le système d’information sans remettre en cause l’organisation de chaque
groupe de travail.
 Exemple: Une base de données contient les informations suivantes :
 véhicule(num-véhicule, marque, type, couleur)
 personne(num-CIN, nom, prénom)
 propriétaire(num-CIN, num-véhicule, date-achat).
 Un groupe de travail ne s’intéressera qu’aux individus qui possèdent une voiture :
 individus(num-CIN, nom, prénom, num-véhicule).
 Un autre groupe ne s’intéressera qu’aux véhicules vendus à une certaine date :
 voiture(num-véhicule, type, marque, date-achat).

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Non-redondance des données
39

 Le SGBD doit permettre d’éviter la duplication


d’informations qui entraine:
 laperte de place mémoire,
 demande des moyens humains importants pour saisir et
maintenir à jour plusieurs fois les mêmes données.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Cohérence des données
40

 Cette cohérence est obtenue par la vérification des contraintes


d’intégrité.
 Une contrainte d’intégrité est une contrainte sur les données de
la base, qui doit toujours être vérifiée pour assurer la
cohérence de cette base.
 Les systèmes d’information sont souvent remplis de telles
contraintes ; le SGBD doit permettre une gestion automatique
de ces contraintes d’intégrité sur les données.
 Par exemple :
 un identifiant doit toujours être saisi ;
 le salaire doit être positif ;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Concurrence d’accès aux données
41

 Le SGBD doit permettre à plusieurs personnes (ou


applications) d’accéder simultanément aux données
tout en conservant l’intégrité de la base.
 Chacun doit avoir l’impression qu’il est seul à utiliser
les données.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Sécurité des données
42

 Les données doivent être protégées des accès non autorisés ou mal
intentionnés.
 Il doit exister des mécanismes permettant d’autoriser, contrôler et
enlever des droits d’accès à certaines informations à n’importe
quel usager.
 Par exemple, un chef de service pourra connaître les salaires des personnes
qu’il dirige, mais pas de toute l’entreprise.
 Le système doit aussi tolérer les pannes : si une panne pendant
l’exécution d’une opération, le SGBD doit être capable de revenir
à un état dans lequel les données sont cohérentes.
 Il en va de même en cas d’échec dans un programme. Le SGBD
doit pouvoir revenir à un état cohérent, ce qui est rendu possible
par la gestion des transactions.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Manipulation possible par des non informaticiens
43

 Le SGBD doit permettre d’obtenir les données par


des langages non procéduraux.
 On doit pouvoir décrire ce que l’on souhaite sans
décrire comment l’obtenir.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Accès efficace aux données
44

 Les accès disque sont lents relativement à l’accès à la


mémoire centrale.
 Il faut donc offrir les meilleurs algorithmes de
recherche de données à l’utilisateur.
 Remarque.
 Le système de gestion des fichiers y répond parfois pour
des monofichiers,
 Dans le cas d’inter-croisements entre différents fichiers,
cela devient beaucoup plus complexe.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Administration centralisée des données
45

 Le SGBD doit offrir, aux administrateurs des données, des


outils de vérification de cohérence des données, de
restructuration éventuelle de la base, de sauvegarde ou de
réplication.
 L’administration est centralisée et est réservée à un très petit
groupe de personnes pour des raisons évidentes de sécurité.
 Remarque: Ces points, caractérisant assez bien ce qu’est une base
de données, sont rarement réunis dans les SGBD actuels. Ils
détaillent les caractéristiques pour obtenir un SGBD parfait.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les niveaux ANSI/SPARC
46

 Architecture datant des


années 60;
 Définit des niveaux
d'abstraction de
l’architecture des
systèmes de gestion de
bases de données

ANSI-SPARC stands : American National Standards Institute, Standards Planning And Requirements Committee

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Niveau interne (ou physique)
47

 Définit la façon selon laquelle sont stockées les


données et les méthodes pour y accéder:
 Les disques, fichiers hachés, arbres… contenant la BD
 La représentation physique de valeurs de données
 Réel, entier, texte, OLE…
 Encodage…

  Le SGBD prend en charge ce niveau.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Niveau conceptuel
48

 C’est une abstraction aussi fidèle que possible, de l'univers de


l'entreprise, après modélisation et indépendamment de toute
référence à l'utilisation et à l'implantation en machine.
 Le modèle conceptuel de données (MCD) permet le passage d'un
concret inaccessible (l'univers réel) à un abstrait manipulable : le
schéma conceptuel.
 Celui-ci peut donc être considéré comme la description du contenu
de la base : c'est le résultat d'un travail d'analyse et de conception
d'un système d'information automatisé.
 L’administrateur de la BD est probablement la personne qui
va se charger de définir le schéma conceptuel de la BD au
moyen du LDD (Langage de Définition de Données )

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Niveau externe
49

 comprend les "vues" spécifiques définies


pour la manipulation des données.
 Il prend en compte les contraintes d'accès
imposées par la nature des applications à
considérer (indépendamment des
caractéristiques techniques) et exprime les
besoins en données des différents
utilisateurs, ou applications.
 concerne les utilisateurs finaux et les
programmeurs d’applications

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Exercice
50

 Indiquer quel est l’utilisateur qui doit exécuter les


fonctions suivantes pour un système de paie d’une
grande entreprise :

a) Écrire un programme d’application pour générer et imprimer


les chèques.

b) Changer dans la base de données l’adresse d’un employé


qui a déménagé.

c) Créer un nouveau compte d’utilisateur pour un employé


nouvellement embauché.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Solution de l’exercice
51

a) Un programmeur d’application.

b) Un utilisateur final de la BD.

c) L’administrateur de la BD.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Exercice
52
 Étant donné le modèle de données suivant d’un jardin,
doit-il être hiérarchique, réseau ou relationnel ?

Nom de la plante

Instructions Conditions Coût


de la plantation

Luminosité Conditions
nécessaire de sol
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Solution de l’exercice N° 2
53

 Cedoit être un modèle hiérarchique car il a un aspect


arborescent.
 Pourdéterminer la quantité de lumière nécessaire, il faut
accéder d’abord au nom de la plante, puis aux conditions.

 Ilserait difficile d’accéder aux instructions de plantation


uniquement pour les plantes qui doivent être plantées en
plein soleil.
 Maisle modèle relationnel est aussi possible. La
navigation se fait par valeur.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Chap. 2
54
Modèle Relationnel

 Plan
 Introduction

 Concepts de base
 Algèbre relationnelle

 Règle de passage du MCD au MLD

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Motivation d’un MLD
55

 Un Modèle Conceptuel de Données n’est pas directement


implantable car indépendant de tout choix technologique;

 Traduction nécessaire vers un Modèle Logique de Données:


 Suit une approche spécifique de modélisation (hiérarchique,
objet, relationnelle, …)
 Utilise un langage formel de spécification de la structure
logique des données.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Origine du modèle relationnel
56

 Proposé par Codd (Thèse de doctorat) en 1970


 Application de la théorie des relations à la gestion de fichiers
informatiques
 Le modèle relationnel fournit un support mathématique
cohérent à la manipulation de données : l’algèbre relationnelle
 Modèle dominant dans les offres commerciales de SGBD
 Oracle, DB2, Sybase, Ingres, Postgres, MySQL, …

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Structures de données
57

 Organisation des données en tables 2D


 Chaque table est identifiée par un nom unique
 Une table 2D = une relation
 Une colonne d’une table = un attribut
 Une ligne d’une table = un tuple
 Manipulation des données par des opérateurs
 L’algèbre relationnelle
 Cohérence des données gérée par des règles et
normes(Vérifiée surtout au niveau MCD)
 Dépendances fonctionnelles
 Théorie de la normalisation
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Relation & attribut
58

 Chaque colonne d’une table (Attribut), appartient à un


ensemble de valeurs possibles appelé son domaine.
 Le domaine désigne toutes les valeurs permises qui
peuvent apparaître dans la colonne.
 Si « attrib » est le nom d’une colonne, alors «
Dom(attrib) » désigne le domaine de cette colonne.
 Toute valeur qui figure dans une colonne doit appartenir
à son domaine.
 Un domaine se définit soit :
 en extension : couleur_voiture = {bleu, vert, marron, noir, gris, rouge}
 en compréhension : âge_enfants = {x dans N tel que x <15}

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Relation & attribut
59

 Soit l’attribut Ai est une variable qui prend ses valeurs dans un domaine Di
 Soit U = {A1 , A2, ..., An}
 Une relation(table) r définie sur U est un sous-ensemble du produit
cartésien D1 × D2 × … × Dn
 Soient deux ensembles P et Q, on appelle Produit cartésien de P
et Q, l'ensemble noté P×Q , des couples (x, y) où x  P et y 
Q. 
 Exemple:
 Professeurs={ Abbad, Saaidi, Moursi} 
 Étudiants= { Issam, Hamidi} 
 Étudiants ×Professeurs={ (Issam, Abbad) , (Issam,Saaidi) , (Issam,
Moursi) , (Hamidi, Abbad) , (Hamidi, Saaidi) , (Hamidi, Moursi) }

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Relation & attribut
60

 Le schéma de relation représente la structure invariante d’une


relation.
 Il est constitué du nom de la relation suivi de la liste des
attributs et de leurs domaines associés
 PRODUIT (N°PRODUIT : entier, NOM : chaîne, QTE EN STOCK : entier>0)
 Les attributs constituant la clé de r sont écrits en premier dans
le schéma de relation et sont généralement soulignés.
 Une BD relationnelle est un ensemble de relations r1, r2,..., rm
 Cette représentation est purement logique et non physique : dans
un SGBDR, les données sont logiquement perçues sous forme de
tables, mais elles ne le sont pas physiquement.
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Relation & attribut
61

 Le degré d’une table est le nombre de ses attributs.


 Exemple : La table Produit (code produit, libellé du produit,
prix unitaire, quantité en stock).
 Le degré de la table « Produit » est égale à 4.
 Les domaines sont :
 Dom(code produit) : un sous-ensemble des chaînes de caractères
désignant le code d’un produit.
 Dom(libellé) : l’ensemble des noms de tous les produits.
 Dom(prix unitaire) : un sous-ensemble de l’ensemble des nombres réels
positifs.
 Dom(quantité en stock) : un sous ensemble de l’ensemble des nombres
entiers positifs.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Tuple & clé
62

 Un tuple est une ligne d’une relation


 Soit u un tuple de la relation r, on note u.Ai la valeur de l'attribut
Ai du tuple u.
 Chaque tuple est distinct :
∀u,v ∈ r,∀i ∈ (1,2,...,n) si u.Ai = v.Ai alors u=v
 une clé de la relation r est un ensemble minimal d'attributs K tels
que les valeurs de ces attributs permettent de distinguer tout
tuple des autres
K ∈ ( A1, A2,..., An )
 La clé retenue est ∀ u,clév ∈
dite r, si u.K = v.K alors u = v
primaire
 La clé d’une relation est utilisée comme attribut dans une autre relation
quand une association doit être créée

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Tuple & clé
63

 Les lignes ou les tuples d’une table sont également


nommées des enregistrements.
 Les enregistrements d’une table ont le même format et
représentent des objets ou des relations du monde réel.
 Le nombre total des enregistrements présents dans une
table est appelé la cardinalité de la table.
 Remarques :
 Le degré d’une table est fixe (ne change pas).
 La cardinalité d’une table est dynamique : elle peut changer
au cours du temps (par effet d’ajout ou de suppression
d’enregistrements de la table).
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Exemple de relations
64

Propriétaires
num ero nom prenom naissance

5 Madani Hossame 04-févr-80


13 Azzouz Mohcine 15-mai-76
76 Daoud Ali 29-nov

Véhiculés
im m atriculation m arque proprietaire
3452 A 13 BMW 13
9835 B 72 Renault 76
1234 A2 Peugeot 5
9878 A4 BMW 76

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Relation: Résumé
65

 Format général d’une table (représentation logique


d’une relation) : Attributs

Attrib1 Attrib2 Attrib3 Attrib4 … AttribN

Val11 Val12 Val13 Val14 ... Val1N


Ligne Val21 Val22 Val23 Val24 ... Val2N

... ... ... ... ... ...

ValM1 ValM2 ValM3 ValM4 ... ValMN

Colonne
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Règles pour une relation
66

 Une table formée de colonnes et de lignes, a un nom unique.


 Chaque colonne a un nom unique.
 L’ordre des colonnes est sans aucune importance.
 Toutes les lignes ont le même format et le même nombre d’entrée.
 Les valeurs de chaque colonne appartiennent au même domaine.
 Chaque entrée dans chaque ligne doit être une valeur unique.
 L’ordre des lignes est sans importance du fait qu’elles sont identifiées
par leur contenu et non pas par leur position.
 Il n’y a pas deux lignes identiques dans toutes leurs entrées.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés candidates et clé primaire
67

 Exemple d’une table « Vol » :

Numéro Départ Arrivée H_départ H_arriv


1 Oujda Rabat 9:55 11:30
2 Oujda Rabat 12:00 12:47
3 Marrakech Agadir 6:00 7:00
4 Tanger Fès 1:13 2:19
5 Laayoune Casablanca 8:15 9:59
6 Tanger Rabat 8:00 9:00

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés candidates et clé primaire
68

 La notion de clé est un concept fondamental du modèle


relationnel parce qu’elle fournit le mécanisme de base
pour récupérer des tuples dans une table de la BD.
 On appelle clé candidate d’une relation r sur le schéma
relationnel R, tout sous-ensemble K = {B1, B2, …, Bj} de
R (1 ≤ j < n) vérifiant les deux conditions suivantes :
 Pourdeux tuples distincts t1 et t2 de r, il existe un attribut Bh
de K tel que t1.Bh≠ t2.Bh.
 Aucun sous-ensemble propre K’ de K ne satisfait la condition
précédente.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés candidates et clé primaire
69

 La première condition est appelée la propriété d’unicité


de la clé. Elle implique qu’il n’y a pas deux tuples
différents de r à avoir des entrées identiques dans tous
les attributs de l’ensemble K.
 La deuxième condition s’appelle la propriété de
minimalité de la clé. Elle signifie qu’aucun élément de K
ne peut être éliminé sans perdre la propriété d’unicité.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés candidates et clé primaire
70

 Exemple : des clés candidates de la table « Vols »


peuvent être :
 {Numéro}.
 {Départ, Arrivée, H_départ}.
 Remarque : une relation peut comporter plusieurs clés
candidates. L’une d’elles est désignée comme clé
primaire.
 Les valeurs de la clé primaire permettent d’identifier
de manière univoque un tuple de la relation.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés candidates et clé primaire
71

 Dès qu’une clé primaire a été choisie, les autres clés


candidates, si elles existent sont appelées clés
alternatives de la relation.
 Un SGBD n’autorise qu’une clé primaire par table.
 La clé primaire peut être atomique s’il comporte un seul
attribut ou composé s’il contient au moins deux attributs.
 Exemple : la clé primaire {Numéro} est atomique alors
que {Départ, Arrivée, H_départ} est composée.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés candidates et clé primaire
72

 Les attributs de la clé primaire sont soulignés pour les


distinguer des autres attributs ne faisant pas partie de
la clé.
 Exemple : le schéma relationnel de la table se présente
ainsi :
 Vol {Numéro, Départ, Arrivée, H_départ, H_arriv} ou bien :
 Vol {Numéro, Départ, Arrivée, H_départ, H_arriv}.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés candidates et clé primaire
73

 Les clés primaires peuvent être:


 naturelles ou artificielles.
 Dans une table contenant des données descriptives sur
les éléments chimiques, par exemple, « le poids
atomique » serait une clé primaire naturelle.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés candidates et clé primaire
74
 Ilfaut noter que la plupart des clés primaires sont
inventées (artificielles).
 Exemples :
 Numéro d’assurance sociale
 Numéro de permis de conduire
 Numéro de carte de crédit
 Numéro de carte guichet
 CIN : code d’identité nationale
 CNE : code national d’étudiant

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés candidates et clé primaire
75

 Les clés sont des éléments très importants dans la


conception d’une BD relationnelle, puisqu’elles forment
la base pour représenter les relations entre les tables.
 Les clés sont les éléments qui lient les tables entre elles.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


La valeur NULL
76

 Dans une relation, la valeur NULL représente des données


manquantes, inconnues ou des données inapplicables.
 La valeur NULL correspond à une entrée non renseignée
(non saisie, non introduite, non obligatoire).
 La règle précédente signifie que la saisie des valeurs pour
les attributs de la clé primaire est obligatoire.
 Un attribut n’appartenant pas à la clé primaire peut avoir
la valeur NULL.
 Attention :
 La valeur NULL n’est pas égale à 0 (zéro) et ne représente
aucune valeur particulière pour l’ordinateur.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


LES RÈGLES D'INTÉGRITÉ
77

 Les règles à observer pour assurer la cohérence des


données dans une base sont:
 INTÉGRITÉ DE DOMAINE
 INTÉGRITÉ DE RELATION

 INTÉGRITÉ DE RÉFÉRENCE

ENCG Kénitra**Gestion des bases de données 8-déc.-16


INTÉGRITÉ DE DOMAINE
78

 Contrôle des valeurs des attributs:


 par exemple, 4.000 ≤ salaire ≤ 20.000
 liste de couleurs possibles [bleu, rouge, vert, jaune]

 Contrôle entre valeurs des attributs:


 QTE-STOCK ≥ QTE-COMMANDE
 Contrôle des opérateurs entre attributs

ENCG Kénitra**Gestion des bases de données 8-déc.-16


INTÉGRITÉ DE DOMAINE
79

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Intégrité de la relation
80

 Unicité de la clé primaire;


 Aucun des attributs de la clé primaire ne doit être NULL
(du fait que la clé primaire identifie de manière unique
les tuples d’une relation).

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés étrangères et Contrainte d’Intégrité Référentielle
81

 Le concept de clé étrangère (ou clé extérieure) permet


au SGBDR de maintenir la cohérence des lignes de
deux relations ou des lignes de la même relation.
 Définition : une clé étrangère est un attribut
appartenant à une table qui existe aussi en tant que clé
primaire dans une autre table.
 Une clé étrangère d’une table référence une clé
primaire d’une autre table.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés étrangères et CIR
82

 Exemple :
 Considérons les deux relations :
 Etablissement=(Code Etablissement, Nom, Directeur)
 Employé= (Numéro Employé, Nom employé, Prénom
employé, Code Etablissement).
 L’attribut« Code Etablissement» dans la table
«Etablissement» est la clé primaire. C’est une clé
étrangère dans la table « Employé».

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés étrangères et CIR E
t
a
Code Nom Directeur b
83 l
Etablissement Etablissement i
s
1 3GTelecom Ahmed Assou s
e
2 PSoft Yassine Adil m
e
3 Kanal Said Said n
t

Numéro Nom Prénom Code


Etablissement
E
1000 Baali Hamadi 2 m
p
l
1001 El Madani Mounir 2 o
y
1002 Louakil Morad 1 é

1003 Salhi Fadoua 3


ENCG Kénitra**Gestion des bases de données 8-déc.-16
Clés étrangères et CIR
84

 C'estainsi que dans la table « Employé» la clé


étrangère « Code Employé» (faisant référence à la clé
primaire de même nom dans la table « Etablissement»)
traduit les deux règles de gestion suivantes :
 Un Employé appartient à un Etablissement.
 Un Etablissement est composée de plusieurs Employés.
 Lesclés étrangères traduisent donc des liens
sémantiques entre plusieurs tables d’une BD.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés étrangères et CIR
85

 Chaque clé étrangère est une référence à la clé


primaire d’une autre table.
 Dans la plupart des cas, il faut s’assurer que ces
références sont cohérentes (non contradictoires).
 Les valeurs de clé étrangère qui apparaissent dans une
table doivent être les mêmes que celles de clé primaire
dans la table connexe.
 Exemples dans le monde réel :
 Une commande doit provenir d’un client.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés étrangères et CIR
86

 Un produit commandé doit être quelque chose que nous


gardons normalement en stock.
 Un cours est assuré par un professeur.
 Un étudiant doit avoir une note finale dans une matière de la
filière à qui est inscrit l’étudiant.
 Ces contraintes sont appelées « contraintes d’intégrité
référentielle » (CIR).
 Les contraintes d’intégrité référentielle doivent être
supportées par le SGBD d’une façon automatique.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés étrangères et CIR
87

 UnSGBDR doit appliquer les règles suivantes afin


d’assurer les CIR :
 Ajout : lors de l’ajout d’une ligne contenant une valeur de clé
étrangère, le SGBD vérifie que cette valeur existe aussi
comme valeur de clé primaire dans la table connexe.
 Suppression : lors de la suppression d’une ligne, le SGBD
vérifie qu’aucune clé étrangère dans les tables connexes ne
possède la même valeur que la clé primaire de la ligne
supprimée.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés étrangères et CIR
88

 UnSGBDR doit appliquer les règles suivantes afin


d’assurer les CIR (suite) :
 Miseà jour (ou modification) : lors de la mise à jour d’une
valeur de clé primaire, le SGBD vérifie qu’aucune clé
étrangère dans les tables connexes n’a la même valeur.
 Dans le premier cas, le SGBD rejettera simplement
l’ajout d’une ligne contenant une valeur clé étrangère
inconnue.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Clés étrangères et CIR
89

 Dans les deux derniers cas, un concepteur de BD


conserve habituellement un certain contrôle sur la façon
dont l’application référentielle est appliquée.
 Lorsqu’une ligne contenant une clé primaire est
supprimée, le concepteur peut spécifier au SGBD de
supprimer toutes les lignes des autres tables ayant des
clés correspondantes ou de régler toutes les clés
étrangères correspondantes à NULL.
 Un choix similaire est possible lors de la modification
d’une valeur de clé primaire.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les relations entre tables
90

 Dans une BD, certaines tables sont en relation les unes


avec les autres.
 Dans les BD relationnelles, les relations entre tables sont
généralement établies par l’intermédiaire de clés
primaires et étrangères.
 On répartie les données dans des tables que l’on relie
pour réduire la redondance des données.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les relations entre tables
91

 Relation « un à un » : une ligne d’une table A est en


relation avec une seule ligne d’une autre table B.
 Relation « un à plusieurs » : une ligne d’une table A
peut être en relation avec plusieurs lignes d’une autre
table B.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les relations entre tables
92

 Exemples de relations entre tables :


 Un recteur dirige une université :
 Relation de type un à un.
 Un
propriétaire possède plusieurs voitures, une voiture
appartient à un seul propriétaire :
 Relation de type un à plusieurs.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les relations entre tables
93

IDREC NOM PRENOM


1 Benjaloun Wail

2 Touimi Rahma

Table « Recteur »

IDUNIV NOM VILLE IDREC


100 Mohamed V Rabat 1
200 Hassan II Mohamédia 2

Table « Université »
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Les relations entre tables
94 IDPROP NOM PRENOM
1 Razi Mohamed
2 Nafia Mostafa
Propriétaire
3 Adili Said

MATRICULE MODELE IDPROP


1234 A 1 Peugeot 205 1
7588 A 48 Renault 19 1
25254 D 13 Fiat Uno 2
Voiture
25482 B 6 Toyota 3
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Exercice

95

 Considérons la table Département et les lignes montrées


à la suite. Expliquez si ces les lignes peuvent être ou non
insérées dans cette table.
N° département NOM LIEU Effectif
20 Ventes Rue FAR 10

10 Marketing Rue Fès 5

10 R&D Bd Oqba 15
Informatique Anfa 13
15 Comptabilité Agdal 23
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Solution de l’exercice
96
10 R&D Bd Oqba 15
Informatique Anfa 13
15 Comptabilité Agdal 23
Non : cette ligne ne peut pas être insérée, car elle
viole le principe d’unicité de la clé primaire (la valeur
10 existe déjà dans la table).
Non : cette ligne ne peut pas être insérée, car elle
viole la contrainte d’intégrité de la clé primaire (la
clé primaire ne peut pas être NULL).
Oui : cette ligne peut être insérée sans problème, car
aucune contrainte n’est violée.
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Normalisation
97

 Lors de la conception d’une BD, plusieurs possibilités de


modélisation existent;
 La qualité d’un modèle dépend de plusieurs facteurs
 quantité d'information à stocker
 facilité d'expression des requêtes
 prévention d'erreur de mise à jour et d'incohérences
 La normalisation d’une BD implique le respect de critères de
protection de l’intégrité des données
 Plusieurs formes normales(6) existent dont
 1ère, 2ème, 3ème sont largement suffisantes

ENCG Kénitra**Gestion des bases de données 8-déc.-16


La normalisation : exemple
98
 Une entreprise de vente de bateaux qui souhaite constituer un système
d ’information relatif à leur activité
 Achats(IdClient, NomClient, PrénomClient, AdresseClient, ImmatriculationBateau,
ModèleBateau, LongueurBateau, DateAchat, MontantAchat)
 Problèmes potentiels
 redondance de données :
 une personne qui achète plusieurs bateaux
 incohérence suite à une Mise à jour :
 une personne qui change d’adresse
 anomalies lors d’insertion/suppression :
 un client potentiel ne peut être enregistré dans la BD s’il n’a pas encore
acheté de bateau
 lorsqu’un client vend son bateau, il est supprimé du système d’information

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Comment normaliser ?
99

 Décomposition des relations jusqu’à ce que toutes


respectent les 3 Formes Normales suivantes :
 Première Forme Normale
 Une relation est dite en Première Forme Normale si tous
ses attributs sont atomiques ;
 aucun des attributs ne doit être une relation entre « sous-
attributs »
 pas de colonnes dans une colonne

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Dépendance Fonctionnelle
100

 Définition
 Deux groupes d’attributs X et Y de la relation R sont en Dépendance Fonctionnelle
si dans R, chaque valeur de X détermine une et une seule valeur de Y
 si je connais la valeur de X alors je connais la valeur de Y
 une DF est une assertion sur toutes les extensions possibles d’une relation et pas
uniquement sur ses n-uplets actuels
 Exemple : ensemble de DF pour une table

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Seconde Forme Normale
101

 Condition
 Première Forme Normale
 tous les attributs n’appartenant pas à la clé sont en dépendance fonctionnelle
élémentaire avec la clé
 dès qu’un attribut non-clé dépend d’une partie de la clé, la relation n’est pas en 2FN.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Seconde Forme Normale
102

 Exemple
 Prêt_livre (numcli, numlivre, nomcli, adrcli, titre_livre, dateprêt)
 DF
 numcli → nomcli, adrcli
 num_livre → titre_livre
 numcli, numlivre →dateprêt
 Prêt_livre n ’est pas en 2 FN car
 nomcli dépend uniquement de numcli et pas de numcli et de numlivre
 …
 décomposition à l’aide des DF
 client (numcli, nomcli,adrcli)
 Livre (numklivre, titre_livre)
 prêt (numcli, numlivre, dateprêt)

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Troisième Forme Normale
103

 Seconde Forme Normale (2FN)


 Aucun de ses attributs non-clés dépend d’un autre attribut non-clé ;
 il n ’existe pas de DF entre 2 attributs non-clés

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Troisième Forme Normale
104

 Exemple
 ville(num_ville, nom_ville, num_dept, nom_dept)
 DF
 num_ville → nom_ville, num_dept, nom_dept
 num_dept → nom_dept
 ville n’est pas en 3 FN car
 nom_dept dépend de num_dept

 décomposition à l’aide des DF


 ville(num_ville, nom_ville, num_dept)
 dept(num_dept, nom_dept)

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Normalisation: Inconvénients
105

 Les inconvénients de la normalisation sont :


 des temps d'accès potentiellement plus longs si les
requêtes sont trop complexes (lectures plus lente)
 une plus grande fragilité des données étant donné la
non redondance (lecture impossible)
 un manque de flexibilité au niveau de l'utilisation de
l'espace disque

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Passage du MCD au MLD
106

 chaque entité devient une table


 attributs
 colonnes
 clé  clé primaire

 occurrences  n-uplets
 Exemple
Élèves
num élève
nom  eleves (numeleve, nom, prenom, pays)
prénom
pays

ENCG Kénitra**Gestion des bases de données 8-déc.-16


conversion des associations binaires (1)
107

 Association ...,1 ⇔ ...,N


 exemple
Ô recopie de la clé de Écoles en tant que colonne de Élèves (clé
étrangère)
Ô migration des attributs de l’association en tant que colonne de Élèves

Élèves
Écoles
num élève 1,1 avoir pour école 1,n num école
nom date embarquement
nom
prénom date débarquement
adresse
pays
ville
ecole(num_ecole, nom, adresse, ville)
eleve( num_eleves, nom, prénom, pays,num_école, date_embarquement, date
débarquement)
ENCG Kénitra**Gestion des bases de données 8-déc.-16
conversion des associations binaires (2)
108

 Association ...,N ⇔ ...,N


Ô création d’une nouvelle table avec comme colonnes, les clés de Véhicule
et de Propriétaire
Ô création de colonnes pour les attributs de l’association

1,N Posséder 1,N


Propriétaire date début Véhicule
date fin

tables relationnelles correspondantes


Propriétaire(CIN…),
Véhicule(Immatricule…),
Posséder(CIN, Immatricule, date_debut, date_fin, cause_fin…),
Clé de Posséder???
ENCG Kénitra**Gestion des bases de données 8-déc.-16
conversion des associations binaires (3)
109

 Clés primaires de tables relationnelles représentant des


associations Association ...,N ⇔ ...,N
 Remarques :
 Il faut une clé primaire unique
 Les attributs clés primaires des entités associées font partie de la clé
 Pas toujours suffisant
 Exemple
 Si impossible de racheter le même véhicule

 Posséder (CIN, Immatriculation, date_debut, date_fin)


 Si possible de racheter le même véhicule
 Posséder (CIN, Immatricule, date_debut, date_fin)

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Exemple
110

 Association ...,1 ⇔ ...,1

homme 0,1 0,1 femme


a pour époux

tables relationnelles correspondantes


homme ( numhomme… numfemme), femme (numfemme…)

ou

homme ( numhomme…), femme (numfemme… numhomme)

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Exemple
111

Produits
Fournisseur
pno
fno
Commandes Concerne design
nom Est passé à
1,N 1,1 cno 1,1 qute 1,N prix
adresse
poids
ville
couleur

Les tables relationnelles correspondantes :


• Produits(pno,design,prix,poids,couleur)
•Fournisseurs(fno,nom,adresse,ville)
•Commandes(cno, qute fno,pno)

ENCG Kénitra**Gestion des bases de données 8-déc.-16


conversion des associations N-aires
(N >2)
112

professeur 1,N 1,N classe


enseigne
1,N
matière

 création d’une nouvelle table avec comme


colonnes, les clés
 Professeur (numprof…)
 Classe (numcla…)
 Matiere (nummat…)
 Enseigne (numprof, numcla, nummat)
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Conversion des associations réflexives
113

humain 0,N
parents a pour enfants

0,N enfants

 Humain(num, nom, prénom)


 A_pour_enfants(num_parent,num_enfant)

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Conversion des associations réflexives
114

humain 0,1
père a pour père

0,N enfants

 Humain(num, nom, prénom, num_père)

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Algèbre relationnelle
115

 Motivation : Formuler des requêtes pour interroger des données


 Définition:
 Collection d’opérations formelles qui agissent sur des relations et
produisent une relation en résultat.
 Dans la plupart des systèmes relationnels, la réponse à une requête
s’obtient par l’utilisation d’un ou plusieurs opérateurs relationnels.
 Deux types d’opérateurs:
 Opérateurs unaires :
 Sélection, Projection, Complément
 Opérateurs binaires :
 Union, Intersection, Différence, Produits, Jointures, …

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Opérateurs relationnels unaires
116

 Projection
Seule une partie des attributs est considérée
 Sélection
Seule une partie des tuples est considérée
 Complément (noté –R)
Tous les tuples possibles n’existant pas dans
une relation sont construits

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Projection
117

La projection d’une relation R sur un ensemble


d’attributs (A1,…, Ak) se note : ∏ (R )
( A1,..., Ak )

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Sélection
118

La sélection sur une relation R selon une condition C


se note: σC (R )

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Sélection
119

 Opérateurs de comparaison 
 =, , <, >, , , BETWEEN (entre), IN (dans),
LIKE(comme)
 Combinaison de plusieurs conditions reliées par des
opérateurs logiques : 
 and, or, not
 Valeurs NULL

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Opérateurs relationnels binaires
120
 Union
La fusion de deux relations est considérée
 Différence
Les tuples d’une relation qui n’existent pas dans une seconde relation sont considérés
 Produit cartésien
Toutes les combinaisons entre tuples de 2 relations sont considérées
 Intersection (notée R  R ' )
Seuls les tuples présents dans 2 relations sont considérés
 Thêta-produit (noté R ΘC R ' )
Produit cartésien suivi d’une sélection (Appelé également jointure)

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Union
121

L’union de deux relations R et R’ se note : R  R'

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Différence
122

La différence de deux relations R et R’ se note : R − R'

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Produit cartésien
123

Le produit cartésien de deux relations R et R’ se note :


R × R'

ENCG Kénitra**Gestion des bases de données 8-déc.-16


jointures
124

 Jointure naturelle
Thêta-produit dont la condition est une égalité de valeurs entre des
attributs de deux relations
 Jointure extérieure
Jointure naturelle à laquelle on ajoute les tuples de chaque relation
n’ayant pas trouvé de correspondance dans l’autre

La jointure naturelle est l’opérateur le plus utilisé avec les


sélections et projections, car le plus intéressant

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Jointure naturelle
125

La jointure naturelle de deux relations R et R’ selon une


condition C se note :
R >< C R'


ENCG Kénitra**Gestion des bases de données 8-déc.-16


Combinaison d’opérateurs
126

La puissance de l'algèbre relationnelle s'exprime


dans la combinaison d’opérateurs permettant
d'exprimer des requêtes précises.
Ex: on chercher l’immatriculation des véhicules possédés par la personne
dont le nom est « Allami »

∏ (σ { } (vehicule × σ { nom="Allami"} ( proprietaire)))


proprietaire=numero

immatriculation

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Exercice
127

 Soit la base de données simplifiée. Exprimer la


signification et le résultat des requêtes suivantes:
 1- ∏ (Personne)
(nom,Age )

 2- Πnom_imb(Immeuble);
 3- Πnom_imb, No_app(σsuperficie>100(Appartement));
 4- Πnom-occ(σNom_imb=« Firdaous » ET Année_h>2001)(Occupant);
 5- Πnom_imb, No_app(σNo_app=Etage (Appartement));
 6-Πnomgérant, Superficie (Immeuble ><
 Nom _ imb= Nom _ imb Appartement)
 7-Πnom_occ, Année_h, Superficie (Appartement >< Occupant)
 Nom _ imb= Nom _ imb∧No _ app= No _ app

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Exercice Algèbre relationnelle
128

Nom_imb Adresse Nb Anné Nomgérant Nom Ag Profession


étage e e
Annakhil 22 Rue Azrou, 10 2009 Alami Alami 54 Architecte
Rabat
Atif 39 Médecin
Firdaous 15 bd des Far, Fès 5 2000 Dahbi
Barhou 58 Avocat
m
Table Immeuble
Dahbi 65 Retraité
Nom_imb No_app Superficie Etag Table Personne
e
Nom_imb No_app Nom_occ Année_h
Annakhil 1 150 10
Annakhil 2 100 1 Annakhil 1 Alami 2009

Annakhil 10 90 9 Annakhil 2 Dahbi 2009


Firdaous 5 120 2 Firdaous 5 Atif 2001
Firdaous 10 100 5 Firdaous 10 Barhoum 2005
Firdaous 11 80 3
Table Occupant
Table Appartement
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Exercice
Ecrire en algèbre relationnelle les requêtes:
129

 1. Nom des immeubles ayant strictement plus de 8 étages.


 2. Nom des personnes ayant emménagé avant 1994.
 3. Nom des habitants d’Annakhil.
 4. Nom des Architectes de plus de 25 ans.
 5. Nom des immeubles ayant un appartement de plus de 150 m2.
 6. Qui gère l’appartement où habite Atif?
 7. Dans quel immeuble habite un retraité?
 8. Qui habite un appartement de moins de 70 m2?
 9. Nom des personnes qui habitent au dernier étage de leur immeuble.
 10. Profession du gérant du Firdaous?
 11. Age et profession des occupants de l’immeuble géré par Alami?
 12. Qui habite, dans un immeuble de plus de 10 étages et un appartement de plus
de 100 m2?
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Exercice: Correction
130

 Ecrire en algèbre relationnelle les requêtes:


 1. Nom des immeubles ayant strictement plus de 10 étages.
 Πnom_imb(σNb_etage>10(Immeuble));
 2. Nom des personnes ayant emménagé avant 1994.
 Πnom_occ(σAnnée_h<1994(Occupant));
 3. Qui habite Annakhil?
 Πnom_occ(σNom_imb=‘’Annakhil ’’(Occupant));
 4. Nom des Architectes de plus de 25 ans.
 Πnom(σProfession=‘’Architecte ’’ ^Age>25(Personne));
 5. Nom des immeubles ayant un appartement de plus de 150 m2.
 Πnom_imb(σsuperficie>150(Appartement));
 6. Qui gère l’appartement où habite Atif?
 Πnomgérant(σNom_occ=« Atif » (Immeuble >< Nom _ imb= Nom _ imb Occupant))

ENCG Kénitra**Gestion des bases de données 8-déc.-16
Exercice: Correction
131

 7. Dans quel immeuble habite un retraité?


 Πnom_imb(σProfession=« Retraité »( (Personne >< Nom= Nom _ occ Occupant))

 8. Qui habite un appartement de moins de 70 m2?
 Πnom_occ(σSperficie<70( (Appartement >< Nom _ imb= Nom _ imb^ No _ app= No _ app Occupant))

 9. Nom des personnes qui habitent au dernier étage de leur immeuble.
 Πnom_occ(σNb_etage=No_etage( (Appartement >< Nom _ imb= Nom _ imb (Immeuble >< Nom _ imb= Nom _ imb Occupant))))

 10. Profession du gérant du Firdaous?
 ΠProfession(σNom_imb=« Firdaous »( (Personne ><
 Nom= Nomgérant Immeuble))
 11. Age et profession des occupants de l’immeuble géré par Alami?
 Π Age, Profession(σNom_gérant=« Alami »( 
(Personne >< Nom= Nom _ occ (Immeuble >< Nom _ imb= Nom _ imb Occupant))))
 12. Qui habite, dans un immeuble de plus de 10 étages avec un appartement de
plus de 100 m2?
 Π Age, Profession(σNb_etage>10 Et Superficie>100( 
(Occupant >< Nom _ imb= Nom _ imb (Immeuble >< Nom _ imb= Nom _ imb Appartement))))

ENCG Kénitra**Gestion des bases de données 8-déc.-16
Exercice MCD MLD
132

Groupe Pédagogique
Élève
Num_groupe
no_etudiant Nom
nom 1:1
1:N
prenom
1:N dirige
1:1
donne accès 0:N
appartient suit
Enseignant
Note
Num
0:N 1:N Nom
1:1
Promotion Unité Pédagogique Prenom
1:1
Nom Numéro 0:N
enseigne
Nom
ENCG Kénitra**Gestion des bases de données 8-déc.-16
ENCG Kénitra**Gestion des bases de données 133

CHAPITRE 3 :
LANGAGE SQL

8-déc.-16
Sommaire du chapitre 3
134

 Présentationdu langage SQL;


 Types de données;

 Requêtes d’action;

 Requêtes de sélection;

 Requêtes de contrôle.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Présentation du langage SQL
135

+ Le sigle SQL signifie "Structured Query Language", soit en français


"Langage de requêtes 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
+ SQL : langage proche de l’utilisateur et de sa façon de poser les requêtes
(formulation proche du langage naturel)
+ SQL : langage assertionnel (non procédural), facile à apprendre pour
rédiger les requêtes, les lire et les comprendre.
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Présentation du langage SQL
136

+ SQL a été normalisé par l'ANSI (American National Standards


Institute) et par l'ISO (International Organization for
Standardization).

+ Cette normalisation a donné naissance à une 1ère version


(SQL1) en 1987 puis à une 2ème version (SQL2) en 1992

+ Une troisième norme (SQL3) est sortie en 2003 par l'ANSI et l'ISO.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Présentation du langage SQL
137

+ 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

+ Chaque requête SQL doit obligatoirement se terminer par un


Point Virgule (SGBD ACCESS)

+ On distingue 3 types de requêtes: Actions (Création et m.à.j),


Sélections (Interrogation) et Contrôle (définir des permissions
pour les utilisateurs).
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Présentation du langage SQL
138

 Utilisation de SQL :
 En mode interactif : l’utilisateur écrit textuellement une
commande SQL et récupère le résultat immédiatement.
 En mode intégré : une commande SQL est mélangée avec
les instructions d’un programme en langage de haut niveau
tel que C, C++, Visual basic, Pascal...

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Types de données
139

 INTEGER ou INT : entiers signés.


 TEXT(p) ou CHAR(p) : chaîne de caractères de longueur fixe de p caractères.
 VARCHAR (p): chaîne de caractères de longueur variable de p caractères
maximum.
 DATE, TIME, DATETIME: dates et/ou heures.
 LOGICAL : valeur logique « oui » ou « non ».
 DECIMAL(p, q) : nombres décimaux de p chiffres dont q après le point décimal
(par défaut, q = 0).
 FLOAT : nombre réel en virgule flottante(il y a aussi Single pour simple et
Double pour réel double).
 CURRENCY, MONEY : Monétaire.
 COUNTER : Compteur (NuméroAuto).

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Types de données
140

 Quelques propriétés des attributs en SQL :


 PRIMARY KEY : clé primaire.

 FOREIGN KEY : clé étrangère.

 NULL / NOT NULL : valeurs non obligatoires/obligatoires.

 DEFAULT = Valeur : pour définir une valeur par défaut (ne


fonctionne pas sous Access).
 CHECK (Condition): pour contrôler la validité des valeurs (ne
fonctionne pas sous Access).
 UNIQUE : permet de vérifier que la valeur saisie pour un champ
n'existe pas déjà dans la table.
 CONSTRAINT : permet de donner un nom à une contrainte ce qui
permet de la manipuler (Exemple effacement).
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Conventions
141

 Les conventions relatives aux noms des tables et des champs varient
quelque peu d'un SGBD à l'autre:
 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 ê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 ;
 Les termes faisant partie du vocabulaire du langage SQL sont interdits
("date » par exemple). Ce sont les mots réservés.
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Requêtes d’action
142

ò Requêtes d’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…
 Création d’une table : Cette opération donne comme
résultat une table vide ne contenant aucun enregistrement.
 Il faut préciser :
 Le nom de la table;
 La description de ses colonnes : nom, type de données et contraintes.

 L’instructionCREATE TABLE permet de créer une


nouvelle table.
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Création de table
143

 Syntaxe SQL pour créer une nouvelle table avec une


clé primaire :
 CREATE TABLE Nom_table (champ1 type [CONSTRAINT
nom_contrainte] PRIMARY KEY, champ2 type [NOT NULL],
…, champN type [NOT NULL]);
 Syntaxe SQL pour créer une nouvelle table avec une clé
primaire composée :
 CREATE TABLE Nom_table (champ1 type [NOT NULL],
champ2 type [NOT NULL], …, champN type, [CONSTRAINT
nom_contrainte] PRIMARY KEY (champ1, champ2,…) );

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Création de table: Exemples
144

 CREATE TABLE Client (NumCli integer Primary key Not nul, email
VARCHAR (50) NOT NULL, nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20), motDePasse VARCHAR (60) NOT NULL,
anneeNaiss DECIMAL (4));
 CREATE TABLE Cinéma (nom VARCHAR (50) primary key NOT
NULL, adresse VARCHAR (50) DEFAULT ’Inconnue’);
 CREATE TABLE ETUDIANT(ID INTEGER PRIMARY KEY, NOM
TEXT(15), PRENOM TEXT(15), AGE INTEGER CONSTRAINT
Contrainte_AGE CHECK(age< 35), BOURSIER LOGICAL);

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Création de table: Exemples
145

 Donnez une requête SQL permettant de créer la table


EMPLOYES ( Nemployé: entier, Nom: texte(25), Prénom:
texte(20), Fonction: texte(15), Adresse: texte(50), Codeville:
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 ) ;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Création d’une table
146

 Créez une requête SQL permettant de créer la table


DETAILS ( Ncommande: entier, Réf: texte(30), Pu:
monétaire non nul, Quantité: entier non nul, Remise: réel
simple );

 CREATE TABLE DETAILS ( Ncommande Integer, Réf


Char(30), Pu Currency NOT NULL, Quantité Integer NOT
NULL, Remise Single, CONSTRAINT nom_index PRIMARY
KEY ( Ncommande, Réf ) ) ;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Création d’une table: Clé étrangère
147

 Créez une requête SQL permettant de créer la table


Participe( Numadh: entier, Numact: entier, AnneeParticipe:
entier);
 Numadh est la clé primaire de la table Adherent et Numact
est la clé primaire de la table Activite.
 CREATE TABLE Participe( Numadh integer, Numact
integer, anneeParticipe integer, Primary key (Numadh,
Numact, AnneeParticipe),
 Foreign key (Numadh) references Adherent(Numadh),
 Foreign Key (Numact) references Activite(Numact));

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Création d’une table: Clé étrangère
148

 Quatre options sont disponibles pour la


suppression des clés étrangères:
 ON DELETE RESTRICT : Pour interdire la suppression d’un
enregistrement référencé par un enregistrement d’une autre relation. On
trouve également l’expression NO ACTION à la place du mot clé
RESTRICT dans certains SGBD.
 ON DELETE SET NULL : Affecte la valeur NULL à la clé étrangère.
 ON DELETE SET DEFAULT : Affecte la valeur par défaut (selon le type
de données) à la clé étrangère.
 ON DELETE CASCADE : Indique au SGBD qu’il est possible de détruire
la clé étrangère en détruisant toutes les clés étrangères avec la même
valeur.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Création d’une table: Clé étrangère
149

 CREATE TABLE Film (titre VARCHAR (50) NOT NULL,


annee INTEGER NOT NULL,
idMES INTEGER,
codePays INTEGER,
PRIMARY KEY (titre),
FOREIGN KEY (idMES) REFERENCES Artiste(idMES)
ON DELETE SET NULL,
FOREIGN KEY (codePays) REFERENCES
Pays(codePays));
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Modification dans une table
150

ò 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.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modification dans une table
151

 Modification de la structure d’une table :


 Ily a trois types d’actions concernant la modification de
structure d’une table :
 Ajouterune ou plusieurs colonnes.
 Supprimer une ou plusieurs colonnes.
 Modifier les propriétés d’une ou de plusieurs colonnes.
 Les commandes SQL relatives à ces actions :
 ADD
 DROP
 MODIFY

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modification dans une table
152

 Modification de la structure d’une table :


 Pour modifier la structure d’une table, on précise tout
d’abord le nom de celle-ci en écrivant la commande
suivante :
 ALTER TABLE Nom_table
 En suite, on spécifie la nature de l’action de modification
(ajout, suppression ou modification).
 Pour cela, il faut utiliser l’une des trois commandes : ADD,
DROP ou MODIFY.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modification dans une table
153

 Exemples d’ajout :
 Ajouter une colonne « AGE » (entier) dans la table « CLIENT » :

ALTER TABLE CLIENT


ADD AGE INTEGER;
Ou
ALTER TABLE CLIENT
ADD Column AGE INTEGER;
 Ajouter une colonne « DATECOMPTE »(date) dans la table «
COMPTE » :
ALTER TABLE COMPTE
ADD DATECOMPTE DATE;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modification dans une table
154

 Exemples de suppression :
 Supprimer la colonne « ADRAGENCE » de la table « AGENCE » :

ALTER TABLE AGENCE


DROP ADRAGENCE;

 Supprimer la colonne « DATECOMPTE » de la table « COMPTE » :


ALTER TABLE COMPTE
DROP DATECOMPTE;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modification dans une table
155

 Exemples de modification de propriétés :


 Modifier le type de la colonne « ADRAGENCE » pour qu’il
soit un CHAR(100) au lieu de CHAR(40) :
ALTER TABLE AGENCE
MODIFY ADRAGENCE CHAR(100);

 Modifier la colonne « AGE » de la table « CLIENT » pour


qu’elle soit obligatoire :
ALTER TABLE CLEINT
MODIFY AGE NOT NULL;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modification dans une table
156

 Créez une requête SQL permettant de créer la table


VILLES ( Codeville: NuméroAuto, Ville: texte(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 CodeVille de la table
VILLES
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Modification dans une table
157

 ALTER TABLE EMPLOYES ADD


CONSTRAINT Lien_ville FOREIGN KEY
(CodeVille) REFERENCES VILLES (CodeVille);
 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;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Suppression d’une table
158

 Suppression d’une table :


 La syntaxe SQL pour supprimer une table est très simple :
 DROP TABLE Nom_table
 Exemples :
 DROP TABLE CLIENT
 DROP TABLE AGENCE
 DROP TABLE COMPTE

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Suppression d’une table
159

 La clause CASCADE CONSTRAINS pour supprimer


toutes les contraintes d’intégrités référentielles qui
réfèrent à la relation supprimée.
 Exemple :
 DROP TABLE COMPTE CASCADE CONSTRAINS ;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Insertion d’enregistrements
160

 Insertion d’enregistrements dans une table :


 La commande qui permet d’insérer une ligne dans une
table est la suivante :
INSERT INTO Nom_table [(champ1, champ2, …)]
VALUES (valeur1, valeur2, …) ;
 Dans la clause “INTO…”, on spécifie le nom de la table
ainsi que les noms des colonnes.
 Si l’on veut ajouter une ligne contenant les valeurs pour
tous les champs, dans ce cas on peut omettre les noms de
colonnes.
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Insertion d’enregistrements
161
 Exemple:
 Créez une requête permettant d’ajouter l’enregistrement suivant dans la
table EMPLOYES: (100, BEN AZOUZ, Aziz, Ingénieur, 90050)
La table EMPLOYES ( Nemployé , Nom, Prénom, Fonction, Adresse,
Codeville)
 INSERT INTO EMPLOYES (Nemployé, Nom, Prénom, Fonction, Codeville)
VALUES (100, "BEN AZOUZ", "Aziz", "Ingénieur", 90050) ;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modification d’un enregistrement
162

 L’instruction UPDATE permet la mise à jour d’une table;

 On modifie la valeur d’un champ d’un enregistrement qui


vérifie une condition précise (critère pour accéder à la ligne qui
sera le sujet de la modification);

 Syntaxe
:
UPDATE table SET nouvelles valeurs WHERE critères

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modification d’un enregistrement
163

 Les champs à mettre à jour doivent être écrits dans la


clause SET, l’un après l’autre (avec leurs valeurs) et
séparés par des virgules.
 Les champs non spécifiés après la clause SET ne seront
pas modifiés.
 Si la clause WHERE est absente, tous les
enregistrements de la table seront affectées.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Modification d’un enregistrement
164

 Exemples :
 Donner une requête SQL pour modifier l’adresse de l'employé numéro 10
par la nouvelle adresse sera "10 Avenue Mohamed VI, Rabat".
 UPDATE EMPLOYES SET Adresse = "10 Avenue Mohamed VI,
Rabat" WHERE Nemployé = 10 ;
 Donner une requête SQL pour augmenter de 5% le salaire de tous les
acteurs : ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age,
Films)
 UPDATE ACTEURS SET Salaire = Salaire * 1.05 ;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Suppression d’enregistrements
165

 L’instruction DELETE permet d’effacer des


enregistrements d’une table.
 La syntaxe de la commande est :
DELETE * FROM Nom_table WHERE Condition;
 Pour supprimer tous les enregistrements d’une table, il
suffit de ne pas indiquer la clause WHERE.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Suppression d’enregistrement
166

 Exemples :
 Effacez
tous les enregistrements de la table ACTEURS;
 DELETE * FROM ACTEURS ;

 Ou
 DELETE N_act FROM ACTEURS ;
 Effacez tous les acteurs de nationalité marocaine;
 DELETE * FROM ACTEURS WHERE
Nationalité= "marocaine";

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
167

 Une requête de type SELECTION permet d'interroger une base de données en


composant les projections, les restrictions, les jointures….
 Le résultat d’une telle requête est renvoyé sous forme d’une table formée d’un ou
plusieurs attributs.
 Sa syntaxe est :

 SELECT [Prédicat]
 {* / table.* /[table.attribut1 As alias1], [table.attribut2 As alias2], …}
 FROM Liste de table
 [WHERE Critère de sélection]
 [GROUP BY Liste d’attributs]
 [HAVING Critère de sélection]
 [ORDER BY Critère d’ordre]

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
168

 Interprétation:
 Projection : SELECT… FROM…

 Restriction ou Jointure : WHERE …

 Tri : ORDER BY … ASC / DESC

 [ ] signale une clause optionnelle, c.à.d on peut utiliser la requête SELECT sans
cette clause
 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

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
169

 * : Indique que tous les champs des tables spécifiées


seront sélectionnés
 Table: Nom des tables séparées par des virgules.
 attribut1, attribut2: Noms des champs à extraire.

 alias1, alias2: Utilisés pour renommer un attribut.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
170

Exemples
Soit la table ACTEURS :
ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films)

•Donner une requête SQL pour afficher tous les champs et tous les enregistrements
de la table ACTEURS
SELECT * FROM ACTEURS;
•Requête SQL pour afficher uniquement le Nom, Prénom et le salaire de chaque
Acteur
SELECT Nom, Prénom, Salaire 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;
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Les requêtes de sélection
171

•Requête SQL afficher les 5 premiers acteurs de la table ACTEURS

SELECT TOP 5 * FROM ACTEURS;


•Requête SQL afficher 30% des acteurs de la table ACTEURS

SELECT TOP 30 PERCENT * 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
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Les requêtes de sélection
172

•Afficher le nombre totale d’enregistrements de la table ACTEURS

SELECT COUNT(*) FROM ACTEURS;


•Afficher le nombre totale d’enregistrements de la table ACTEURS et nommer
le champ retourné Nombre total

SELECT COUNT(*) As [Nombre Total] FROM ACTEURS;

• Afficher le nombre d’enregistrements de la table ACTEURS qui ont une entrée dans
le champ Nom. Nommer le champ retourné Nombre d’entrée

SELECT COUNT(Nom) As [Nombre d’entrée] FROM ACTEURS;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
173

•Afficher le total des salaires de la table ACTEURS et nommer le champ


retourné Total des salaires

SELECT SUM(Salaire) As [Total des salaires] FROM ACTEURS;


•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 salaire le plus élevé de la table ACTEURS et nommer le champ retourné


Salaire maximal

SELECT MAX(Salaire) As [Salaire maximal] FROM ACTEURS;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
174

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)
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Les requêtes de sélection
175

•Afficher tous les noms d’acteurs dont l’âge est supérieur ou égal à 25
SELECT Nom FROM ACTEURS WHERE Age >=25;

• Afficher tous les noms d’acteurs 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’acteurs 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;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
176

•Afficher tous les acteurs dont la nationalité est américaine, marocaine ou égyptienne
SELECT * FROM ACTEURS WHERE Nationalité IN ("Américaine", "Egyptienne",
"marocaine");
•Afficher tous les noms d’acteurs qui commencent par "D"
SELECT Nom FROM ACTEURS WHERE Nom LIKE "D*";

•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 );
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Les requêtes de sélection
177

• 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)

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
178

Les jointures
Jointure interne: utilise INNER JOIN. Ne sont incluses dans le résultat
final que les lignes qui se correspondent dans les deux tables.

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 ;

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.
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Les requêtes de sélection
179

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 ;

(Ou bien )

SELECT PRODUITS.Réf, Nompr FROM PRODUITS, DETAILS

WHERE PRODUITS.Réf = DETAILS.Réf ;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
180

•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 )
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;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
181

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 );

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
182

•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;

+ 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

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
183

•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;
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Les requêtes de sélection
184

•En utilisant la table détails, afficher pour chaque commande le total de quantités des
produits vendus
SELECT Ncommande, SUM(Quantité) AS [Totale 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 [Totale quantités vendues]


FROM DETAILS
GROUP BY Ncommande
HAVING SUM(Quantité) > 60 ;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
185

•Afficher les commandes qui contiennent plus que 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 totale est > 60

SELECT Ncommande, SUM(Quantité) AS [Totale quantités vendues]


FROM DETAILS
WHERE Remise=0.06
GROUP BY Ncommande
HAVING SUM(Quantité) > 60 ;
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Les requêtes de sélection
186

• 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 d’Asilah 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 ="Asilah"
GROUP BY EMPLOYES.Nemployé
HAVING COUNT(*) > 100 ;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
187

 Produit cartésien :
 SELECT * FROM Nom_de_relation1, Nom_de_relation2;
 Exemple:
 SELECT * FROM Employés, Ville;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection: Différence
188

 La différence en SQL est réalisée par en utilisant MINUS entre deux


sélections:
 SELECT Liste_attributs FROM Nom_table1
MINUS SELECT Liste_attributs FROM Nom_table2;

 On peut également faire:


 SELECT Liste_attributs FROM Nom_table1 WHERE Nom_attribut
NOT IN ( SELECT Nom_attribut FROM Nom_table2 [WHERE <Condition de restriction>]);

 Ou encore:
 SELECT Liste_attributs FROM Nom_table1 AS R1 WHERE NOT EXISTS
 (SELECT * FROM Nom_table2 AS R2 WHERE R2.Nom_attribut = R1.Nom_attribut);

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Les requêtes de sélection
189

 L’union en SQL est réalisée par en utilisant UNION entre deux sélections:
 SELECT Liste_attributs FROM Nom_table1 [WHERE <Condition de restriction> ]
UNION
SELECT Liste_attributs FROM Nom_table2 [WHERE <Condition de restriction>];

 L’ intersection en SQL est réalisée par en utilisant INTERSECT entre deux


sélections:
 SELECT Liste_attributs FROM Nom_table1 [WHERE <Condition de restriction> ]
INTERSECT
 SELECT Liste_attributs FROM Nom_table2 [WHERE <Condition de restriction>];

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Contrôle des utilisateurs
190

 Droits possibles sont:


 INSERT, UPDATE, SELECT et DELETE.
 Il existe deux autres droits :
 REFERENCES donne le droit à un utilisateur non
propriétaire du schéma de faire référence à une table
dans une contrainte d’intégrité.
 USAGE permet à un utilisateur non propriétaire du
schéma d’utiliser une définition (autre qu’une table ou
une assertion: contraintes) du schéma.

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Contrôle des utilisateurs
191

 Les droits sont accordés par la commande GRANT dont la


syntaxe :
 GRANT <privilège> ON <élément du schéma>
 TO <utilisateur> [WITH GRANT OPTION]
 Voici la commande permettant à Mohcine de consulter les
Employés.
 GRANT SELECT ON Emloyés TO Mohcine;
 On peut désigner tous les utilisateurs tous les privilèges par:
 GRANT ALL PRIVILEGES ON Employés TO PUBLIC

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Contrôle des utilisateurs
192

 On supprime un droit avec la commande REVOKE dont la


syntaxe est semblable à celle de GRANT.
 REVOKE SELECT ON Employés FROM Mohcine

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Exercice Langage SQL
193

Nom_imb Adresse Nb Anné Nomgérant Nom Ag Profession


étage e e
Annakhil 22 Rue Azrou, 10 2009 Alami Alami 54 Architecte
Rabat
Atif 39 Médecin
Firdaous 15 bd des Far, Fès 5 2000 Dahbi
Table Immeuble Barhou 58 Avocat
m
Dahbi Table
65 Personne
Retraité
Nom_imb No_app Superficie Etag
e
Nom_imb No_app Nom_occ Année_h
Annakhil 1 150 1
Annakhil 2 100 1 Annakhil 1 Alami 2009

Annakhil 10 90 9 Annakhil 2 Dahbi 2009


Firdaous 5 120 2 Firdaous 5 Atif 2001
Firdaous 10 100 3 Firdaous 10 Barhoum 2005
Firdaous 11 80 3
Table Appartement Table Occupant
ENCG Kénitra**Gestion des bases de données 8-déc.-16
Exercice
194

 Ecrire en langage SQL les requêtes:


 1. Afficher les noms des immeubles;
 Select Nom_imb from immeuble;
 2. Nom des immeubles ayant strictement plus de 10 étages.
 Select Nom-imb from immeuble where nb_étage>10;
 3. Nom des personnes ayant emménagé avant 1994.
 Select Nom_occ from Occupant where Année_h<1994;
 4. Qui habite Annakhil?
 Select Nom_occ from Occupant Where Nom_imb=‘’ Annakhil’’;
 5. Nom des Architectes de plus de 25 ans.
 Select Nom, age From Personne Where Profession=‘’Architecte’’ And Age>25;
 6. Nom des immeubles sans redoublons ayant un appartement de plus de 150 m2.
 Select distinct Nom_imb from Appartement where Superficie>150;

ENCG Kénitra**Gestion des bases de données 8-déc.-16


Exercice
195
 7. Qui gère l’appartement où habite Atif?
 Select Nomgérant from Immeuble Inner Joint Occupant On Immeuble.Nom_imb=Occupant.Nom_imb
where nom_occ=‘’Atif’’;
 8. Dans quel immeuble habite un retraité?
 Select Nom_imb from Personne, Occupant where Personne.Nom=Occupant.nom_occ and
profession=’’Retraité’’;
 9. Qui habite un appartement de moins de 70 m2?
 Select Nom_occ from Appartement, Occupant where Appartement.Nom_imb=Occupant.Nom_imb and
Appartement.No_app=Occupant.No_app and superficie<70;
 10. Noms des personnes qui habitent au dernier étage de leur immeuble
 Select Nom_occ from occupant, appartement, immeuble where
occupant.Nom_imb=Appartement.Nom_imb and Occupant.No_app=Appartement.No_app and
immeuble.Nom_imb=Appartement.Nom_imb And Etage=Nb_etage ;
 11. Profession du gérant du Firdaous?
 Select Profession from Personne INNER JOIN Immeuble ON Nomgérant=Nom WHERE
Nom_imb=‘’firdaouss’’;

NomENCG Kénitra**Gestion des bases de données 8-déc.-16


Exercice
196
 12. Age et profession des occupants de l’immeuble géré par Alami?
 SELECT Age, Profession FROM Personne, Occupant, Immeuble WHERE
Personne.Nom=Occupant.Nom_occ and Occupant.Nom_imb=Immeuble.nom_imb and
Nomgérant=‘’Alami’’;
 13. Qui habite dans un immeuble de plus de 10 étages et un appartement de plus de 100 m2?
 SELECT Nom_occ from Occupant, Immeuble, Appartement WHERE
Occupant.Nom_imb=Appartement.Nom_imb AND Occupant.No_app=Appartement.No_app AND
Immeuble.Nom_imb=Appartement.Nom_imb AND Nb_étage>10 AND Superficie=100;
 14. Afficher la superficie totale de chaque Immeuble;
 SELECT SUM(Superfice) FROM Appartement GROUP BY Nom_imb;
 15. Afficher le nombre d’appartement par étage pour chaque immeuble;
 SELECT Nom_imb, Etage, COUNT(*) AS [nombre d’appartement] FROM Appartement GROUP BY
Nom_imb, Etage;
 16. Le prix de location par mois et par mètre carré est de 40DH. Afficher la recette maximale par mois
(si tous les appartements son occupés);
 Select SUM(Superficie*40) from Appartement;

ENCG Kénitra**Gestion des bases de données 08/12/2016


Exercice
197
 16. Le prix de location par mois et par mètre carré est de 40DH. Afficher la recette par mois pour
seulement les appartements occupés;
 Select SUM(Superficie*40) from Appartement, Occupant Where Appartement.Nom_imb=
Occupant.Nom_imb And Appartement.No_app=Occupant.No_app;
 17. Le prix de location par mois et par mètre carré est de 40DH. Afficher la recette par mois pour les
appartements occupés par immeuble;
 Select SUM(Superficie*40) from Appartement, Occupant Where Appartement.Nom_imb=
Occupant.Nom_imb And Appartement.No_app=Occupant.No_app Group by Nom_imb;
 18. Afficher la superficie totale de chaque étage pour chaque Immeuble;
 SELECT SUM(Superfice) FROM Appartement GROUP BY Nom_imb, Etage;

ENCG Kénitra**Gestion des bases de données 08/12/2016

Vous aimerez peut-être aussi