Fondements de BD

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 109

Année Universitaire: 2022-2023

Module: Fondements de BD
Niveau : 1LSI

Enseignante: Dr Inès Sghir

1
Chapitre 1: Introduction

2
LES BASES DE DONNÉES
 Toute organisation a besoin d'informations.
 Exemples :

 Une bibliothèque maintient une liste de membres,


de livres...
 Une société maintient des informations sur ses
salariés, ses départements…
 Ces informations sont appelées des données.

 Pour être utilisables, ces données doivent être


structurées et ordonnées.

3
LES BASES DE DONNÉES

 Une base de données est un ensemble


organisé d'informations, mémorisées sur un
support informatique.

 Utilité d'une base de données?


 permet de mettre des données à la disposition
d'utilisateurs selon les droits associés.
 peut être locale ou répartie

 L'avantage majeur de l'utilisation de bases de


données est la possibilité de pouvoir être accédées
par plusieurs utilisateurs simultanément.
4
LES BASES DE DONNÉES
 Une organisation peut recourir à un ou plusieurs
fichiers pour stocker les données sur une mémoire
secondaire.
 L’utilisation directe de fichiers soulève de très gros
problèmes :
o Lourdeur d’accès aux données: En pratique, pour
chaque accès, même le plus simples, il faudrait
écrire un programme.
o Manque de sécurité: Si tout programmeur peut
accéder directement aux fichiers, il est impossible
de garantir la sécurité et l’intégrité des données.
o Pas de contrôle de concurrence: Dans un
environnement où plusieurs utilisateurs accèdent
aux même fichiers, des problèmes de concurrence 5
d’accès se posent.
DÉFINITION D’UN SGBD

 Les Systèmes de Gestion de Bases de


Données (SGBD) remplacent les anciennes
organisations où les données, regroupées en
fichiers, restaient liées à une application
particulière.

 Un SGBD est un logiciel qui permet de


créer et de gérer des bases de données.
Traduction en anglais : DBMS : Data Base
Management System
6
DÉFINITION D’UN SGBD
 Un SGBD permet de :
 Décrire
 Mémoriser
 manipuler (à l’aide de requêtes)
 traiter

des ensembles de données, tout en assurant leur :


 sécurité
 confidentialité
 intégrité (justesse)

7
QUE DOIT-ON SAVOIR POUR
UTILISER UN SGBD?

 Définitiondu schéma de données en utilisant


les modèles de données du SGBD.

 Opérations sur les données : recherche, mises-à-


jour, etc.

 Partage des données entre plusieurs


utilisateurs. (Mécanisme de transaction).

 Optimisation des performances, par le réglage


de l’organisation physique des données. 8
SCHÉMA DE DONNÉES
 Un schéma est la description des données contenues
dans la base. Cette description est conforme à un
modèle de données qui propose des outils de
description (structures, contraintes et opérations).

 Dans un SGBD, il existe plusieurs modèles plus ou


moins abstraits des mêmes objets:
o Le modèle conceptuel : la description du système
d’information
o Le modèle logique : interface avec le SGBD
o Le modèle physique : fichiers.

9
SCHÉMA DE DONNÉES
 Un modèle de données définit un mode de
représentation de l’information selon trois composantes:

o Des structures de données.

o Des contraintes qui permettent de spécifier les règles


que doit respecter une base de données.

o Des opérations pour manipuler les données, en


interrogation et en mise à jour.

10
SCHÉMA DE DONNÉES

 Les deux premières composantes relèvent du Langage


de Définition de Données (DDL) dans un SGBD. Le
DDL est utilisé pour décrire le schéma d’une base de
données.

 La troisième composante (opérations) est la base du


Langage de Manipulation de Données (DML) dont le
représentant le plus célèbre est SQL.

11
L’ARCHITECTURE ANSI/SPARC

12
L’ARCHITECTURE ANSI/SPARC
Le niveau externe:
 Le concept de vue permet d'obtenir
l'indépendance logique

 La modification du schéma logique n’entraîne pas


la modification des applications (une modification
des vues est cependant nécessaire)

 Chaque vue correspond à la perception d’une partie


des données, mais aussi des données qui peuvent
être synthétisées à partir des informations
représentées dans la BD (par ex. statistiques)
13
L’ARCHITECTURE ANSI/SPARC

Le niveau conceptuel:
 il contient la description des données et des
contraintes d’intégrité (Dictionnaire de Données)
 le schéma logique découle d’une activité de
Modélisation

Le niveau interne
 il correspond aux structures de stockage et aux
moyens d’accès (index)

14
NOTION DE MODÉLISATION DE DONNÉES

15
MODÈLE ENTITÉ/ASSOCIATION

 Le modèle Entité/Association (E/A) est une


présentation informelle utilisée pour la conception de
bases de données

 La méthode permet de distinguer les entités qui


constituent la base de données, et les associations entre
ces entités. Ces concepts permettent de donner une
structure à la base, ce qui s’avère indispensable.

16
SCHÉMA RELATIONNEL
 Il n’existe en effet qu’une seule structure, la relation. Une
relation peut simplement être représentée sous forme de
table. Une relation a donc un nom (Film) et se compose
d’un ensemble de colonnes désignées par un nom
d’attribut.

 Chaque ligne (ou tuple) correspond à des instances.


 Un schéma relationnel est constitué d’un ensemble de
schémas de relations qui décrivent, à l’aide des éléments
présentés informellement ci-dessus (domaines, attributs,
noms de relation)
17
 Le schéma de la relation est:

