Vous êtes sur la page 1sur 15

Faculté des Sciences Économiques et de Gestion de Nabeul

MP Ingénierie des Systèmes d'Information et des Connaissances

Modèles avancés pour les bases de


données

Chap2: Modèle relationnel

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)

nom de la relation noms des attributs

Table: Etudiant

NEtud nom prénom age


152 Ben slima Nesrine 23
Tuple ou 146 Namouchi Alaeddine 25
occurence Population
142 Ben hamed Imen 24
869 Fathallah Skander 22

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).

ISM: Insertion, Suppression, Modification FESSI B. 6

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

 Suppression: si on enlève un fournisseur il faut enlever toutes les

commandes de ce fournisseur
 Modification: si on modifie le numéro d'un article il faut modifier

toutes les commandes avec ce numéro d'article

• But: C’est d'obtenir une représentation des données présentant un


minimum de redondance à l'intérieur de chaque relation et un maximum
d'indépendance entre les différentes relations.

• Solution: Normalisation FESSI B. 7

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.

Généralement, une dépendance fonctionnelle n'est pas symétrique,


i.e. NUM  NOM n'interdit pas que deux personnes distinctes
(correspondant à deux NUM différents) portent le même nom

• Dépendance fonctionnelle totale: x  y, la suppression d'un


attribut A de x signifie que la dépendance n'existe plus.
FESSI B. 9

Langages de manipulation relationnels

 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

 Langages formels: langages algébriques


 Langages utilisateurs: SQL

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

869 Fathallah Skander M 22 NEtud nom prénom Sexe age


152 Ben slima Nesrine F 23
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

Langages de manipulation relationnels: SQL-LDD

LDD: Langage de définition de données


• Il regroupe l’ensemble des commandes qui définissent une base de données et
les objets qui la composent. Les commandes définies concernent:
– La création: CREATE TABLE
– La modification: ALTER TABLE
– La suppression: DROP TABLE
Contrainte-col : contrainte sur une colonne Domaines de valeurs
 NOT NULL CHAR(n)
 PRIMARY KEY VARCHAR(n)
 UNIQUE INTEGER(n)
 REFERENCES nom-table [(nom-col)] [action] NUMERIC(n,p)
 CHECK (condition) DATE
Contrainte-table : contraintes sur une table TIME
 PRIMARY KEY (nom-col*) TIMESTAMP
 UNIQUE (nom-col*)
 FOREIGN KEY (nom-col*) REFERENCES nom-table [(nom-col*)] [action]
 CHECK (condition)
FESSI B. 16

FESSI B. 8
Langages de manipulation relationnels: SQL-LDD

CREATE TABLE nom-table


{ ( nom-col type-col [DEFAULT valeur]
[ [CONSTRAINT] contrainte-col] )*
CREATE TABLE client
[ [CONSTRAINT] contrainte-table ]*
( nclt CHAR(11) not null,
| AS requête-SQL };
nom VARCHAR(20) not null,
prénom VARCHAR(30) not null,
adresse VARCHAR(60) not null,
CREATE TABLE commande
compte decimal(9,2) not null,
( ncom CHAR(12) not null,
Primary key (nclt));
nclt CHAR(11) not null,
datecom date not null,
Primary key (ncom),
Foreign key (nclt) references client );
FESSI B. 17

Langages de manipulation relationnels: SQL-LDD

DROP TABLE nom_table


[CASCADE CONSTRAINTS]; Supprime toutes les contraintes de clé
externe référençant cette table
DROP TABLE client ;

ALTER TABLE nom-table


