Académique Documents
Professionnel Documents
Culture Documents
FESSI B.
Plan
•Définitions et caractéristiques
•Concepts de base
•Normalisation
•Langages de manipulation relationnels
• Langage algébrique
• SQL-LDD
• SQL-LMD
• SQL-LCD
• SQL-Autres commandes
•Avantages du modèle relationnel
•Limites du modèle relationnel
FESSI B. 2
FESSI B. 1
Définitions et caractéristiques
• Il est défini par Ted Codd en 1970 et développé par IBM lab.
• C’est un modèle de niveau logique disposant d’un support théorique
très solide.
• C’est le modèle le plus utilisé par les SGBDs disponible sur le marché,
exemples: Oracle, Informix, DB2, Ingres, Sybase, dBase, Access.
• Il est simple utilisant deux concepts pour représenter les objets et
associations du monde réel:
• relation (table)
• attribut (colonne)
• Il offre deux langages de requêtes:
• Langage algébrique basé sur la théorie des ensembles
• Langage prédicatif basé sur la logique
• SQL constitue une norme pour les langages de manipulation de
données relationnels le plus répandu. Il comporte des caractéristiques
de types algébriques et d’autres de types prédicatifs.
FESSI B. 3
Concepts de base
•Relation: table à deux dimensions. Les colonnes sont les attributs et les lignes sont les
tuples.
• Attribut: colonne au niveau d’une table (relation). Il possède un nom, un type et un
domaine. La valeur prise par un attribut est atomique (non décomposable). Un attribut
est simple et mono-valué.
• Domaine: ensemble de valeurs que peut prendre un attribut donné.
• Tuple: occurrence ou enregistrement. C’est une ligne de la table.
• Population d'une relation: ensemble des tuples de la relation. Les nouveaux tuples
sont rajoutés à la fin de la relation.
• Clé ou identifiant: élément de la table dont la valeur est unique pour chaque tuple. Il
peut être simple ou composé de plusieurs attributs.
• primaire: doit toujours avoir une valeur connue.
• externes ou étrangères: référence des tuples d’une autre relation, ou parfois de la
même relation. Sa valeur est celle d’une clé primaire d’une autre relation.
• Schéma relationnel: nom de la relation suivi de la liste des attributs et de la définition
de leurs domaines. De plus, il comprend la définition de ses identifiants primaires et
externes.
• Valeur nulle: valeur spéciale qui peut être prise par tout attribut, sauf la clé, qui n’a pas
une valeur définie. Elle est noté en général par ‘’?‘’ lors de la représentation d’un tuple
donné. Dans la définition de la BD, elle sera une valeur par défaut grâce à la clause
DEFAULT. FESSI B. 4
FESSI B. 2
Concepts de base
Identifiant
Schéma relationnel
Etudiant (NEtud, nom, prénom, age)
Table: Etudiant
FESSI B. 5
Concepts de base
• Contraintes d’intégrité: Ce sont des règles du monde réel qui ne peuvent pas être
exprimées par les concepts du modèle. Certaines de ces règles restreignent les valeurs
que peuvent prendre les données de la base. Ces contraintes s’appliquent sur deux types
de propriétés, les propriétés statiques entre les données et les propriétés dynamiques
d’évolution des données.
• contraintes structurelles: appliquer sur des structures de bases (table, colonne,
attribut). Elles sont en général statiques et permettent d’exprimer explicitement
certaines propriétés de relation et de domaine.
• contraintes non structurelles: traiter généralement l’évolution des données suite aux
mises à jour effectuées. Ce sont des contraintes de comportement.
Les contraintes d'intégrité sont exprimées en SQL par les clauses:
attribut obligatoire: NOT NULL
identifiant: PRIMARY KEY et UNIQUE
domaine de valeurs particulier d'un attribut: CHECK (permet de vérifier que la valeur
de l'attribut satisfait une condition)
contrainte d'intégrité quelconque: TRIGGER (permet de spécifier que lors de toute
mise à jour (ISM) d'un tuple dans une relation telle condition doit être satisfaite, sinon
telle action doit être entreprise automatiquement par le SGBD, par exemple refuser
l'insertion ou envoyer un message d'alerte).
FESSI B. 3
Normalisation
• Problèmes:
Redondances d’informations
Anomalies de conception
Cohérence lors des mises à jours de la BD:
Insertion: si on rajoute une commande il faut que l'article existe
commandes de ce fournisseur
Modification: si on modifie le numéro d'un article il faut modifier
Normalisation
• Edgar Codd est à l’origine de la définition des formes normales : 1FN,
2FN, 3FN, BCFN.
• Les quatrième et cinquième formes normales (4FN et 5FN) concernent
spécifiquement la représentation des relations n-n et 1-n entre les
attributs.
• La sixième forme normale (6FN) inclut des considérations pertinentes
pour les bases de données temporelles.
• Elle repose sur l'analyse de dépendances entre attributs. C’est le
processus de transformation d’une relation par une ou plusieurs
décompositions (par projection) afin d’éliminer les problèmes de
redondance interne.
• La qualité d'une relation, ou sa capacité à représenter le monde réel
sans générer des problèmes, est mesurée par son degré de
normalisation.
• La dénormalisation est une technique consistant à implémenter la
jointure de deux relations (ou plus) à la place des relations individuelles
FESSI B.
initiales. 8
FESSI B. 4
Normalisation
• Dépendance fonctionnelle (DF) caractérise les relations qui peuvent
être décomposées sans perte d’informations.
• Un attribut B dépend fonctionnellement d'un attribut A si, étant
donné une valeur de A, il lui correspond une unique valeur de B.
A --> B
Exemple:
NUM NOM signifie qu'à un numéro est associé un nom
seulement.
Langages formels:
langages algébriques définissent un ensemble d’opérateurs de
manipulation.
langages prédicatifs (calcul) définissent le résultat souhaité en
utilisant des expressions de logique.
Langages utilisateurs:
inspirés principalement des langages algébriques : SQL
inspirés des langage prédicatifs : QBE, QUEL
FESSI B. 10
FESSI B. 5
Langages de manipulation
relationnels: Langage algébrique
Les opérateurs de l'algèbre peuvent être regroupés en deux classes:
- les opérateurs provenant de la théorie mathématique sur les
ensembles: union, intersection, différence, et produit;
- les opérateurs définis spécialement pour les bases de données
relationnelles: sélection, projection, jointure, division et
renommage. at1 at2 at3 at4
…. …. …. ….
at1 at2 at3 at4 …. …. …. …. at1 at2
at2at3at4 …. …. …. ….
…. …. …. …. …. ….
…. …. …. …. …. …. ….
…. …. …. …. Opérateur …. ….
…. …. ….
…. …. …. …. Opérateur …. ….
…. …. ….
…. …. …. …. …. ….
…. …. …. at1 at2 at3 at4
…. …. …. …. relation
relation temporaire
…. …. …. …. temporaire
=> La relation temporaire a les mêmes …. …. …. ….
caractéristiques qu'une relation de la BD FESSI B. …. …. …. …. 11
Langages de manipulation
relationnels: Langage algébrique
Projection
Cet opérateur construit une relation résultat où n'apparaissent que certains
attributs de la relation opérande.
Sélection
Cet opérateur construit une relation résultat où n'apparaissent que certains
tuples de la relation opérande. Les tuples retenus sont ceux satisfaisant une
condition explicite (expression logique), appelée prédicat de sélection.
nom prénom
NEtud nom prénom sexe age
Ben slima Nesrine
152 Ben slima Nesrine F 23 Namouchi Alaeddine
Ben hamed Imen
146 Namouchi Alaeddine M 25
Fathallah Skander
142 Ben hamed Imen F 24
=> La projection et la sélection sont unaires: une seule relation est utilisée.
FESSI B. 12
FESSI B. 6
Langages de manipulation
relationnels: Langage algébrique
Jointure
Cet opérateur construit une nouvelle relation à partir de deux relations ayant un
attribut en commun. Le résultat de la jointure est la concaténation de tous les
champs.
Thêta-Jointure
Cet opérateur construit une nouvelle relation à partir de deux relations n’ayant
pas un attribut en commun mais satisfaisant une condition, appelée prédicat.
Le nombre de lignes (tuples) de la relation résultat dépend de la condition de
jointure, seules les combinaisons des tuples qui satisfont le prédicat de jointure
apparaissent dans le résultat.
Renommer
Cet opérateur permet de changer le nom d'un (ou plusieurs) attribut d'une
relation. Il est utile avant les jointures s'il y a un problème d'homonymie ou de
synonymie, ou avant les opérations ensemblistes (union, différence, intersection)
qui requièrent que les attributs correspondants aient le même nom.
FESSI B. 13
Langages de manipulation
relationnels: Langage algébrique
Produit
Cet opérateur construit une nouvelle relation à partir de deux relations n’ayant
pas un attribut en commun. La relation résultat contient toutes les
concaténations (combinaisons) possibles de tuples des deux relations initiales.
Division
Cet opérateur construit une nouvelle relation, à partir de deux relations A et B,
contenant un ensemble d’attributs, tel que ces attributs existent dans A
concaténés à tous les tuples de B.
A Etudiants Cours
Ali
B Cours A/B
BD
Ali Anglais BD
Ali Histoire Anglais Etudiants
Ines Prog Ali
Ines Anglais
Mohamed
Ines Histoire A/B : Etudiants ayant tous les pré-requis
Mohamed Prog
Mohamed Anglais
Mohamed BD
Mohamed Histoire FESSI B. 14
FESSI B. 7
Langages de manipulation
relationnels: Langage algébrique
R et S deux relations de même schéma : R (A1, A2, …, An) et S (A1, A2, …, An)
Union
Cet opérateur crée une relation temporaire de même schéma et de population
égale à l'ensemble des tuples de R et de ceux de S, avec élimination des doubles
éventuellement créés.
Différence
Cet opérateur crée une relation temporaire de même schéma et de population
égale à l'ensemble des tuples de R moins ceux de S, i.e. les tuples qui se trouvent
dans R mais pas dans S.
Intersection
Cet opérateur crée une relation temporaire de même schéma et de population
égale à l'ensemble des tuples de R qui ont un tuple de même valeur dans S.
=> Ces 3 opérateurs s’opèrent sur deux relations ayant le même schéma définit sur un
même domaine
FESSI B. 15
FESSI B. 8
Langages de manipulation relationnels: SQL-LDD
FESSI B. 9
Langages de manipulation relationnels: SQL-LMD
DELETE FROM nom_relation [WHERE condition]; Si la clause "WHERE" est présente, seuls
DELETE couleur les tuples satisfaisant la condition sont
FROM Catalogue supprimés, sinon tous les tuples sont
WHERE couleur = « bleu« ; supprimés; la relation devient vide.
FESSI B. 20
FESSI B. 10
Langages de manipulation relationnels: SQL-LMD
SELECT [DISTINCT] <liste des noms d'attributs du résultat>
FROM <nom d'une relation (ou noms de plusieurs relations)>
[WHERE <condition logique qui définit les tuples du résultat> ]
[GROUP BY <liste des noms d'attributs>]
[HAVING <condition logique qui définit les tuples du résultat> ]
[ORDER BY <liste des noms d'attributs><ASC/DESC> ];
– La clause DISTINCT permet à l'utilisateur d'avoir un résultat sans double.
– La clause ORDER BY permet de définir un ordre de tri pour les tuples du résultat. La
clause ASC/DESC signifie respectivement l'ordre croissant et l'ordre décroissant.
– Les opérateurs logiques utilisés dans les clauses WHERE et HAVING:
• <valeur attribut> <opérateur de comparaison> <valeur attribut>
AND, OR, NOT
• <valeur attribut> <opérateur d'appartenance> <ensemble>
BETWEEN/NOT BETWEEN/ IN/NOT IN
• <valeur attribut> <opérateur de comparaison> <quantificateur> <ensemble>
ALL/NOT ALL/ANY/ SOME
• EXISTS/NOT EXISTS <ensemble>
• IS NULL/ IS NOT NULL
• LIKE/NOT LIKE FESSI B. 21
FESSI B. 22
FESSI B. 11
Langages de manipulation relationnels: SQL-LCD
LCD: Langage de contrôle des données
• Il regroupe l’ensemble des commandes qui permettent le
contrôle d’accès aux données. Les principales opérations admises
sur le contenu des tables sont:
–Select: extraction de données
–Insert: ajout de lignes
–Delete: suppression de lignes
–Update: modification des valeurs de certaines colonnes
–Les opérations liées à l’administration de la BD: create table,
alter table
• Les commandes définies concernent:
–L’autorisation à réaliser une opération: GRANT
–L’interdiction de réaliser une opération : DENY
–L’annulation d’une commande de contrôle précédente:
REVOKE FESSI B. 23
GRANT select, update (qstock,prix) => Autoriser les utilisateurs Salah et Amine
ON produit à consulter le contenu de la table produit et
TO Salah, Amine; à modifier les valeurs de qstock et prix.
FESSI B. 12
Langages de manipulation relationnels: SQL-LCD
FESSI B. 25
SELECT Aj…
=> la jointure s'effectue sur tous les attributs communs
FROM R1 NATURAL JOIN R2, …
(de même nom dans les deux relations R1 et R2).
[ WHERE … ];
FESSI B. 26
FESSI B. 13
Langages de manipulation relationnels: SQL
Opérations ensemblistes:
- Appliquer les opérations de l'union (UNION), la différence (EXCEPT/MINUS) et
l'intersection (INTERSECT) de relations qui possèdent au moins un attribut de
même nom et de domaines compatibles.
- Ces opérations élimine les doublons dans le résultat, sauf si les variantes
UNION ALL, EXCEPT ALL et INTERSECT ALL sont employées.
Exple: numéros des fournisseurs ayant livré le produit 1 mais jamais le produit 2
(SELECT …. FROM … WHERE ….) EXCEPT (SELECT …. FROM … WHERE ….);
COUNT, MAX, MIN, SUM, AVG: sont des fonctions d’agrégations, utilisées avec la
clause SELECT ou HAVING
Création et suppression d’indexes
CREATE INDEX nom_index ON TABLE (col1, col2, …);
DROP INDEX nom_index;
Création et suppression de vues (sous ensemble virtuel d’une BD)
CREATE VIEW nom_vue [alias]
AS SELECT………[WITH CHECK OPTION[CONSTRAINT] ];
DROP VIEW nom_vue;
FESSI B. 27
FESSI B. 14
Avantages du modèle relationnel
Simple à manipuler et facile à comprendre par les utilisateurs: on
ne s’occupe pas de la stratégie d’accès aux données, comme le
modèle en réseau.
Basé sur une base formellement définie: définition de la théorie
de la normalisation et du LMD.
Facilité de spécifier des contraintes d’intégrité sans
programmation.
Indépendance de l’utilisateur vis à vis de la structure logique, de
la structure physique et des stratégies d’accès aux données.
Sécurité des données: contrôle dépendant du contenu, du
contenant et du contexte.
Interfaces utilisateurs non procédurales permettant une
manipulation de la base par des non informaticiens. L’approche non
procédurale permet un traitement uniforme de la définition, de la
manipulation et du contrôle des données.
FESSI B. 29
FESSI B. 15