Vous êtes sur la page 1sur 29

Base de données relationnelles & SQL

Ecole Supérieure de Commerce et d’Admnistration des Entreprises du


Bénin

Cours de 1ème année

25 avril 2020

ESCAE Bénin BDD & SQL 25 avril 2020 1 / 29


Sommaire

1 Introduction

2 Les bases de données relationnelles

3 La normalisation du modèle relationnel

4 Algèbre relationnelle

5 Les requêtes SQL

ESCAE Bénin BDD & SQL 25 avril 2020 2 / 29


Introduction

ESCAE Bénin BDD & SQL 25 avril 2020 3 / 29


Les bases de données relationnelles
La base de donnée fait aujourd’hui tellement partie de notre vie quotidienne
que nous n’avons pas conscience d’en utiliser une !

Definition
Une base de données est une collection partagée de données en relation
logique, conçues pour satisfaire les besoins d’information d’une organisation.
Elle est gérée par un SGBD (Système de Gestion de base de données) qui
est un logiciel qui gère et contrôle l’accès à la base de données : il permet à
l’utilisateur de définir, créer, mettre à jour une base de données et d’en contrô-
ler l’acces.

Le système de gestion de base de données relationnel est devenu le logiciel de


traitement de base de données dominant. Selon le modèle relationnel, toutes
les données sont structurées au sein de relations(tables). Chaque relation
possède un nom et est faite d’attributs(colonnes) de données. Chaque tuple
contient une valeur par attribut.

ESCAE Bénin BDD & SQL 25 avril 2020 4 / 29


Les bases de données relationnelles

Terminologie et concepts structurels du modèle


relationnel
Relation :La relation est un ensemble d’attributs significativement associés.
Elle est représentée de deux manières : en intention et en extension.
En intention, la relation est représentée par un nom et une liste ds
attributs et est décrite par le formalisme :
<Nom_Relation>(<attribut 1>,<attribut 2>,...,<attribut n>)
En extension, la relation est représentée par une table à deux dimensions
avec en colonne les attributs et en ligne les occurrences de valeurs.

Attribut : Un attribut est le plus petit élément d’information manipulable par le


concepteur. Il est décrit par un nom, prend des valeurs dans un domaine de
valeurs et à un sens dans le système d’information étudié.

Domaine : C’est un ensemble de valeurs admissibles pour un ou plusieurs


attributs.
ESCAE Bénin BDD & SQL 25 avril 2020 5 / 29
Les bases de données relationnelles

Tuple : C’est l’ensemble des occurrences de valeurs par les attributs sur une
ligne dans une relation.

Degré : Le degré d’une relation est le nombre d’attributs qu’elle contient.

Cardinalité : Le cardinal ou la cardinalité d’une relation est le nombre de


tuples qu’elle contient.

Clé primaire : C’est un attribut ou un ensemble d’attributs permettant de


distinguer deux tuples quelconques de la relation. Elle est soulignée dans le
schéma d’une relation.

Clé étrangère : C’est un attribut qui a été clé primaire d’une autre table et qui
met en évidence les liens unissant les différentes relations décrivant le
système d’information. Dans le schéma d’une relation, elle est représentée
avec le symbole #.

ESCAE Bénin BDD & SQL 25 avril 2020 6 / 29


Normalisation du modèle relationnel
Pourquoi la normalisation ?
L’objectif de la normalisation est de construire un schéma de base de don-
nées cohérent. Un mauvais schéma logique peut conduire à un certain nombre
d’anomalies pendant la phase d’exploitation de la base de donnée. Pour qu’un
modèle soit normalisé, il faut qu’il respecte certaines contraintes appelées
les formes normales. Les formes normales s’appuient sur les dépendances
fonctionnelles entre attributs.
La construction du modèle relationnel repose presque entièrement sur le concept
de dépendance fonctionnelle. C’est ce concept qui permet de passer d’un en-
semble de propriétés non structuré au modèle relationnel.
Definition
On dit que A détermine B ou B est en dépendance fonctionnelle de A si à
une valeur quelconque de la propriété A, on ne peut faire correspondre qu’une
seule valeur au plus de la propriété B.
On note : A → B
A est la source de la dépendance fonctionnelle et B le but
ESCAE Bénin BDD & SQL 25 avril 2020 7 / 29
Normalisation du modèle
relationnel

