Vous êtes sur la page 1sur 182

Gestion des Bases de

Données
Pr. AATTOUCHI ISSAM
Chapitre 1
Introduction aux bases de données

GBD - S5 2
1- Qu’est-ce qu’une base de données ?
Description générale

Il est difficile de donner une définition exacte de la notion de base de données. Une définition
très générale pourrait être :

Définition 1 -Base de données- Un ensemble organisé d’informations avec un objectif commun.

Plus précisément, on appelle base de données un ensemble structuré et organisé permettant


le stockage de grandes quantités d’informations afin d’en faciliter l’exploitation (ajout, mise à
jour, recherche de données). Bien entendu, dans le cadre de ce cours, nous nous intéressons aux
bases de données informatisées.

GBD - S5 3
1- Qu’est-ce qu’une base de données ?

Définition 2 -Base de données informatisée- Une base de données informatisée est un ensemble
structuré de données enregistrées sur des supports accessibles par l’ordinateur, représentant des
informations du monde réel et pouvant être interrogées et mises à jour par une communauté
d’utilisateurs.

Le résultat de la conception d’une base de données informatisée est une description des
données. Par description on entend définir les propriétés d’ensembles d’objets modélisés dans
la base de données.

Cette description des données est réalisée en utilisant un modèle de données. Ce dernier
est un outil formel utilisé pour comprendre l’organisation logique des données.
La gestion et l’accès à une base de données sont assurés par un ensemble de programmes
qui constituent le Système de gestion de base de données (SGBD).

GBD - S5 4
1- Qu’est-ce qu’une base de données ?

Enjeux

Les bases de données ont pris aujourd’hui une place essentielle dans l’informatique, plus
particulièrement en gestion.

Au cours des années 80 et 90 , des concepts, méthodes et algorithmes ont été développés pour
gérer des données sur mémoires secondaires ; ils constituent aujourd’hui l’essentiel de la discipline
« Bases de Données » (BD). Cette discipline est utilisée dans de nombreuses applications.

Il existe un grand nombre de Systèmes de Gestion de Bases de Données (SGBD) qui permettent de
gérer efficacement de grandes bases de données. Les bases de données constituent donc une
discipline s’appuyant sur une théorie solide et offrant de nombreux débouchés pratiques.

GBD - S5 5
2- QUALITÉ D’UNE BASE DE DONNÉES

Comme on l’a évoqué précédemment, l’un des objectifs de création d’une


base de données est de pouvoir retrouver les données par leur contenu.
Dans cette optique, il faut s’assurer que les données contenues dans la
base sont de « bonne qualité ».
Comment définir la qualité des données ?
De nombreux critères peuvent être pris en compte ; on peut citer parmi
les principaux :
• la cohérence des données contenues dans la base ;
• l’absence de redondance.

GBD - S5 6
2- QUALITÉ D’UNE BASE DE DONNÉES

La cohérence des données est fondamentale ; elle nécessite une réflexion préalable sur la
normalisation du contenu des champs. On suppose qu’un champ contient la qualité d’une
personne (par exemple, Monsieur, Madame, Mademoiselle). Si l’on trouve dans ce champ
‘Mr’ à la place de ‘Monsieur’, il est clair que les recherches sur ce champ par le contenu ‘Monsieur’
risquent d’être erronées. Dans ce cas, les informations seraient moins nombreuses que celles
obtenues avec le contenu correct. On qualifie cet état de fait de « silence », qui signifie que
certains résultats pertinents sont ignorés lors d’une interrogation.

Dans un autre cas, si l’on saisit ‘Mme’ pour ‘Madame’ et ‘Melle’ pour ‘Mademoiselle’, et
qu’il y ait eu par erreur plusieurs saisies de ‘Mme’ alors qu’il s’agissait d’une demoiselle,
la recherche par le contenu ‘Mme’ donne cette fois plus de résultats qu’il n’y a réellement
de dames. On qualifie cet état de fait de « bruit », qui signifie que certains résultats non
pertinents sont retournés lors d’une interrogation.

GBD - S5 7
2- QUALITÉ D’UNE BASE DE DONNÉES

La cohérence des données est fondamentale ; elle nécessite une réflexion préalable sur la
normalisation du contenu des champs. On suppose qu’un champ contient la qualité d’une
personne (par exemple, Monsieur, Madame, Mademoiselle). Si l’on trouve dans ce champ
‘Mr’ à la place de ‘Monsieur’, il est clair que les recherches sur ce champ par le contenu ‘Monsieur’
risquent d’être erronées. Dans ce cas, les informations seraient moins nombreuses que celles
obtenues avec le contenu correct. On qualifie cet état de fait de « silence », qui signifie que
certains résultats pertinents sont ignorés lors d’une interrogation.

Dans un autre cas, si l’on saisit ‘Mme’ pour ‘Madame’ et ‘Melle’ pour ‘Mademoiselle’, et
qu’il y ait eu par erreur plusieurs saisies de ‘Mme’ alors qu’il s’agissait d’une demoiselle,
la recherche par le contenu ‘Mme’ donne cette fois plus de résultats qu’il n’y a réellement
de dames. On qualifie cet état de fait de « bruit », qui signifie que certains résultats non
pertinents sont retournés lors d’une interrogation.

GBD - S5 8
2- QUALITÉ D’UNE BASE DE DONNÉES
La redondance est parfois plus délicate à identifier. Si l’on considère le cas très simple d’un carnet
d’adresses qui contiendrait en même temps le code postal et le nom de la ville, elle est ici évidente.
Nom Téléphone Ville Code Postale
Alami 0521353526 Casablanca 10000
Bouayad 0632524223 Kenitra 14000
Kafssi 0678956545 casa 10000
Belamri 0641253652 Kenitra 14000
Ridini 0671234578 Casablanca 10000

On remarque que l’on stocke plusieurs fois la même association d’information (par exemple, Kenitra
et 14000), ce qui consomme de la place inutilement et peut devenir significatif
lorsque la base atteint quelques millions d’enregistrements.
De plus il existe des incohérences dans la saisie du nom de la ville ‘Casablanca’. La recherche
par le nom ‘Casablanca’ ne donnera pas le même résultat que la recherche par le code
‘10000’.
On verra plus loin que l’approche relationnelle procure des outils capables de détecter et
d’améliorer considérablement ce genre de problèmes de qualité des bases de données.
GBD - S5 9
3- Évolution des bases de données et de leur utilisation
Modèle hiérarchique

Le modèle « hiérarchique » propose une classification arborescente des données


à la manière d’une classification scientifique. Dans ce type de modèle, chaque
enregistrement n’a qu’un seul possesseur ; par exemple, une commande n’a
qu’un seul client. Cependant, notamment à cause de ce type de limitations, ce
modèle ne peut pas traduire toutes les réalités de l’information dans les
organisations.

GBD - S5 10
3- Évolution des bases de données et de leur utilisation
Modèle réseau

Le modèle « réseau » est une extension du modèle précédent : il permet des


liaisons transversales, utilise une structure de graphe et lève de nombreuses
limitations du modèle hiérarchique. Dans les deux cas, les enregistrements sont
reliés par des pointeurs : on stocke l’adresse de l’enregistrement auquel il est lié.

Donc pour retrouver une donnée dans une telle modélisation, il faut connaître le
chemin d’accès (les liens) ce qui rend les programmes dépendants de la structure
de données.

GBD - S5 11
3- Évolution des bases de données et de leur utilisation
Modèle Relationnel

Une base de données relationnelle est une base de données structurée suivant les principes de l’algèbre
relationnelle.

Le père des bases de données relationnelles est Edgar Frank Codd. Chercheur chez IBM à la fin des années
60, il étudiait alors de nouvelles méthodes pour gérer de grandes quantités de données car les modèles et
les logiciels de l’époque ne le satisfaisait pas. Mathématicien de formation, il était persuadé qu’il pourrait
utiliser des branches spécifiques des mathématiques (la théorie des ensembles et la logique des prédicats
du premier ordre) pour résoudre des difficultés telles que la redondance des données, l’intégrité des
données ou l’indépendance de la structure de la base de données avec sa mise en œuvre physique.

En 1970, Codd (1970) publia un article où il proposait de stocker des données hétérogènes dans des tables,
permettant d’établir des relations entre elles.

Un premier prototype de Système de gestion de bases de données relationnelles (SGBDR) a été construit
dans les laboratoires d’IBM. Depuis les années 80, cette technologie a mûri et a été adoptée par l’industrie.

En 1987, le langage SQL, qui étend l’algèbre relationnelle, a été standardisé.


GBD - S5 12
3- Évolution des bases de données et de leur utilisation
Modèle objet

Le modèle relationnel, dans sa simplicité, ne permet pas de modéliser facilement


toutes les réalités. Un objet permet de représenter directement un élément du
monde réel. Les structures d’éléments complexes se retrouvent souvent
dispersées entre plusieurs tables dans l’approche relationnelle classique. De plus,
le concept objet est mieux adapté pour modéliser des volumes de texte
importants ou d’autres types de données multimédias (sons, images, vidéos…).

GBD - S5 13
II. Système de gestion de base de données (SGBD)
1. Principes de fonctionnement

• La gestion et l’accès à une base de données sont assurés par un ensemble de


programmes qui constituent le Système de gestion de base de données (SGBD). Un SGBD
doit permettre l’ajout, la modification et la recherche de données.
• Un système de gestion de bases de données héberge généralement plusieurs bases de
données, qui sont destinées à des logiciels ou des thématiques différents.
• Actuellement, la plupart des SGBD fonctionnent selon un mode client/serveur. Le
serveur (sous entendu la machine qui stocke les données) reçoit des requêtes de
plusieurs clients et ceci de manière concurrente. Le serveur analyse la requête, la traite
et retourne le résultat au client. Le modèle client/serveur est assez souvent implémenté
au moyen de l’interface des sockets
GBD - S5 14
II. Système de gestion de base de données (SGBD)
2. Objectifs
• Indépendance physique : La façon dont les données sont définies doit être indépendante des
structure de stockage utilisées.
• Indépendance logique : Un même ensemble de données peut être vu différemment par des
utilisateurs différents. Toutes ces visions personnelles des données doivent être intégrées dans une
vision globale.
• Accès aux données : L’accès aux données se fait par l’intermédiaire d’un Langage de Manipulation de
Données (LMD). Il est crucial que ce langage permette d’obtenir des réponses aux requêtes en un
temps « raisonnable ». Le LMD doit donc être optimisé, minimiser le nombre d’accès disques, et tout
cela de façon totalement transparente pour l’utilisateur.
• Administration centralisée des données (intégration) : Toutes les données doivent être centralisées
dans un réservoir unique commun à toutes les applications. En effet, des visions différentes des
données (entre autres) se résolvent plus facilement si les données sont administrées de façon
centralisée.

