1 Introduction
1 Introduction
Pierre Senellart
Plan
Modèle relationnel
Algèbre relationnelle
SQL
Références
2/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Gestion de données
De nombreuses applications (logiciels, sites Web, etc.) ont
besoin de gérer des données :
• Structurer les données utiles à l’application
• Permettre de les conserver de manière persistante (données
conservées même quand l’application ne tourne pas)
• Rechercher efficacement des informations dans de grands
volumes de données
• Mise à jour des données sans violer certaines contraintes de
structure
• Permettre l’accès et la mise à jour de données à des
utilisateurs multiples, parfois de manière concurrente
Souvent, souhaitable d’accéder aux mêmes données depuis
plusieurs applications distinctes, depuis des ordinateurs
distincts. 3/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
6/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Beaucoup de travail !
6/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Base de données
Ensemble de données (propre à une application spécifique) géré
par un SGBD
7/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
10/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
12/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Propriétés ACID
14/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Propriétés ACID
14/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
15/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
NoSQL
16/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
NewSQL
• Certaines applications nécessitent :
• un langage de requêtes riches (SQL)
• une conformité aux propriétés ACID
• mais des performances supérieures à celles des SGBD
classiques
17/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
NewSQL
• Certaines applications nécessitent :
• un langage de requêtes riches (SQL)
• une conformité aux propriétés ACID
• mais des performances supérieures à celles des SGBD
classiques
• Solutions possibles :
• Se débarrasser des goulots d’étranglement classiques des
SGBD : verrous, journalisation, gestion des caches
• Bases de données en mémoire vive, avec copie sur disque
asynchrone
• Une gestion de concurrence sans verrou (MVCC)
• Une architecture distribuée sans partage d’information
(shared nothing) et avec équilibrage de charge transparent
Spanner 17/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Dans ce cours
18/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Plan
Modèle relationnel
Algèbre relationnelle
SQL
Références
19/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Schéma relationnel
Définition
Un schéma relationnel est défini par un ensemble fini
d’étiquettes L L (les noms de relation) chaque étiquette de L
étant associée à un schéma de relation.
20/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Base de données
Définition
Une instance d’un schéma de relation ((L1 ; 1 ); : : : ; (Ln ; n )) (on
parle aussi d’une relation sur ce schéma) est un ensemble
ft1; : : : ; tk g de n-uplets de la forme tj = (vj1; : : : ; vjn) avec
8j 8i vji 2 i.
Définition
Une instance d’un schéma relationnel (ou, plus simplement, une
base de données sur ce schéma) est une fonction qui à chaque
nom de relation associe une instance du schéma de relation
correspondant.
Exemple
Client
id nom email
1 Jean Dupont [Link]@[Link]
2 Alice Dupuis alice@[Link]
3 Jean Dupont [Link]@[Link]
Reservation
id client chambre arrivee nuits
1 1 504 2017-01-01 5
2 2 107 2017-01-10 3
3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
23/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Quelques notations
24/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Exemples de contraintes
• id est une clef de Client
• email est une clef de Client
• id est une clef de Reservation
( )
• chambre; arrivee est une clef de Reservation
• (client; arrivee) est une clef de Reservation (?)
• client est une clef étrangère de Reservation référençant
id de Client
• Dans Client, email doit contenir un « @ »
• Dans Reservation, chambre doit être entre 1 et 650
• Dans Reservation, nuits doit être positif
29/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Plan
Modèle relationnel
Algèbre relationnelle
SQL
Références
30/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Algèbre relationnelle
• Langage algébrique permettant de manipuler des relations
• Une expression de l’algèbre relationnelle produit une
nouvelle relation à partir des relations de la base de
données
• Chaque opérateur prend 0, 1, ou 2 sous-expressions
• Principaux opérateurs :
Op. Arité Description Condition
R 0 Nom de relation R2L
A!B 1 Renommage A; B 2 L
A1 :::An 1 Projection A1 : : : An 2 L
' 1 Sélection ' formule
2 Produit cartésien
[ 2 Union
n 2 Différence
./' 2 Jointure ' formule 31/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Nom de relation
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
Expression : Client
Résultat :
id nom email
1 Jean Dupont [Link]@[Link]
2 Alice Dupuis alice@[Link]
3 Jean Dupont [Link]@[Link]
32/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Renommage
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
33/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Projection
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
34/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Sélection
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
35/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Produit cartésien
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
36/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Union
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
37/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Union
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
Différence
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
38/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Différence
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
38/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Jointure
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
Opérations illégales
• Toutes les expressions de l’algèbre relationnelle ne sont pas
valides
• La validité d’une expression dépend en général du schéma
relationnel
• Par exemple :
• On ne peut pas faire référence à un nom de relation qui
n’existe pas dans le schéma relationnel
• On ne peut pas faire référence (dans un renommage,
projection, sélection, jointure) à un attribut qui n’existe pas
dans le résultat de la sous-expression
• On ne peut pas unir deux relations avec des attributs
différents
• On ne peut pas produire (produit cartésien, jointure,
renommage) une table avec deux attributs de même nom
• Les systèmes implémentant l’algèbre relationnelle peuvent
faire de la vérification statique ou dynamique de ces règles,
ou les ignorent parfois 41/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Sémantique multi-ensembliste
42/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Extension : Agrégation
• Des extensions variées ont été proposées à l’algèbre
relationnelle pour capturer des fonctionnalités
supplémentaires
• En particulier, agrégation et regroupement [Klug, 1982,
Libkin, 2003] des résultats
• Avec une syntaxe inspirée de [Libkin, 2003] :
chambre avg
302 6
504 3,5
43/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Plan
Modèle relationnel
Algèbre relationnelle
SQL
Références
44/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
SQL
• Structured Query Language, langage normalisé (ISO/IEC
9075, plusieurs versions [ISO, 1987, 1999]) pour interagir
avec un SGBDR
• Malheureusement, implémentation du standard très
variable d’un SGBDR à l’autre
• Beaucoup de petites choses (p. ex., types disponibles)
varient d’un SGBDR à l’autre plutôt que de suivre le
standard
• Différences plus syntaxiques que fondamentales
• Où cela fait une différence, la version PostgreSQL est
présentée
• Deux parties principales : DDL (Data Definition Language)
pour définir le schéma et DML (Data Manipulation
Language) pour interroger et mettre à jour les données
• Langage déclaratif : on décrit ce que l’on veut, on laisse au
système le soin de transformer en un plan d’exécution 45/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Syntaxe de SQL
46/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
NULL
48/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Contraintes (1/2)
PRIMARY KEY pour la clef primaire ; une seule par table, c’est
une clef qui sera aussi utilisée pour l’organisation
physique des données ; implique NOT NULL
UNIQUE pour les autres clefs
REFERENCES pour les clefs étrangères
CHECK pour les contraintes Check
NOT NULL pour indiquer que les valeurs ne peuvent être
NULL
49/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Contraintes (2/2)
CREATE TABLE Client(
id INTEGER PRIMARY KEY,
nom TEXT NOT NULL,
email TEXT UNIQUE CHECK (email LIKE ’%@%’)
);
Mises à jours
• Insertions :
INSERT INTO Client(id,nom) VALUES (5,’John’);
• Suppressions :
DELETE FROM Reservation WHERE id>4;
• Modifications :
UPDATE Reservation
SET chambre=205
WHERE chambre=204;
51/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
52/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Requêtes
Forme générale suivante :
SELECT ... FROM ... WHERE ...
GROUP BY ... HAVING ...
UNION SELECT ... FROM ...
SELECT projection, renommage, agrégation
FROM produit cartésien
WHERE sélection (optionnel)
GROUP BY regroupement (optionnel)
HAVING sélection sur le regroupement (optionnel)
UNION union (optionnel)
D’autres mots clefs : ORDER BY pour réordonner, LIMIT pour
limiter aux k premiers résultats, DISTINCT pour forcer une
sémantique ensembliste, EXCEPT pour la différence. . .
53/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Renommage
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
id!client (Client)
54/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Projection
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
email;id (Client)
55/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Sélection
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
arrivee>2017-01-12^client=2 (Reservation)
SELECT *
FROM Reservation
WHERE arrivee>’2017-01-12’ AND client=2;
56/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Produit cartésien
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
SELECT *
FROM
(SELECT DISTINCT id FROM Client) AS temp1,
(SELECT DISTINCT nom FROM Client) AS temp2
ORDER BY nom, id;
57/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Union
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
SELECT chambre
FROM Reservation
WHERE client=2
UNION
SELECT chambre
FROM Reservation
58/65
WHERE arrivee=’2017-01-15’;
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Différence
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
SELECT chambre
FROM Reservation
WHERE client=2
EXCEPT
SELECT chambre
FROM Reservation
59/65
WHERE arrivee=’2017-01-15’;
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Jointure
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
Agrégation
Client Reservation
id nom email id client chambre arrivee nuits
1 Jean Dupont [Link]@[Link] 1 1 504 2017-01-01 5
2 Alice Dupuis alice@[Link] 2 2 107 2017-01-10 3
3 Jean Dupont [Link]@[Link] 3 3 302 2017-01-15 6
4 2 504 2017-01-15 2
5 2 107 2017-01-30 1
Plan
Modèle relationnel
Algèbre relationnelle
SQL
Références
62/65
Systèmes de gestion de données Modèle relationnel Algèbre relationnelle SQL Références
Références
63/65
Bibliographie I
Serge Abiteboul. Sciences des données : de la logique du
premier ordre à la Toile. Collège de France, 2012.
[Link]
Serge Abiteboul, Richard Hull, and Victor Vianu. Foundations
of Databases. Addison-Wesley, 1995.
Serge Abiteboul, Benjamin Nguyen, and Yannick Le Bras.
Introduction aux bases de données relationnelles.
[Link] 2014.
Michael Benedikt and Pierre Senellart. Databases. In
Edward K. Blum and Alfred V. Aho, editors, Computer
Science. The Hardware, Software and Heart of It, pages
169–229. Springer-Verlag, 2012.
Donald D. Chamberlin and Raymond F. Boyce. SEQUEL : A
structured english query language. In Proc.
SIGFIDET/SIGMOD Workshop, volume 1, 1974.
Bibliographie II