Film (titre, année, genre)


Chapitre 2:
Modèle
Entité/Association

18
MODÈLE ENTITÉ/ASSOCIATION

 EAen français, ER en anglais (pour Entity


Relationship)

 Formalisme retenu par l'ISO pour décrire


l'aspect conceptuel des données à l’aide
d’entités et d’associations

19
CONCEPT ENTITÉ
 Représentation d’un objet matériel ou immatériel
 Par exemple un employé, un projet, un bulletin de
paie

 Les entités peuvent être regroupées en types


d’entités
 Par exemple, on peut considérer que tous les
employés particuliers sont des instances du type
d’entité générique EMPLOYE
20
 Par exemple l’employé nommé DUPONT est une
instance ou occurrence de l’entité EMPLOYE
LES PROPRIÉTÉS

 Données élémentaires relatives à une entité

 Parexemple, un numéro d’employé, une date de


début de projet

 onne considère que les propriétés qui


intéressent un contexte particulier

 Lespropriétés d’une entité sont également


appelées des attributs, ou des caractéristiques 21
de cette entité
L’IDENTIFIANT

 propriété ou groupe de propriétés qui sert à


identifier une entité

 L’identifiantd’une entité est choisi par


l’analyste de façon à ce que deux occurrences de
cette entité ne puissent pas avoir le même
identifiant

 Par exemple, le numéro d’employé sera


l’identifiant de l’entité EMPLOYE
22
LES ASSOCIATIONS

 Représentation d’un lien entre deux entités ou


plus

 uneassociation peut avoir des propriétés


particulières

 Par exemple, la date d’emprunt d’un livre

23
LES CARDINALITÉS
 Lacardinalité d’une association pour une entité
constituante est constituée d’une borne
minimale et d’une borne maximale :

 Minimale : nombre minimum de fois qu’une


occurrence de l’entité participe aux occurrences
de l’association, généralement 0 ou 1

 Maximale : nombre maximum de fois qu’une


occurrence de l’entité participe aux occurrences
de l’association, généralement 1 ou n
24
LES CARDINALITÉS
 Exemple:

 Lacardinalité 0,3 indique qu’un adhérent peut


être associé à 0, 1, 2 ou 3 livres, c’est à dire qu’il
peut emprunter au maximun 3 livres.

A l’inverse un livre peut être emprunté par un 25

seul adhérent, ou peut ne pas être emprunté.


LES CARDINALITÉS

 Les cardinalités maximum sont nécessaires


pour concevoir le schéma de la base de données
 Les cardinalités minimums sont nécessaires
pour exprimer les contraintes d’intégrité
 En notant uniquement les cardinalités
maximum, on distingue 3 type de liens :
 Lien fonctionnel 1:n
 Lien hiérarchique n:1
 Lien maillé n:m

26
LES CARDINALITÉS
 Lien fonctionnel 1:n
Une instance de A ne peut être associée qu'à une
seule instance de B

 Par exemple :

27
 Unemployé ne peut travailler que dans un seul
département
LES CARDINALITÉS
 Lien hiérarchique n:1
Une instance de A peut être associée à plusieurs
instances de B

Inverse d'un lien 1:n

28
Un département emploie généralement plusieurs
employés
LES CARDINALITÉS
 Lien maillé n:m
Une instance de A peut être associée à plusieurs
instances de B et inversement

 Par exemple :
De ce schéma, on déduit qu’un employé peut
participer à plusieurs projets.

29
EXEMPLE DE DIAGRAMME E/A

30
EXERCICE
On veut représenter la gestion de la SACEM :
Nous devons représenter :
 Des livres avec : numéro du livre (ISBN), Titre du livre

 Des auteurs avec : Numéro de l’auteur, nom de l’auteur

 Des éditeurs avec : Numéro d’éditeur, nom de l’éditeur

 Des dépôts avec : Numéro de dépôt, nom du dépôt

Attention : ici un « livre » n’est pas le « livre physique » (un exemplaire) mai
plutôt une « édition »
L’investigation du domaine a permis de définir les règles suivantes :
Un livre peut être :
 Écrit par plusieurs auteurs

 Édité par plusieurs éditeurs, mais une seul fois par chacun d’entre eux.
Pour distinguer, on donne alors l’année éditions
 Stocké dans plusieurs dépôts, et cela pour chaque éditeur.
31
Chaque livre stocké est stocké avec une quantité définie.
 Donner le schéma entité-association et les éventuels contraintes d’intégri
Chapitre 3:
Modèle Relationnel

32
LES MODÈLES DE DONNÉES
L'organisation des données au sein d'une BD a une
importance essentielle pour faciliter l'accès et la mise à
jour des données

33
LES MODÈLES DE DONNÉES
 Les modèles hiérarchique et réseau sont issus du modèle
GRAPHE
 données organisées sous forme de graphe
 langages d'accès navigationnels (adressage par liens
de chaînage)
 on les appelle "modèles d'accès«

 Le modèle relationnel est fondé sur la notion


mathématique de RELATION
 introduit par Codd (recherche IBM)
 données organisées en tables (adressage relatif)
 stratégie d'accès déterminée par le SGBD 34
LES MODÈLES DE DONNÉES

Exemple de schéma réseau

Exemple de schéma hiérarchique

35
LE MODÈLE RELATIONNEL
 En 1970, CODD présente le modèle relationnel
 Schéma logique représenté par des RELATIONS

 Les relations représentent les entités du monde réel