GBD - S5 15
II. Système de gestion de base de données (SGBD)
2. Objectifs
• 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.
• 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. Les contraintes d’intégrité sont décrites dans le Langage de
Description de Données (LDD).
• Partage des données : il s’agit de permettre à plusieurs utilisateurs d’accéder aux mêmes
données au même moment de manière transparente.
• 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.

GBD - S5 16
II. Système de gestion de base de données (SGBD)
3. Niveaux de description des données ANSI/SPARC

GBD - S5 17
II. Système de gestion de base de données (SGBD)
3. Niveaux de description des données ANSI/SPARC
L’architecture ANSI/SPARC s’inscrit dans les concepts et théories de la première génération des bases
de données, dont l’objectif est d’avoir une indépendance entre les données et les traitements
• Niveau interne ou physique. C’est le niveau le plus « bas ». On décrit les structures de stockage de
l’information, ce qui le rend très dépendant du SGBD employé. Il se fonde sur un modèle de données
physique.
• Niveau conceptuel. Il correspond à l’implémentation du schéma conceptuel de la base de données,
que l’on réalise lors de la phase d’analyse (voir Modèle Conceptuel des Données, Modèle Logique des
Données). Il est utilisé pour décrire les éléments constitutifs de la base de données et les contraintes
qui leur sont associées. Il s’agit d’une certaine façon de la « documentation » de la base de données.
• Niveau externe. Le niveau externe sert à décrire les vues des utilisateurs, c’est-à-dire le schéma de
visualisation des données qui est différent pour chaque catégorie d’utilisateurs. Un schéma externe
permet de masquer la complexité de la base de données complète en fonction des droits ou des
besoins des utilisateurs. Cela facilite la lecture et la sécurité de l’information.

GBD - S5 18
II. Système de gestion de base de données (SGBD)
3. Quelques SGBD connus et utilisés

Il existe de nombreux systèmes de gestion de bases de données, en voici une liste


non exhaustive :
• PostgreSQL : http ://www.postgresql.org/ – dans le domaine public ;
• MySQL : http ://www.mysql.org/ – dans le domaine public ;
• Oracle : http ://www.oracle.com/ – de Oracle Corporation ;
• IBM DB2 : http ://www-306.ibm.com/software/data/db2/
• Microsoft SQL : http ://www.microsoft.com/sql/
• Sybase : http ://www.sybase.com/linux
• Informix : http ://www-306.ibm.com/software/data/informix/

GBD - S5 19
Chapitre 2
Conception des bases de données (modèle
Entité-Association)

GBD - S5 20
Conception des bases de données : le
modèle entités-associations
Merise
MERISE (Méthode d’Étude et de Réalisation Informatique pour les
Systèmes d’Entreprise) est certainement le langage de spécification le
plus répandu dans la communauté de l’informatique des systèmes
d’information, et plus particulièrement dans le domaine des bases de
données.

GBD - S5 21
Merise
Pour aborder la modélisation d’un système, il convient de l’analyser en premier lieu de façon globale et de se
concentrer sur sa fonction : c’est-à-dire de s’interroger sur ce qu’il fait avant de définir comment il le fait. Ces niveaux
de modélisation sont organisés dans une double approche données/traitements. Les trois niveaux de représentation
des données, puisque ce sont eux qui nous intéressent, sont détaillés ci-dessous.
Niveau conceptuel : le modèle conceptuel des données (MCD) décrit les entités du monde réel, en terme d’objets, de
propriétés et de relations, indépendamment de toute technique d’organisation et d’implantation des données. Ce
modèle se concrétise par un schéma entités-associations représentant la structure du système d’information, du
point de vue des données.
Niveau logique : le modèle logique des données (MLD) précise le modèle conceptuel par des choix organisationnels. Il
s’agit d’une transcription (également appelée dérivation) du MCD dans un formalisme adapté à une implémentation
ultérieure, au niveau physique, sous forme de base de données relationnelle.
Niveau physique : le modèle physique des données (MPD) permet d’établir la manière concrète dont le
système sera mis en place (SGBD retenu).

GBD - S5 22
Éléments constitutifs du modèle entités-
associations
La représentation du modèle entités-associations s’appuie sur trois
concepts de base :
• l’objet ou entité,
• l’association,
• la propriété.
L’objet est une entité ayant une existence propre. L’association est un
lien ou relation entre objets sans existence propre. La propriété est la
plus petite donnée d’information décrivant un objet ou une
association.

GBD - S5 23
Entité Personne Etudiant Livre

Définition -entité- Une entité est un objet, une chose concrète ou


abstraite qui peut être reconnue distinctement et qui est caractérisée
par son unicité.
Exemples d’entité : ALAMI Ahmed, le livre que je tiens entre les
mains, la Ferrari qui se trouve dans mon garage, etc.

GBD - S5 24
Entité
Définition 2 -type-entité- Un type-entité désigne un
ensemble d’entités qui possèdent une sémantique et des
propriétés communes.
Les personnes, les livres et les voitures sont des exemples de type-
entité. En effet, dans le cas d’une personne par exemple, les
informations associées (i.e. les propriétés), comme le nom et le
prénom, ne changent pas de nature.
Une entité est souvent nommée occurrence ou instance de son
type-entité.

GBD - S5 25
Attribut ou propriété, valeur
Définition -attribut, propriété- Un attribut (ou une propriété) est une
caractéristique associée à un type-entité ou à un type-association.
Exemples d’attribut : le nom d’une personne, le titre d’un livre, la
puissance d’une voiture.
Définition -valeur- Au niveau du type-entité ou du type-association,
chaque attribut possède un domaine qui définit l’ensemble des valeurs
possibles qui peuvent être choisies pour lui (entier, chaîne de
caractères, booléen, . . .). Au niveau de l’entité, chaque attribut
possède une valeur compatible avec son domaine.

GBD - S5 26
Identifiant ou clé
Définition -identifiant, clé- Un identifiant (ou clé) d’un type-entité ou
d’un type-association est constitué par un ou plusieurs de ses attributs
qui doivent avoir une valeur unique pour chaque entité ou association
de ce type.
Il est donc impossible que les attributs constituant l’identifiant d’un
type-entité (respectivement type-association) prennent la même valeur
pour deux entités (respectivement deux associations) distinctes.
Exemples d’identifiant : le numéro de CINE pour une personne, le
numéro d’immatriculation pour une voiture, le code ISBN d’un livre
pour un livre (mais pas pour un exemplaire).

GBD - S5 27
Association ou relation
Définition -association- Une association (ou une relation) est un lien entre plusieurs
entités.
Exemples d’association : l’emprunt par l’étudiant Houssam du 3e exemplaire du livre «
Maîtrisez SQL ».

Définition -type-association- Un type-association (ou un type-relation) désigne un


ensemble de relations qui possèdent les mêmes caractéristiques. Le type-association décrit
un lien entre plusieurs type-entités.
Les associations de ce type-association lient des entités de ces type-entités.
Un type-association peut ne pas posséder d’attribut explicite et cela est relativement
fréquent, mais on verra qu’il possède au moins des attributs implicites.
Par abus de langage, on utilise souvent le mot association en lieu et place du mot
type-association, il faut cependant prendre garde à ne pas confondre les deux
concepts.

GBD - S5 28
Association ou relation
Définition -participant- Les type-entités intervenant dans un type-
association sont appelés les participants de ce type-association.
Définition -collection- L’ensemble des participants d’un type-association
est appelé la collection de ce type-association.
Cette collection comporte au moins un type-entité , mais elle peut en
contenir plus, on parle alors de type-association n-aire (quand n = 2 on parle
de type-association binaire, quand n = 3 de type-association ternaire, . . .).
Définition -dimension ou arité d’un type-association- La dimension, ou
l’arité d’un type-association est le nombre de type-entités contenu dans la
collection.
Comme un type-entité, un type-association possède forcément un
identifiant, qu’il soit explicite ou non.

GBD - S5 29
Cardinalité
Définition -cardinalité- La cardinalité d’une patte reliant un type-association
et un type-entité précise le nombre de fois minimal et maximal
d’interventions d’une entité du type-entité dans une association du type-
association.
La cardinalité minimale doit être inférieure ou égale à la cardinalité
maximale.
Exemple de cardinalité : une personne peut être l’auteur de 0 à n livre, mais
un livre ne peut être écrit que par une personne.
Règle 1 L’expression de la cardinalité est obligatoire pour chaque patte
d’un type-association.
Règle 2 Une cardinalité minimal est toujours 0 ou 1 et une cardinalité
maximale est toujours 1 ou
n.
GBD - S5 30
Cardinalité
Les seuls cardinalités admises :
0,1 : une occurrence du type-entité peut exister tout en étant impliquée
dans aucune association et peut être impliquée dans au maximum une
association.
0,n : c’est la cardinalité la plus ouverte ; une occurrence du type-entité peut
exister tout en étant impliquée dans aucune association et peut être
impliquée, sans limitation, dans plusieurs associations.
1,1 : une occurrence du type-entité ne peut exister que si elle est
impliquée dans exactement une association.
1,n : une occurrence du type-entité ne peut exister que si elle est impliquée
dans au moins une association.

GBD - S5 31
Compléments sur les associations

Associations plurielles
Deux mêmes entités peuvent être plusieurs fois en association

Association réflexive
Un type-association est qualifié de réflexif quand
il matérialise une relation entre un type-entité et lui-même

Association n-aire (n > 2)


Les associations de degré supérieur à deux sont plus difficiles à manipuler
et à interpréter, notamment au niveau des cardinalités.
GBD - S5 32
Compléments sur les associations

Exemple d’association n-aire inappropriée


Le type-association ternaire Contient associant les
type-entités Facture, Produit et Client représenté est
inapproprié. En effet, cette modélisation implique
pour les associations (instances du type-association)
Contient une répétition du numéro de client pour
chaque produit d’une même facture.

GBD - S5 33
Compléments sur les associations

Exemple d’association n-aire inappropriée


La solution consiste à éclater le type-association
ternaire Contient en deux type-associations binaires
comme représenté

GBD - S5 34
Compléments sur les associations

Décomposition d’une association n-aire


un exemple de type-association ternaire entre les type-entités Créneau horaire, Salle et
Film. Il est toujours possible de s’affranchir d’un type-association n-aire (n > 2) en se
ramenant à des type-associations binaires de la manière suivante :
– On remplace le type-association n-aire par un type-entité et on lui attribut un identifiant.
– On crée des type-associations binaire entre le nouveau type-entité et tous les type-entités
de la collection de l’ancien type-association n-aire.
– La cardinalité de chacun des type-associations binaires créés est 1, 1 du côté du type-entité
créé (celui qui remplace le type-association n-aire), et 0, n ou 1, n du côté des type-entités
de la collection de l’ancien type-association n-aire.

GBD - S5 35
Compléments sur les associations

Décomposition d’une association n-aire