{ RENAME TO nouveau-nom-table |
ADD ( [ (nom-col type-col [DEFAULT valeur] [contrainte-col])* ] |
MODIFY (nom-col [type-col] [DEFAULT valeur] [contrainte-col])* |
DROP COLUMN nom-col [CASCADE CONSTRAINTS] |
RENAME COLUMN old-name TO new-name};
ALTER TABLE client ALTER TABLE client
ADD COLUMN age integer; MODIFY adresse null;

ALTER TABLE client ALTER TABLE client


ADD UNIQUE (nom, prénom, adresse); DROP COLUMN compte;
FESSI B. 18

FESSI B. 9
Langages de manipulation relationnels: SQL-LMD

LMD: Langage de manipulation de données


LMJ: Langage de mise à jour de données
LID: Langage d’interrogation de données
• Il regroupe l’ensemble des commandes qui permettent la
mise à jour des objets créés par le LDD, la consultation, et
l’extraction de données à partir de la base.
• Les commandes définies concernent:
–La mise à jour inclut:
L’insertion de nouvelles données: INSERT
La modification de données existantes: UPDATE
La suppression de données existantes : DELETE
–La consultation : SELECT
FESSI B. 19

Langages de manipulation relationnels: SQL-LMD

Catalogue (NP, nomP, couleur, poids, prix)


SELECT nomP, couleur FROM Catalogue WHERE poids=50;

INSERT INTO nom_relation : < tuple constant>


INSERT INTO P :
SELECT NP, nomP, couleur, poids
FROM Catalogue;

UPDATE nom _relation


SET nomattr1 = <expression1 qui définit une valeur pour l'attribut1>,
[WHERE condition];
UPDATE P
SET couleur = "vert d'eau" pour les produits verts, changer leur couleur
WHERE couleur = "vert "; en "vert d'eau "

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

Langages de manipulation relationnels: SQL-LMD


 Exemples d’utilisation de sous requêtes avec la clause SELECT:
la COMMANDE M est retenue  select NCOM from COMMANDE M
si,  where
il n’existe pas  not exists
de PRODUIT P  (select * from PRODUIT P
tel que  where
P n’est pas dans  P.NPRO not in
l’ensemble des PRODUITs  (select NPRO from DETAIL
commandés par M  where NCOM=M.NCOM));
 Exemples d’utilisation de la jointure de plusieurs tables avec la clause SELECT:
select NCOM, CLIENT.NCLI, DATECOM, NOM, LOCALITE
from COMMANDE, CLIENT
where COMMANDE.NCLI = CLIENT.NCLI; // Condition de jointure (logique)
 Exemples d’utilisation de requêtes sur des structures de données cycliques:
select S.NPERS, R.NPERS, R.NOM
PERSONNE
from PERSONNE S, PERSONNE R
where S.RESPONSABLE = R.NPERS; NPERS NOM (RESPONSABLE)

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

Langages de manipulation relationnels: SQL-LCD

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.

GRANT all privileges => Permettre toutes les opérations


ON client possibles sur la table client + transmettre
TO Salah, Amine des privilèges via Salah et Amine à d’autres
WITH grant option; utilisateurs.

GRANT select => Accorder un privilège à tous les


ON produit utilisateurs.
TO public;

GRANT run => Autoriser l’exécution d’un programme


ON detail d’application ou une procédure qui
TO Ahmed manipule le contenu de la BD + transmettre
WITH grant option; des privilèges via Ahmed à d’autres
utilisateurs.
FESSI B. 24

FESSI B. 12
Langages de manipulation relationnels: SQL-LCD

REVOKE update (prix) => Retirer le privilège accordé à Amine pour


ON produit modifier le prix de la table produit.
TO Amine;

REVOKE grant option for update(compte)


ON client => Retirer la transmission de privilège
TO Salah; accordée à Salah.

REVOKE run => Retirer le privilège accordé à Ahmed


ON detail pour exécuter un programme d’application
TO Ahmed ; ou une procédure qui manipule le contenu
de la table detail.

FESSI B. 25

Langages de manipulation relationnels: SQL


 Qualification des noms d’attributs:
Exple: Employé (Num, Nom, Prénom, DateNaissance, Adresse)
Nom: attribut
Employé.Nom: attribut qualifié par le nom de la relation
 Recherche sur plusieurs relations simultanément:
 En spécifiant la condition sur les attributs
SELECT Aj…
FROM R1, R2…, Rn
WHERE < condition de jointure entre les Ri > AND < condition(s) de la requête >;
 En spécifiant la jointure explicitement entre les relations
SELECT Aj… => la jointure s’effectue sur l'attribut de jointure Ak
FROM R1 JOIN R2 USING Ak, … qui doit exister dans R1 et dans R2 et qui doit prendre
[ WHERE … ]; la même valeur dans les tuples de R1 et de R2.

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

Langages de manipulation relationnels: SQL


Autres commandes SQL:
 DESCRIBE nom_table;
=> Générer la structure de la table
 TRUNCATE TABLE nom_table[{Drop/ Reuse}/ Storage];
Drop Storage (par defaut): libérer l’espace disque qui a été alloué à la table.
Cet espace peut être utilisé par d’autres objets.
Reuse Storage: vider la table sans libérer l’espace => maintenir l’espace des
lignes supprimées pour le profit de la même table.
 Commandes d’administration de données: faire des audits et contrôler les
performances du système
 START AUDIT
 STOP AUDIT
 Commandes de contrôles transactionnelles: gérer les transactions de la base
 ROLLBACK (annuler une transaction)
 COMMIT (valider une transaction)
 Inclusion de SQL dans un langage de programmation, à travers l’utilisation de la
notion de "curseur". Un curseur est l'équivalent d'un fichier séquentiel temporaire
dont le contenu est constitué d'une copie de l'ensemble des tuples résultat d'un
SELECT. FESSI B. 28

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

Limites du modèle relationnel


 Inexistence des attributs multi-valués ou complexes: transformation de
ces attributs en attributs simples et par conséquents perte de la
sémantique globale de cet attribut (ex: représentation d’une adresse).
 Très pauvre sémantiquement pour bien représenter la complexité (les
entités complexes) du monde réel.
 Réduction des performances des SGBDR: suite à la multiplication des
jointures dans les requêtes des utilisateurs puisque les entités sont
éclatées en plusieurs relations, et par conséquent la reconstitution
d’objets complexes est coûteuse.
 Absence de représentation explicite des différents types de liens
sémantiques qui peuvent lier des entités: composition,
généralisation/spécialisation, association, etc.
 Type de données limités: Il ne permet pas de définir de nouveaux
domaines de valeurs (autres que les domaines standard des SGBD,
Integer, Char, Date, etc.), avec leurs fonctions de manipulation, et qui
seraient adaptés à leur application.
FESSI B. 30

FESSI B. 15

Vous aimerez peut-être aussi