Les bases de données relationnelles et le
langage SQL
1BTS-DSI
H. MACHHOUR
Introduction générale
Aperçu sur le modèle relationnel
Introduction au langage SQL
SQL un langage de manipulation de données
SQL un langage d’interrogation de données
SQL un langage de définition de données
Objectifs attendus:
Implanter, consulter, interroger, mettre à jour une BDR, consolider
les connaissances en SQL.
Installer un SGBDR et administrer une BDR
2 Language SQL 12/02/2014
Le langage SQL
Cours1: Modèle relationnel
H. MACHHOUR
Plan
Introduction générale
Présentation
Eléments du modèle relationnel
Algèbre relationnelle
Exercices et TP
4 Language SQL 12/02/2014
Introduction
• SQL
= Structured Query Language Langage d'interrogation structuré
– langage complet de gestion de bases de données relationnelles
• Une base de données relationnelle
– Composée de relations (ou Tables)
– Structurée suivant les principes de l’algèbre relationnelle.
• SQL est une implémentation de ces principes
D’où l’importance de savoir quelques notions de l’algèbre/modèle relationnel
5 Language SQL 12/02/2014
Présentation du modèle relationnel
• Basé sur le concept de relation
• Formulé par Edgar Frank Codd 1970, (IBM)
• « Chaque phénomène peut être décrit par une relation. Un phénomène
d'un type déterminé est un n-uplet (collection des valeurs qui permet
de représenter un fait) de la relation ».
• Au départ, l’idée de de stocker des données hétérogènes dans des
tables, puis établir des relations entre elles, était une «curiosité
intellectuelle »
• Premier prototype de Système de gestion de bases de données
relationnelles (SGBDR) établie par Codd
• Depuis les années 80, cette technologie a été adoptée par l’industrie.
• En 1987, le langage SQL, qui étend l’algèbre relationnelle, a été
standardisé
6 Language SQL 12/02/2014
Présentation du modèle relationnel
Vue utilisateur :
une relation est un tableau.
Un n-uplet est une ligne du tableau.
Une base de données est un ensemble de tableau
Les tableaux sont manipulables par des langages non procéduraux
(SQL)
7 Language SQL 12/02/2014
Présentation du modèle relationnel
Les objectifs :
proposer des schémas de données faciles à utiliser ;
mettre à la disposition des utilisateurs des langages de haut niveau ;
optimiser les accès à la base de données ;
améliorer l’intégrité et la confidentialité ;
fournir une approche méthodologique dans la construction des
schémas.
8 Language SQL 12/02/2014
Présentation du modèle relationnel
Modèle relationnel :
les données sont organisées sous forme de tables à deux dimensions,
encore appelées relations, dont les lignes sont appelées n-uplet ou
tuple en anglais ;
les données sont manipulées par des opérateurs de l’algèbre
relationnelle ;
l’état cohérent de la base est défini par un ensemble de contraintes
d’intégrité.
9 Language SQL 12/02/2014
Éléments du modèle relationnel
Attribut- Un attribut est un identificateur (un nom) décrivant une
information stockée dans une base.
Exemples d’attribut : l’âge d’une personne, le nom d’une personne,
le numéro de sécurité sociale.
En SQL en parle de colonne
Attributs
10 Language SQL 12/02/2014
Éléments du modèle relationnel
Domaine- Le domaine d’un attribut est l’ensemble, fini ou infini, de ses
valeurs possibles.
Exemple: l’attribut numéro de sécurité sociale a pour domaine
l’ensemble des combinaisons de quinze chiffres,
nom a pour domaine l’ensemble des combinaisons de lettres (chaîne
de caractères).
Domaines
~ En SQL c’est le type
de données
11 Language SQL 12/02/2014
Éléments du modèle relationnel
Relation- Une relation est un sous-ensemble du produit cartésien
de n domaines d’attributs (n > 0).
Une relation est représentée sous la forme d’un tableau à
deux dimensions dans lequel les n attributs correspondent
aux titres des n colonnes.
Relation ou table
12 Language SQL 12/02/2014
Éléments du modèle relationnel
Schéma de relation- Un schéma de relation précise le nom de la
relation ainsi que la liste des attributs avec leurs domaines.
Relation
Schéma de la relation
13 Language SQL 12/02/2014
Éléments du modèle relationnel
Degré- Le degré d’une relation est son nombre d’attributs.
Occurrence ou n-uplets ou tuples- Une occurrence, ou n-uplets, ou tuples,
est un élément de l’ensemble figuré par une relation. Autrement dit, une
occurrence est une ligne du tableau qui représente la relation.
Cardinalité- La cardinalité d’une relation est son nombre d’occurrences.
Degré=3, cardinalité=4
14 Language SQL 12/02/2014
Éléments du modèle relationnel
Clé candidate- Une clé candidate d’une relation est un ensemble minimal des
attributs de la relation dont les valeurs identifient à coup sûr une occurrence.
La valeur d’une clé candidate est distincte pour toutes les tuples de la relation.
La notion de clé candidate est essentielle dans le modèle relationnel.
Règle : Toute relation a au moins une clé candidate et peut en avoir plusieurs.
il ne peut jamais y avoir deux tuples identiques au sein d’une relation.
Les clés candidates d’une relation n’ont pas forcément le même nombre
d’attributs.
Une clé candidate peut être formée d’un attribut arbitraire, utilisé à cette seule
fin.
15 Language SQL 12/02/2014
Éléments du modèle relationnel
Clé primaire- La clé primaire d’une relation est une de ses clés candidates. Pour signaler la clé
primaire, ses attributs sont généralement soulignés.
Clé étrangère- Une clé étrangère dans une relation est formée d’un ou plusieurs attributs qui
constituent une clé primaire dans une autre relation.
Schéma relationnel- Un schéma relationnel est constitué par l’ensemble des schémas de
relation.
Base de données relationnelle- Une base de données relationnelle est constituée par
l’ensemble des n-uplets des différentes relations du schéma relationnel.
Clé primaire
Clé étrangère
Schéma relationnel
16 Language SQL 12/02/2014
Algèbre relationnelle
• Objectifs
– Approche opérationnelle, pas mathématique
– Décrire les opérations d’interrogation de DB
– bien formuler ses « requêtes » en SQL
• On peut distinguer trois familles d’opérateurs relationnels :
– Les opérateurs unaires (Sélection, Projection) :
• plus simples, produire une nouvelle table à partir d’une autre table.
– Les opérateurs binaires ensemblistes (Union, Intersection Différence) :
• produire une nouvelle relation à partir de deux relations de même degré et de même
domaine.
– Les opérateurs binaires ou n-aires (Produit cartésien, Jointure,
Division) :
• produire une nouvelle table à partir de deux ou plusieurs autres tables.
• Les notations ne sont pas standardisées en algèbre relationnelle
17 Language SQL 12/02/2014
Algèbre relationnelle
Sélection : La sélection (parfois appelée restriction) génère une relation
regroupant exclusivement toutes les occurrences de la relation R qui
satisfont l’expression logique E,
Notation: σ(E)R ou encore RESTRICT(R/E).
Relation T= RESTRICT(Personne/
RESTRICT(Personne/Numéro≥5
Numéro≥5 ).
18 Language SQL 12/02/2014
Algèbre relationnelle
Projection: La projection consiste à supprimer les attributs autres
que A1, … An d’une relation et à éliminer les n-uplets en double
apparaissant dans la nouvelle relation
Notation: Π(A1, … An)R ou encore PROJECT(R/A1,A2,..,An)
Relation T= PROJECT(Personne/
PROJECT(Personne/Nom
Nom).).
19 Language SQL 12/02/2014
Algèbre relationnelle
• Union- L’union est une opération portant sur deux relations R1 et R2
ayant le même schéma et construisant une troisième relation constituée
des n-uplets appartenant à chacune des deux relations R1 et R2 sans
doublon
• Notation: R= R1 U R2 ou R=UNION(R1,R2)
Relation R= UNION(R1,R2).
20 Language SQL 12/02/2014
Algèbre relationnelle
Intersection- L’intersection est une opération portant sur deux
relations R1 et R2 ayant le même schéma et construisant une
troisième relation dont les n-uplets sont constitués de ceux
appartenant aux deux relations.
Notation: R= R1 ∩ R2 ou R=INTERSECT(R1,R2)
21 Language SQL Relation R= INTERSECT (R1,R2). 12/02/2014
Algèbre relationnelle
Différence- La différence est une opération portant sur deux
relations R1 et R2 ayant le même schéma et construisant une
troisième relation dont les n-uplets sont constitués de ceux ne se
trouvant que dans la relation R1.
R= R1 - R2 ou R=MINUS(R1,R2)
22 Language SQL Relation R= MINUS(R1,R2). 12/02/2014
Algèbre relationnelle
Produit cartésien- Le produit cartésien est une opération
portant sur deux relations R1 et R2 et qui construit une troisième
relation regroupant exclusivement toutes les possibilités de
combinaison des occurrences des relations R1 et R2.
R= R1 x R2 ou R=PRODUCT(R1,R2)
23 Language SQL Relation R= PRODUCT(R1,R2). 12/02/2014
Algèbre relationnelle
Jointure- La jointure est une opération portant sur deux relations R1 et R2 qui construit une
troisième relation regroupant exclusivement toutes les possibilités de combinaison des occurrences
des relations R1 et R2 qui satisfont l’expression logique E.
Notation: R= R1 ∞E R2 ou encore JOIN(R1,R2).
La jointure n’est rien d’autre qu’un produit cartésien suivi d’une sélection :
R1 ∞E R2 = σE (R1 × R2)
Relation R=
= Famille ∞ ((Age ≤ AgeC) et (Prix < 50)) Cadeau
24 Language SQL 12/02/2014
Algèbre relationnelle
• Equi-jointure- Une equi-jointure est une jointure dans laquelle l’expression logique E est un
test d’égalité entre un attribut A1 de la relation R1 et un attribut A2 de la relation R2. L’equi-
jointure est notée R1 ∞A1=A2 R2 = σA1=A2 (R1 × R2)
• Jointure naturelle- Une jointure naturelle est une jointure dans laquelle l’expression
logique E est un test d’égalité entre les attributs qui portent le même nom dans les relations R1
et R2.
– Dans la relation construite, ces attributs ne sont pas dupliqués mais fusionnés en une seule colonne par
couple d’attributs.
– La jointure naturelle est notée R1 ∞ R2. On peut préciser explicitement les attributs communs à R1 et
R2 sur lesquels porte la jointure : R1 ∞A1, …, An R2
Language SQL
R = Famille ∞ Cadeau ou R = Famille ∞Age Cadeau
25 12/02/2014
Algèbre relationnelle
Division- La division est une opération portant sur deux relations R1 et R2, telles que le
schéma de R2 est strictement inclus dans celui de R1, qui génère une troisième relation
regroupant toutes les parties d’occurrences de la relation R1 qui sont associées à toutes les
occurrences de la relation R2 .
R= R1 ÷ R2 ou R=DIVISION(R1,R2)
R1 ÷ R2 génère une relation qui regroupe tous les n-uplets qui, concaténés à chacun
des n-uplets de R2, donne toujours un n-uplet de R1.
Relation R=DIVISION(R1,R2)
26 Language SQL 12/02/2014
Exercice et TP
27 Language SQL 12/02/2014
Exercice et TP
Soit les Relations précedentes :
• PIECE ={ NOP, DESIGNATION, COULEUR, POIDS }
• SERVICE = {NOS, INTITULE, LOCALISATION}
• ORDRE = {NOP, NOS, QUANTITE}
• NOMENCLATURE = {NOPA, NOPC, QUANTITE}
Donner la formule et le résultat des requêtes suivantes :
1. Afficher les localisations des services (projection de service sur localisation).
2. afficher les services ayons pour localisation CASA
3. Désignation et couleur de toutes les pièces.
4. Extraire toutes les pièces ayons un poids entre 0 et 40.
5. Extraire toutes les pièces ayons un poids entre 0 et 40, et une couleur ivoire.
6. les commandes (ordres) ayons une quantité >= 10.
7. Extraire toutes les nomenclatures ayons NOPA ou NOPC égale à P6.
8. Désignation des pièces de couleur ivoire
9. Intitulé des services ayant en commande la pièce P2
10. Intitulé des services n’ayant pas en commande la pièce P1
11. Désignation et quantité des pièces commandées par le service S2.
28 Language SQL 12/02/2014
Exercice et TP
Créer la base de données précédente sous MS Access, et réaliser
les requêtes précédentes
29 Language SQL 12/02/2014