Université Ibn zohr
Faculté des sciences Agadir
Centre d’excellence IT
LES BASES DE DONNÉES
RELATIONNELLES: RAPPEL
Module: Base de données avancées
2024-2025
Définition : Base de données
relationnelles
■ Collection de données qui supporte les manipulations de :
– Recherche de données
– Insertion, mise à jour, suppression de données
■ Une base de données relationnelle est un type de base de
données qui stocke et fournit un accès à des données liés les
uns aux autres.
■ Les bases de données relationnelles sont basées sur le modèle
relationnel, un moyen intuitif et simple de représenter des
données dans des tables.
Définition : Base de données
relationnelles
■ Dans une base de données relationnelle, chaque ligne de la table est
un enregistrement avec un identifiant unique appelé clé.
■ Les colonnes de la table contiennent les attributs des données, et
chaque enregistrement a généralement une valeur pour chaque
attribut, ce qui facilite l’établissement des relations entre les points
de données.
Définition : Base de données
relationnelles
■ Au début des bases de données, chaque application stockait des
données au sein de sa propre structure unique.
■ Lorsque les développeurs voulaient créer des applications pour utiliser
ces données, ils devaient en savoir beaucoup sur la structure spécifique
des données pour trouver les données dont ils avaient besoin.
■ Ces structures de données étaient inefficaces, difficiles à gérer et à
optimiser pour obtenir de bonnes performances des applications.
■ Le modèle de base de données relationnelle a été conçu pour résoudre
le problème que présentent plusieurs structures de données arbitraires.
Définition : Base de données
relationnelles
■ Le modèle relationnel fournissait un moyen standard de représenter et
d’interroger des données qui pouvait être utilisé par n’importe quelle
application.
■ Dès le début, les développeurs ont reconnu que la force principale du
modèle de base de données relationnelle résidait dans l’utilisation de
tables, qui constituaient un moyen intuitif, efficace et flexible de stocker
des informations structurées et d’y accéder.
Définition: Modèle relationnel
■ Au fil du temps, un autre atout du modèle relationnel est apparu lorsque
les développeurs ont commencé à utiliser le langage SQL pour écrire et
interroger des données dans une base de données.
■ Depuis de nombreuses années, SQL est largement utilisé comme langage
pour les requêtes de base de données.
■ Basé sur l’algèbre relationnelle, SQL fournit un langage mathématique
cohérent en interne qui permet d’améliorer plus facilement les
performances de toutes les requêtes de base de données.
Définition: SGBD
■ Un système de gestion de base de données est un logiciel permettant
l’exploitation des bases de données.
■ C’est-à-dire, le stockage, la récupération, l’ajout, le tri, la suppression, la
modification ou l’utilisation des données présentes.
■ Il s’agit de gérer les aspects primaires de la base de données.
Composants du SGBD
■ On retrouve plusieurs composants au sein d’un database management
system :
• Les données : c’est le cœur du SGBD.
• Le moteur de base de données : cela permet de rendre les bases de
données accessibles. Les utilisateurs pourront modifier et verrouiller les
datas facilement.
• Le schéma de base de données : c’est la structure de la database.
le SGBD assure la confidentialité, la pérennité, la sécurité et l’intégrité des
données.
Les différents types de SGBD
■ Il existe plusieurs types de SGBD, parmi lesquels :
• SGBD relationnels : structuration des données en tables (ex. MySQL,
PostgreSQL).
• SGBD orientés documents : stockage des données sous forme de
documents (ex. MongoDB).
• SGBD objet, SGBD Objet relationnel….
Fonctionnalités des SGBD
■ Fonctionnalités des SGBD
■ Les fonctionnalités clés incluent :
• Stockage et récupération des données.
• Sécurité des accès, incluant la gestion des utilisateurs et droits.
• Sauvegardes automatiques, cruciales pour éviter toute perte
d'informations.
Modèle relationnel: objectifs
• proposer des schémas de données faciles à utiliser ;
• améliorer l'indépendance logique et physique ;
• 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.
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é.
■ Au modèle relationnel est associée a la théorie de la normalisation des
relations qui permet de se débarrasser des incohérences au moment
de la conception d'une base de données relationnelle.
Les éléments liés au modèle relationnel
■ -attribut- Un attribut est un identificateur (un nom) décrivant une
information stockée dans une base.
■ -Domaine- Le domaine d'un attribut est l'ensemble, de ses valeurs
possibles.
■ -relation- 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.
■ -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.
■ -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.
■ -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.
La normalisation
■ Objectifs de la normalisation :
q – limiter les redondances de données,
q – limiter les pertes de données,
q – limiter les incohérences au sein des données
q – améliorer les performances des traitements.
La normalisation
■ 1FN: 1ere forme normale (1FN) : un attribut ne peut prendre qu’une valeur et non
un ensemble ou liste de valeur
■ 2FN:être en 1ere forme normale + si la clé primaire est composée de plusieurs
attributs, les autres attributs de la relation doivent dépendre de la totalité de la clé
et non d’une partie.
■ 3FN: 3ème forme normale : Tous les attributs qui n’appartiennent pas à l’identifiant
(clé) doivent dépendre directement de l’identifiant et d’aucun autre attribut.
Le langage SQL
SQL ou « Structured Query Language » est un langage de programmation permettant de manipuler les données et
les systèmes de bases de données relationnelles.
Ce langage permet principalement de communiquer avec les bases de données afin de gérer les données qu’elles
contiennent.
Il permet notamment de stocker, de manipuler et de retrouver ces données. Il est aussi possible d’effectuer des
requêtes,
de mettre à jour les données, de les réorganiser, ou encore de créer et de modifier le schéma et la structure d’un
système de base
de données et de contrôler l’accès à ses données.
Le Data Definition Language (DDL) ou
Langage de définition des données
■ Le DDL est utilisé pour définir et modifier la structure des bases de données, comme la
création ou la suppression de tables et de schémas.
■ Il inclut les commandes suivantes :
• CREATE : Pour créer une base de données ou une table.
• ALTER : Pour modifier la structure d’une table.
• DROP : Pour supprimer une table ou une base de données.
• TRUNCATE : Pour supprimer toutes les données d’une table sans en altérer la structure.
• RENAME : Pour renommer des objets.
Le Data Manipulation Language (DML) ou
Langage de manipulation des données
■ Le DML est utilisé pour manipuler les données contenues dans les bases de données. Ces
commandes permettent d’insérer, de mettre à jour, de supprimer ou de consulter des
données.
■ Les commandes incluent :
• INSERT : Pour insérer de nouvelles données.
• UPDATE : Pour modifier des données existantes.
• DELETE : Pour supprimer des données spécifiques.
• SELECT : Pour interroger ou récupérer des données.
• GROUP BY : Pour regrouper des données.
• JOIN : Pour relier des tables.
Le Data Control Language (DCL) ou Langage
de contrôle des données
■ Le DCL gère les droits d’accès et les permissions sur les bases de données, garantissant
ainsi la sécurité des données.
■ Les commandes principales sont :
• GRANT : Pour attribuer des droits spécifiques à un utilisateur.
• REVOKE : Pour retirer des droits précédemment accordés.
Création d’une base de données
■ Pour créer une base de données qui sera appelé « ma_base » il suffit d’utiliser la
requête suivante qui est très simple:
■ Dans le standard SQL la commande CREATE DATABASE n’existe normalement pas.
En conséquent il revient de vérifier la documentation des différents SGBD pour
vérifier les syntaxes possibles pour définir des options. Ces options permettent
selon les cas, de définir les jeux de caractères, le propriétaire de la base ou même
les limites de connexion.
Suppression d’une base de données
Création de table
La commande CREATE TABLE permet de créer une table
en SQL. Un tableau est une entité qui est contenu dans
une base de données pour stocker des données
ordonnées dans des colonnes. La création d’une table
sert à définir les colonnes et le type de données qui
seront contenus dans chacun des colonne (entier, chaîne
de caractères, date, valeur binaire …).
■ Dans cette requête, 4 colonnes ont été définies. Le mot-clé « type_données » sera à
remplacer par un mot-clé pour définir le type de données (INT, DATE, TEXT …). Pour
chaque colonne, il est également possible de définir des options telles que (liste
non-exhaustive):
■ NOT NULL : empêche d’enregistrer une valeur nulle pour une colonne.
■ DEFAULT : attribuer une valeur par défaut si aucune données n’est indiquée pour
cette colonne lors de l’ajout d’une ligne dans la table.
■ PRIMARY KEY : indiquer si cette colonne est considérée comme clé primaire pour un
index.
•id : identifiant unique qui est utilisé comme clé primaire et qui
n’est pas nulle
•nom : nom de l’utilisateur dans une colonne de type VARCHAR
avec un maximum de 100 caractères au maximum
•prenom : idem mais pour le prénom
•email : adresse email enregistré sous 255 caractères au maximum
•date_naissance : date de naissance enregistré au format AAAA-
MM-JJ (exemple : 1973-11-17)
•pays : nom du pays de l’utilisateur sous 255 caractères au
maximum
•ville : idem pour la ville
•code_postal : 5 caractères du code postal
•nombre_achat : nombre d’achat de cet utilisateur sur le site
Suppression de table
Il arrive qu’une table soit créé temporairement pour
stoquer des données qui n’ont pas vocation à être ré-
utiliser. La suppression d’une table non utilisée est
avantageux sur plusieurs aspects :
•Libérer de la mémoire et alléger le poids des backups
•Éviter des erreurs dans le futur si une table porte un nom
similaire ou qui porte à confusion
•Lorsqu’un développeur ou administrateur de base de données
découvre une application, il est plus rapide de comprendre le
système s’il n’y a que les tables utilisées qui sont présente
Format des requêtes
Exemples de requêtes simples
Elimination des doublons
Sélection de colonnes (clause where)
Exemples
Opérations possibles
Utilisation des opérateurs
Utilisation des opérateurs
Combinaison sélection et Projection
Exemples de requêtes simples
Clauses Tri
Alter
Truncate
■ En SQL, la commande TRUNCATE permet de supprimer toutes les données d’une
table sans supprimer la table en elle-même. En d’autres mots, cela permet de
purger la table. Cette instruction diffère de la commande DROP qui à pour but de
supprimer les données ainsi que la table qui les contient.
Truncate
Rename
Clés primaires et étrangères
Fonctions de calcul
■ AVG
■ SUM
■ MAX
■ COUNT
■ MIN
Order BY
■ Desc
■ Asc
Les vues
■ Une vue est une table virtuelle, c'est-à-dire dont les données ne sont pas stockées
dans une table de la base de données, et dans laquelle il est possible de
rassembler des informations provenant de plusieurs tables.
■ On parle de "vue" car il s'agit simplement d'une représentation des données dans le
but d'une exploitation visuelle.
■ Les données présentes dans une vue sont définies grâce à une clause SELECT.
■ La création d'une vue se fait grâce à la clause CREATE VIEW suivie du nom que l'on
donne à la vue, puis du nom des colonnes dont on désire agrémenter cette vue (il
faut autant de redéfinitions de colonne qu'il y en aura en sortie), puis enfin d'une
clause AS précédant la sélection.
■ La syntaxe d'une vue ressemble donc à ceci :
Intérêt des vues
■ La vue représente de cette façon une sorte d'intermédiaire entre la
base de données et l'utilisateur. Cela a de nombreuses
conséquences :
– une sélection des données à afficher
– une restriction d'accès à la table pour l'utilisateur, c'est-à-dire une sécurité des
données accrue
– un regroupement d'informations au sein d'une entité
Supprimer
■ Drop view nom-vue
Requêtes imbriquées
■ Le langage SQL étend la notion de valeur de référence au résultat d’une requête.
■ Ainsi, l’expression d’une clause WHERE peut prendre la forme : WHERE attribut
opérateur (SELECT …)
■ On dit alors que la requête, dont le résultat sert de valeur de référence, est une
requête imbriquée ou une sous-requête
■ Il est possible d’imbriquer plusieurs requêtes et il n’y a pas de limite dans le nombre
de niveaux d’imbrication
■ Le résultat de chaque requête imbriquée sert de valeur de référence dans la
condition de sélection de la requête de niveau supérieur, appelée requête principale
Requête imbriquée renvoyant une seule
ligne
■ Donner les numéros des voyages ayant le même type de pension que le voyage
numéro 4
■ SELECT numVoyage FROM Voyage WHERE typePension = (SELECT typePension
FROM Voyage WHERE numVoyage = 4)
■ Si la requête ne renvoie rien ou si elle renvoie plusieurs lignes, SQL génère une
erreur.
■ L’attribut et la valeur de référence renvoyée par la sous-requête doivent avoir des
types compatibles.
■ Donner les numéros et les dates de départ des voyages ayant le prix le plus bas sur
l’ensemble de tous les prix
■ SELECT numVoyage, dateDep FROM Tarif WHERE prix = (SELECT MIN(prix ) FROM
Tarif )
■ Donner les numéros et les dates de départ des voyages ayant le prix le plus bas sur
l’ensemble de tous les prix
■ SELECT numVoyage, dateDep FROM Tarif WHERE prix <= ALL(SELECT prix FROM
Tarif )
Requête imbriquée renvoyant plusieurs
lignes
■ La condition de sélection emploie alors :
• L’opérateur IN (équivalent à = ANY)
• L’opérateur NOT IN (équivalent à != ALL)
• Un opérateur simple ( =, !=, <>, , <=, >=) suivi de ALL ou ANY
• L’opérateur EXISTS
■ ANY : la condition est vraie si elle est vérifiée pour au moins une des valeurs
renvoyées par la sous-requête
■ ALL : la condition est vraie si elle est vérifiée pour chacune des valeurs renvoyées
par la sous-requête
■ IN : la condition est vraie si elle est vérifiée pour une des valeurs renvoyées par la
sous-requête
■ Donner les numéros des voyages passant par une ville où passe aussi le voyage
numéro 4
■ SELECT DISTINCT numVoyage FROM Etape WHERE numVille IN (SELECT numVille
FROM Etape WHERE numVoyage = 4)
Group by dans un sous select
■ Nombre de voyages dont la durée totale est de moins de 10 jours SELECT COUNT(*)
FROM Voyage WHERE numVoyage IN (SELECT numVoyage FROM Etape GROUP BY
numVoyage HAVING SUM(duree) < 10)
Requête imbriquée avec NOT IN
■ Numéros des voyages dont il n’y a pas eu de départs après le mois de septembre
2014
■ SELECT numVoyage FROM Voyage WHERE numVoyage NOT IN (SELECT numVoyage
FROM Tarif WHERE dateDeb > '30-09-14')
Extension SQL2
■ Les lignes résultats peuvent être des listes d’attributs
■ SELECT DISTINCT numVoyage, numVille FROM Etape WHERE (numVille, duree) =
(SELECT numVille, duree FROM Etape WHERE numOrdre = 1 AND numVoyage = 10)
Opérateur Exists
■ Cet opérateur permet de construire un prédicat évalué à vrai si la sous-requête
renvoie au moins une ligne
■ Numéros des voyages qui font au moins 6 étapes
■ SELECT numVoyage FROM Voyage V WHERE EXISTS (SELECT * FROM Etape E
WHERE numOrdre = 6 AND E.numVoyage = V.numVoyage)
■ Numéros des voyages qui font moins de 6 étapes
■ SELECT numVoyage FROM Voyage V WHERE NOT EXISTS (SELECT * FROM Etape E
WHERE numOrdre = 6 AND E.numVoyage = V.numVoyage)
■ Commandes SQL*PLUS
■ SET pause ON/OFF : permet d'effectuer un défilement page par page de l'écran.
■ SET LINESIZE 132 : permet d'augmenter le nombre de caractères par ligne
■ SET PAGESIZE 60 : permet d'augmenter le nombre de lignes par page
■ SET TIMING ON : donne le temps de calcul de chaque commande SQL
■ La dernière commande SQL exécutée est stockée dans le buffer principal de l'environnement SQL*PLUS. Plusieurs commandes de manipulation de ce
buffer sont possibles :
■ List : affiche le contenu du buffer.
■ List n : affiche la n-ième ligne du buffer.
■ List m n : affiche les lignes m à n du buffer.
■ Save <nom de fichier> : sauve le buffer dans un fichier.
■ Get <nom de fichier> : restitue le fichier dans le buffer.
■ Start <nom de fichier> : exécute le contenu du fichier
■ Run : exécute le contenu du buffer.
■ Clear buffer : vide le contenu du buffer
■ Commandes SQL
■ COMMIT : permet d'enregistrer les relations dans la base.
■ ROLLBACK : permet de défaire toutes les opérations effectuées depuis le dernier commit.