ESCAE Bénin BDD & SQL 25 avril 2020 8 / 29


Normalisation du modèle relationnel

Exemple : NumClient → NomClient Il existe une dépendance fonctionnelle


entre NumClient et NomClient, car si on connaît une valeur de l’attribut Num-
Client (Ex : 4553), il ne peut lui correspondre qu’une seule valeur de l’attribut
NomClient (Ex : Jean). Mais la réciproque est fausse.

Dépendance fonctionnelle à partie gauche composée


Il peut exister des dépendances fonctionnelles à partir de propriétés conca-
ténées, c’est-à-dire qui forment un tout indissociable, comme si elles étaient
soudées.
Numcommande, RefProduit → QtéCommandée

Si on a seulement le numéro de la commande, on ne peut pas en déduire la


quantité commandée, car il faut aussi savoir de quel produit il s’agit. De même,
on ne peut pas savoir la quantité commandée d’un produit si on ne sait pas
de quelle commande il s’agit. Il faut bien connaître à la fois la commande et le
produit(leurs identifiants respectifs) pour en déduire la quantité commandée.

ESCAE Bénin BDD & SQL 25 avril 2020 9 / 29


Normalisation du modèle relationnel

Propriétés des dépendances fonctionnelles

Les dépendances fonctionnelles ont les propriétés suivantes :

Union
Si on a deux dépendances fonctionnelles ayant la même source, on peut les
rassembler en une seule, en séparant les cibles par une virgule.
Si A → B et A → C alors on peut écrire A → B, C

Transitivité

Si A → B et B → C alors on a : A → C
La normalisation élimine les redondances, ce qui permet :
une diminution de la taille de la base de donnée sur le disque
une diminution des risques d’incohérence
d’éviter une mise à jour multiple des mêmes données.
ESCAE Bénin BDD & SQL 25 avril 2020 10 / 29
Les Trois formes normales

1ère Forme normale


Une relation est en première forme normale si :
elle possède une clé identifiant de manière unique et stable chaque ligne
chaque attribut est monovalué (nee peut avoir qu’une seule valeur par
ligne)
aucun attribut n’est décomposable en plusieurs attributs significatifs

2ème Forme normale


Une relation est en deuxième forme normale si et seulement si :
Elle est en première forme normale (1FN)
et tout attribut non clé est totalement dépendant de toute la clé. Autrement
dit, aucun des attributs ne dépend que d’une partie de la clé.
La deuxième forme normale n’est à vérifier que pour les relations ayant une
clé composée. Une relation en 1FN n’ayant qu’un seul attribut clé est toujours
en 2FN.
ESCAE Bénin BDD & SQL 25 avril 2020 11 / 29
Les Trois formes normales

3ème Forme normale


Une relation est en troisième forme normale si et seulement si :
elle est en deuxième forme normale (2FN)
et tout attribut doit dépendre directement de la clé, c’est-à-dire qu’aucun
attribut ne doit dépendre de la clé par transitivité.

ESCAE Bénin BDD & SQL 25 avril 2020 12 / 29


Algèbre relationnelle

ESCAE Bénin BDD & SQL 25 avril 2020 13 / 29


Algèbre relationnelle

L’algèbre relationnelle correspond aux opérations qu’on applique à des rela-


tions. Le résultat produit par l’application d’un opérateur de l’algèbre relation-
nelle à une relation est une nouvelle relation.

L’algèbre relationnelle comporte deux familles d’opérateurs :


