Vous êtes sur la page 1sur 28

EST Fès Département INFO

Cours Base de Données Relationnelles

Chapitre 1: Introduction

Les limites à l’utilisation des fichiers

L’utilisation de fichiers impose d’une part, à l’utilisateur de connaitre l’organisation


(séquentielle, indexée, …) des fichiers qu’il utilise afin de pouvoir accéder aux informations
dont il a besoin et d’autre part, d’écrire des programmes pour pouvoir effectivement
manipuler ces informations. Pour des applications nouvelles, l’utilisateur devra
obligatoirement écrire de nouveaux programmes et il pourra être amené à créer de nouveaux
fichiers qui contiendront peut être des informations déjà présents dans d ‘autres fichiers.

De telles applications sont :

• Rigides,
• Contraignantes,
• Longues et couteuses à mettre en œuvre.

Les données associées sont :

• Mal définies et mal désignées,


• Redondantes,
• Peu accessibles de manière ponctuelle,
• Peu fiable.

La prise de décision est une part importante de la vie d’une société. Mais elle nécessite d’être
bien informé sur la situation et donc d’avoir des informations à jour et disponibles
immédiatement.

Les utilisateurs, quand à eux, ne veulent plus de systèmes d’information constitués d’un
ensemble de programmes inflexibles et de données inaccessibles à tout non spécialiste ; ils
souhaitent des systèmes d’informations globaux, cohérents, directement accessibles (sans
qu’ils aient besoin soit d’écrire des programmes soit de demander à un programmeur de les
écrire pour eux) et des réponses immédiates aux questions qu’ils posent. On a donc recherché
des solutions tenant compte à la fois des désirs des utilisateurs et des progrès techniques.
Cette recherche a abouti au concept de base de données.

Définition

Une base de données BD est un ensemble structuré et cohérent de données, stocké sur disque,
accessible par un ou plusieurs utilisateurs sur lesquelles on peut développer différentes
applications.

De façon informelle, on peut considérer une BD comme une grande quantité de données,
centralisées ou non, servant pour les besoins d’une ou plusieurs applications, interrogeables et
modifiables par un groupe d’utilisateurs travaillant en parallèle.

Une BD est faite pour :

Bensalimane Med 1
EST Fès Département INFO
Cours Base de Données Relationnelles
• Enregistrer les données,
• Les restituer à la demande,
• Tirer des conclusions en rapprochant les faits les uns des autres.

Une BD est un ensemble d’informations sur un sujet qui est :

• Non redondant
• Structuré
• Persistant

Définition d’un système de gestion de base de données


Un système de gestion de base de données SGBD est un logiciel qui permet de :

• Décrire
• Modifier
• Interroger
• Administrer

les données d’une base de données.

Le SGBD peut être vu comme le logiciel qui prend en charge la structuration, le stockage, la
mise à jour et la maintenance des données ; c’est en fait, l’interface entre la BD et les
utilisateurs ou leurs programmes.

Objectifs des BDs


1. Une bonne représentation du monde réel
Cette bonne représentation est le fruit de la méthode d’analyse utilisée au niveau de la
conception des données.

2. Indépendance des données par rapport aux traitements


Une modification des données ne nécessite forcément la récriture des traitements

3. Manipulation facile
Une BD peut être accessible sans forcément utiliser un langage de programmation et aussi par
des non informaticiens.

4. Efficacité des accès aux données


Ces langages doivent permettre d’obtenir des réponses aux interrogations en un temps
raisonnable. Ils doivent donc être optimisés.

5. Administration centralisée des données


Des visions différentes des données se résolvent plus facilement si les données sont
administrées de façon centralisée.

6. Non redondance des données


Afin d’éviter les problèmes lors des mises à jour, chaque donnée ne doit être présente qu’une
seule fois dans la base.

Bensalimane Med 2
EST Fès Département INFO
Cours Base de Données Relationnelles
7. Cohérence des données
Les données sont soumises à un certain nombre de contraintes d’intégrité qui définissent un
état cohérent de la base. Elles doivent pouvoir être exprimées simplement et vérifiées
automatiquement à chaque insertion, modification ou suppression des données.

8. Partage des données


Il s’agit de permettre à plusieurs utilisateurs d’accéder aux mêmes données au même moment.
Si ce problème est simple à résoudre quand il s’agit uniquement d’interrogations et quand on
est dans un contexte mono-utilisateur, cela n’est plus le cas quand il s’agit de modifications
dans un contexte multiutilisateurs. Il s’agit alors de pouvoir :

• Permettre à deux (ou plus) utilisateurs de modifier la même donnée en même temps ;
• Assurer un résultat d’interrogation cohérent pour un utilisateur consultant une table
pendant qu’un autre la modifie.

9. Sécurité des données


Les données doivent pouvoir être protégées contre les accès non autorisés. Pour cela, il faut
pouvoir associer à chaque utilisateur des droits d’accès aux données.

10. Résistance aux pannes


Que se passe-t-il si une panne survient au milieu d’une modification, si certains fichiers
contenant les données deviennent illisibles ? Les pannes, bien qu’étant assez rares, se
produisent quand même de temps en temps. Il faut pouvoir, lorsque l’une d’elles arrive,
récupérer une base dans un état sain. Ainsi, après une panne intervenant au milieu d’une
modification deux solutions sont possibles : soi récupérer les données dans l’état dans lequel
elles étaient avant la modification, soi terminer l’opération interrompue.

Niveaux d’abstraction d’une BD


Trois niveaux de description des données ont été définis par la norme ANSI/SPARC.

Monde réel

Intégration Schéma
Vue externe
Conceptue

Schéma logique

BD

Bensalimane Med 3
EST Fès Département INFO
Cours Base de Données Relationnelles
Niveau conceptuel

Description pour chaque utilisateur de sa perception des données. On appelle cette description
le schéma externe ou vue

Niveau logique