Ainsi, le mécanisme, que nous venons de détailler, de passage d’un type-association
n-aire (n > 2) à un type-entité et n type-associations binaires est tout à fait réversible.

GBD - S5 36
Règles de bonne formation d’un modèle
entités-associations
La bonne formation d’un modèle entités-
associations permet d’éviter une grande partie
des sources d’incohérences et de redondance.
Pour être bien formé, un modèle entités-
associations doit respecter certaines règles et les
type-entités et type-associations doivent être
normalisées.
GBD - S5 37
Règles de bonne formation d’un modèle
entités-associations
Règles portant sur les noms
Dans un modèle entités-associations, le nom d’un type-entité, d’un
type-association ou d’un attribut doit être unique.

GBD - S5 38
Règles de bonne formation d’un modèle
entités-associations
Règles de normalisation des attributs
1- Il faut remplacer un attribut multiple en un type-association et un type-entité
supplémentaires.
En effet, les attributs multiples posent régulièrement des problèmes d’évolutivité du modèle.
Il est également intéressant de décomposer les attributs composites comme l’attribut Adresse par
exemple. Il est en effet difficile d’écrire une requête portant sur la ville où habitent les employés si
cette information est noyée dans un unique attribut Adresse.

GBD - S5 39
Règles de bonne formation d’un modèle
entités-associations
Règles de normalisation des attributs
2- Il ne faut jamais ajouter un attribut dérivé d’autres attributs, que ces autres attributs se
trouvent dans le même type-entité ou pas.

GBD - S5 40
Règles de bonne formation d’un modèle
entités-associations
Règles de normalisation des attributs
3- Un attribut correspondant à un type énuméré est généralement
avantageusement remplacé par un type-entité.
Par exemple, sur la figure, l’attribut Type caractérise le type d’une
émission et peut prendre des valeurs comme : actualité, culturelle,
reportage, divertissement, etc. Remplacer cet attribut par un type-
entité permet, d’une part, d’augmenter la cohérence (en
s’affranchissant, par exemple, des variations du genre culturelle,
culture, Culture, . . .) et d’autre part, si les cardinalités le permettent, de
pouvoir affecter plusieurs types à une même entité (ex : actualité et
culturelle)

GBD - S5 41
Règles de bonne formation d’un modèle
entités-associations
Règles de fusion/suppression d’entités/associations
1- Il faut factoriser les type-entités quand c’est possible.
La spécialisation du type-entité obtenu peut se traduire par
l’introduction d’un attribut supplémentaire dont l’ensemble des
valeurs possibles est l’ensemble des noms des type-entités
factorisés

GBD - S5 42
Règles de bonne formation d’un modèle
entités-associations
Règles de fusion/suppression d’entités/associations
2- Il faut factoriser les type-associations quand c’est possible.
La spécialisation du type-association obtenu peut se traduire par l’introduction d’un
attribut supplémentaire dont l’ensemble des valeurs possibles est l’ensemble des
noms des type-associations
factorisés.

GBD - S5 43
Règles de bonne formation d’un modèle
entités-associations
Règles de fusion/suppression d’entités/associations
3- Lorsque les cardinalités d’un type-association sont toutes 1, 1
c’est que le type-association n’a pas lieu d’être.
Il faut aussi se poser la question de l’intérêt du type-
association quand les cardinalités maximale sont toutes de 1.

GBD - S5 44
Règles de bonne formation d’un modèle
entités-associations
Règles de fusion/suppression d’entités/associations
4- Il faut veiller à éviter les type-associations redondants.
En effet, s’il existe deux chemins pour se rendre d’un type-entité à un
autre, alors ces deux chemins doivent avoir deux significations ou deux
durées de vie distinctes. Dans le cas contraire, il faut supprimer le
chemin le plus court puisqu’il est déductible des autres chemins.
Il faut aussi se poser la question de l’intérêt du type-
association quand les cardinalités maximale sont toutes de 1.

GBD - S5 45
Règles de bonne formation d’un modèle
entités-associations
• Par exemple, dans le modèle représenté, si un client ne peut pas régler la facture d’un autre
client, alors le type-association Payer est redondant et doit purement et simplement être
supprimé du modèle. On pourra toujours retrouver le client qui a effectué un règlement en
passant par la facture correspondante.
• Par contre, si un client peut régler la facture d’un autre client, alors on remplace le type-entité
Règlement par un type-association Régler.

GBD - S5 46
Règles de bonne formation d’un modèle
entités-associations
• Par contre, si un client peut régler la facture d’un autre client, alors on remplace le type-entité
Règlement par un type-association Régler.

GBD - S5 47
Cas d’une bibliothèque (1re partie)
Une petite bibliothèque souhaite informatiser la gestion de son fonds
documentaire et de ses emprunts. Dans cette perspective, le bibliothécaire, qui
n’est pas un informaticien, a rédigé le texte suivant :
Grâce à cette informatisation, un abonné devra pouvoir retrouver un livre en
connaissant son titre. Il doit aussi pouvoir connaître la liste des livres d’un auteur.
Un abonné a le droit d’emprunter au maximum dix ouvrages simultanément. Les
prêts sont accordés pour une durée de quinze jours. La gestion des prêts doit
permettre de connaître, à tout moment, la liste des livres détenus par un abonné,
et inversement, de retrouver le nom des abonnés détenant un livre absent des
rayons. Un livre peut être écrit par plusieurs auteurs. Chaque livre est acheté en un
ou plusieurs exemplaires.
1. Identifiez, dans le texte ci-dessus, les mots devant se concrétiser par
des entités, des associations ou des attributs.
2. Proposez un modèle entités-associations permettant de modéliser la
situation décrite ci-dessus.
GBD - S5 48
Normalisation des type-entités et type-
associations
Les formes normales sont différent stades de qualité qui permettent
d’éviter la redondance, source d’anomalies. La normalisation peut être
aussi bien effectuée sur un modèle entités- associations, où elle
s’applique sur les type-entités et type-associations, que sur un modèle
relationnel.
Il existe 5 formes normales principales et deux extensions. Un type-
entité ou un type-association en forme normale de niveau n est
automatiquement en forme normale de niveau n − 1. Une
modélisation rigoureuse permet généralement d’aboutir directement à
des type-entités et type- associations en forme normale de Boyce-
Codd.

GBD - S5 49
Normalisation des type-entités et type-
associations
Première forme normale (1FN)
Un type-entité ou un type-association est en première forme
normale si tous ses attributs sont élémentaires, c’est-à-dire non
décomposables.

GBD - S5 50
Normalisation des type-entités et type-
associations
Deuxième forme normale (2FN)
Un type-entité ou un type-association est en deuxième forme normale
si, et seulement si, il est en première forme normale et si tout attribut
n’appartenant pas à la clé dépend de la totalité de cette clé.

GBD - S5 51
Normalisation des type-entités et type-
associations
Troisième forme normale (3FN)
Un type-entité ou un type-association est en troisième forme normale
si, et seulement si, il est en deuxième forme normale et si tous ses
attributs dépendent directement de sa clé et pas d’autres attributs.

GBD - S5 52
Normalisation des type-entités et type-
associations
Forme normale de Boyce-Codd (BCNF)
Un type-entité ou un type-association est en forme normale de Boyce-Codd
si, et seulement si, il est en troisième forme normale et si aucun attribut
faisant partie de la clé dépend d’un attribut ne faisant pas partie de la clé.

Il existe d’autres formes normales. La quatrième et la cinquième forme


normale sont présentées dans le cadre du modèle relationnel.

GBD - S5 53
Élaboration d’un modèle entités-associations
Étapes de conceptions d’un modèle entités-
associations
Recueil des besoins – C’est une étape primordiale. Inventoriez l’ensemble des données à
partir des documents de l’entreprise, d’un éventuel cahier des charges et plus
généralement de tous les supports de l’information.
Tri de l’information – Faites le tri dans les données recueillies. Il faut faire attention, à ce
niveau, aux problèmes de synonymie/polysémie.
Identification des type-entités – Le repérage d’attributs pouvant servir d’identifiant
permet souvent de repérer un type-entité. Les attributs de ce type-entité sont alors les
attributs qui dépendent des attributs pouvant servir d’identifiant.
Identification des type-associations – Identifiez les type-associations reliant les
type-entités du modèle. Le cas échéant, leur affecter les attributs correspondant.
Vérification du modèle – Vérifiez que le modèle respecte bien les règles que nous avons
énoncés et les définitions concernant la normalisation des type-entités et des type-
associations. Le cas échéant, opérez les modifications nécessaires pour que le modèle soit
bien formé.

GBD - S5 54
Exercice

Le modèle entités-associations de la figure pose de nombreux


problèmes.
1. Identifiez les erreurs de modélisation et les incohérences dont
souffre ce modèle. Précisez à chaque fois la règle ou la définition
enfreinte et réfléchissez à la correction à apporter au modèle.
2. Proposez un modèle corrigé bien formé.

GBD - S5 55
Exercice 2
Une banque désire posséder un SGBD pour suivre ses clients. Elle désire ainsi
stocker les coordonnées de chaque client (nom, prénom adresse), et les
comptes dont elle dispose ainsi que leur solde (sachant par ailleurs que
certains compte ont plusieurs bénéficiaires). On stockera également les
opérations relatives à ces comptes (retrait et dépôt, avec leur date et le
montant).

Questions :
• Identifier les différentes entités et leurs propriétés pour cette gestion
• Préciser les différentes associations entre les entités et ajouter les
propriétés pour les associations porteuses de propriétés.
• Préciser les cardinalités pour les différentes associations.

GBD - S5 56
Exercice 3
Le but est de construire un système permettant de gérer un magasin de vente de produit a des particuliers.
Les produits du magasin possèdent une référence (un code), un libelle et un prix unitaire.
Les clients ont une identité (nom, prénom, adresse).
Les clients passent des commandes de produits. On mémorise la date de la commande.
Pour chaque commande, le client précise une adresse de livraison.
La commande concerne un certain nombre de produits, en une quantité spécifiée pour chaque produit.

Questions :
• Identifier les différentes entités et leurs propriétés pour cette gestion
• Préciser les différentes associations entre les entités et ajouter les propriétés pour les associations porteuses
de propriétés.
• Préciser les cardinalités pour les différentes associations.