Les opérateurs unaires (mise en jeu d’une seule relation) :
PROJECTION et SELECTION
Les opérateurs ensemblistes (mise en jeu de 2 relations) : UNION,
DIFFERENCE et PRODUIT CARTESIEN
Ces 5 opérations forment un ensemble cohérent et minimal. Des extensions
à ces opérations de bases permettent d’en améliorer l’efficacité à travers une
simplification de leur écriture (INTERSECTION, JOINTURE,...) ou d’effectuer
des calculs (COMPTE, SOMME,...).

ESCAE Bénin BDD & SQL 25 avril 2020 14 / 29


Algèbre relationnelle
Remarque : le symbolisme de représentation des opérateurs peut varier d’un
auteur à l’autre. Vous trouvez les exemples de représentations courants. L’al-
gèbre relationnelle est un langage théorique d’interrogation des relations et
forme la base des langages d’interrogation de base de données relationnelle
(SQL, par exemple).

LES OPERATIONS UNAIRES


Les opérations unaires s’appliquent à une seule relation et ont pour résultat
une nouvelle relation.
PROJECTION
La projection est une opération de RESTRICTION sur les COLONNES. La
projection d’une relation R consiste en la mise en place d’une nouvelle relation
en ne retenant que certains attributs et en supprimant les tuples dupliqués.
Notation : R(x1, x2, ... , xn), on a :
T = PROJECTION (R, x1 ,..., xn)
On utilise parfois le caractère « * » pour conserver tous les attributs de la
relation d’origine.
ESCAE Bénin BDD & SQL 25 avril 2020 15 / 29
Algèbre relationnelle

SELECTION
La sélection est une opération de RESTRICTION sur les LIGNES. La sélection
consiste à extraire de la relation R considérée un sous-ensemble de tuples
satisfaisant à certains critères. La qualification Q peut être exprimée à l’aide
de constantes, d’opérateurs relationnels (>, <, >=, <=, = , <> ) et d’opérateurs
logiques ( OU, ET , NON ).
T = SELECTION (R, Q)

LES OPERATIONS ENSEMBLISTES


Les opérations ensemblistes s’appliquent à 2 relations pour former une nou-
velle relation. Les opérations UNION et DIFFERENCE exigent des relations
qu’elles soient « union compatibles », c’est à dire qu’elles aient le même
schéma :
même nombre d’attributs (même degré)
les attributs associés 2 à 2 sont issus de mêmes domaines
ESCAE Bénin BDD & SQL 25 avril 2020 16 / 29
Algèbre relationnelle

Remarque : les doublons sont éliminés. (tuples pour lesquels les valeurs de
tous les attributs ont la même valeur)

UNION
L’union de 2 relations R et S de même schéma est une relation T de même
schéma contenant l’ensemble des tuples appartenant soit à R, soit à S, soit à
la fois à R et S.
T=UNION(R, S)

DIFFERENCE
La différence entre 2 relations R et S de même schéma dans l’ordre (R - S)
est la relation T de même schéma contenant les tuples appartenant à R sauf
ceux qui appartiennent aussi à S.
T = DIFFERENCE(R, S)

ESCAE Bénin BDD & SQL 25 avril 2020 17 / 29


Algèbre relationnelle
PRODUIT CARTESIEN
Le produit cartésien de 2 relations R et S de schéma quelconque est une
relation T ayant pour attributs les attributs de R et de S, et dont les tuples sont
constitués par la combinaison de chaque tuple de R avec chacun des tuples
de S. Le produit cartésien permet la construction de toutes les combinaisons
possibles entre les tuples de 2 relations.
T=PRODUIT(R, S)

LES OPERATIONS DERIVEES


Elles peuvent être construites à partir des opérations de base.

INTERSECTION
L’intersection de 2 relations R et S de même schéma est une relation T de
même schéma contenant les tuples appartenant à la fois à R et à S.
T = INTERSECTION(R, S)
ESCAE Bénin BDD & SQL 25 avril 2020 18 / 29
Algèbre relationnelle