Description de la structure de toutes les données qui existent dans la base, description de leurs
propriétés (relations qui existent entre elles) c’est-à-dire de leur sémantique inhérente, sans
soucis d’implémentation physique ni de la façon dont chaque groupe de travail voudra s’en
servir.
On appelle cette description le schéma conceptuel.

Niveau Physique

Description du stockage des données.


On appelle cette description le schéma interne.

Histoire

1960
Uniquement des systèmes de gestion de fichiers plus ou moins sophistiqués.
1970
Début des systèmes de gestion de bases de données réseaux et hiérarchiques proches
des systèmes de gestion de fichiers. Ces systèmes de gestion de bases de données
avaient remplis certains des objectifs précédents mais on ne pouvait pas interroger une
base sans savoir où était l’information recherchée (on naviguait) et sans écrire de
programmes.

Sortie du papier de CODD sur la théorie des relations, fondement de la théorie des
bases de données relationnelles.
1980
Les systèmes de gestion de bases de données relationnels apparaissent sur le marché.
1990
Les systèmes de gestion de bases de données relationnels dominent le marché.
Début des systèmes de gestion de bases de données orientés objet.

Bensalimane Med 4
EST Fès Département INFO
Cours Base de Données Relationnelles

Chapitre 2: Le modèle relationnel

Définition

Le modèle relationnel a été formalisé par CODD en 1970. Quelques exemples de réalisation
en sont :

DB2 (IBM), INFORMIX, INGRES, ORACLE.

Dans ce modèle, les données sont stockées dans des tables, sans préjuger de la façon dont les
informations sont stockées dans la machine. Un ensemble de données sera donc modélisé par
un ensemble de tables.

Le succès du modèle relationnel auprès des chercheurs, concepteurs et utilisateurs est du à la


puissance et à la simplicité de ses concepts. En outre, contrairement à certains autres modèles,
il repose sur des bases théoriques solides, notamment la théorie des ensembles et la logique
mathématique (théorie des prédicats d’ordre 1).

Objectifs du modèle relationnel :

• 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 pouvant
éventuellement être utilisés par des non informaticiens,
• 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.

De façon informelle, on peut définir le modèle relationnel de la manière suivante :

• Les données sont organisées sous forme de tables à deux dimensions, encore
appelées relations et chaque ligne n-uplet ou tuple,
• 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 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.

Relation :
Une relation R est un sous ensemble du produit cartésien d’une liste de domaines caractérisé
par un nom.

Une relation peut être vue comme un tableau à deux dimensions dont chaque colonne
correspond à un domaine et porte un nom et chaque ligne à un tuple. On parle aussi de table.

Domaine :

Bensalimane Med 5
EST Fès Département INFO
Cours Base de Données Relationnelles
Représente l’ensemble de valeurs acceptables pour un composant d’une relation. On dit que
deux domaines sont compatibles s’ils sont identiques ou liés par inclusion.

Attribut :

Colonne d’une relation caractérisée par un nom. L’ordre des colonnes dans une relation est
sans importance. Le concept attribut détermine l’ensemble des valeurs prises par chacun des
domaines de la relation. La valeur d’un attribut est atomique.

Tuple :
Ou n-uplet est une ligne d’une relation, l’ajout d’un tuple ne change pas la nature de la
relation. La cardinalité d’une relation R est le nombre de tuple contenus dans la relation.

Schéma de relation :
Nom de la relation, suivi de la liste des attributs (avec éventuellement leurs domaines).

Exemple : Soit la relation étudiant caractérisée par le Cne de l’étudiant, son nom, son
prénom, sa date de naissance et son numéro de département.

Le schéma de la relation est représenté comme suit :

Etudiant ( cne, nom, prenom, dnais, nodept )

Nom de la relation : Etudiant

Liste de ses attributs : cne, nom, prenom, dnais et nodept.

La table étudiant est représenté comme suit :

Les colonnes ou attributs


Nom de la table Les lignes ou tuples

Etudiant Cne nom prenom dnais nodept


1234 Benslimane Mohamed 28/01/1986 1
2345 Bouzaidi Ouissal 09/12/1990 2
3456 Belkhou Asmae 12/12/1980 1

Clé d’une relation :