GBD - S5 57
E aministration
• Dans le cadre de la mise en place de la e-adminitsration au Maroc, les bureaux d’états civils des arrondissements des
différentes préfectures du royaume et des consulats du Maroc à l’étranger ont décidé d’informatiser la gestion des
services d’états civils offerts aux citoyens.
• Pour enregistrer un nouveau-né, le déclarant de la naissance (obligatoirement un parent ou tuteur) doit se rendre au
bureau d’état civil le plus proche de son domicile. Le bureau d’état civil est caractérisé par le numéro d’arrondissement,
le nom de la préfecture et la ville. Le déclarant doit être muni du certificat de naissance du nouveau-né, délivré par la
clinique ou l’hôpital dans lequel a eu lieu la naissance, après quoi, ce nouveau-né est inscrit au niveau du registre du
bureau d’état civil (identifié par un numéro, une année), par l’intermédiaire de l’officier d’état civil, qui est caractérisé par
son matricule, nom, prénom, date de prise de service au niveau du bureau. Les informations suivantes sont nécessaires
pour l’enregistrement d’un nouveau-né : Numéro d’enregistrement, nom, prénom, date de naissance, nom et prénom du
père, nom et prénom de la mère, prénoms des grand parents paternels et maternels, ville et pays de naissance (sans
oublier les personnes nées à l’étranger).
• Lors du décès d’une personne, un proche parent doit déclarer ce décès au niveau du bureau, à la suite de la
présentation du certificat du médecin légiste, l’officier du bureau procède à l’enregistrement du décès au niveau du
registre en incluant le Numéro de l’acte de naissance ainsi que la date et le lieu du décès.
• L’essentiel des documents délivrés par le bureau d’état civil sont l’extrait d’acte de naissance et l’attestation de décès
d’un citoyen.

GBD - S5 58
Exercice Cas d’une bibliothèque
Une petite bibliothèque souhaite informatiser la gestion de son fonds documentaire et de ses
emprunts. Dans cette perspective, le bibliothécaire, qui n’est pas un informaticien, a rédigé le texte
suivant :
Grâce à cette informatisation, un abonné devra pouvoir retrouver un livre en connaissant son titre.
Il doit aussi pouvoir connaître la liste des livres d’un auteur, la liste des auteurs d’un livre ainsi que
son éditeur. Chaque livre est acheté en un ou plusieurs exemplaires. Attention, un livre est parfois
édité plusieurs fois, éventuellement par des éditeurs différents. Pour s’abonner, une personne doit
verser une caution et laisser ses coordonnées. Suivant le montant de sa caution, un abonné a le
droit d’emprunter entre deux et dix ouvrages simultanément. Les prêts sont accordés pour une
durée de quinze jours. La gestion des prêts doit permettre de connaître, à tout moment, la liste des
livres détenus par un abonné, et inversement, de retrouver le nom des abonnés détenant un livre
absent des rayons. La gestion du fonds documentaire doit permettre de connaître pour chaque
exemplaire sa date d’achat, son état et s’il est disponible en rayon dans la bibliothèque.
• Identifiez, dans le texte ci-dessus, les mots devant se concrétiser par des entités,
des associations ou des attributs.
• Proposez un modèle entités-associations bien formé permettant de modéliser la situation décrite
ci-dessus.

GBD - S5 59
Chapitre 3
Bases de données relationnelles

GBD - S5 60
Introduction au modèle relationnel
• Dans ce modèle, les données sont représentées par des tables, sans
préjuger de la façon dont les informations sont stockées dans la
machine. Les tables constituent donc la structure logique du modèle
relationnel. Les tables ne représentent donc qu’une abstraction de
l’enregistrement physique des données en mémoire.

GBD - S5 61
Introduction au modèle relationnel
Les objectifs du modèle relationnel sont :
• 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.
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, 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.

GBD - S5 62
Éléments du modèle relationnel
attribut- Un attribut est un identificateur (un nom) décrivant une
information stockée dans une base.
Exemples d’attribut : l’âge d’une personne, le nom d’une personne, le
numéro de sécurité sociale.
Domaine- Le domaine d’un attribut est l’ensemble, fini ou infini, de ses
valeurs possibles.
Par exemple, l’attribut numéro de sécurité sociale a pour domaine
l’ensemble des combinaisons de quinze chiffres et nom a pour domaine
l’ensemble des combinaisons de lettres (une combinaison comme cette dernière
est généralement appelée chaîne de caractères ou, plus simplement, chaîne).
relation- Une relation est un sous-ensemble du produit cartésien de n
domaines d’attributs (n > 0).
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.
GBD - S5 63
Éléments du modèle relationnel
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.
Exemple de relation de schéma Personne(N˚ sécu : Chaine, Nom :
Chaîne, Prénom : Chaîne)

GBD - S5 64
Éléments du modèle relationnel
degré- Le degré d’une relation est son nombre d’attributs.
occurrence ou n-uplets ou tuples- Une occurrence, ou n-uplets, ou tuples,
est un élément de l’ensemble figuré par une relation. Autrement dit, une
occurrence est une ligne du tableau qui représente la relation.
cardinalité- La cardinalité d’une relation est son nombre d’occurrences.
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.
La valeur d’une clé candidate est donc distincte pour toutes les tuples
de la relation. La notion de clé candidate est essentielle dans le modèle
relationnel.
Règle Toute relation a au moins une clé candidate et peut en avoir
plusieurs.
GBD - S5 65
Éléments du modèle relationnel
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.

GBD - S5 66
Passage du modèle entités-associations au
modèle relationnel : Règles de passage
• Pour traduire un schéma du modèle entités-associations vers le modèle relationnel, on peut
appliquer les règles suivantes :
1. La normalisation devrait toujours être effectuée avant le passage au modèle relationnel. Dans les
faits, elle est parfois faite a posteriori, ce qui impose
toujours une surcharge de travail importante.
2. Chaque type-entité donne naissance à une relation. Chaque attribut de ce type-
entité devient un attribut de la relation. L’identifiant est conservé en tant que clé de la relation.
3. Chaque type-association dont aucune patte n’a pour cardinalité maximale 1 donne naissance à
une relation. Chaque attribut de ce type-association devient un attribut de la relation. L’identifiant,
s’il est précisé, est conservé en tant que clé de la relation, sinon cette clé est formée par la
conbinaison des identifiants des type-entités qui interviennent dans le type-association.
4. Un type-association dont au moins une patte a une cardinalité maximale à 1 (ce type- association
devrait être binaire et n’a généralement pas d’attribut) ne devient pas une relation. Il décrit en effet
une dépendance fonctionnelle. La relation correspondant au type-entité dont la patte vers le type-
association a une cardinalité maximale valant 1, se voit simplement ajouter comme attribut (et
donc comme clé étrangère) l’identifiant de l’autre type-entité.

GBD - S5 67
Passage du modèle entités-associations au
modèle relationnel : Règles de passage

GBD - S5 68
Passage du modèle entités-associations au
modèle relationnel : Règles de passage

GBD - S5 69
Passage du modèle entités-associations au
modèle relationnel : Règles de passage

GBD - S5 70
Exemple complet

GBD - S5 71
Exercice

GBD - S5 72
Chapitre 4
Algèbre relationnelle

GBD - S5 73
Introduction
L’algèbre relationnelle est un support mathématique cohérent sur
lequel repose le modèle relationnel. L’objet de cette section est
d’aborder l’algèbre relationnelle dans le but de décrire les opérations
qu’il est possible d’appliquer sur des relations pour produire de
nouvelles relations. L’approche suivie est donc plus opérationnelle que
mathématique.

GBD - S5 74
Les opérateurs
• Les opérateurs unaires (Sélection, Projection) : ce sont les opérateurs
les plus simples, ils permettent de produire une nouvelle table à partir
d’une autre table.
• Les opérateurs binaires ensemblistes (Union, Intersection Différence) :
ces opérateurs permettent de produire une nouvelle relation à partir de
deux relations de même degré et de même domaine.
• Les opérateurs binaires ou n-aires (Produit cartésien, Jointure,
Division) : ils permettent de produire une nouvelle table à partir de
deux ou plusieurs autres tables.
Les notations ne sont pas standardisées en algèbre relationnelle. Ce
cours utilise des notations courantes mais donc pas forcément
universelles.
GBD - S5 75
Sélection
Sélection- La sélection (parfois appelée restriction) génère une relation
regroupant exclusivement toutes les occurrences de la relation R qui
satisfont l’expression logique E, on la note σ(E)R.
En d’autres termes, la sélection permet de choisir (i.e. sélectionner) des
lignes dans le tableau. Le résultat de la sélection est donc une nouvelle
relation qui a les mêmes attributs que R. Si R est vide (i.e. ne contient
aucune occurrence), la relation qui résulte de la sélection est vide.

GBD - S5 76
Sélection
Num_Prod Désignation Prix
P001 Laptop Fujitsu i70 12500 DH
P002 PC Hp note book 11200 DH
P003 Tablette Samsung 5 3200 DH
P004 Mac book Air 18500 DH
P005 Onduleur 1850 DH

Exemple de sélection sur la relation Produit : σ(Prix ≥12000)Produit

Num_Prod Désignation Prix


P001 Laptop Fujitsu i70 12500 DH
P004 Mac book Air 18500 DH
GBD - S5 77
Projection- La projection consiste à supprimer les attributs autres que
A1, . . . An d’une relation et à éliminer les n-uplets en double
apparaissant dans la nouvelle relation ;
on la note Π(A1, ...An )R
En d’autres termes, la projection permet de choisir des colonnes dans
le tableau. Si R est vide, la relation qui résulte de la projection est vide,
mais pas forcément équivalente (elle contient généralement moins
d’attributs).

GBD - S5 78
Sélection
Exemple de projection sur la relation Produit: Π(Désignation)Produit

Désignation
Laptop Fujitsu i70
PC Hp note book
Tablette Samsung 5
Mac book Air
Onduleur

GBD - S5 79
IV. Algèbre relationnelle
Les opérateurs binaires ou n-aires: Produit cartésien

Définition : Le produit cartésien est une opération portant sur


deux relations R1 et R2 et qui construit une troisième relation
regroupant exclusivement toutes les possibilités de combinaison
des tuples des relations R1 et R2.

Notation : R1 × R2

q Il s’agit d’une opération binaire commutative essentielle dont


la signature est :
relation × relation → relation
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Produit cartésien

Notation : R1 × R2
q Le résultat du produit cartésien est une nouvelle relation qui a
tous les attributs de R1 et tous ceux de R2.
q Si R1 ou R2 ou les deux sont vides, la relation qui résulte du
produit cartésien est vide.
q Le nombre d’enregistrements de la relation qui résulte du
produit cartésien est le nombre d’enregistrements de R1 multiplié
par le nombre d’enregistrements de R2.
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Produit cartésien
q Pour deux tables R1 et R2, table R1 × R2 est le résultat de
l’algorithme suivant :
Pour chaque ligne de R1 faire
Pour chaque ligne de R2 faire
concaténer la ligne de R1 avec la ligne de R2
Fin Pour
Fin Pour
q Propriétés de la structure:
§ degré(R1 × R2 )=degré(R1)+degré(R2 )
§ cardinalité(R1 × R2 )= cardinalité (R1) * cardinalité (R2 )
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Produit cartésien
Exemple : PERSONNE × ACHAT
PERSONNE × ACHAT

PERSONNE ACHAT nom prénom article prix