(comme des personnes, des objets, etc.) ou les
associations entre ces entités
 Passage d'un schéma conceptuel E-A à un schéma
relationnel:
 une entité est représentée par la relation :
nom_de_l'entité (liste des attributs de l'entité)
 une association M:N est représentée par la relation :
nom_de_l'association ( liste des identifiants des entités
participantes, liste des attributs de l'association)
 une association 1:N ou N:1 subit les règles des 36

intégrités référentielles
LE MODÈLE RELATIONNEL
Exemple

37
LE MODÈLE RELATIONNEL: AVANTAGES
 SIMPLICITE DE PRÉSENTATION: représentation
sous forme de tables
 OPÉRATIONS RELATIONNELLES

 algèbre relationnelle
 langages assertionnels
 INDEPENDANCE PHYSIQUE

 optimisation des accès


 stratégie d'accès déterminée par le système
 INDEPENDANCE LOGIQUE

 concept de VUES
 MAINTIEN DE L’INTEGRITÉ

 contraintes d'intégrité définies au niveau du schéma38


HISTORIQUES ET SYSTÈMES

39
HISTORIQUES ET SYSTÈMES

40
HISTORIQUES ET SYSTÈMES
 Principaux systèmes
 Oracle
 DB2 (IBM)
 Ingres
 Informix
 Sybase
 SQL Server (Microsoft)
 Gemstone
 Sur micro :
 Access
 Paradox
 FoxPro
 Windev
 Sharewares :
 MySQL 41
 MSQL, Postgres
 InstantDB
MODÈLE RELATIONNEL: CONCEPTS
 LE DOMAINE:
ensemble de valeurs atomiques d'un certain type
sémantique
Exemple:
NOM_VILLE = { Nice, Paris, Rome }

 les domaines sont les ensembles de valeurs possibles


dans lesquels sont puisées les données
 deux ensembles peuvent avoir les mêmes valeurs bien
que sémantiquement distincts
Exemple :
NUM_ELV = { 1, 2, … , 2000 } 42
NUM_ANNEE = { 1, 2, … , 2000 }
MODÈLE RELATIONNEL: CONCEPTS
 LA RELATION
sous ensemble du produit cartésien de plusieurs domaines
R ⊂ D1 × D2 × ... × Dn
D1, D2, ... , Dn sont les domaines de R
n est le degré ou l’arité de R
Exemple:
Les domaines :
NOM_ELV = { dupont, durant }
PREN_ELV = { pierre, paul, jacques }
DATE_NAISS = {Date entre 1/1/1990 et 31/12/2020}
NOM_SPORT = { judo, tennis, foot }
La relation ELEVE
43
ELEVE ⊂ NOM_ELV × PREN_ELV × DATE_NAISS
ELEVE = {(dupont, pierre, 1/1/1992), (durant, jacques, 2/2/1994)}
MODÈLE RELATIONNEL: CONCEPTS
LES N-UPLETS
un élément d'une relation est un n-uplet de valeurs (tuple
en anglais)
un n-uplet représente un fait

Exemple:
 « Dupont pierre est un élève né le 1 janvier1992 »

 « dupont est inscrit au judo »

44
MODÈLE RELATIONNEL: CONCEPTS
LES ATTRIBUTS
Chaque composante d'une relation est un attribut
 Le nom donné à un attribut est porteur de sens
 Il est en général différent du nom de domaine
 Plusieurs attributs peuvent avoir le même domaine

Exemple:
La relation TRAJET :
TRAJET ⊂ NOM_VILLE × NOM_VILLE
Dans laquelle la première composante représente la ville
de départ VD, la deuxième composante la ville d’arrivée
VA d’un trajet.
45
MODÈLE RELATIONNEL: CONCEPTS
LE SCHÉMA D’UNE RELATION
Le schéma d'une relation est défini par :
 le nom de la relation
 la liste de ses attributs
on note : R (A1, A2, ... , An)
Exemple:
ELEVE (NOM, PRENOM, NAISS)
INSCRIPT (NOM_ELV, SPORT)
TRAJET (VD, VA)

46
MODÈLE RELATIONNEL: CONCEPTS
LE SCHÉMA D’UNE BDR
Le schéma d'une base de données est défini par l'ensemble
des schémas des relations qui la composent

Notez la différence entre :


 le schéma de la BDR qui dit comment les données sont
organisées dans la base
 l'ensemble des n-uplets de chaque relation, qui représentent
les données stockées dans la base

47
MODÈLE RELATIONNEL: EXEMPLE
 Exemple:

48
EXERCICE

Donner le schéma relationnel qui correspond à ce modèle d’E/A

49
DÉPENDANCE FONCTIONNELLE
Soit R(A1, A2, ...., An) un schéma de relation
 Soit X et Y des sous ensembles de {A1,A2,...An)

 On dit que Y dépend fonctionnellement de X (X->Y) si à


chaque valeur de X correspond une valeur unique de Y
 on écrit : X → Y

 on dit que : X détermine Y

Exemple:
 PRODUIT (no_prod, nom, prixUHT)

no_prod → (nom, prixUHT)


 NOTE (no_contrôle, no_élève, note)

(no_contrôle, no_élève) → note


 une dépendance fonctionnelle est une propriété
sémantique, elle correspond à une contrainte supposée50
toujours vrai du monde réel
DÉPENDANCE FONCTIONNELLE
 D.F. élémentaire:
D.F. X -> A mais A est un attribut unique non inclus dans X
et il n’existe pas de X’ inclus dans X tel que X’ -> A
 La clé d’une relation:

attribut (ou groupe minimum d'attributs) qui détermine tous


les autres
Exemple:
PRODUIT (no_prod, nom, prixUHT)
no_prod → (nom, prixUHT)
no_prod est une clé
 Une clé détermine un n-uplet de façon unique
 Pour trouver la clé d'une relation, il faut examiner
attentivement les hypothèses sur le monde réel
51
 Une relation peut posséder plusieurs clés, on les appelle
clés candidates
DÉPENDANCE FONCTIONNELLE
 Clé primaire:
choix d'une clé parmi les clés candidates

 Clé étrangère ou clé secondaire


attribut (ou groupe d'attributs) qui fait référence à la clé
primaire d'une autre relation

Exemple:
CATEG (no_cat, design, tva)
PRODUIT(no_prod, nom, marque, #no_cat, prixUHT)
no_cat dans PRODUIT est une clé étrangère (représenté
par #no_cat dans PRODUIT) 52

CLÉ ÉTRANGÈRE = CLÉ PRIMAIRE dans une autre


relation
LES RÈGLES D’INTÉGRITÉ
 Les règles d'intégrité sont les assertions qui doivent être
vérifiées par les données contenues dans une base

 Le modèle relationnel impose les contraintes


structurelles suivantes :
 INTÉGRITÉ DE DOMAINE
 INTÉGRITÉ DE CLÉ
 INTÉGRITÉ RÉFÉRENCIELLE

 La gestion automatique des contraintes d’intégrité est


l’un des outils les plus importants d’une base de données.
 Elle justifie à elle seule l’usage d’un SGBD.
53
LES RÈGLES D’INTÉGRITÉ
INTÉGRITÉ DE DOMAINE:
Les valeurs d'une colonne de relation doivent appartenir au
domaine correspondant
 contrôle des valeurs des attributs
 contrôle entre valeurs des attributs

INTÉGRITÉ DE CLÉ
Les valeurs de clés primaires doivent être :
 Uniques
 non NULL
 Unicité de clé
 Unicité des n-uplets 54
LES RÈGLES D’INTÉGRITÉ
INTÉGRITÉ RÉFÉRENCIELLE
Les valeurs de clés étrangères sont 'NULL' ou sont des
valeurs de la clé primaire auxquelles elles font référence
 Relations dépendantes

 LES DÉPENDANCES : Liaisons de un à plusieurs


exprimées par des attributs particuliers: clés étrangères
ou clés secondaires
 Les contraintes de référence ont un impact important
pour les opérations de mises à jour, elles permettent
d’éviter les anomalies de mises à jour

55
LES RÈGLES D’INTÉGRITÉ
 INTÉGRITÉ RÉFÉRENCIELLE
Exemple :
CLIENT (no_client, nom, adresse)
ACHAT (#no_produit, #no_client, date, qte)
 Clé étrangère no_client dans ACHAT(représenté par le
#no_client)
 insertion tuple no_client = X dans ACHAT: vérification si X
existe dans CLIENT
 suppression tuple no_client = X dans CLIENT

 soit interdire si X existe dans ACHAT


 soit supprimer en cascade tuple X dans ACHAT
 soit modifier en cascade X = NULL dans ACHAT
 modification tuple no_client = X en X’ dans CLIENT
56
 soit interdire si X existe dans ACHAT
 soit modifier en cascade X en X’ dans ACHAT
FORME NORMALE
La théorie de la normalisation
 elle met en évidence les relations « indésirables »

 elle définit les critères des relations "désirables" appelées


formes normales
 Propriétés indésirables des relations

 Redondances

 Valeurs NULL

 elle définit le processus de normalisation permettant de


décomposer une relation non normalisée en un ensemble
équivalent de relations normalisées

57
FORME NORMALE
La décomposition
 Objectif:

 décomposer les relations du schéma relationnel sans


perte d’informations
 obtenir des relations canoniques ou de base du monde
réel
 aboutir au schéma relationnel normalisé

 Le schéma de départ est le schéma universel de la base


 Par raffinement successifs ont obtient des sous relations
sans perte d’informations et qui ne seront pas affectées
lors des mises à jour (non redondance)
58
FORME NORMALE
 Les formes normales:

5 FN, les critères sont de plus en plus restrictifs FNj


⇒ FNi ( j > i )

Notion intuitive de FN:


une « bonne relation » peut être considérée comme une
fonction de la clé primaire vers les attributs restants

59
FORME NORMALE
1ère Forme Normale 1FN
Une relation est en 1FN si tout attribut est atomique (non
décomposable)

Contre-exemple
ELEVE (no_elv, nom, prenom, liste_notes)
Un attribut ne peut pas être un ensemble de valeurs

Décomposition
ELEVE (no_elv, nom, prenom)
NOTE (#no_elv, #no_matiere, note)
60
FORME NORMALE
 2ème Forme Normale 2FN
Une relation est en 2FN si
 elle est en 1FN
 si tout attribut n’appartenant pas à la clé ne dépend
pas d’une partie de la clé
 C’est la phase d’identification des clés
 Cette étape évite certaines redondances
 Tout attribut doit dépendre fonctionnellement de la
totalité de la clé
Contre-exemple
une relation en 1FN qui n'est pas en 2FN
COMMANDE (date, #no_cli, #no_pro, qte, prixUHT)
elle n'est pas en 2FN car la clé = (date, no_cli, no_pro),61
et le prixUHT ne dépend que de no_pro
FORME NORMALE
 2ème Forme Normale 2FN

Contre-exemple
une relation en 1FN qui n'est pas en 2FN
COMMANDE (date, #no_cli, #no_pro, qte, prixUHT)
elle n'est pas en 2FN car la clé = (date, no_cli, no_pro),
et le prixUHT ne dépend que de no_pro

Décomposition
COMMANDE (date, no_cli, no_pro, qte)
PRODUIT (no_pro, prixUHT)
62
FORME NORMALE
 3ème Forme Normale 3FN
Une relation est en 3FN si
 elle est en 2FN
 si tout attribut n’appartenant pas à la clé ne dépend
pas d’un attribut non clé
 Ceci correspond à la non transitivité des D.F. ce qui
évite les redondances.
 En 3FN une relation préserve les D.F. et est sans
perte.
Contre-exemple
une relation en 2FN qui n'est pas en 3FN
VOITURE (matricule, marque, modèle, puissance)
on vérifie qu'elle est en 2FN ; elle n'est pas en 3FN car la63
clé = matricule, et la puissance dépend de (marque,
modèle)
FORME NORMALE
 3ème Forme Normale 3FN

Contre-exemple
une relation en 2FN qui n'est pas en 3FN
VOITURE (matricule, marque, modèle, puissance)
on vérifie qu'elle est en 2FN ; elle n'est pas en 3FN car la
clé = matricule, et la puissance dépend de (marque,
modèle)

Décomposition
VOITURE (matricule, marque, modèle)
64
MODELE (marque, modèle, puissance)
FORME NORMALE
 3ème Forme Normale de BOYCE-CODD BCNF

Une relation est en BCFN :


 elle est en 1FN et ssi les seules D.F. élémentaires sont
celles dans lesquelles une clé détermine un attribut
 BCNF signifie que l'on ne peut pas avoir un attribut
(ou groupe d'attributs) déterminant un autre attribut
et distinct de la clé
 Ceci évite les redondances dans l’extension de la
relation: mêmes valeurs pour certains attributs de
nuplets différents
 BCNF est plus fin que FN3 : BCNF ⇒ FN3
65
FORME NORMALE
 3ème Forme Normale de BOYCE-CODD BCNF

Contre-exemple
une relation en 3FN qui n'est pas BCNF
CODEPOSTAL (ville, rue, code)
on vérifie qu'elle est FN3, elle n'est pas BCNF car la clé =
(ville, rue) (ou (code, ville) ou (code, rue)), et code → ville

66
EXERCICE
En quelle forme normale est la relation suivante, qui
concerne les employés d’une société implantée sur
plusieurs bâtiments?
EMPLOYES (NumE, Nom, Salaire, Département,
Bâtiment)
Sachant qu’un employé travaille dans un département
donné, et qu’aucun département ne possède des locaux
dans plusieurs bâtiments.

 Déterminer d'abord les DFs, puis Mettre en 3F le cas


échéant.
67
Chapitre 4:
Algèbre relationnelle

68
DÉFINITION
 Une requête est une expression algébrique qui s’applique
à un ensemble de relations (la base de données) et produit
une relation finale (le résultat de la requête).

 Il permet de construire des expressions algébriques


arbitrairement complexes qui permettent d’exprimer des
manipulations sur un grand nombre de relations.

 L’algèbre relationnelle peut être considérée comme un


langage de programmation très simple qui permet
d’exprimer des requêtes sur une base de données
relationnelle (faire l’union ou la différence de deux
relations, sélectionner une partie de la relation, effectuer
des produits cartésiens ou des projections, etc.) 69
DÉFINITION

 L’algèbre relationnelle se compose d’un ensemble


d’opérateurs:

o La sélection dénotée 
o La projection dénotée 

o Le produit cartésien dénotée x

o L’union dénotée 

o La différence dénotée -

o La jointure dénotée 

70
LA SÉLECTION 

 La sélection Critère(R) s’applique à une relation et extrait


de cette relation les instances qui satisfont un critère de
sélection

 Exemple:
adresse='Sousse' (Client)

71
LA PROJECTION 

 La projection A1,A2,…AK(R) s’applique à une relation et ne


garde que les attributs A1, A2,…, A3
 Contrairement à la sélection, on ne supprime pas des
lignes mais des colonnes.
 Le nombre de lignes dans le résultat est le même que
dans la relation initiale en supprimant les redondances

 Exemple:
Numclt,Nomclt(Client)

72
LE PRODUIT CARTÉSIEN X

 Le produit cartésien entre deux relations R x S permet de


créer une nouvelle relation où chaque tuple de R est
associé à chaque tuple de S.

 Exemple:
R S RxS

73
L’UNION 

 L’union de deux relations R  S crée une relation


comprenant tous les tuples existant dans R et S
 Il existe une condition impérative : les deux relations
doivent avoir le même schéma, c’est-à-dire même nombre
d’attributs, mêmes noms et mêmes types.
 Exemple:

RS

74
LA DIFFÉRENCE -

 L’expression R-S a pour résultat tous les tuples de R qui


ne sont pas dans S
 Les deux relations doivent avoir le même schéma

 Exemple:
R-S

75
LA JOINTURE 

 La jointure consiste à rapprocher les lignes de deux


relations pour lesquelles les valeurs d’un (ou plusieurs)
attributs sont identiques

 Exemple:

Vente  Produit

76
Chapitre 5:
Langage SQL
-La recherche

77
LES OPÉRATIONS SUR LES DONNÉES

 Il existe 4 opérations classiques (ou requêtes) :


 La création (ou insertion).

 La modification (ou mise-à-jour).

 La destruction

 La recherche

 L’insertion

 La plus complexe est la recherche en raison de la variété


des critères.
 Le résultat est ce que l’on appelle un langage de
requêtes, et constitue à la fois un sujet majeur d’étude et
une caractéristique essentielle de chaque SGBD. 78
 Le langage le plus répandu à l’heure actuelle est SQL.
SQL=STRUCTURED QUERY LANGAGE

 Le langage assertionnel SQL fut introduit


commercialement tout d’abord par IBM pour
paraphraser en anglais les expressions de l’algèbre
relationnelle.

 Aujourd’hui, l’ISO a normalisé le langage SQL pour


manipuler les bases de données relationnelles.

 SQL est un langage déclaratif qui permet d’interroger


une base de données sans se soucier de la
représentation interne (physique) des données, de leur
localisation, des chemins d’accès ou des algorithmes
nécessaires 79
SÉLECTIONS SIMPLES
SELECT <EXPRESSION DE VALEURS>+
FROM <NOM DE TABLE>
WHERE CONDITION=VRAI

 FROM indique la (ou les) tables dans lesquelles on trouve


les attributs utiles à la requête. Un attribut peut être
’utile’ de deux manières (non exclusives) : (1) on souhaite
afficher son contenu, (2) on souhaite qu’il ait une valeur
particulière (une constante ou la valeur d’un autre
attribut).
 SELECT indique la liste des attributs constituant le
résultat.
 WHERE indique les conditions que doivent satisfaire les 80
n-uplets de la base pour faire partie du résultat.
SÉLECTIONS SIMPLES
Exemple:

SELECT nomStation
81
FROM Station
WHERE region = ’Antilles’
SÉLECTIONS SIMPLES
 Le résultat d’un ordre SQL est toujours une relation (une
table) temporaire dont les attributs sont ceux spécifiés
dans la clause SELECT. On peut donc considérer en
première approche ce résultat comme un ’découpage’,
horizontal et vertical, de la table indiquée dans le FROM.
 Les fonctions applicables aux valeurs des attributs sont
par exemple les opérations arithmétiques (*, ...) pour les
attributs numériques ou des manipulations de chaîne de
caractères (concaténation, souschaînes, mise en
majuscule, ...).
 Il n’existe pas de norme mais la requête suivante devrait
fonctionner sur tous les systèmes : on convertit le prix des
activités en euros et on affiche le cours de l’euro avec
chaque tuple. 82
SÉLECTIONS SIMPLES

Exemple:
SELECT libelle, prix / 6.56, ’Cours de l’euro = ’, 6.56
FROM Activite
WHERE nomStation = ’Santalba’
Ce qui donne le résultat :

83
SÉLECTIONS SIMPLES
Renommage
Les noms des attributs sont par défaut ceux indiqués
dans la clause SELECT, même quand il y a des
expressions complexes. Pour renommer les attributs, on
utilise le mot-clé AS.
Exemple:
SELECT libelle, prix / 6.56 AS prixEnEuros, ’Cours de
l’euro = ’, 6.56 AS cours
FROM Activite
WHERE nomStation = ’Santalba’
On obtient alors :

84
SÉLECTIONS SIMPLES
 Doublons
L’introduction de fonctions permet d’aller au-delà de ce qui
est possible en algèbre relationnelle. Il existe une autre
différence, plus subtile: SQL permet l’existence de doublons
dans les tables (il ne s’agit donc pas d’ensemble au sens
strict du terme). La spécification de clés permet d’éviter les
doublons dans les relations stockées, mais il peuvent
apparaître dans le résultat d’une requête.
Exemple :
SELECT libelle
FROM Activite

Pour éviter d’obtenir deux tuples identiques, on peut


utiliser le mot-clé DISTINCT. 85
SELECT DISTINCT libelle
FROM Activite
SÉLECTIONS SIMPLES
 Tri du résultat
Il est possible de trier le résultat d’un requête avec la
clause ORDER BY suivie de la liste des attributs servant
de critère au tri.
Exemple :
SELECT *
FROM Station
ORDER BY tarif, nomStation

trie, en ordre ascendant, les stations par leur tarif,


puis, pour un même tarif, présente les stations selon
l’ordre lexicographique.
Pour trier en ordre descendant, on ajoute le mot-clé 86
DESC après la liste des attributs.
SÉLECTIONS SIMPLES
 Chaînes de caractères
Les comparaisons de chaînes de caractères soulèvent
quelques problèmes délicats.
1. Il faut être attentif aux différences entre chaînes de
longueur fixe et chaînes de longueur variable. Les
premières sont complétées par des blancs (’ ’) et pas
les secondes.
2. Si SQL ne distingue pas majuscules et minuscules
pour les mot-clés, il n’en va pas de même pour les
valeurs. Donc ’SANTALBA’ est différent de
’Santalba’.
SQL fournit des options pour les recherches par motif à
l’aide de la clause LIKE. Le caractère ’_’ désigne
n’importe quel caractère, et le ’%’ n’importe quelle 87
chaîne de caractère
SÉLECTIONS SIMPLES
 Chaînes de caractères

Exemple 1: Quelles sont les stations dont le nom termine


par un ’a’.
SELECT nomStation
FROM Station
WHERE nomStation LIKE ’%a’

Exemple 2: Quelles sont les stations dont le nom


commence par un ’V’ et comprend exactement 6
caractères ?
SELECT nomStation
88
FROM Station
WHERE nomStation LIKE ’V_____’
SÉLECTIONS SIMPLES
 Date
Une date est spécifiée en SQL2 par le mot-clé DATE suivi
d’une chaîne de caractères au format ’aaaamm- jj’, par
exemple DATE ’1998-01-01’. Les zéros sont nécessaires
afin que le mois et le quantième comprennent
systématiquement deux chiffres.

Exemple: Quels sont les ID des clients qui ont commencé


un séjour en juillet 1998’.
SELECT idClient
FROM Sejour
WHERE debut BETWEEN DATE= ’1998-07-01’ AND
DATE =’1998-07-31’ 89
SÉLECTIONS SIMPLES
Valeurs nulles
Il est très important de comprendre que la ’valeur nulle’
n’est en fait pas une valeur mais une absence de valeur,
et que l’on ne peut donc lui appliquer aucune des
opérations ou comparaisons usuelles.
Toute opération appliquée à NULL donne pour résultat
NULL.
Toute comparaison avec NULL donne un résultat qui
n’est ni vrai, ni faux mais une troisième valeur
booléenne, UNKNOWN.
Exemple: Quels sont les séjours pour lesquels on connaît le
nombre de places.
SELECT *
90
FROM Sejour
WHERE nbPlaces IS NOT NULL
SÉLECTIONS SIMPLES
 Opérateurs de comparaisons

91
SÉLECTIONS SIMPLES
 AND & OR
Une requête SQL peut être restreinte a l'aide de la
condition WHERE. Les opérateurs logiques AND et OR
peuvent être utilisées au sein de la commande WHERE
pour combiner des conditions.
Les opérateurs sont ajoutés dans la condition WHERE.
Ils peuvent être combines à l'infini pour filtrer les
données comme souhaites.
L'opérateur AND permet de s'assurer que la condition1
ET la condition2 sont vrai .
L'opérateur OR vérifie quant a lui que la condition1 OU
la condition2 est vrai.

92
SÉLECTIONS SIMPLES

 IN
L'opérateur logique IN dans SQL s'utilise avec la
commande WHERE pour vérifier si une colonne est
égale a une des valeurs comprise dans set de valeurs
déterminés.

Exemple:
SELECT *
FROM Client
WHERE addr_ville IN ( 'Paris', 'Graimbouville‘)

93
SÉLECTIONS SIMPLES
 TO_CHAR(nombre, format)
Elle convertit un nombre en une chaine de caractère
selon un format défini.
Format est une chaîne de caractères pouvant contenir
les caractères suivants :
 9 représente un chiffre (non représenté si non

significatif)
0 représente un chiffre (représenté même si non
significatif)
 . point décimal apparent

 V définit la position du point décimal non apparent

 , une virgule apparaîtra à cet endroit

$ un $ précédera le premier chiffre significatif 94


 B le nombre sera représenté par des blancs s'il
vaut 0
SÉLECTIONS SIMPLES
 TO_CHAR(nombre, format)
 EEEE le nombre sera représenté avec un exposant

(le spécifier avant MI ou PR)


 MI le signe négatif sera à droite

 PR un nombre négatif sera entre <>

Exemple:
Employee (CIN, NOM, PRENOM, SALAIRE, GRADE,
NDEPT)
Afficher tous les salaires avec un $ en tête et au moins
trois chiffres ( dont deux décimales)

SELECT TO_CHAR(SALAIRE, '$99,999.9') 95

FROM Employee
SÉLECTIONS SIMPLES
 TO_CHAR(DATE, format)
permet de convertir une date en une chaine de caractère
selon un format défini. Le format indique quelle partie
de la date doit apparaître, c'est une combinaison des
codes suivants :
 Scc : siècle avec signe
 Cc: siècle
 sy,yyy: année (avec signe et virgule)
 y,yyy: année( avec virgule)
 yyyy: année
 yyy 3 derniers chiffres de l'année
 yy 2 derniers chiffres de l'année
 y dernier chiffre de l'année 96

 q numéro du trimestre dans l'année


SÉLECTIONS SIMPLES
 TO_CHAR(DATE, format)
 ww numéro de la semaine dans l'année
 w numéro de la semaine dans le mois
 mm numéro du mois
 ddd numéro du jour dans l'année
 dd numéro du jour dans le mois
 d numéro du jour dans la semaine
 hh ou hh12 heure (sur 12 heures)
 hh24 heure sur 24 heures
 mi minutes
 ss secondes
 sssss secondes après minuit
97
 j jour du calendrier julien
SÉLECTIONS SIMPLES
 TO_CHAR(DATE, format)
Les formats suivants permettent d'obtenir des dates en
lettres ( en anglais):
 syear ou year année en toutes lettres
 month nom du mois
 mon nom du mois abrégé sur 3 lettres
 day nom du jour
 dy nom du jour abrégé sur 3 lettres
 am ou pm indication am ou pm
 bc ou ad indication avant ou après jésus christ
Exemple:
SELECT last_name,
TO_CHAR(hire_date, 'DD Month YYYY') 98
AS HIREDATE
FROM employees
SÉLECTIONS SIMPLES
 TO_DATE(chaine, format)
Permet de convertir une chaîne de caractères en date
selon un format défini. Le format est identique à celui de
la fonction TO_CHAR.
Exemple:
Affichez votre date de naissance. Ex : 3 Janvier 1987
(03/01/1987)
SELECT TO_DATE ('03011987','DD MM YYYY')
from dual

99
SÉLECTIONS SIMPLES
 Fonctions d’agrégation
Ces fonctions s’appliquent à une colonne, en général de
type numérique. Ce sont :
1. COUNT qui compte le nombre de valeurs non nulles.
2. MAX et MIN.
3. AVG qui calcule la moyenne des valeurs de la
colonne.
4. SUM qui effectue le cumul.

Exemple :
SELECT COUNT(nomStation), AVG(tarif), MIN(tarif),
MAX(tarif)
100
FROM Station;
SÉLECTIONS SIMPLES
 Calcul sur plusieurs groupes
 Il est possible de subdiviser la table en groupes,
chaque groupe étant l'ensemble des lignes ayant une
valeur commune.
 C'est la clause GROUP BY qui permet de découper la
table en plusieurs groupes:
GROUP BY expr_1, expr_2, ...
 Si on a une seule expression, ceci définit les groupes
comme les ensembles de lignes pour lesquelles cette
expression prend la même valeur.
 Si plusieurs expressions sont présentés les groupes
sont définis de la façon suivante : parmi toutes les
lignes pour lesquelles expr_1 prend la même valeur,
on regroupe celles ayant expr_2 identique, ... 101

 Un SELECT de groupe avec une clause GROUP BY


donnera une ligne résultat pour chaque groupe.
SÉLECTIONS SIMPLES
 Calcul sur plusieurs groupes

Employee (CIN, NOM, PRENOM, SALAIRE, GRADE,


NDEPT)

Exemple: Afficher le total des salaires pour chaque


département

SELECT SUM(SALAIRE)
FROM Employee
GROUP BY NDEPT

102
SÉLECTIONS SIMPLES
 Sélection des groupes
 De la même façon qu'il est possible de sélectionner
certaines lignes au moyen de la clause WHERE, il est
possible dans un SELECT comportant une fonction de
groupe de sélectionner par la clause HAVING, qui se
place après la clause GROUP BY.
 Le prédicat dans la clause HAVING suit les mêmes
règles de syntaxe qu'un prédicat figurant dans une
clause WHERE.
 Cependant, il ne peut porter que sur des
caractéristiques du groupe : fonction de groupe ou
expression figurant dans la clause GROUP BY, dans
ce cas la clause HAVING doit être placée après la
103
clause GROUP BY.
SÉLECTIONS SIMPLES
 Sélection des groupes

Employee (CIN, NOM, PRENOM, SALAIRE, GRADE,


NDEPT)

Exemple: Donner la liste des salaires moyens par


fonction pour les groupes ayant plus de deux
employés.

SELECT SVG(SALAIRE)
FROM Employee
GROUP BY GRADE
104
HAVING (COUNT(CIN)>2))
JOINTURE DES REQUÊTES
 Les jointures en SQL permettent d’associer plusieurs
tables dans une même requête.
 Cela permet d’exploiter la puissance des bases de
données relationnelles pour obtenir des résultats qui
combinent les données de plusieurs tables de manière
efficace.
 En général, les jointures consistent à associer des lignes
de 2 tables en associant l’égalité des valeurs d’une
colonne d’une première table par rapport à la valeur
d’une colonne d’une seconde table.
 Il y a d’autres cas de jointures, incluant des jointures sur
la même table ou des jointure d’inégalité.
105
JOINTURE DES REQUÊTES
 Exemple:

Employee (CIN, NOM, PRENOM, SALAIRE, GRADE,


NDEPT)
Departement (NDEPT, NomDEPT)

Afficher les noms des employés et les noms de leurs


départements

SELECT NOM, NomDEPT


FROM Employee E, Departement D
WHERE E.NDEPT, D.NDEPT;
106
REQUÊTES IMBRIQUÉES
 SQL permet l’imbrication de sous-questions au niveau de
la clause WHERE, si bien que l’on pet écrire des
questions du type SELECT … FROM … WHERE …
SELECT

 Le résultat d’une question peut être considéré comme


une valeur simple ou comme un ensemble de valeurs
avec doubles éventuels (multi-ensemble)

 Dans ce dernier cas, chaque valeur de l’ensemble


correspond à un tuple du résultat.

 Il est possible de considérer une sous-requête comme


argument particulier des prédicats de comparaison (=,107
≠,
<, >, ≥, ≤) et d’appartenance à une liste (IN).
REQUÊTES IMBRIQUÉES
 Toute sous-requête peut elle-même invoquer des sous-
requêtes, si bien qu’il est possible d’imbriquer des blocs
SELECT à plusieurs niveaux.
 L’imbrication de blocs SELECT par le prédicat IN
permet d’exprimer en particulier des jointures d’une
manière plus procédurale.
 Il est aussi possible de vouloir comparer une expression
de valeurs à tous les résultats d’une sous-requêtes ou
seulement à l’une quelconque des valeurs générées.
 SQL propose pour cela l’usage de sous-requêtes
quantifiées par « quel que soit » (ALL) ou « il existe »
(ANY).
 Un prédicat quantifié par ALL est vrai s’il est vérifié
pour tous les éléments de l’ensemble. Un prédicat 108
quantifié par ANY est vrai s’il est vérifié par au moins
un élément de l’ensemble
REQUÊTES IMBRIQUÉES
 Il est aussi possible d’imbriquer des requêtes en
utilisant:

 Expression des Unions: UNION

 Expression des intersections: INTERSECT

 Expression de la différence: MINUS

109

Vous aimerez peut-être aussi