DIVISION
Le quotient (ou division) : de la relation R de schéma R (A1, A2...An) par la
sous-relation S de schéma S (Ap+1, ...An) est la relation T de schéma T(A1,
A2,...Ap) formée de tous les tuples qui, combinés à chaque tuple de S, donnent
toujours un tuple de R.

T = DIVISION (R, S)

ESCAE Bénin BDD & SQL 25 avril 2020 19 / 29


Algèbre relationnelle
JOINTURES
L’opération de base de la jointure est le produit cartésien.
Jointure interne (thêta-jointure)
Cette opération est essentielle dans les systèmes relationnels pour ras-
sembler de manière cohérente des attributs provenant de plusieurs rela-
tions. La jointure interne, ou thêta-jointure (INNER JOIN) est un produit
cartésien de R et S qui conserve seulement les tuples satisfaisant une
qualification (qualification = comparaison entre 2 attributs) :
L’équi-jointure est une jointure ayant pour qualification l’égalité entre 2
attributs ;
La non-équijointure est une jointure ayant pour qualification un opérateur
autre que l’égalité entre 2 attributs

T = JOINTURE(R, S, Q)

La jointure de 2 relations R et S selon une qualification Q est l’ensemble des


tuples du produit cartésien R X S satisfaisant la qualification Q. (voir l’opérateur
Sélection). La jointure exige que les 2 relations aient un domaine en commun.
La jointure est équivalente à l’application d’une sélection à un produit cartésien.
ESCAE Bénin BDD & SQL 25 avril 2020 20 / 29
Algèbre relationnelle
Jointure naturelle
La jointure naturelle (NATURAL JOIN) est une jointure de R et S sur tous les
attributs de même nom, suivi de la projection qui permet de supprimer les
attributs répétés. Attention :
si aucun nom d’attribut n’est commun, on obtient un produit cartésien
si des attributs portent le même nom sans toutefois avoir le même sens,
on obtiendra une jointure incohérente...
T = NATURAL JOIN (R, S)

La jointure externe
La jointure externe (OUTER JOIN) est une jointure de R et S qui conserve tous
les tuples, de l’une ou l’autre des relations et les tuples issus de la jointure des
2 relations. La jointure de R et S conserve tous les tuples :
de R pour une jointure externe gauche, (LEFT OUTER JOIN)
et de S pour une jointure externe droite (RIGHT OUTER JOIN)
ou des 2 relations pour une jointure totale (FULL OUTER JOIN).
ESCAE Bénin BDD & SQL 25 avril 2020 21 / 29
SQL

ESCAE Bénin BDD & SQL 25 avril 2020 22 / 29


les requêtes SQL
Le SQL (Structured Query Language) est un langage permettant de communi-
quer avec une base de données. Ce langage informatique est notamment très
utilisé par les développeurs web pour communiquer avec les données d’un site
web.

Requêtes d’interrogation
Projection
Opération unaire générant une table de degré inférieur au degrtexté de la table
source. Elle est exécutée par la syntaxe suivante :

SELECT [DISTINCT][TOP<nombre>] < liste des attributs>


FROM <nom de la table> ;

DISTINCT permet d’éliminer les éventuels duplicatas.


TOP permet de limiter le résultat au nombre des premières lignes spécifiées
par <nombre>. Cette clause exige le trie au préalable.

ESCAE Bénin BDD & SQL 25 avril 2020 23 / 29


Les requêtes SQL

Sélection
Opération unaire permettant de réduire la cardinalité d’une table, c’est-à-dire
ne donnant que des occurrences(enregistrements) vérifiant la condition spéci-
fiée.

SELECT *
FROM < table >
WHERE < condition >
La condition s’exprime de plusieurs manières à savoir :
.<attribut> <opérateur de comparaison> <valeur>
.<attribut> BETWEEN <borne inf.> AND <borne sup.>
.<attribut> IN (<liste des valeurs>)
.<attribut> LIKE "chaîne de caractères"
La chaîne de caractères peut contenir des caractères de substitution à savoir :
* ou % pour n’importe quelle chaîne de caractères ;
? ou _ pour un caractère.
ESCAE Bénin BDD & SQL 25 avril 2020 24 / 29
Les requêtes SQL