nom prénom article prix Sabri Zahraa livre 500


Sabri Zahraa livre 500 Sabri Zahraa poupée 200
Yahy Khalid poupée 200 Sabri Zahraa montre 900
montre 900
Yahy Khalid livre 500
Yahy Khalid poupée 200

Yahy Khalid montre 900


IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
q équi-jointure, thêta-jointure, jointure naturelle
Définition : La jointure est une opération portant sur deux
relations R1 et R2 qui construit une troisième relation regroupant
exclusivement toutes les possibilités de combinaison des tuples
des relations R1 et R2 qui satisfont l’expression logique E.
Notation: R1 ⋈E R2.

q Il s’agit d’une opération binaire commutative dont la signature


est :
relation × relation × expression logique → relation
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
q équi-jointure, thêta-jointure, jointure naturelle

q La jointure est notée : R1 ⋈E R2.

q Si R1 ou R2 ou les deux sont vides, la relation qui résulte de la


jointure est vide.

q En fait, la jointure n’est rien d’autre qu’un produit cartésien


suivi d’une sélection:
R1 ⋈E R2 = σE (R1 × R2)
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
q équi-jointure, thêta-jointure, jointure naturelle

R1 ⋈E R2 = σE (R1 × R2)
q Est le résultat de l’algorithme suivant :
Pour chaque ligne de R1 faire
Pour chaque ligne de R2 faire
lig= concaténer ligne R1 avec ligne R2
Si E(lig)=vrai alors garder lig
Fin Pour
Fin Pour
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
Exemple de jointure : PERSONNE ⋈((âge ≤ âgeA)Ʌ(prix ≤500))ACHAT
ACHAT
PERSONNE
âgeA article prix
nom prénom âge
99 livre 500
Sabri Zahraa 7
7 poupée 200
Yahy Khalid 43
22 baladeur 900
Samir Fouad 16
11 montre 250
PERSONNE ⋈((âge ≤ âgeA)Ʌ(prix ≤500))ACHAT
nom prénom âge âgeA article prix
Sabri Zahraa 7 99 livre 500
Sabri Zahraa 7 7 poupée 200
Sabri Zahraa 7 11 montre 250
Yahy Khalid 43 99 livre 500
Samir Fouad 16 99 livre 500
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
q Jointure, thêta-jointure, jointure naturelle
Exemple de jointure : PERSONNE ⋈((âge ≤ âgeA)Ʌ(prix ≤500))ACHAT

Cette jointure permet de générer toutes les possibilités


d’association entre un achat et une personne en respectant l’âge
maximum conseillé pour un achat et la somme de 500Dh à ne pas
dépasser.
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
q Jointure, thêta-jointure, jointure naturelle

§ Thêta-jointure
Définition : La thêta-jointure est une jointure dans laquelle
l’expression logique E est une simple comparaison entre un
attribut A1 de la relation R1 et un attribut A2 de la relation R2.

è La thêta-jointure est notée :


R1 ⋈E R2
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
q Jointure, thêta-jointure, jointure naturelle

§ Équi-jointure
Définition : Une équi-jointure est une thêta-jointure dans laquelle
l’expression logique E est un test d’égalité entre un attribut A1 de
la relation R1 et un attribut A2 de la relation R2. L’équi-jointure est
notée R1 ⋈A1=A2 R2.
NB: Il vaut mieux écrire R1 ⋈A1=A2 R2 que R1 ⋈A1,A2 R2, car cette
dernière notation, bien que parfois dans la littérature, prête à
confusion avec une jointure naturelle explicite.
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
q Jointure, thêta-jointure, jointure naturelle
§ Jointure naturelle
Définition : Une jointure naturelle est une jointure dans laquelle
l’expression logique E est un test d’égalité entre les attributs qui
portent le même nom dans les relations R1 et R2.
q Dans la relation construite, ces attributs ne sont pas
dupliqués, mais fusionnés en une seule colonne par couple
d’attributs.
q La jointure naturelle est notée: R1 ⋈ R2 .
q Si la jointure ne doit porter que sur un sous-ensemble des
attributs communs à R1 et R2 il faut préciser explicitement ces
attributs de la manière suivante : R1 ⋈A1, .., An R2.
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
q Jointure, thêta-jointure, jointure naturelle
§ Jointure naturelle
q Si R1 et R2 n’ont qu’un attribut en commun. Dans ce cas, une
jointure naturelle est équivalente à une équi-jointure dans
laquelle l’attribut de R1 et celui de R2 sont justement les deux
attributs qui portent le même nom.

q Pour effectuer une jointure naturelle entre R1 et R2 sur un attribut


A1 commun à R1 et R2 , il vaut mieux écrire R1 ⋈ A1R2 que R1 ⋈
R2 .
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Jointure
Exemple de jointure naturelle: PERSONNE ⋈ ACHAT ou
PERSONNE ⋈((âge)ACHAT
PERSONNE
ACHAT
nom prénom âge
âge article prix
Sabri Zahraa 7
43 livre 500
Yahy Khalid 43
7 poupée 200
Samir Fouad 7
25 montre 250
Tami Ayoub 25

PERSONNE ⋈(âge)ACHAT
nom prénom âge article prix
Sabri Zahraa 7 poupée 200
Yahy Khalid 43 Livre 500
Samir Fouad 7 poupée 200
Tami Ayoub 25 montre 250
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Division

Définition : la division est une opération portant sur deux

• relations R1 et R2, telles que le schéma de R2 est strictement inclus dans


celui de R1, qui génère une troisième relation regroupant toutes les parties
d’enregistrements de la relation R1 qui, associées à tous les enregistrements de
la relation R2, se retrouvent dans R1.
• Notation : R1 ÷ R2.
qIl s’agit d’une opération binaire non commutative
dont la
• signature est : relation × relation → relation
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Division
q La division de R1 par R2 (R1 ÷ R2) génère une relation qui
regroupe tous les tuples qui, concaténés à chacun des tuples de
R2, donne toujours des tuples de R1.
q La relation R2 ne peut pas être vide.
q Tous les attributs de R2 doivent être présents dans R1 et R1 doit
posséder au moins un attribut de plus que R2
q Le résultat de la division est une nouvelle relation qui a tous les
attributs de R1 sans aucun de ceux de R2.
q Si R1 est vide, la relation qui résulte de la division est vide.
IV. Algèbre relationnelle
IV. 4. Les opérateurs binaires: Division
Un exemple de division ENSEIGNEMENT ÷ ETUDIANT qui permet
de dresser la table R de tous les enseignants de la relation
ENSEIGNEMENT qui enseignent à tous les étudiants de la relation
ETUDIANT.

ENSEIGNEMENT÷ ETUDIANT
ENSEIGNEMENT ETUDIANT
nomEnseignant nomEtudiant nomEnseignant
nomEtudiant
Germain Dubois Germain
Dubois
Fidus Pascal Fidus
Pascal
Robert Durand
Germain Pascal
Fidus Dubois
IV. Algèbre relationnelle
IV.5. Exercices
Nom Age Profession
Nom_imb Adresse Nb_étage Année Nomgérant
Alami 54 Architecte
Annakhil 22 Rue Azrou, Rabat 10 2009 Alami
Atif 39 Médecin
Firdaous 15 bd des Far, Fès 5 2000 Dahbi
Barhoum 58 Avocat
Table Immeuble Dahbi 65 Retraité
Table Personne
Nom_imb No_app Superficie Etage
Annakhil 1 150 10 Nom_imb No_app Nom_occ Année_h
Annakhil 2 100 1
Annakhil 1 Alami 2009
Annakhil 10 90 9
Annakhil 2 Dahbi 2009
Firdaous 5 120 2
Firdaous 10 100 5 Firdaous 5 Atif 2001

Firdaous 11 80 3 Firdaous 10 Barhoum 2005

Table Appartement Table Occupant


IV. Algèbre relationnelle
IV.5. Exercices
Soit la base de données simplifiée. Exprimer la signification et le
résultat des requêtes suivantes:
1. ПNom,Age(Personne)
2. ΠNom_imb(Immeuble)
3. ΠNom_imb, No_app(σsuperficie>100(Appartement));
4. Πnom-occ(σNom_imb="Firdaous" Ʌ Année_h>2001)(Occupant);
5. Πnom_imb, No_app(σNo_app=Etage (Appartement));
6. Πnomgérant, Superficie (Immeuble ⋈ Nom_imb=Nom_imbAppartement)
7. Πnom_occ, Année_h, Superficie(Appartement ⋈ Nom_imb=Nom_imb , No_app=No_app
Occupant)
IV. Algèbre relationnelle
IV.5. Exercices
Ecrire en algèbre relationnelle les requêtes:
• 1. Nom des immeubles ayant strictement plus de 8 étages.
• 2. Nom des personnes ayant emménagé avant 1994.
• 3. Nom des habitants d’Annakhil.
• 4. Nom des Architectes de plus de 25 ans.
• 5. Nom des immeubles ayant un appartement de plus de 150 m2.
• 6. Qui gère l’appartement où habite Atif?
• 7. Dans quel immeuble habite un retraité?
• 8. Qui habite un appartement de moins de 70 m2?
• 9. Nom des personnes qui habitent au dernier étage de leur immeuble.
• 10. Profession du gérant du Firdaous?
• 11. Age et profession des occupants de l’immeuble géré par Alami?
• 12. Qui habite, dans un immeuble de plus de 10 étages et un appartement de plus
de 100 m2?
V Langage SQL

1. Présentation du langage SQL;


2. Types de données;
3. Requêtes d’action;
4. Requêtes de sélection;
5. Requêtes de contrôle.
V. Langage SQL
V.1. Présentation du langage SQL
q SQL signifie "Structured Query Language", soit en français
"Langage de requêtes structuré "

q Il a été développé par IBM au cours des années 70


q SQL : langage proche de l’utilisateur et de sa façon de poser
les requêtes (formulation proche du langage naturel)

q SQL : langage assertionnel (non procédural), facile à


apprendre pour rédiger les requêtes, les lire et les comprendre.
V.1. Présentation du langage SQL
q SQL a été normalisé par l'ANSI (American National
Standards Institute) et par l'ISO (International Organization
for Standardization).

q Cette normalisation a donné naissance à une 1ère version


(SQL1) en 1987 puis à une 2ème version (SQL2) en 1992

q Une troisième norme (SQL3) est sortie en 2003 par l'ANSI