, ,…,
Soit R ( A1 A2 , ,…, A ),
An ) un schéma de relation, et X un sous ensemble de ( A1 A2 n
X (groupe d’attributs) est une clé si, et seulement si :
, ,…, A )
• X est unique, elle détermine tous les attributs ( A1 A2 n

• X est minimale.

Bensalimane Med 6
EST Fès Département INFO
Cours Base de Données Relationnelles
La clé dans un schéma de relation est soulignée

Exemple :

Etudiant ( cne, nom, prenom, dnais, nodept)

cne est une clé de la relation Etudiant signifie que le cne est unique cad deux étudiants
différents ne peuvent jamais avoir la même valeur de cne.

BD relationnelles :
Base de données dont le schéma est un ensemble de schémas de relations et dont les
occurrences sont les tuples de ces relations.

Exemple :

Etudiant ( cne , nom , prenom , dnais , nodept )


Departement ( nodept , nom , matricule )
Enseignant ( matricule , nom , prenom , grade )
Matiere ( nomat , titre , coef )
Assure ( matricule , nomat , periode )

Contrainte d’intégrité:

Une propriété du schéma, invariante dans le temps.

Il existe différents types de contraintes d’intégrité :

• Liées au modèle ( pas de doublons dans une relation) ;


• De domaine, exemple : une note doit être comprise entre 0 et 20 ;
• De clé primaire, valeur unique et non nulle pour la clé primaire ;
• Référentielles, dites de clé étrangère qui impose que la valeur d’attribut de la relation
r1 apparait comme valeur de clé dans une autre relation r2.
Exemple :
Etudiant ( cne , nom , prenom , dnais , nodept )
Departement ( nodept , nom , matricule )

nodept est une clé primaire dans la relation Departement, et une clé étrangère dans la
relation Etudiant.

La valeur de cet attribut n’existe dans la table étudiant que s’il est déjà défini dans la
relation Etudiant.

SGBD relationnel:

Est un logiciel supportant le modèle relationnel, et comportant un ensemble de programmes


qui peuvent manipuler les données avec des opérateurs relationnels.

Fonctions d’un SGBD :


Bensalimane Med 7
EST Fès Département INFO
Cours Base de Données Relationnelles

1. Ajout de données

Un SGBD doit permettre l’ajout de données. Pour cela, il est tout d’abord nécessaire de
pouvoir décrire les données avec un langage de description de données (LDD).
Une fois les données décrites, on peut ajouter des valeurs qui correspondent à la description
qu’on a faite par le biais d’un langage de manipulation de données (LMD).

2. Mise à jour des données

Les données doivent être modifiables. On doit pouvoir changer la définition des données et les
valeurs des données grâce au LDD et LMD respectivement.

3. Recherche des données

La recherche des données est un point crucial. Il faut que le SGBD puisse restituer les
données rapidement.

4. Définir des protections d’accès (mot de passe, autorisations, …)

5. Résoudre les problèmes d’accès multiples aux données ( blocages, interblocages).

6. Prévoir des procédures de reprise en cas d’incident ( sauvegardes, journaux, …).

Quelques systèmes de gestion de base de données :

Access de Microsoft
DB2 d’IBM
FirebirdSQL, SGBD relationnel issu d’InterBase
HyperFile de PCSoft
Informix
InterBase de Borland
MySQL, SGBD relationnel
Oracle de Oracle Corporation
PostgreSQL
SQL Server de Microsoft
SQLite
Sybase

Bensalimane Med 8
EST Fès Département INFO
Cours Base de Données Relationnelles

Chapitre 3: Algèbre relationnelle

Définition

A été inventé par Codd (1970). C’est un ensemble d’opérateurs définis sur l’ensemble des
relations et produisant des relations en sortie.

Il existe deux types d’opérateurs algébriques :

1. Opérateurs ensemblistes : UNION, INTERSECTION, DIFFERENCE, PRODUIT


reformulés spécifiquement pour le modèle relationnel.
2. Opérateurs relationnels spécifiques : SELECTION, PROJECTION, JOINTURE,
DIVISION
3. Opérateurs dérivés : INTERSECTION, JOINTURE EXTERNE, SEMI-
JOINTURE, DIVISION, …

Opérations Ensemblistes :

Opérations ensemblistes pour des relations de même schéma : UNION, INTERSECTION,


DIFFERENCE

Opérations ensemblistes pour des relations de schéma quelconque : PRODUIT CARTESIEN

Opérations binaires : Relation1 op Relation2  Relation3

1. UNION

Etant données deux relations R1et R2 de même schéma R1 U R2 est la relation


contenant les tuples appartenant à R1 ou à R2.

Notation mathématique: R3 = R1 U R2
Notation algébrique: R3 = Union (R1, R2)

Arbre syntaxique:

R3

R1 R2

Bensalimane Med 9
EST Fès Département INFO
Cours Base de Données Relationnelles
Exemple :

R1 Nom Prenom
benslimane Mohamed
R3 Nom Prenom
bouzaidi Ouissal
benslimane mohamed
Quadi Kamal
bouzaidi ouissal
quadi kamal
R2 Nom Prenom
benhenda youness
belhenda Youness
benslimane Mohamed

2. INTERSECTION

Etant données deux relations R1et R2 de même schéma R1 R2 est la relation
contenant les tuples appartenant à R1 et à R2.

Notation mathématique: R3 = R1 R2

Notation algébrique: R3 = Intersect (R1, R2)

Arbre syntaxique:

R3

R1 R2

Exemple :

R1 Nom Prenom
benslimane Mohamed
bouzaidi Ouissal
Quadi Kamal R2 Nom Prenom
benslimane mohamed
R2 Nom Prenom
belhenda Youness
benslimane Mohamed

Bensalimane Med 10
EST Fès Département INFO
Cours Base de Données Relationnelles

3. DIFFERENCE

Etant données deux relations R1et R2 de même schéma R1 - R2 est la relation


contenant les tuples de R1 n’appartenant pas à R2.

Notation mathématique: R3 = R1 - R2
Notation algébrique: R3 = Minus (R1, R2)

Arbre syntaxique:
R3

R1 R2

Exemple :

R1 Nom Prenom
benslimane Mohamed
bouzaidi ouissal
Quadi Kamal R3 Nom Prenom
bouzaidi ouissal
R2 Nom Prenom quadi kamal
belhenda Youness
benslimane Mohamed

4. Produit Cartésien

Soient les relations R1 , ,…, A ) et R2( B , B ,…, B


( A1 A2 n 1 2 n
) avec

, ,…,
{ A1 A2 An }  { B , B ,…, B } éventuellement vide.
1 2 n
Le produit cartésien de R1 et de R2 est défini par
R3( A1 A2, ,…, , , ,…,
An B1 B2 Bn ).
Cette opération porte sur deux relations.
La relation résultat possède les attributs de chacune des relations d’origine et ses n-
uplet sont formés par la concaténation de chaque n-uplet de la première relation avec
l’ensemble des n-uplets de la deuxième.

Notation mathématique: R3 = R1 x R2
Notation algébrique: R3 = Product (R1, R2)

Bensalimane Med 11
EST Fès Département INFO
Cours Base de Données Relationnelles
Arbre syntaxique: R3

R1 R2
Exemple : Examen = Etudiant x Exam

Etudiant Noetudiant Nom Examen Noetudiant Nom Matiere Coefficient


100 benslimane 100 benslimane informatique 2
101 bouzaidi 100 benslimane mathematique 3
100 benslimane Système exp 5
Exam Matiere Coefficient 101 bouzaidi informatique 2
informatique 2 101 bouzaidi mathematique 3
mathematique 3 101 bouzaidi Système exp 5
Système exp 5

Propriétés
Degré (R1 U R2) = Degré (R1) = Degré (R2)

Degré ( R1 R2 ) = Degré (R1) = Degré (R2)

Degré (R1 - R2) = Degré (R1) = Degré (R2)

Degré (R1 x R2) = Degré (R1) + Degré (R2)

Définition

1. Projection

Opération portant sur une relation R1 pour construire une relation R2 contenant les
attributs mentionnés et en éliminant les tuples en double.

Notation algébrique: R2 = Project (R1, attribut I, attribut j, …)


Arbre syntaxique:
R2

Bensalimane Med R1
12
EST Fès Département INFO
Cours Base de Données Relationnelles

Exemple : R = Project (voiture, marque)

Voiture Type Marque Prix R Nom


megane renault 25 renault
clio renault 19 peugeot
laguna renault 28
407 peugeot 35

2. Restriction

Opération portant sur une relation R1 pour construire une relation R2 de même
schéma, ayant pour tuples ceux vérifiant la condition mentionnée.

Notation algébrique: R2 = Restrict (R1, condition)


Arbre syntaxique:
R2

R1

Exemple : R = Restrict (voiture, prix > 20)

Voiture Type Marque Prix R Nom Marque Prix


megane renault 25 megane renault 25
clio renault 19 laguna renault 28
laguna renault 28 407 peugeot 35
407 peugeot 35

3. Jointure

Opération permettant de rapprocher selon une condition les tuples des relations R1 et
R2 afin de former une relation R3 ayant pour attributs ceux de R1 et R2 et pour tuples
la combinaison de ceux de R1 et R2 vérifiant la condition.

Notation algébrique: R3 = Join (R1, R2, condition)


Arbre syntaxique:
R3

Condition

R1 R2

Bensalimane Med 13
EST Fès Département INFO
Cours Base de Données Relationnelles

Une équijointure est une jointure dont la condition porte sur une égalité (un attribut de relation
R1 = un attribut de la relation R2).
Une jointure naturelle est une équijointure permettant d’éliminer l’attribut en double.

Exemple :

Etudiant Noetu Nom Tel Tournoi Noetu Sport


10 benslimane 0666666666 10 Foot
20 bouzaidi 0777777777 10 Course
30 belhenda 0888888888 20 Foot
40 benatia 0999999999 30 Course
50 berrada 0677777777 50 Basket

R = Liste des étudiants qui participent à un tournoi


R = Joint (Etudiant, Tournoi, Etudiant.Noetu = Tournoi.Noetu)

Noetu

Etudiant Tournoi

R Noetu Nom Tel Sport


10 benslimane 0666666666 Foot
10 benslimane 0666666666 Course
20 bouzaidi 0777777777 Foot
30 belhenda 0888888888 Course
50 berrada 0677777777 Basket

Exemple :

R = Nom et téléphone des étudiants qui participent au tournoi de Foot.


R = Project (Join(Restrict(Tournoi, Sport = ‘Foot’), Etudiant, Etudiant.Noetu =
Tournoi.Noetu), Nom, Tel)

R
Nom, Tel

Noetu
Sport = ‘Foot’
R Nom Tel
benslimane 0666666666
Etudiant Tournoi bouzaidi 0777777777

Bensalimane Med 14
EST Fès Département INFO
Cours Base de Données Relationnelles

Chapitre 4: Le langage SQL

1. Introduction

Structured Query Langage (Langage structuré de requetes) est un langage de manipulation


de données (LMD) relationnelles.

Ce langage permet de spécifier les données à sélectionner ou à mettre à jour à propriétés


de valeurs, sans dire comment retrouver les données.

Les opérations utilisées sont général celles des langages dits assertionnels.

Plusieurs langages permettent de manipuler les bases de données relationnelles ont été
proposés, en particulier Quel, QBE et SQL.

Aujourd’hui, le langage SQL est normalisé et est le standard d’accès aux bases de données
relationnelles.

Ce langage a pour objectif d’être facilement utilisé par le programmeur, ses


fonctionnalités sont plus larges que celles du langage algébrique, il comprend les
fonctions:

• Description
• Recherche
• Mise à jour
• Confidentialité et cohérence.

2. Description

Dans ce paragraphe, nous allons étudier la création de table ou index, la modification de


structures de table et la suppression de table et d’index.

Les vues et l’autorisation d’accès aux tables seront étudiées plus loin dans ce chapitre.

2.1. Création de table

Une base de données relationnelle est constituée principalement de relations dont


l’ensemble de n-uplets (l’extension) est stockée en mémoire secondaire. La création d’une
relation (table) est effectuée sous deux formes.

2.1.1. Création d’une table vide

Syntaxe: Create Table <nom_relation> (attribut1 type [not null], attribut2 type [not null],
…);

La requête est terminée par un point virgule ( ;), ce dernier indique au système qu’il faut
l’exécuter.

Attribut1, attribut2, … représentent les attributs de la relation <nom_relation>.

Bensalimane Med 15
EST Fès Département INFO
Cours Base de Données Relationnelles
[not null] est une contrainte qui signifie que l’attribut doit avoir obligatoirement une
valeur, si cette contrainte n’est pas mentionnée, l’attribut peut avoir une valeur nulle.

Chaque attribut doit être défini par son type, les types sont différents en fonction du
SGBD utilisé. A titre d’exemple, voici quelques types utilisés:

Smallint entier compris entre -99 999 et 999 999


Integer entier compris entre -9 999 999 999 et 99 999 999 999
Decimal (x, y) réel avec x chiffres (compris le signe) dont y après la virgule
Avec 1 <= x <= 19 et 0 <= y <= 18
Numeric (x, y) réel avec x chiffres (compris le signe) dont y après la virgule
Avec 1 <= x <= 20 et 0 <= y <= 18
Char (n) chaine de n caractères au maximum avec 1 <= n <= 254
Date format par défaut jj/mm/aa
Logical valeur logique T (vrai) F (faux)

Exemple : soit la relation Voiture (NIM, marque, modele, prix)

La syntaxe de création est la suivante :

Create table voiture (NIM char(10) not null, marque char(12), modele char(30), prix
numeric(8,2)) ;

2.1.2. Création d’une table pleine

Syntaxe : Create Table <nom_relation> ([attribut1 [not null], attribut2 [not null], …])As
requête;

La requête est une opération de sélection qui indique les attributs sources, les tables
auxquelles elles appartiennent et les critères de sélection.
Si les attributs ne sont pas mentionnés, la nouvelle table créée aura comme attributs ceux
indiqués dans la requête de sélection dans l’ordre de leur apparition.

2.2. Modification de la structure d’une table

2.2.1. Ajout de nouvelles colonnes

Syntaxe : ALTER TABLE <nom_relation> ADD (définition colonne, …) ;

Les colonnes sont ajoutées à droite de la dernière, elles ont toutes des valeurs nulles.

Exemple : ajouter la colonne option dans la relation voiture.


Syntaxe : ALTER TABLE voiture ADD (option char(5)) ;

2.2.2. Modification de types de colonnes existantes

Syntaxe : ALTER TABLE <nom_relation> MODIFY (définition colonne, …) ;

Les modifications possibles sont :

• Augmenter la taille

Bensalimane Med 16
EST Fès Département INFO
Cours Base de Données Relationnelles

• Réduire la taille (si les colonnes contiennent des valeurs nulles)


• Modifier le type (si les colonnes contiennent des valeurs nulles)
• Passage de not null à null.
Exemple : On peut modifier le type de l’attribut option nouvellement créé.
Syntaxe : ALTER TABLE voiture MODIFY (option char(15)) ;

2.3. Suppression de table

Syntaxe : DROP TABLE <nom_relation> ;

2.4. Création d’index

Syntaxe : CREATE [Unique] INDEX <nom_index>ON<nom_relation> (attribut i, attribut


j, …) ;

La clause Unique est précisée dans le cas ou l’on crée une clé.

Exemple : Préciser que la clé de la relation voiture est l’attribut NIM :

Syntaxe : CREATE Unique INDEX <numero> ON voiture(NIM) ;

2.5. Suppression d’index

DROP INDEX <nom_index> ;

3. Recherche

C’est la fonction d’interrogation faisant intervenir l’opération de sélection.

3.1. Format général d’une requête (mono ou multi relations)

Rappelons qu’une projection effectue l’extraction de colonnes (attributs) spécifiés d’une


relation, puis élimine les attributs en double. SQL n’élimine pas les doubles à moins que
ceci soit demandé par le mot clé DISTINCT. La projection sous SQL rend possible
l’utilisation des fonctions de calculs sur les colonnes (attributs) extraites. Les fonctions de
calculs sont en particulier les fonctions arithmétiques.

Syntaxe :
SELECT [All / Distinct] {<expression de valeurs> /*}
From <liste_relations>
[Where <condition>]

Une expression de valeurs peut être la liste des attributs ou des expressions arithmétiques.
* indique tous les attributs
Une condition peut être simple ou composée, reliées par les opérateurs logiques And, Or
et Not.

Dans le cas ou nous avons une liste de relations, il peut être nécessaire de préciser à quelle
relation appartient chacun des attributs. Cette ambigüité est levée de deux manières :

Bensalimane Med 17
EST Fès Département INFO
Cours Base de Données Relationnelles

• Utilisation de variables de désignation


• Utilisation des noms de relations.

Exemple : Soit le schéma relationnel suivant :

Voiture (NIM, marque, modele, prix, option)


Client (CIN, nom, ville, telephone)
Appartenir (CIN, NIM)

Pour designer l’attribut NIM de la relation Voiture, on peut écrire Voiture.NIM ou bien
utiliser une variable de désignation V pour voiture par exemple et écrire V.NIM.

3.2. Les requêtes multi-relations (jointures)

Une requête multi-relation peut s’écrire sous deux formes :

3.2.1. Forme procédurale

Exemple: donner le nom des clients ayant des voitures de modèle 307 et de marque
Peugeot.

Select nom
From client
Where cin in (Select cin
From appartenir
Where NIM in (Select NIM
From voiture
Where modele = “307” and marquee = “Peugeot”));

3.2.2. Forme relationnelle

Une seule expression de sélection (1 seul SELECT)

Select nom
From client C, appartenir A,voiture V
Where C.cin = A.cin and A.NIM = V.NIM and modele = “307” and marque = “Peugeot”);

3.3. Ordonnancement de tuples

Syntaxe: Order by <attribut> [asc/desc], …;

Asc: ordre croissant pris par défaut


Desc : ordre décroissant.

Bensalimane Med 18
EST Fès Département INFO
Cours Base de Données Relationnelles

Exemple : Donner la liste des différentes marques de voitures affichées par ordre
alphabétique croissant.

Select distinct (marque)


From voiture
Order by marque ;

3.4. Fonctions agrégats

AVG(n) : Donne la moyenne des valeurs de n


Count(n) : Donne le nombre de tuples
Max(n) : Donne la plus grande valeur de n
Min(n) : Donne la plus petite valeur de n
Sum(n) : Donne la somme des valeurs de n
Count(*) : Donne le nombre de tuples qui satisfont la condition

Attention : une fonction agrégat est utilisée dans un select (Jamais dans un Where)

Exemple : Donner le nombre de voitures et le prix maximum de la marque Peugeot.

Select cout(*), max (prix)


From voiture
Where marque = “Peugeot”;

3.5. Les operateurs ANY, ALL, IN

Soit X l’élément (attribut(s) ou expression(s) retournant une valeur simple),


Soit E l’ensemble des valeurs retournées par la sous requête ou une énumération de
valeurs.
Soit opc les operateurs de comparaison.

Syntaxe :

X opc ANY (requête) retourne vrai si ∃y ∈ E tel que X opc y, retourne faux sinon
X opc ALL (requête) retourne vrai si ∀y ∈ E tel que X opc y, retourne faux sinon
X in (requête) retourne vrai si X ≠ y ∀y ∈ E , retourne faux sinon.

3.6. Les sous relations

Syntaxe: Group by <liste_attributs> [Having <condition>]

Group by partitionne la relation en sous relations tel que chacune ait pour l’attribut
indiqué par group by la même valeur.
Having a la même fonction que Where, ne garde que les sous relations qui satisfont la
condition.

Bensalimane Med 19
EST Fès Département INFO
Cours Base de Données Relationnelles

Exemple : Donner pour chaque marque de voiture, le prix maximum.

Select marque, max (prix)


From voiture
Group by marque ;

Exemple : Donner pour chaque marque le nombre de ses modèles celui-ci doit être
supérieur ou égale à 8.

Select marque, count (modele)


From voiture
Group by marque
Having count (modele) >= 8;

Remarque: Un attribut mentionné dans group by doit exister dans select.

4. Mise à jour

4.1. Insertion

Permet l’insertion d’un tuple dans une table.

Syntaxe : Insert into <nom_relation> [<liste_attributs>] values (<liste_valeurs>) ;

Liste_attributs est facultatives si on donne à chaque attribut une valeur.


Liste_valeurs précise la valeur de chaque attribut dans l’ordre, séparées par des virgules.

Exemple : Insérer le tuple suivant dans la relation voiture :


La voiture de N d’immatriculation 14902A15, de marque Citroen, de modèle Xsara et de
prix 160 000 Dhs.

Syntaxe : Insert into voiture Values (“14902A15”, “Citroen”, 160 000, “Xsara”) ;

4.2. Modification

Permet la modification dans une table de valeurs de ses attributs choisis et qui vérifient la
condition mentionnée.

Syntaxe : Update <nom_relation> set attribut = expression [attribut =


expression,…][Where <condition>] ;

Exemple : réduire de 5000 Dhs les voitures de marque Honda et de modèle Jazz.

Syntaxe : Update voiture Set prix = prix-5000 Where marque = “Honda” and model =
“Jazz” ;

4.3. Suppression

Permet la suppression d’une table de tuples vérifiant la condition mentionnée.

Bensalimane Med 20
EST Fès Département INFO
Cours Base de Données Relationnelles
Syntaxe: Delete From <nom_relation> [Where <condition>];

Exemple: Supprimer toutes les voitures de marque Renault.

Syntaxe : Delete From voiture Where marque = “Renault” ;

5. Les vues

Un sous modèle de base de données est décrit par un ensemble de Vues. Une vue
correspondant à une fenêtre d’accès aux données de la base puisqu’elle permet de réduire
l’accès aux données au niveau attributs, tuples ou accès.

5.1. Création

Syntaxe : Create View <nom_vue> [<liste_attributs>] As requête ;

La vue ainsi définie contient tous les tuples de la requête.


Les attributs sélectionnés dans la clause select de la requête constituent les attributs de la
vue.

Dans le cas ou une vue est le résultat d’une requête complexe (ou une expression apparait
dans les attributs sélectionnés de la requête ou la requête porte sur plusieurs tables),
liste_attributs permet de donner un nom à tous les attributs constituent la vue.

5.2. Manipulation

A partir d’une vue sont possibles les opérations :

• Select
• Delete si
1. La vue porte uniquement sur une table
2. La vue n’a pas été définie au moyen d’un group by ou distinct.
• Update si
1. La vue porte sur une table
2. La vue n’a pas été définie au moyen d’un group by ou distinct.
3. Les colonnes à modifier n’ont pas été définies dans la vue comme des
expressions.
• Insert si
1. La vue porte sur une table
2. La vue n’a pas été définie au moyen d’un group by ou distinct.
3. Une insertion directement dans la vue est impossible.

5.3. Suppression

Syntaxe : Drop View <nom_vue> ;

6. Les droits d’accès

Bensalimane Med 21
EST Fès Département INFO
Cours Base de Données Relationnelles
La gestion des droits d’accès aux tables est décentralisée; il n’existe pas d’administrateur
global attribuant des droits à ce niveau là. Chaque créateur de table obtient tous les droits
d’accès à ses objets, en particulier les droits d’effectuer les opérations de sélection et de
mise à jour. Il peut ensuite passer ses droits sélectivement à d’autres utilisateurs ou à tous
les utilisateurs (PUBLIC).

Un droit peut être transmissible d’un utilisateur à un autre en utilisant l’option :


With Grant Option.

6.1. Accorder un droit

Syntaxe : Grant <privilège> On <nom_relation> To <récepteur> [With Grant Option] ;

<privilège> : All privilège / <action>


<action> : Select/ Insert / Update [<attribut>]
<récepteur> : Public/ <identifiant d’autorisation>

L’ensemble des privilèges (All privilèges) inclut les droits d’administration (changement
de schémas et suppression de relations). Le récepteur peut être un utilisateur ou un groupe
d’utilisateurs, selon l’identifiant d’autorisation donné.

6.2. Retirer un droit

Syntaxe : Revoke <privilège> On <nom_relation> From <récepteur> ;

Permet de retirer de la relation mentionnée le privilège de l’utilisateur <récepteur>.

Bensalimane Med 22
EST Fès Département INFO
Cours Base de Données Relationnelles

ALGEBRE RELATIONNELLE

Sujet : Gestion de la scolarité universitaire.

Soit le schéma relationnel suivant :

Etudiant (num, nom, adresse, ville)


Enseignant (nomens, fonction)
Module (nomod, titre, nomens)
Liste (filiere, nomod)
Intervient (nomod, nomens)
Exam (num, nomod, note1)
Rattrapage (num, nomod, note2)
Alieu (nomod, jour, heure, salle)
Occupe (nomens, jour, heure, salle)

Note :

L’attribut «titre » est une chaine de caractère, il correspond au titre d’un module.
L’attribut « nomod » est un numérique, il correspond au numéro du module.

Travail à réaliser: Donnez un arbre algébrique pour chacune des questions suivantes:

1. Le nom des étudiants qui habitent à Fès.


2. Pour chaque module le nom de l’enseignant responsable.
3. Le nom des étudiants dont le numéro est compris entre 5 et 25.
4. Le nom des enseignants qui occupent la salle D12 Mardi après 10h00.
5. Le nom et la fonction des enseignants qui occupent la salle D12 le Mardi.
6. La liste des salles où il y a cours lundi ou mardi.
7. La liste des salles où il y a cours lundi et mardi.
8. Le nom de la filière comportant le module « Base de données ».
9. Le numéro et note des étudiants ayant passé le rattrapage en Base de données.
10. Le nom et la note des étudiants ayant passé l’examen en module 2.
11. Le nom des étudiants ayant passé l’examen en programmation ou en module 6.
12. Le nom des étudiants ayant obtenu une note supérieure à 12 à l’examen de Base de
données, donnez le nom du responsable de ce module.
13. Le nom des étudiants qui ont obtenu pour un même module une note de rattrapage
supérieure à la note d’examen.
14. Le nom des étudiants dont la note à l’examen du module 2 n’est pas leur meilleure
note à l’examen.
15. L’emploi du temps de l’enseignant « belkhou », il faut préciser le module, le jour,
l’heure et la salle.

Bensalimane Med 23
EST Fès Département INFO
Cours Base de Données Relationnelles

LANGAGE SQL

Sujet : Gestion de la scolarité universitaire.


Soit le schéma relationnel suivant :

Etudiant (num, nom, adresse, ville)


Enseignant (nomens, fonction)
Module (nomod, titre, nomens)
Liste (filiere, nomod)
Intervient (nomod, nomens)
Exam (num, nomod, note1)
Rattrapage (num, nomod, note2)
Alieu (nomod, jour, heure, salle)
Occupe (nomens, jour, heure, salle)

Note :

L’attribut «titre » est une chaine de caractère, il correspond au titre d’un module.
L’attribut « nomod » est un numérique, il correspond au numéro du module.

Travail à réaliser: Répondre aux questions suivantes en écrivant des requêtes dans le langage
SQL.

1. Donnez le nom des étudiants dont le numéro est compris entre 10 et 50.
2. Donnez le nom et la fonction des enseignants qui occupent la salle D12 le Mardi.
3. Donnez la liste des salles ou il y a cours le lundi et le mardi.
4. Donnez le nom des étudiants ayant passé l’examen en programmation ou en module 6.
5. Donnez le nom des étudiants qui ont obtenu pour un même module une note de
rattrapage supérieure à la note d’examen.
6. Donnez le nom des étudiants dont la note à l’examen du module 2 n’est pas leur
meilleure note à l’examen.
7. Donnez les salles occupées par l’enseignant « belkhou » pour le module « TEC ».
8. Donnez le nombre d’étudiants différents qui ont passé le rattrapage.
9. Donnez la meilleure note de l’examen du module 2.
10. Donnez le nom des étudiants qui ont obtenu la meilleure note à l’examen du module 2.
11. Donnez la liste des filières comprenant plus de 4 modules.
12. Donnez le nombre de salles comportant plus de 4 séances.
13. Donnez la moyenne générale de chaque étudiant à l’examen.
14. Donnez la meilleure moyenne générale obtenue.
15. Donnez le nom de l’étudiant qui a obtenu la meilleure moyenne à l’examen.

Bensalimane Med 24
EST Fès Département INFO
Cours Base de Données Relationnelles

1ère Partie: Créer une Base de données, Créer les tables.


Saisir les données, Créer des relations.

On se propose de créer une Base de données relationnelle concernant la gestion des employés
d’une société.
Supposons que l’administrateur de la base de données a construit un modèle (schéma
relationnel normalisé) à partir des informations relatives aux employés d’une société
organisées en plusieurs services. Le modèle est le suivant :

EMPLOYE (noemp, nomemp, preemp, poste, grade, supr, datemb, noservice)


SERVICE (noservice, nomservice)
SALAIRE (grade, salmin, salmax)

NB : les attributs soulignés constituent les clés des relations.

Explication des attributs :

Attribut Signification Type Longueur Remarques


noemp Numéro de l’employé Numérique
nomemp Nom de l’employé Texte 20 c
preemp Prénom de l’employé Texte 15 c
poste Poste occupé par l’employé Texte 30 c
grade Grade de l’employé Numérique Octet Clé primaire
supr Supérieur de l’employé Numérique Octet Peut être null
datemb Date d’embauche Date JJ/MM/AA <= mainntenant()
noservice Numéro de service de l’employé Numérique Octet Clé primaire
nomservice Nom du service Texte 15 c
salmin Salaire minimum pour un grade Numérique Réel simple
salmax Salair maximum pour un grade Numérique Réel simple

1. Créer une base de données sous Access dans votre répertoire de travail nommée
« gestion.mdb »
2. Créer les tables Services, Salaire et Employe en mode création.
3. Mettre en relation les tables Employe, Service et Salaire.
4. Saisir les données ci-dessous dans les tables suivantes :

Salaire Grade Salmin Salmax Service Noservice Nomservice


1 4000 6000 10 Vente
2 6001 9000 20 Informatique
3 9001 12000 30 Finance
4 12001 16000 40 Production
5 16001 20000
6 20001 25000

5. Ajouter dans la table Service le tuple suivant : « 10, ‘Gestion’ ». Qu’est ce qui se
passe ?
6. Insérer les tuples suivants dans la table employé.

Bensalimane Med 25
EST Fès Département INFO
Cours Base de Données Relationnelles
Employe noemp nomemp preemp poste grade supr datemb noservice
1 Benslimane Mohamed Concepteur 3 3 10/01/10 20
2 Belhenda Youness Concepteur 3 3 15/02/10 20
3 Ibriz Ali Chef projet 5 4 10/02/10 20
4 Safouane Abdellatif Directeur 6 11 01/02/10 20
5 Quadi Redouane Maintenance 4 4 03/01/10 20
6 Quadi Kamal Maintenance 4 5 10/02/10 20
7 Bouzaidi Ouissal Concepteur 3 5 15/02/10 20
8 Bechkala Ahmed Comptable 2 12 10/02/10 30
9 Touinsi Hind Comptable 2 12 15/01/10 30
10 Chihab Hassan Gestionnaire 3 12 20/02/10 30
11 Benkiran Abdelilah Président 6 02/01/10 10
12 Touinsi Jaouad Directeur 6 11 05/01/10 30
13 Errachdi Aziz Commercial 4 16 20/02/10 10
14 Belkou Asmae Assistante 2 16 03/03/10 10
15 Errachdi Mustapha Commercial 4 16 12/02/10 10
16 Touinsi Mohssine Directeur 6 11 10/02/10 10

7. Ajouter le tuple suivant dans la table employé :


« 17, ‘Touil’, ‘Aziz’, ‘Assistant’, 2, ‘15/03/10’, 50 » qu’est ce qui se passe ?
8. Mettre en forme les données saisies dans les tables : Largeur de colonnes, Police et
Quadrillage.
9. Insérer un champ Titre entre les champs noemp et nomemp.
10. Ajouter une liste déroulante pour la colonne Titre dont le contenu est :
Mme ; Mlle ; Mr.

2éme Partie: Trier, filtrer et rechercher

 Tri
1. Afficher la table employé triée par ordre décroissant de poste.
2. Afficher la table employé triée par ordre croissant de titre et nom d’employé.
3. Afficher la table employé triée par ordre croissant de numéro.

 Filtre
4. Afficher la liste des employés de sexe féminin qui travaillent dans le service 10.
5. Afficher la liste des employés de grade >=4 du service 20 ou 30.
6. Afficher la liste des directeurs et ceux qui travaillent dans le service 20.
7. Afficher la liste des grades pour les salaires compris entre 9000 et 16000.

 Recherche
8. Rechercher les employés ayant le prenom « Aziz ».
9. Rechercher les employés dont le nom commence par la lettre « B »
10. Remplacer le nom de l’employé « Quadi » par « El Quadi »

Bensalimane Med 26
EST Fès Département INFO
Cours Base de Données Relationnelles

3éme Partie: Les Requêtes en mode création

1. Afficher la liste des employés (nom et prénom) classés par ordre alphabétique
croissant.
2. Afficher la liste des employés directeurs (nom et prénom) classés par ordre
alphabétique croissant.
3. Afficher la liste des employés (nom, prénom, poste et grade) directeurs et ceux qui ont
le grade < 4.
4. Afficher la liste des employés (nom, prénom, poste et date d’embauche) ayant
commencé dans la société après le 01/02/10.
5. Afficher la liste des employés (nom, prénom, nom de service et salaire minimal) ayant
un salaire minimale < 15000 par ordre croissant du salaire minimal.
6. Afficher la liste des employés (nom, prénom et service) par poste (paramètre saisi au
clavier).
7. Afficher sous forme monétaire, le salaire moyen de chaque employé de grade >= 4.
8. Calculer et afficher sous forme monétaire le salaire total moyen de tous les employés.
9. Donner pour chaque service, le nombre d’employés, le salaire minimum et le salaire
maximum.
10. Donner le nombre d’employés par poste.
11. Créer une table emp (noemp, nomemp, poste, grade) contenant la liste des employés
ayant le grade <=3.
12. Supprimer de la table emp les employés de poste Concepteur.
13. Augmenter dans la table emp, le grade des employés (grade+1) qui ont travaillé avant
le 01/02/10.
14. Supprimer la table emp.

4éme Partie: Les Requêtes SQL

 Recherche
1. Afficher le nom et poste des employés ayant un grade >= 4 par ordre alphabétique
croissant.
2. Afficher le nom et le salaire minimal des employés ayant un grade >= 4.
3. Afficher la liste des employés qui occupent le même poste que ‘Benslimane’
4. Afficher la liste des employés qui ont au moins un supérieur.
5. Afficher la liste des employés qui sont dans la hiérarchie de la société supérieurs.
6. Afficher la liste des employés du service ‘Informatique’ ayant travaillé à la même
date que d’autres employés d’un autre service.
7. Afficher la liste des employés du service ‘Informatique’ ayant le même supérieur.
8. Afficher la liste des employés qui travaillent directement sous le directeur du
département ‘Finance’.
9. Donner le nombre d’employés pour chaque poste.
10. Donner le nombre d’employés pour chaque grade >= 4.
11. Donner pour chaque grade le nombre d’employés s’il est supérieur ou égale à 4.
12. Donner le salaire moyen de chaque service.

Bensalimane Med 27
EST Fès Département INFO
Cours Base de Données Relationnelles

 Mise à jour

13. Créer une table emp2 contenant les attributs : noemp, nomemp, salmin, et
nomservice.
14. Augmenter de 10% le salaire de tous les employés du service ‘Informatique’ dans
la table emp2.
15. Insérer dans la table employé le tuple :
(17, ‘Mr’, ‘Touil’, ‘Adam’, ‘Maintenance’, 4, 5, #11/03/10#, 20).
16. Insérer dans la table service le tuple : (10, ‘Comptabilité’)
Attention, qu’est ce qui se passe ?
17. Insérer dans la table service le tuple : (50, ‘Comptabilité’)
18. Supprimer de la table service le tuple N 50.

Bensalimane Med 28

Vous aimerez peut-être aussi