Jointure(équijointure)
Opération permettant d’extraire des données issues de plusieurs tables tout
en les liant deux à deux par la valeur de la clé primaire d’une table et celle de
la clé étrangère de la seconde table.

SELECT *
FROM <TABLE1>,<TABLE2>
WHERE <table1>.<attribut commun> = <table2>.<attribut commun>

La clause Tri
Cette clause permet de produire une table réponse triée suivant les attributs
spécifiés. Ce qui explique la présence de tous les attributs de tri devant SE-
LECT.

ORDER BY <attribut> <ordre>[,<attribut> <ordre>,...,<attribut> <ordre>]

<ordre> de tri peut être croissant (ASC) ou décroissant (DESC).

ESCAE Bénin BDD & SQL 25 avril 2020 25 / 29


Les requêtes SQL
La clause Groupage
La clause permet de constituer des sous ensembles d’occurrences dans une
table.
GROUP BY <attribut>[,<attribut>,...,<attribut>]

NB : Tout attribut devant SELECT doit être inclus devant GROUP BY.
Les fonctions standards
Syntaxe Explication
SUM(<attribut>) Retourne le cumul des valeurs de l’attribut sur tout
l’ensemble des occurrences ou par groupes en cas
de présence de GROUP BY.
AVG(<attribut>) Retourne la moyenne des valeurs de l’attribut sur
tout l’ensemble des occurrences ou par groupes en
cas de présence de GROUP BY.
COUNT(<attribut>) Retourne le nombre de valeurs de l’attribut sur tout
l’ensemble des occurrences ou par groupes en cas
de présence de GROUP BY.

ESCAE Bénin BDD & SQL 25 avril 2020 26 / 29


Les requêtes SQL
MIN(<attribut>) Retourne la plus petite valeur de l’attribut sur tout
l’ensemble des occurrences ou par groupes en cas
de présence de GROUP BY.
MAX(<attribut> Retourne la plus grande valeur de l’attribut sur tout
l’ensemble des occurrences ou par groupes en cas
de présence de GROUP BY)

Les fonctions de temps


SYNTAXE EXPLICATION
YEAR(<expression Date>) Retourne l’année de la date spécifiée.
MONTH(<expression Date>) Retourne le numéro du mois de la date
spécifiée.
DAY(<expression Date>) Retourne le jour de la date spécifiée.
YEAR() Retourne l’année de la date système.
MONTH() Retourne le numéro du mois de la date
système.
DAY() Retourne le jour système.

ESCAE Bénin BDD & SQL 25 avril 2020 27 / 29


Les requêtes SQL
La clause Having
La clause having sert de critère de sélection pour les groupes, c’est-à-dire
permet d’extraire les sous-ensembles d’occurrences qui satisfont la condition
spécifiée.

HAVING <condition sur les groupes>

Requêtes de manipulation des données


Insertion de données
Pour une insertion monoligne qui ajoute un enregistrement.

INSERT INTO <table> [(liste des attributs)] VALUES <liste des valeurs>

Pour une insertion multiligne qui insère plusieurs enregistrements par une
requêtes.

INSERT INTO <table> [(<liste des attributs>)] SELECT ...


ESCAE Bénin BDD & SQL 25 avril 2020 28 / 29
Les requêtes SQL

NB : La liste des attributs est spécifiée lorsque tous les attributs de la table ne
seront pas renseignés, ou lorsque l’ordre des attributs dans la table n’est pas
maîtrisé.
Mise à jour des données

A voir
UPDATE <table> SET <attribut 1> = <valeur 1>
<attribut 2> = <valeur 2>,
<attribut n> = <valeur n>
WHERE <condition>

Suppression des enregistrements

DELETE FROM<table> [WHERE <condition>]

ESCAE Bénin BDD & SQL 25 avril 2020 29 / 29

Vous aimerez peut-être aussi