et l'ISO.
V.1. Présentation du langage SQL
q Malgré la normalisation ISO, il existe plusieurs variantes de
SQL sur le marché car chaque éditeur de SGBDR tente
d’étendre le standard pour accroître l’attrait commercial de
son produit
q On distingue 3 types de requêtes: Actions (Création et
m.à.j), Sélections (Interrogation) et Contrôle (définir des
permissions pour les utilisateurs).
q Chaque requête SQL doit obligatoirement se terminer par
un Point Virgule.
V.1. Présentation du langage SQL
§ SQL, C’est à la fois:
q Langage de définition de données (LDD) : définir, modifier et
supprimer des structures de données dans les tables
(CREATE, ALTER..)
q Langage de manipulation des données (LMD) : entrer une
nouvelle ligne, modifier des lignes existantes, supprimer des
lignes dans la base de données (INSERT, UPDATE…)
q Langage de contrôle de données (LCD) : gère les droit
d’accès à la base et aux structure qu’elle contient
V.1. Présentation du langage SQL
q Utilisation de SQL :
§ En mode interactif :
L’utilisateur écrit textuellement une commande SQL et
récupère le résultat immédiatement.

§ En mode intégré :
Une commande SQL est mélangée avec les instructions
d’un programme en langage de haut niveau tel que C,
C++, Visual basic, ...
V.2. Types de données
§ INTEGER ou INT : entiers signés.
§ TEXT(p) ou CHAR(p) : chaîne de caractères de longueur fixe de p
caractères.
§ VARCHAR (p): chaîne de caractères de longueur variable de p
caractères maximum.
§ DATE, TIME, DATETIME: dates et/ou heures.
§ LOGICAL : valeur logique « oui » ou « non ».
§ DECIMAL(p, q) : nombres décimaux de p chiffres dont q après le
point décimal (par défaut, q = 0).
§ FLOAT : nombre réel en virgule flottante(il y a aussi Single pour
simple et Double pour réel double).
§ CURRENCY, MONEY : Monétaire.
§ COUNTER : Compteur (NuméroAuto).
V.2. Types de données
q Expressions de contraintes d'intégrité en SQL
§ Une contrainte d'intégrité est une clause permettant d’obliger la
modification de tables, faite par l'intermédiaire de requêtes
d'utilisateurs, afin que les données saisies dans la base soient
conformes aux données espérées (assurer la cohérence des
données dans une base) est:
Ø INTÉGRITÉ DE DOMAINE
Ø INTÉGRITÉ DE RELATION(DE CLÉ)
Ø INTÉGRITÉ DE RÉFÉRENCE
V.2. Types de données
q Expressions de contraintes d'intégrité en SQL
Ces contraintes doivent être exprimées dès la création de la table grâce
aux mots clés suivants:
Ø NULL / NOT NULL : valeurs non obligatoires/obligatoires.
Ø DEFAULT (Valeur) : pour définir une valeur par défaut*
Ø CHECK (Condition): pour contrôler la validité des valeurs*
Ø UNIQUE : permet de vérifier que la valeur saisie pour un
champ n'existe pas déjà dans la table.
Ø PRIMARY KEY : clé primaire.
Ø FOREIGN KEY : clé étrangère.
CONSTRAINT : permet de donner un nom à une contrainte ce qui
permet de la manipuler.
V.2. Types de données

q Expression de contraintes d'intégrité


§ NULL / NOT NULL : valeurs non obligatoires/obligatoires.

Ø NOT NULL :Forcer la saisie d'un champ


Ø Le mot clé NOT NULL permet de spécifier qu'un champ
doit être saisi, c'est-à-dire que le SGBD refusera d'insérer
des tuples dont un champ comportant la clause NOT
NULL n'est pas renseigné.
V.2. Types de données
q Expression de contraintes d'intégrité: DEFAULT
Ø Le langage SQL permet de définir une valeur par défaut lorsqu'un champ
de la base n'est pas renseigné grâce à la clause DEFAULT.
Ø Cela permet notamment de faciliter la création de tables, ainsi que de
garantir qu'un champ ne sera pas vide.
Ø La clause DEFAULT doit être suivie par la valeur à affecter. Cette
valeur peut être un des types suivants :
ü constante numérique
ü constante alphanumérique (chaîne de caractères)
ü le mot clé USER (nom de l'utilisateur)
ü le mot clé NULL
ü le mot clé CURRENT_DATE (date de saisie)
ü le mot clé CURRENT_TIME (heure de saisie)
ü le mot clé CURRENT_TIMESTAMP (date et heure de saisie)
V.2. Types de données
q Expression de contraintes d'intégrité
Ø CHECK (Condition): pour contrôler la validité des valeurs
Il est possible de faire un test sur un champ grâce à la
clause CHECK() comportant une condition logique portant sur une
valeur entre les parenthèses. Si la valeur saisie est différente de NULL,
le SGBD va effectuer un test grâce à la condition logique.
Ø UNIQUE : Tester l'unicité d'une valeur
La clause UNIQUE permet de vérifier que la valeur saisie pour un
champ n'existe pas déjà dans la table. Cela permet de garantir que toutes
les valeurs d'une colonne d'une table seront différentes.
V.2. Types de données
q Expressions de contraintes d'intégrité en SQL
Ø PRIMARY KEY :
• Colonne PRIMARY KEY= Clé Primaire de la table.
• Identifie chaque ligne(enregistrement)de la table de manière unique.
• Une clé primaire ne doit pas accepter:
ü Les valeurs identiques répétitives
ü Les valeurs NULL
Ø FOREIGN KEY(clé étrangère)
• Une clé étrangère est toujours liée à une clé primaire
• Elle doit respecter la contrainte d’intégrité référentielle: la valeur
d’une clé étrangère doit toujours être également une des valeurs de la
clé référencée(clé primaire)
V.2. Types de données: Conventions
q Les conventions relatives aux noms des tables et des champs varient quelque
peu d'un SGBD à l'autre:
§ Le nombre de caractères ne doit pas être trop grand (64 dans Access, 18 à
30 dans d'autres SGBD);
§ Seuls les lettres, les chiffres et le caractère de soulignement sont autorisés.
§ Access admet les caractères accentués. Il admet aussi l'espace, mais le nom
du champ doit être écrit entre crochets;
§ Certains SGBD nécessitent que le nom d'un champ commence par une
lettre, mais ce n'est pas le cas d'Access;
§ Les termes faisant partie du vocabulaire du langage SQL sont interdits
("date" par exemple). Ce sont les mots réservés.
V.3. Requêtes d’action
q Requêtes d’actions: Sont des requêtes qui permettent de créer des
tables, d’ajouter, de supprimer des enregistrements d’une table, …
§ Création d’une Base de données : Cette opération donne comme
résultat une BD vide ne contenant aucune table.
§ CREATE DATABASE permet de créer une nouvelle BD.
§ Création d’une table : Cette opération donne comme résultat une
table vide ne contenant aucun enregistrement. Il faut préciser :
ü Le nom de la table;
ü La description de ses colonnes : nom, type de
données et contraintes.
§ CREATE TABLE permet de créer une nouvelle table.
3. Requêtes d’action
§ Création de table :
ü Syntaxe SQL pour créer une nouvelle table :
CREATE TABLE Nom_table (
Nom_champ1 type_1,
Nom_champ2 type_2 ,
…,
Nom_champN type_N );
3. Requêtes d’action
§ Création de table :
ü Syntaxe SQL pour créer une nouvelle table :
CREATE TABLE Nom_table (
Nom_champ1 type_1 contrainte_1,
Nom_champ2 type_2 contrainte_2 ,
…,
Nom_champN type_N contrainte_N );
3. Requêtes d’action

§ Création de table :
ü Syntaxe SQL pour créer une nouvelle table avec une clé
primaire simple :
CREATE TABLE Nom_table (
champ1 type [CONSTRAINT nom_contrainte] PRIMARY KEY,
champ2 type [NOT NULL],
…,
…….,
champN type [NOT NULL] );
3. Requêtes d’action
§ Création de table :
ü Syntaxe SQL pour créer une nouvelle table avec une clé
primaire composée :
CREATE TABLE Nom_table (
champ1 type [NOT NULL],
champ2 type [NOT NULL],
…,
champN type,
PRIMARY KEY (champ1, champ2,…) );
3. Requêtes d’action
§ Création de table :
ü Syntaxe SQL pour créer une nouvelle table avec une clé
primaire composée :
CREATE TABLE Nom_table (
champ1 type [NOT NULL],
champ2 type [NOT NULL],
…, champN type,
[CONSTRAINT nom_contrainte1] PRIMARY KEY (champ1,
champ2,…) );
3. Requêtes d’action
§ Création de table : Exemples
CREATE TABLE Client (
email VARCHAR (50) NOT NULL,
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
anneeNaiss DECIMAL (4) ) ;
3. Requêtes d’action
§ Création de table : Exemples
CREATE TABLE Client (
email VARCHAR (50) NOT NULL,
nom VARCHAR (20) NOT NULL,
prenom VARCHAR (20),
motDePasse VARCHAR (60) NOT NULL,
anneeNaiss DECIMAL (4)
UNIQUE(nom) ) ;
3. Requêtes d’action

§ Création de table : Exemples

CREATE TABLE Cinéma (

nom VARCHAR (50) NOT NULL,

adresse VARCHAR (50) DEFAULT ’Inconnue’);


3. Requêtes d’action
§ Création de table : Exemples
ü CREATE TABLE ETUDIANT(
ID INTEGER PRIMARY KEY,
NOM TEXT(15),
PRENOM TEXT(15),
AGE INTEGER CONSTRAINT Contrainte_AGE
CHECK(age< 35),
BOURSIER LOGICAL);
3. Requêtes d’action
§ Création d’une table : Exemples
ü Donnez une requête SQL permettant de créer la table
EMPLOYES ( Nemployé: entier, Nom: texte(25), Prénom:
texte(20), Fonction: texte(15), Adresse: texte(50), Codeville:
entier long)
CREATE TABLE EMPLOYES (
Nemployé INTEGER PRIMARY KEY,
Nom TEXT(25),
Prénom TEXT(20), Fonction
TEXT(15), Adresse TEXT(50),
Codeville LONG ) ;
UNIVERSITE IBN TOFAIL ENCGK

V. Langage SQL
3. Requêtes d’action
§ Création d’une table : Exemples
ü Créez une requête SQL permettant de créer la table
DETAILS ( Ncommande: entier, Réf: texte(30), Pu: réel non
nul, Quantité: entier non nul, Remise: réel simple );

CREATE TABLE DETAILS ( Ncommande Integer,


Réf Char(30),
Pu float NOT NULL, Quantité Integer NOT
NULL, Remise Single,
PRIMARY KEY ( Ncommande, Réf ) ) ;
3. Requêtes d’action
§ Création d’une table: Clé étrangère
ü Créez une requête SQL permettant de créer la table
Participe( #Numadh: entier, #Numact: entier, AnneeParticipe: entier);
ü Numadh est la clé primaire de la table Adherent et Numact est la
clé primaire de la table Activite.

CREATE TABLE Participe( Numadh integer,


Numact integer, anneeParticipe
integer,
Primary key (Numadh, Numact, AnneeParticipe), Foreign key (Numadh)
references Adherent(Numadh), Foreign key (Numact) references
Activite(Numact));
3. Requêtes d’action
§ Création d’une table: Clé étrangère
ü Quatre options sont disponibles pour la suppression des clés
étrangères ( la définition de la contrainte d’intégrité référentielle ):
• ON DELETE RESTRICT : Pour interdire la suppression d’un
enregistrement référencé par un enregistrement d’une autre
relation. On trouve également l’expression NO ACTION à la place
du mot clé RESTRICT dans certains SGBD.
• ON DELETE SET NULL : Affecte la valeur NULL à la clé
étrangère.
• ON DELETE SET DEFAULT : Affecte la valeur par défaut
(selon le type de données) à la clé étrangère.
• ON DELETE CASCADE : Indique au SGBD qu’il est possible
de détruire la clé étrangère en détruisant toutes les clés étrangères
avec la même valeur.
3. Requêtes d’action
§ Création d’une table: Clé étrangère
CREATE TABLE Film (titre VARCHAR (50) NOT NULL,
annee INTEGER NOT NULL,
idArt INTEGER,
codePays INTEGER,
PRIMARY KEY (titre),
FOREIGN KEY (idArt) REFERENCES Artiste(idArt) ON
DELETE SET NULL,
FOREIGN KEY (codePays) REFERENCES Pays(codePays));
3. Requêtes d’action

§ Modification dans une table

§ L’instruction ALTER TABLE permet d’ajouter, de


modifier ou de supprimer un seul champ à une table.

§ Elle permet aussi la création et la suppression des liens


entre les tables d’une base de données.
3. Requêtes d’action
§ Modification dans une table
q Modification de la structure d’une table :
Ø Il y a trois types d’actions concernant la modification de
structure d’une table :
ü Ajouter une ou plusieurs colonnes.
ü Supprimer une ou plusieurs colonnes.
ü Modifier les propriétés d’une ou de plusieurs colonnes.
Ø Les commandes SQL relatives à ces actions :
ü ADD
ü DROP
ü MODIFY
3. Requêtes d’action
§ Modification dans une table
q Modification de la structure d’une table :
Ø Pour modifier la structure d’une table, on précise tout d’abord le
nom de celle-ci en écrivant la commande suivante :
ALTER TABLE Nom_table
Ø En suite, on spécifie la nature de l’action de modification (ajout,
suppression ou modification).
Ø Pour cela, il faut utiliser l’une des trois commandes : ADD,
DROP ou MODIFY.
3. Requêtes d’action
§ Modification dans une table
q Exemples d’ajout :
Ø Ajouter une colonne « AGE » (entier) dans la table « CLIENT » :
ALTER TABLE CLIENT
ADD AGE INTEGER;
Ø Ajouter une colonne « DATECOMPTE » (date) dans la table
« COMPTE » :
ALTER TABLE COMPTE
ADD DATECOMPTE DATE;
3. Requêtes d’action
§ Modification dans une table
q Exemples de suppression :
Ø Supprimer la colonne « ADRAGENCE » de la table « AGENCE» :
ALTER TABLE AGENCE
DROP ADRAGENCE;

Ø Supprimer la colonne « DATECOMPTE» de la table « COMPTE»:


ALTER TABLE COMPTE
DROP DATECOMPTE;
3. Requêtes d’action
§ Modification dans une table
q Exemples de modification de propriétés :
Ø Modifier le type de la colonne « ADRAGENCE » pour qu’il soit
un CHAR(100) au lieu de CHAR(40) :
ALTER TABLE AGENCE
MODIFY ADRAGENCE CHAR(100);
Ø Modifier la colonne « AGE » de la table « CLIENT » pour qu’elle
soit obligatoire :
ALTER TABLE CLEINT
MODIFY AGE NOT NULL;
V.3. Requêtes d’action
§ Modification dans une table
q Créez une requête SQL permettant de créer la table
VILLES ( Codeville: NuméroAuto, Ville: texte(20))

CREATE TABLE VILLES (

Codeville Counter PRIMARY KEY,

Ville Text(20) ) ;
UNIVERSITE IBN TOFAIL ENCGK

V. Langage SQL
V.3. Requêtes d’action
CREATE TABLE EMPLOYES (
Nemployé INTEGER PRIMARY KEY,
Nom TEXT(25),
Prénom TEXT(20),
Fonction TEXT(15),
Adresse TEXT(50),
Codeville LONG ) ;

CREATE TABLE VILLES (


Codeville Counter PRIMARY KEY,
Ville Text(20) ) ;
3. Requêtes d’action
§ Modification dans une table
q Modifiez la table EMPLOYES en déclarant le champ
"CodeVille" comme clé étrangère, puis créez un lien nommé
lien_ville sur le champ CodeVille de la table VILLES

ALTER TABLE EMPLOYES ADD CONSTRAINT Lien_ville FOREIGN KEY


(CodeVille) REFERENCES VILLES (CodeVille);
3. Requêtes d’action

§ Modification dans une table


q Supprimer le lien nommé lien_ville existant entre la table
EMPLOYES et la table VILLES selon le champ Codeville

ALTER TABLE EMPLOYES DROP CONSTRAINT


Lien_ville
3. Requêtes d’action
§ Suppression d’une table
Ø La syntaxe SQL pour supprimer une table est très simple :
DROP TABLE Nom_table

Ø Exemples :

DROP TABLE CLIENT

DROP TABLE AGENCE

DROP TABLE COMPTE


3. Requêtes d’action
§ Insertion d’enregistrements dans une table :
Ø La commande qui permet d’insérer une ligne dans une table est la suivante :

ü INSERT INTO Nom_table (champ1, champ2, …)

• VALUES (valeur1, valeur2, …) ;


Ø Dans la clause “INTO…”, on spécifie le nom de la table ainsi que les noms
des colonnes.
3. Requêtes d’action
§ Insertion d’enregistrements dans une table :
Ø La commande qui permet d’insérer une ligne dans une table est la suivante :

ü INSERT INTO Nom_table (champ1, champ2, …)

• VALUES (valeur1, valeur2, …) ;


Ø Dans la clause “INTO…”, on spécifie le nom de la table ainsi que les noms
des colonnes.
3. Requêtes d’action
§ Insertion d’enregistrements dans une table :
Ø La commande qui permet d’insérer une ligne dans une table est la suivante :

ü INSERT INTO Nom_table

• VALUES (valeur1, valeur2, …) ;


Ø Dans la clause “INTO…”, on spécifie le nom de la table ainsi que les noms
des colonnes.
Ø Si l’on veut ajouter une ligne contenant les valeurs pour tous les champs, dans ce
cas on peut omettre les noms de colonnes.
3. Requêtes d’action
§ Insertion d’enregistrements dans une table :
Ø Remarque:
§ On peut insérer plusieurs lignes à la fois
INSERT INTO Nom_table (champ1, champ2, champ3…)
VALUES
(valeur1_1, valeur2_1, valeur3_1 …) ,
(valeur1_2, valeur2_2, valeur3_2 …),
(valeur1_3, valeur2_3, valeur3_3 …),
…………………………………;
3. Requêtes d’action
§ Insertion d’enregistrements dans une table :
Ø Remarque:
§ Il est possible de ne pas renseigner toutes les colonnes.
Une colonne non renseignée sera videè NULL

§ L’ordre des colonnes lors de l’insertion n’est pas important


les valeurs à insérer doivent suivre l’ordre des colonnes
mentionné dans la clause insert into
3. Requêtes d’action
§ Insertion d’enregistrements dans une table :
Ø Remarque:
§ Attention à l’ordre de remplissage des tables d’une BD. Il
faut prendre en considération les relations clé primaire/clé
étrangère.
è les valeurs de la clé étrangère doivent se trouver dans la
clé primaire référencée
Participe( #Numadh: entier, #Numact: entier, AnneeParticipe: entier)
Numadh est la clé primaire de la table Adherent et Numact est la clé
primaire de la table Activite.
3. Requêtes d’action
§ Insertion d’enregistrements dans une table :
Ø Exemple:
ü Créez une requête permettant d’ajouter l’enregistrement
suivant dans la table EMPLOYES: (100, BEN AZOUZ, Aziz,
Ingénieur, 90050)
ü La table EMPLOYES ( Nemployé , Nom, Prénom, Fonction,
Adresse, Codeville)
ü INSERT INTO EMPLOYES (Nemployé, Nom, Prénom,
Fonction, Codeville)
VALUES (100, ‘BEN AZOUZ’, ‘Aziz’, ‘Ingénieur’, 90050) ;
3. Requêtes d’action
§ Modification d’un enregistrement

Ø L’instruction UPDATE permet la mise à jour d’une table;

Ø On modifie la valeur d’un champ d’un enregistrement qui


vérifie une condition précise (critère pour accéder à la ligne qui
sera le sujet de la modification);

Ø Syntaxe :
UPDATE table SET nouvelles valeurs WHERE critères
3. Requêtes d’action
§ Modification d’un enregistrement
UPDATE table SET nouvelles valeurs WHERE critères

Ø Les champs à mettre à jour doivent être écrits dans la clause SET,
l’un après l’autre (avec leurs valeurs) et séparés par des virgules.

Ø Les champs non spécifiés après la clause SET ne seront pas


modifiés.

Ø Si la clause WHERE est absente, tous les enregistrements de la


table seront affectées.
3. Requêtes d’action
§ Modification d’un enregistrement
Ø Exemples :
q Donner une requête SQL pour modifier l’adresse de
l'employé numéro 10 par la nouvelle adresse sera "10 Avenue
Mohamed VI, Rabat".
è UPDATE EMPLOYES SET Adresse = ‘10 Avenue Mohamed
VI, Rabat’ WHERE Nemployé = 10 ;
q Donner une requête SQL pour augmenter de 5% le salaire de
tous les acteurs : ACTEURS (N_act, Nom, Prénom,
Nationalité, Salaire, Age, Films)
è UPDATE ACTEURS SET Salaire = Salaire * 1.05 ;
3. Requêtes d’action
§ Suppression d’enregistrements

Ø L’instruction DELETE permet d’effacer des enregistrements


d’une table.

Ø La syntaxe de la commande est :


DELETE * FROM Nom_table WHERE Condition;

Ø Pour supprimer tous les enregistrements d’une table, il suffit de ne


pas indiquer la clause WHERE.
3. Requêtes d’action

§ Suppression d’enregistrements
Ø Exemples :
ACTEURS (N_act, Nom, Prénom, Nationalité, Salaire, Age, Films)

q Effacez tous les enregistrements de la table ACTEURS;

DELETE * FROM ACTEURS ;

q Effacez tous les acteurs de nationalité


marocaine; DELETE * FROM ACTEURS
WHERE Nationalité= ’marocaine ’;
Memento SQL

GBD - S5 152
• Requêtes de consultation de tables
• Projection, Sélection, Jointure
• Tri, Agrégation, Partitionnement

153
Projection
Syntaxe SQL :
SELECT [UNIQUE1] liste_attributs2 FROM Table ;

Équivalent AR :
Pliste_attributs R(Table)

1 Permet d'éliminer les doublons (on trouvera aussi DISTINCT)


2 On peut mettre une étoile * pour demander tous les attributs
On peut renommer un attribut en ajoutant AS NomAttribut

154
Projection - Exemples

Soit la relation Étudiants(#num, nom, prénom, âge, ville, CodePostal)

Afficher toute la relation Étudiant.


SELECT * FROM Étudiants;

Donner les noms, les prénoms et les âges de tous les étudiants.

SELECT nom, prénom, age FROM Étudiants;

Donner les numéros des étudiants dans une colonne nommée Numéro.

SELECT #num AS Numéro FROM Étudiants;

155
Sélection
Syntaxe SQL :
SELECT * FROM table WHERE condition;

Équivalent AR :
scondition R(Table)

La condition peut formée sur des noms d'attributs ou des constantes avec
• des opérateurs de comparaison : =, >, <, <=, >=, <>1
• des opérateurs logiques : AND, OR, NOT
• des opérateurs : IN, BETWEEN+AND, LIKE, EXISTS, IS
• _ qui remplace un caractère et % qui remplace une chaîne de caractères

1 La différence est parfois notée !=

156
Sélection – Exemples
Sur la relation Étudiants(#Num, Nom, Prénom, Age, Ville, CodePostal)
Quels sont tous les étudiants âgés de 20 ans ou plus ?
SELECT * FROM Étudiants WHERE (Age >= 20);
Quels sont tous les étudiants âgés de 19 à 23 ans ?
SELECT * FROM Étudiants WHERE Age IN (19, 20, 21, 22, 23);
SELECT * FROM Étudiants WHERE Age BETWEEN 19 AND 23;
Quels sont tous les étudiants habitant à casa ?
SELECT * FROM Étudiant WHERE CodePostal LIKE ’20*' ;
Quels sont tous les étudiants dont la ville est inconnue/connue ?
SELECT * FROM Étudiants WHERE Ville IS NULL ;
SELECT * FROM Étudiants WHERE Ville IS NOT NULL ;

157
Produit Cartésien
Syntaxe SQL :
SELECT *
FROM table1 [Alias1], ..., tablen [Aliasn],

Équivalent AR :
Table1 ´ ... ´ Table n

158
q-Jointure
Syntaxe SQL : Possibilité de Renommage des tables
SELECT *
FROM table1 [Alias1], ..., tablen [Aliasn],
WHERE condition;

Équivalent AR :
Table1 q ... q Table n

Autre Syntaxe :
SELECT * FROM table1 INNER JOIN table2 ON condition;

159
Jointure - Exemples
Soient les relations Produit (prod, nomProd, fournisseur, pu)
DétailCommande (numcmd, prod, pu, qte, remise)
Quels sont les numéros de commande correspondant à l'achat d'une table ?

SELECT DC.numcmd
FROM Produit P, DétailCommande DC
WHERE P.prod =DC.prod
AND nomProd LIKE "table";

160
Union, Intersection et Différence
Table1 È Table2 : SELECT liste_attributs FROM table1
UNION
SELECT liste_attributs FROM table2 ;

Table1 Ç Table2 : SELECT liste_attributs FROM table1


INTERSECT
SELECT liste_attributs FROM table2 ;

Table1 - Table2 : SELECT liste_attributs FROM table1


EXCEPT
SELECT liste_attributs FROM table2 ;

161
Tri de résultats
Syntaxe :
Cette clause se place derrière la clause WHERE
ORDER BY attribut [ordre] [, attribut [ordre] ...]
On peut préciser un ordre croissant ASC ou décroissant DESC.

Exemple
Trier Stock par numéro de produit croissant et par quantité décroissante

SELECT *
FROM Stock
WHERE qte > 0
ORDER BY prod ASC, qte DESC

162
Agrégation des résultats
Il est possible d'utiliser des fonctions f d'agrégation dans le résultat d'une sélection.
Syntaxe :
SELECT f ( [ ALL | DISTINCT ] expression)
FROM ...
où f peut être COUNT nombre de tuples
SUM somme des valeurs d'une colonne
AVG moyenne des valeurs d'une colonne
MAX maximum des valeurs d'une colonne
MIN minimum des valeurs d'une colonne
Pour COUNT, on peut aussi utiliser COUNT(*)
Seul COUNT prend en compte les valeurs à NULL.

163
Fonctions d'agrégation - Exemples
Quelle est la meilleure note ?
Résultats (de Pierre)
SELECT MAX(Note) FROM Résultats ® 15
Matière Coef Note
Quelle est la plus mauvaise note ?
Maths 4 15 SELECT MIN(Note) FROM Résultats ®9
Sc Nat 3 9 Quelle la somme pondérée des notes ?

Sc Phy 3 12 SELECT SUM(Note*Coef) FROM Résultats ® 193


Quelle est la moyenne (pondérée) ?
Français 2 13
SELECT SUM(Note*Coef)/Sum(Coef) FROM Résultats
Sc Hum 2 11
® 12,06
Anglais 1 10 Dans combien de matières Pierre a-t-il eu plus de 12 ?
Sport 1 12 SELECT COUNT(*) FROM Résultats WHERE Note > 12
®2
164
Partitionnement des résultats
Syntaxe
GROUP BY liste_attributs
HAVING condition avec fonction
Cette clause regroupe les résultats par valeur selon la condition

Dans l'ordre, on effectue


• la sélection SELECT
• le partitionnement GROUP BY
• on retient les partitions intéressantes HAVING
• on trie avec ORDER BY.

165
Partitionnement des résultats - Exemples
Résultats (de Pierre)
Quelle est la note moyenne pour chaque coefficient ?
Matière Coef Note
SELECT coef, Avg(note) as Moyenne Coef Moyenne
Maths 4 15
1 11
FROM Résultats
Sc Nat 3 9 2 12
GROUP BY coef;
Sc Phy 3 12 3 10.5
4 15
Français 2 13
Quels sont les coefficients auxquels participe une seule
Sc Hum 2 11 matière ?

Anglais 1 10 SELECT coef


Coef
FROM Résultats GROUP BY coef 4
Sport 1 12
HAVING count(*)=1;

166
Ajouts de tuples dans une relation
Syntaxe :
Pour insérer un tuple complètement spécifié :
INSERT INTO Table VALUES (val1,..., valn);

Pour insérer un tuple incomplètement spécifié :


INSERT INTO Table (liste_attributs)VALUES (val1,..., valn);

On peut insérer un tuple à partir d'une relation ayant le même schéma.


INSERT INTO Table
SELECT *
FROM ...

167
Exemples d'insertion
Sur les relations Étudiants (#Num, Nom, Prénom, Age, Ville, CodePostal)
ClubThéâtre(#Num, Nom, Prénom)

Ajouter l'étudiant ALAMI Ahmed, 21 ans, habitant casa avec le numéro 634.

INSERT INTO Étudiants


VALUES (634, ‘ALAMI', ‘Ahmed' ', 21, ‘casa', ‘20100);
Ajouter tous les étudiants de casa dans le Club de Théâtre
INSERT INTO ClubThéâtre
SELECT #Num, Nom, Prénom
FROM Étudiants
WHERE ville=‘ casa ’;

168
Modification de tuples
Syntaxe :
UPDATE Table
SET attribut1 = expr1, ..., attributn = exprn
FROM ...
WHERE ...

Les expressions peuvent être


• une constante
• une valeur NULL
• une clause SELECT

169
Mise à jour - Exemple

Sur la relation Étudiants (#Num, Nom, Prénom, Age, Ville, CodePostal)


Augmenter d'un an l'age de tous les étudiants.

UPDATE Étudiants
SET Age = Age + 1;
On a appris que tous les étudiants de casa ont déménagé à rabat.

UPDATE Étudiants
SET Ville = ‘rabat', CodePostal = ‘21000'
WHERE Ville = ‘CASA';

170
Suppression de Tuples
Syntaxe :
DELETE FROM Table
[WHERE condition]
Remarque :
! Si on supprime tous les tuples d'une relation,
le schéma de relation existe toujours !
Exemple :
Retirer de la liste tous les étudiants de plus de 22 ans.

DELETE FROM Étudiants


WHERE Age > 22;

171
TP SQL
On considère la base de données suivante qui concerne la gestion
des travaux facturés par le cabinet d’expertise comptable FidOrient.
On donne ci-dessous un extrait du schéma relationnel de la base de
données de cette société tel que le représente Access :

Comptable(NomComptable, PrénomComptable) ;
Client(CodeClient, Raisonsociale, Rue, CP, Ville, NomComptable) ;
Realiser(Date, CodeClient, CodeTravaux, TempsPassé) ;
Travaux(CodeTravaux, Libellé, CoûtHoraire) ;

172
Req1

Select *
From Client
Where ville = « rabat »;

173
Req2

select raisonsociale
From Client C, Réaliser R
where c.codeclient=r.codeclient and
ville=[saisir une ville]
order by Raisonsociale ASC;

174
Req 3

Select raisonsociale
from Client C,Réaliser R
where c.codeclient=r.codeclient
And Date between 15/11/2005 and
17/11/2005
order by raisonsociale asc;

175
Req 4

Select libellé, tempspassé

From Travaux T, Réaliser R, Client C

Where C.codeclient=R.codeclient
and R.codetravaux=T.codeTravaux
and date between 01/11/2005 and
15/11/2005 and
Nomcomptable=[saisir un
comptable] 176
Select top 5 libellé,

From Travaux T, Réaliser R


Where
T.codeTravaux=R.codeTravaux
order by date DESC;

177
Req 6

Select ville, raisonsociale


From Client
order by ville , raisonsociale

178
Req 6

Select (couyhoraire*tempspassé) as
total, libellé
From Réaliser R, Travaux T, Client C
Where C.codeclient=R.codeclient
and T.codeTravaux=R.codetravaux
and Raisonsociale=« Chama »;

179
Req 8

Select count(*)
from client;

180
Req 9
Select SUM(couthoraire*tempspassé) as facture,
SUM(couthoraire*tempspassé) *0,95 as factred, raisonsociale
From Réaliser R, Travaux T, Client C
Where C.codeclient=R.codeclient and T.codeTravaux=R.codetravaux
Group By RaisonSociale
Having facture>600;
UNION
Select SUM(couthoraire*tempspassé) as facture,
SUM(couthoraire*tempspassé) as factred, raisonsociale
From Réaliser R, Travaux T, Client C
Where C.codeclient=R.codeclient and
T.codeTravaux=R.codetravaux
Group By RaisonSociale
Having facture<=600;
181
• Update Client
• Set Rue=« Mehdia,2210 » , ville=« kénitra »
• Where codeclient=18;

182

Vous aimerez peut-être aussi